|  | @ -5,7 +5,7 @@ | 
														
													
														
															
																|  |  | * A dynamic, browser-based visualization library. |  |  | * A dynamic, browser-based visualization library. | 
														
													
														
															
																|  |  | * |  |  | * | 
														
													
														
															
																|  |  | * @version 3.6.4-SNAPSHOT |  |  | * @version 3.6.4-SNAPSHOT | 
														
													
														
															
																|  |  | * @date    2014-11-06 |  |  |  | 
														
													
														
															
																|  |  |  |  |  | * @date    2014-11-07 | 
														
													
														
															
																|  |  | * |  |  | * | 
														
													
														
															
																|  |  | * @license |  |  | * @license | 
														
													
														
															
																|  |  | * Copyright (C) 2011-2014 Almende B.V, http://almende.com |  |  | * Copyright (C) 2011-2014 Almende B.V, http://almende.com | 
														
													
												
													
														
															
																|  | @ -15454,7 +15454,7 @@ return /******/ (function(modules) { // webpackBootstrap | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | var Emitter = __webpack_require__(53); |  |  | var Emitter = __webpack_require__(53); | 
														
													
														
															
																|  |  | var Hammer = __webpack_require__(45); |  |  | var Hammer = __webpack_require__(45); | 
														
													
														
															
																|  |  | var keycharm = __webpack_require__(56); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | var keycharm = __webpack_require__(54); | 
														
													
														
															
																|  |  | var util = __webpack_require__(1); |  |  | var util = __webpack_require__(1); | 
														
													
														
															
																|  |  | var hammerUtil = __webpack_require__(47); |  |  | var hammerUtil = __webpack_require__(47); | 
														
													
														
															
																|  |  | var DataSet = __webpack_require__(3); |  |  | var DataSet = __webpack_require__(3); | 
														
													
												
													
														
															
																|  | @ -21414,7 +21414,7 @@ return /******/ (function(modules) { // webpackBootstrap | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // first check if moment.js is already loaded in the browser window, if so, |  |  | // first check if moment.js is already loaded in the browser window, if so, | 
														
													
														
															
																|  |  | // use this instance. Else, load via commonjs. |  |  | // use this instance. Else, load via commonjs. | 
														
													
														
															
																|  |  | module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(54); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(55); | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | /***/ }, |  |  | /***/ }, | 
														
													
												
													
														
															
																|  | @ -21424,7 +21424,7 @@ return /******/ (function(modules) { // webpackBootstrap | 
														
													
														
															
																|  |  | // Only load hammer.js when in a browser environment |  |  | // Only load hammer.js when in a browser environment | 
														
													
														
															
																|  |  | // (loading hammer.js in a node.js environment gives errors) |  |  | // (loading hammer.js in a node.js environment gives errors) | 
														
													
														
															
																|  |  | if (typeof window !== 'undefined') { |  |  | if (typeof window !== 'undefined') { | 
														
													
														
															
																|  |  | module.exports = window['Hammer'] || __webpack_require__(55); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | module.exports = window['Hammer'] || __webpack_require__(56); | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | else { |  |  | else { | 
														
													
														
															
																|  |  | module.exports = function () { |  |  | module.exports = function () { | 
														
													
												
													
														
															
																|  | @ -22821,7 +22821,7 @@ return /******/ (function(modules) { // webpackBootstrap | 
														
													
														
															
																|  |  | /* 52 */ |  |  | /* 52 */ | 
														
													
														
															
																|  |  | /***/ function(module, exports, __webpack_require__) { |  |  | /***/ function(module, exports, __webpack_require__) { | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | var keycharm = __webpack_require__(56); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | var keycharm = __webpack_require__(54); | 
														
													
														
															
																|  |  | var Emitter = __webpack_require__(53); |  |  | var Emitter = __webpack_require__(53); | 
														
													
														
															
																|  |  | var Hammer = __webpack_require__(45); |  |  | var Hammer = __webpack_require__(45); | 
														
													
														
															
																|  |  | var util = __webpack_require__(1); |  |  | var util = __webpack_require__(1); | 
														
													
												
													
														
															
																|  | @ -23146,6 +23146,199 @@ return /******/ (function(modules) { // webpackBootstrap | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | /***/ }, |  |  | /***/ }, | 
														
													
														
															
																|  |  | /* 54 */ |  |  | /* 54 */ | 
														
													
														
															
																|  |  |  |  |  | /***/ function(module, exports, __webpack_require__) { | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** | 
														
													
														
															
																|  |  |  |  |  | * Created by Alex on 11/6/2014. | 
														
													
														
															
																|  |  |  |  |  | */ | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 | 
														
													
														
															
																|  |  |  |  |  | // if the module has no dependencies, the above pattern can be simplified to | 
														
													
														
															
																|  |  |  |  |  | (function (root, factory) { | 
														
													
														
															
																|  |  |  |  |  | if (true) { | 
														
													
														
															
																|  |  |  |  |  | // AMD. Register as an anonymous module. | 
														
													
														
															
																|  |  |  |  |  | !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); | 
														
													
														
															
																|  |  |  |  |  | } else if (typeof exports === 'object') { | 
														
													
														
															
																|  |  |  |  |  | // Node. Does not work with strict CommonJS, but | 
														
													
														
															
																|  |  |  |  |  | // only CommonJS-like environments that support module.exports, | 
														
													
														
															
																|  |  |  |  |  | // like Node. | 
														
													
														
															
																|  |  |  |  |  | module.exports = factory(); | 
														
													
														
															
																|  |  |  |  |  | } else { | 
														
													
														
															
																|  |  |  |  |  | // Browser globals (root is window) | 
														
													
														
															
																|  |  |  |  |  | root.keycharm = factory(); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | }(this, function () { | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | function keycharm(options) { | 
														
													
														
															
																|  |  |  |  |  | var preventDefault = options && options.preventDefault || false; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | var _bound = {keydown:{}, keyup:{}}; | 
														
													
														
															
																|  |  |  |  |  | var _keys = {}; | 
														
													
														
															
																|  |  |  |  |  | var i; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // a - z | 
														
													
														
															
																|  |  |  |  |  | for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} | 
														
													
														
															
																|  |  |  |  |  | // A - Z | 
														
													
														
															
																|  |  |  |  |  | for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} | 
														
													
														
															
																|  |  |  |  |  | // 0 - 9 | 
														
													
														
															
																|  |  |  |  |  | for (i = 0;  i <= 9;   i++) {_keys['' + i] = {code:48 + i, shift: false};} | 
														
													
														
															
																|  |  |  |  |  | // F1 - F12 | 
														
													
														
															
																|  |  |  |  |  | for (i = 1;  i <= 12;   i++) {_keys['F' + i] = {code:111 + i, shift: false};} | 
														
													
														
															
																|  |  |  |  |  | // num0 - num9 | 
														
													
														
															
																|  |  |  |  |  | for (i = 0;  i <= 9;   i++) {_keys['num' + i] = {code:96 + i, shift: false};} | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // numpad misc | 
														
													
														
															
																|  |  |  |  |  | _keys['num*'] = {code:106, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['num+'] = {code:107, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['num-'] = {code:109, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['num/'] = {code:111, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['num.'] = {code:110, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | // arrows | 
														
													
														
															
																|  |  |  |  |  | _keys['left']  = {code:37, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['up']    = {code:38, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['right'] = {code:39, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['down']  = {code:40, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | // extra keys | 
														
													
														
															
																|  |  |  |  |  | _keys['space'] = {code:32, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['enter'] = {code:13, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['shift'] = {code:16, shift: undefined}; | 
														
													
														
															
																|  |  |  |  |  | _keys['esc']   = {code:27, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['backspace'] = {code:8, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['tab']       = {code:9, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['ctrl']      = {code:17, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['alt']       = {code:18, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['delete']    = {code:46, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['pageup']    = {code:33, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['pagedown']  = {code:34, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | // symbols | 
														
													
														
															
																|  |  |  |  |  | _keys['=']     = {code:187, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['-']     = {code:189, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys[']']     = {code:221, shift: false}; | 
														
													
														
															
																|  |  |  |  |  | _keys['[']     = {code:219, shift: false}; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | var down = function(event) {handleEvent(event,'keydown');}; | 
														
													
														
															
																|  |  |  |  |  | var up = function(event) {handleEvent(event,'keyup');}; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // handle the actualy bound key with the event | 
														
													
														
															
																|  |  |  |  |  | var handleEvent = function(event,type) { | 
														
													
														
															
																|  |  |  |  |  | if (_bound[type][event.keyCode] !== undefined) { | 
														
													
														
															
																|  |  |  |  |  | var bound = _bound[type][event.keyCode]; | 
														
													
														
															
																|  |  |  |  |  | for (var i = 0; i < bound.length; i++) { | 
														
													
														
															
																|  |  |  |  |  | if (bound[i].shift === undefined) { | 
														
													
														
															
																|  |  |  |  |  | bound[i].fn(event); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | else if (bound[i].shift == true && event.shiftKey == true) { | 
														
													
														
															
																|  |  |  |  |  | bound[i].fn(event); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | else if (bound[i].shift == false && event.shiftKey == false) { | 
														
													
														
															
																|  |  |  |  |  | bound[i].fn(event); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | if (preventDefault == true) { | 
														
													
														
															
																|  |  |  |  |  | event.preventDefault(); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | }; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // bind a key to a callback | 
														
													
														
															
																|  |  |  |  |  | this.bind = function(key, callback, type) { | 
														
													
														
															
																|  |  |  |  |  | if (type === undefined) { | 
														
													
														
															
																|  |  |  |  |  | type = 'keydown'; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | if (_keys[key] === undefined) { | 
														
													
														
															
																|  |  |  |  |  | throw new Error("unsupported key: " + key); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | if (_bound[type][_keys[key].code] === undefined) { | 
														
													
														
															
																|  |  |  |  |  | _bound[type][_keys[key].code] = []; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); | 
														
													
														
															
																|  |  |  |  |  | }; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // bind all keys to a call back (demo purposes) | 
														
													
														
															
																|  |  |  |  |  | this.bindAll = function(callback, type) { | 
														
													
														
															
																|  |  |  |  |  | if (type === undefined) { | 
														
													
														
															
																|  |  |  |  |  | type = 'keydown'; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | for (key in _keys) { | 
														
													
														
															
																|  |  |  |  |  | if (_keys.hasOwnProperty(key)) { | 
														
													
														
															
																|  |  |  |  |  | this.bind(key,callback,type); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // get the key label from an event | 
														
													
														
															
																|  |  |  |  |  | this.getKey = function(event) { | 
														
													
														
															
																|  |  |  |  |  | for (key in _keys) { | 
														
													
														
															
																|  |  |  |  |  | if (_keys.hasOwnProperty(key)) { | 
														
													
														
															
																|  |  |  |  |  | if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { | 
														
													
														
															
																|  |  |  |  |  | return key; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { | 
														
													
														
															
																|  |  |  |  |  | return key; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | else if (event.keyCode == _keys[key].code && key == 'shift') { | 
														
													
														
															
																|  |  |  |  |  | return key; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | return "unknown key, currently not supported"; | 
														
													
														
															
																|  |  |  |  |  | }; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // unbind either a specific callback from a key or all of them (by leaving callback undefined) | 
														
													
														
															
																|  |  |  |  |  | this.unbind = function(key, callback, type) { | 
														
													
														
															
																|  |  |  |  |  | if (type === undefined) { | 
														
													
														
															
																|  |  |  |  |  | type = 'keydown'; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | if (_keys[key] === undefined) { | 
														
													
														
															
																|  |  |  |  |  | throw new Error("unsupported key: " + key); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | if (callback !== undefined) { | 
														
													
														
															
																|  |  |  |  |  | var newBindings = []; | 
														
													
														
															
																|  |  |  |  |  | var bound = _bound[type][_keys[key].code] | 
														
													
														
															
																|  |  |  |  |  | for (var i = 0; i < bound.length; i++) { | 
														
													
														
															
																|  |  |  |  |  | if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { | 
														
													
														
															
																|  |  |  |  |  | newBindings.push(_bound[type][_keys[key].code][i]); | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | _bound[type][_keys[key].code] = newBindings; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | else { | 
														
													
														
															
																|  |  |  |  |  | _bound[type][_keys[key].code] = []; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  | }; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // reset all bound variables. | 
														
													
														
															
																|  |  |  |  |  | this.reset = function() { | 
														
													
														
															
																|  |  |  |  |  | _bound = {keydown:{}, keyup:{}}; | 
														
													
														
															
																|  |  |  |  |  | }; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // unbind all listeners and reset all variables. | 
														
													
														
															
																|  |  |  |  |  | this.destroy = function() { | 
														
													
														
															
																|  |  |  |  |  | _bound = {keydown:{}, keyup:{}}; | 
														
													
														
															
																|  |  |  |  |  | window.removeEventListener('keydown', down, true); | 
														
													
														
															
																|  |  |  |  |  | window.removeEventListener('keyup', up, true); | 
														
													
														
															
																|  |  |  |  |  | }; | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // create listeners. | 
														
													
														
															
																|  |  |  |  |  | window.addEventListener('keydown',down,true); | 
														
													
														
															
																|  |  |  |  |  | window.addEventListener('keyup',up,true); | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | // return the public functions. | 
														
													
														
															
																|  |  |  |  |  | return this; | 
														
													
														
															
																|  |  |  |  |  | } | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | return keycharm; | 
														
													
														
															
																|  |  |  |  |  | })); | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | /***/ }, | 
														
													
														
															
																|  |  |  |  |  | /* 55 */ | 
														
													
														
															
																|  |  | /***/ function(module, exports, __webpack_require__) { |  |  | /***/ function(module, exports, __webpack_require__) { | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js |  |  | var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js | 
														
													
												
													
														
															
																|  | @ -26008,7 +26201,7 @@ return /******/ (function(modules) { // webpackBootstrap | 
														
													
														
															
																|  |  | /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(68)(module))) |  |  | /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(68)(module))) | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | /***/ }, |  |  | /***/ }, | 
														
													
														
															
																|  |  | /* 55 */ |  |  |  | 
														
													
														
															
																|  |  |  |  |  | /* 56 */ | 
														
													
														
															
																|  |  | /***/ function(module, exports, __webpack_require__) { |  |  | /***/ function(module, exports, __webpack_require__) { | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 |  |  | var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 | 
														
													
												
													
														
															
																|  | @ -28174,182 +28367,6 @@ return /******/ (function(modules) { // webpackBootstrap | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | })(window); |  |  | })(window); | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | /***/ }, |  |  |  | 
														
													
														
															
																|  |  | /* 56 */ |  |  |  | 
														
													
														
															
																|  |  | /***/ function(module, exports, __webpack_require__) { |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | /** |  |  |  | 
														
													
														
															
																|  |  | * Created by Alex on 11/6/2014. |  |  |  | 
														
													
														
															
																|  |  | */ |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | module.exports = keycharm; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | function keycharm(preventDefault) { |  |  |  | 
														
													
														
															
																|  |  | if (preventDefault === undefined) { |  |  |  | 
														
													
														
															
																|  |  | preventDefault = false; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | var _bound = {keydown:{}, keyup:{}}; |  |  |  | 
														
													
														
															
																|  |  | var _keys = {}; |  |  |  | 
														
													
														
															
																|  |  | var i; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // a - z |  |  |  | 
														
													
														
															
																|  |  | for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} |  |  |  | 
														
													
														
															
																|  |  | // A - Z |  |  |  | 
														
													
														
															
																|  |  | for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} |  |  |  | 
														
													
														
															
																|  |  | // 0 - 9 |  |  |  | 
														
													
														
															
																|  |  | for (i = 0;  i <= 9;   i++) {_keys['' + i] = {code:48 + i, shift: false};} |  |  |  | 
														
													
														
															
																|  |  | // F1 - F12 |  |  |  | 
														
													
														
															
																|  |  | for (i = 1;  i <= 12;   i++) {_keys['F' + i] = {code:111 + i, shift: false};} |  |  |  | 
														
													
														
															
																|  |  | // num0 - num9 |  |  |  | 
														
													
														
															
																|  |  | for (i = 0;  i <= 9;   i++) {_keys['num' + i] = {code:96 + i, shift: false};} |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // numpad misc |  |  |  | 
														
													
														
															
																|  |  | _keys['num*'] = {code:106, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['num+'] = {code:107, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['num-'] = {code:109, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['num/'] = {code:111, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['num.'] = {code:110, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | // arrows |  |  |  | 
														
													
														
															
																|  |  | _keys['left']  = {code:37, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['up']    = {code:38, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['right'] = {code:39, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['down']  = {code:40, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | // extra keys |  |  |  | 
														
													
														
															
																|  |  | _keys['space'] = {code:32, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['enter'] = {code:13, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['shift'] = {code:16, shift: undefined}; |  |  |  | 
														
													
														
															
																|  |  | _keys['esc']   = {code:27, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['backspace'] = {code:8, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['tab']       = {code:9, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['ctrl']      = {code:17, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['alt']       = {code:18, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['delete']    = {code:46, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['pageup']    = {code:33, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['pagedown']  = {code:34, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | // symbols |  |  |  | 
														
													
														
															
																|  |  | _keys['=']     = {code:187, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['-']     = {code:189, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys[']']     = {code:221, shift: false}; |  |  |  | 
														
													
														
															
																|  |  | _keys['[']     = {code:219, shift: false}; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | var down = function(event) {handleEvent(event,'keydown');}; |  |  |  | 
														
													
														
															
																|  |  | var up = function(event) {handleEvent(event,'keyup');}; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // handle the actualy bound key with the event |  |  |  | 
														
													
														
															
																|  |  | var handleEvent = function(event,type) { |  |  |  | 
														
													
														
															
																|  |  | if (_bound[type][event.keyCode] !== undefined) { |  |  |  | 
														
													
														
															
																|  |  | var bound = _bound[type][event.keyCode]; |  |  |  | 
														
													
														
															
																|  |  | for (var i = 0; i < bound.length; i++) { |  |  |  | 
														
													
														
															
																|  |  | if (bound[i].shift === undefined) { |  |  |  | 
														
													
														
															
																|  |  | bound[i].fn(event); |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | else if (bound[i].shift == true && event.shiftKey == true) { |  |  |  | 
														
													
														
															
																|  |  | bound[i].fn(event); |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | else if (bound[i].shift == false && event.shiftKey == false) { |  |  |  | 
														
													
														
															
																|  |  | bound[i].fn(event); |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | if (preventDefault == true) { |  |  |  | 
														
													
														
															
																|  |  | event.preventDefault(); |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | }; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // bind a key to a callback |  |  |  | 
														
													
														
															
																|  |  | this.bind = function(key, callback, type) { |  |  |  | 
														
													
														
															
																|  |  | if (type === undefined) { |  |  |  | 
														
													
														
															
																|  |  | type = 'keydown'; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | if (_keys[key] === undefined) { |  |  |  | 
														
													
														
															
																|  |  | throw new Error("unsupported key: " + key); |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | if (_bound[type][_keys[key].code] === undefined) { |  |  |  | 
														
													
														
															
																|  |  | _bound[type][_keys[key].code] = []; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); |  |  |  | 
														
													
														
															
																|  |  | }; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // bind all keys to a call back (demo purposes) |  |  |  | 
														
													
														
															
																|  |  | this.bindAll = function(callback, type) { |  |  |  | 
														
													
														
															
																|  |  | if (type === undefined) { |  |  |  | 
														
													
														
															
																|  |  | type = 'keydown'; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | for (key in _keys) { |  |  |  | 
														
													
														
															
																|  |  | if (_keys.hasOwnProperty(key)) { |  |  |  | 
														
													
														
															
																|  |  | this.bind(key,callback,type); |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // get the key label from an event |  |  |  | 
														
													
														
															
																|  |  | this.getKey = function(event) { |  |  |  | 
														
													
														
															
																|  |  | for (key in _keys) { |  |  |  | 
														
													
														
															
																|  |  | if (_keys.hasOwnProperty(key)) { |  |  |  | 
														
													
														
															
																|  |  | if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { |  |  |  | 
														
													
														
															
																|  |  | return key; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { |  |  |  | 
														
													
														
															
																|  |  | return key; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | else if (event.keyCode == _keys[key].code && key == 'shift') { |  |  |  | 
														
													
														
															
																|  |  | return key; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | return "unknown key, currently not supported"; |  |  |  | 
														
													
														
															
																|  |  | }; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // unbind either a specific callback from a key or all of them (by leaving callback undefined) |  |  |  | 
														
													
														
															
																|  |  | this.unbind = function(key, callback, type) { |  |  |  | 
														
													
														
															
																|  |  | if (type === undefined) { |  |  |  | 
														
													
														
															
																|  |  | type = 'keydown'; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | if (_keys[key] === undefined) { |  |  |  | 
														
													
														
															
																|  |  | throw new Error("unsupported key: " + key); |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | if (callback !== undefined) { |  |  |  | 
														
													
														
															
																|  |  | var newBindings = []; |  |  |  | 
														
													
														
															
																|  |  | var bound = _bound[type][_keys[key].code] |  |  |  | 
														
													
														
															
																|  |  | for (var i = 0; i < bound.length; i++) { |  |  |  | 
														
													
														
															
																|  |  | if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { |  |  |  | 
														
													
														
															
																|  |  | newBindings.push(_bound[type][_keys[key].code][i]); |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | _bound[type][_keys[key].code] = newBindings; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | else { |  |  |  | 
														
													
														
															
																|  |  | _bound[type][_keys[key].code] = []; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | }; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // reset all bound variables. |  |  |  | 
														
													
														
															
																|  |  | this.reset = function() { |  |  |  | 
														
													
														
															
																|  |  | _bound = {keydown:{}, keyup:{}}; |  |  |  | 
														
													
														
															
																|  |  | }; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // unbind all listeners and reset all variables. |  |  |  | 
														
													
														
															
																|  |  | this.destroy = function() { |  |  |  | 
														
													
														
															
																|  |  | _bound = {keydown:{}, keyup:{}}; |  |  |  | 
														
													
														
															
																|  |  | window.removeEventListener('keydown', down, true); |  |  |  | 
														
													
														
															
																|  |  | window.removeEventListener('keyup', up, true); |  |  |  | 
														
													
														
															
																|  |  | }; |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // create listeners. |  |  |  | 
														
													
														
															
																|  |  | window.addEventListener('keydown',down,true); |  |  |  | 
														
													
														
															
																|  |  | window.addEventListener('keyup',up,true); |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | // return the public functions. |  |  |  | 
														
													
														
															
																|  |  | return this; |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  | /***/ }, |  |  | /***/ }, | 
														
													
														
															
																|  |  | /* 57 */ |  |  | /* 57 */ | 
														
													
														
															
																|  |  | /***/ function(module, exports, __webpack_require__) { |  |  | /***/ function(module, exports, __webpack_require__) { | 
														
													
												
													
														
															
																|  |  |