{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-mpm-debugging/src/mpm-debugger/src/interaction/input.js"],"names":["Input","mini","Class","subclass","initialize","domElement","that","bindings","actions","presses","locks","delayedKeyup","isUsingMouse","isUsingKeyboard","isUsingAccelerometer","mouse","x","y","accel","z","getElementPosition","element","elem","tagname","tagName","offsetTop","offsetLeft","toUpperCase","offsetParent","canvasPosition","document","addEventListener","e","isMouseDown","handleMouseMove","removeEventListener","undefined","_rightClickHandler","i","length","clientX","clientY","onRightClick","callback","push","initMouse","mouseWheelBound","mousewheel","bind","contextmenu","keydown","keyup","mousemove","initKeyboard","initAccelerometer","window","devicemotion","event","delta","wheelDelta","detail","code","KEY","MWHEEL_UP","MWHEEL_DOWN","action","stopPropagation","preventDefault","el","pos","left","top","tx","pageX","ty","pageY","touches","MOUSE2","target","type","keyCode","button","MOUSE1","accelerationIncludingGravity","key","bindTouch","selector","ig","$","ev","touchStart","touchEnd","unbind","unbindAll","state","pressed","released","clearPressed","hasOwnProperty","update","tool"],"mappings":"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","file":"input.js","sourcesContent":["\tvar Input = mini.Class.subclass({\n\t\tinitialize: function(domElement) {\n\t\t\tvar that = this;\n\t\t\t\n\t\t\tthis.bindings = {};\n\t\t\tthis.actions = {};\n\t\t\tthis.presses = {};\n\t\t\tthis.locks = {};\n\t\t\tthis.delayedKeyup = {};\n\t\t\t\n\t\t\tthis.isUsingMouse = false;\n\t\t\tthis.isUsingKeyboard = false;\n\t\t\tthis.isUsingAccelerometer = false;\n\t\t\tthis.mouse = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t};\n\t\t\tthis.accel = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t\t};\n\t\t\tthis.domElement = domElement;\n\t\t\t\n\t\t\t//helpers:\n\t\t\t//http://js-tut.aardon.de/js-tut/tutorial/position.html\n\t\t\tfunction getElementPosition(element) {\n\t\t\t\tvar elem=element, tagname=\"\", x=0, y=0;\n\t\t\t\twhile((typeof(elem) == \"object\") && (typeof(elem.tagName) != \"undefined\")) {\n\t\t\t\t\ty += elem.offsetTop;\n\t\t\t\t\tx += elem.offsetLeft;\n\t\t\t\t\ttagname = elem.tagName.toUpperCase();\n\n\t\t\t\t\tif(tagname == \"BODY\")\n\t\t\t\t\t\telem=0;\n\n\t\t\t\t\tif(typeof(elem) == \"object\") {\n\t\t\t\t\t\tif(typeof(elem.offsetParent) == \"object\")\n\t\t\t\t\t\t\telem = elem.offsetParent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {x: x, y: y};\n\t\t\t};\n\t\t\t\n\t\t\tthis.canvasPosition = getElementPosition(domElement);\n\t\t\t\n\t\t\tdocument.addEventListener(\"mousedown\", function(e) {\n\t            that.isMouseDown = true;\n\t            handleMouseMove(e);\n\t            document.addEventListener(\"mousemove\", handleMouseMove, true);\n\t         }, true);\n\t         \n\t         document.addEventListener(\"mouseup\", function() {\n\t            document.removeEventListener(\"mousemove\", handleMouseMove, true);\n\t            that.isMouseDown = false;\n\t            that. x = undefined;\n\t            that. y = undefined;\n\t         }, true);\n\n\t\t\t this._rightClickHandler = [];\n\t\t\tdocument.addEventListener('contextmenu', function(e) {\n\t\t\t\tfor(var i = 0; i < that._rightClickHandler.length; i++) {\n\t\t\t\t\tthat._rightClickHandler[i](e);\n\t\t\t\t}\n\t\t\t});\n\n\t         function handleMouseMove(e) {\n\t            that.x = (e.clientX - that.canvasPosition.x) / 30;\n\t            that.y = (e.clientY - that.canvasPosition.y) / 30;\n\t         };\n\t\t},\n\n\t\tonRightClick: function(callback) {\n\t\t\tthis._rightClickHandler.push(callback);\n\t\t},\n\t\t\n\t\tinitMouse: function() {\n\t\t\tif( this.isUsingMouse ) { return; }\n\t\t\tthis.isUsingMouse = true;\n\t\t\tvar mouseWheelBound = this.mousewheel.bind(this);\n\t\t\tthis.domElement.addEventListener('mousewheel', mouseWheelBound, false );\n\t\t\tthis.domElement.addEventListener('DOMMouseScroll', mouseWheelBound, false );\n\t\t\t\n\t\t\tthis.domElement.addEventListener('contextmenu', this.contextmenu.bind(this), false );\n\t\t\tthis.domElement.addEventListener('mousedown', this.keydown.bind(this), false );\n\t\t\tthis.domElement.addEventListener('mouseup', this.keyup.bind(this), false );\n\t\t\tthis.domElement.addEventListener('mousemove', this.mousemove.bind(this), false );\n\t\t\t\n\t\t\tthis.domElement.addEventListener('touchstart', this.keydown.bind(this), false );\n\t\t\tthis.domElement.addEventListener('touchend', this.keyup.bind(this), false );\n\t\t\tthis.domElement.addEventListener('touchmove', this.mousemove.bind(this), false );\n\t\t},\n\t\t\n\t\tinitKeyboard: function() {\n\t\t\tif( this.isUsingKeyboard ) { return; }\n\t\t\tthis.isUsingKeyboard = true;\n\t\t\tthis.domElement.addEventListener('keydown', this.keydown.bind(this), false );\n\t\t\tthis.domElement.addEventListener('keyup', this.keyup.bind(this), false );\n\t\t},\n\t\t\n\t\tinitAccelerometer: function() {\n\t\t\tif( this.isUsingAccelerometer ) { return; }\n\t\t\twindow.addEventListener('devicemotion', this.devicemotion.bind(this), false );\n\t\t},\n\t\t\n\t\tmousewheel: function(event) {\n\t\t\tvar delta = event.wheelDelta ? event.wheelDelta : (event.detail * -1);\n\t\t\tvar code = delta > 0 ? Input.KEY.MWHEEL_UP : Input.KEY.MWHEEL_DOWN;\n\t\t\tvar action = this.bindings[code];\n\t\t\tif( action ) {\n\t\t\t\tthis.actions[action] = true;\n\t\t\t\tthis.presses[action] = true;\n\t\t\t\tthis.delayedKeyup[action] = true;\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t};\n\t\t},\n\t\t\n\t\tmousemove: function(event) {\n\t\t\tvar el = this.domElement;\n\t\t\tvar pos = {left: 0, top: 0};\n\t\t\twhile( el != null ) {\n\t\t\t\tpos.left += el.offsetLeft;\n\t\t\t\tpos.top += el.offsetTop;\n\t\t\t\tel = el.offsetParent;\n\t\t\t}\n\t\t\tvar tx = event.pageX;\n\t\t\tvar ty = event.pageY;\n\t\t\tif( event.touches ) {\n\t\t\t\ttx = event.touches[0].clientX;\n\t\t\t\tty = event.touches[0].clientY;\n\t\t\t}\n\t\t\t\n\t\t\tthis.mouse.x = (tx - pos.left) / 1; //ig.system.scale;\n\t\t\tthis.mouse.y = (ty - pos.top) / 1; //ig.system.scale;\n\t\t},\n\t\t\n\t\tcontextmenu: function(event) {\n\t\t\tif( this.bindings[Input.KEY.MOUSE2] ) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t\n\t\tkeydown: function(event) {\n\t\t\tif( event.target.type == 'text' ) { return; }\n\t\t\t\n\t\t\tvar code = event.type == 'keydown' \n\t\t\t\t? event.keyCode \n\t\t\t\t: (event.button == 2 ? Input.KEY.MOUSE2 : Input.KEY.MOUSE1);\n\t\t\t\n\t\t\tif( event.type == 'touchstart' || event.type == 'mousedown' ) {\n\t\t\t\tthis.mousemove( event );\n\t\t\t}\n\t\t\t\t\n\t\t\tvar action = this.bindings[code];\n\t\t\tif( action ) {\n\t\t\t\tthis.actions[action] = true;\n\t\t\t\tif( !this.locks[action] ) {\n\t\t\t\t\tthis.presses[action] = true;\n\t\t\t\t\tthis.locks[action] = true;\n\t\t\t\t}\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t};\n\t\t},\n\t\t\n\t\tkeyup: function(event) {\n\t\t\tif( event.target.type == 'text' ) { return; }\n\t\t\t\n\t\t\tvar code = event.type == 'keyup' \n\t\t\t\t? event.keyCode \n\t\t\t\t: (event.button == 2 ? Input.KEY.MOUSE2 : Input.KEY.MOUSE1);\n\t\t\t\n\t\t\tvar action = this.bindings[code];\n\t\t\tif( action ) {\n\t\t\t\tthis.delayedKeyup[action] = true;\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t\n\t\tdevicemotion: function(event) {\n\t\t\tthis.accel = event.accelerationIncludingGravity;\n\t\t},\n\t\t\n\t\tbind: function(key, action) {\n\t\t\tif( key < 0 ) { this.initMouse(); }\n\t\t\telse if( key > 0 ) { this.initKeyboard(); }\n\t\t\tthis.bindings[key] = action;\n\t\t},\n\t\t\n\t\tbindTouch: function(selector, action) {\n\t\t\tvar element = ig.$( selector );\n\t\t\t\n\t\t\tvar that = this;\n\t\t\telement.addEventListener('touchstart', function(ev) {\n\t\t\t\tthat.touchStart( ev, action );\n\t\t\t}, false);\n\t\t\t\n\t\t\telement.addEventListener('touchend', function(ev) {\n\t\t\t\tthat.touchEnd( ev, action );\n\t\t\t}, false);\n\t\t},\n\t\t\n\t\tunbind: function(key) {\n\t\t\tvar action = this.bindings[key];\n\t\t\tthis.delayedKeyup[action] = true;\n\t\t\t\n\t\t\tthis.bindings[key] = null;\n\t\t},\n\t\t\n\t\tunbindAll: function() {\n\t\t\tthis.bindings = {};\n\t\t\tthis.actions = {};\n\t\t\tthis.presses = {};\n\t\t\tthis.locks = {};\n\t\t\tthis.delayedKeyup = {};\n\t\t},\n\t\t\n\t\tstate: function(action) {\n\t\t\treturn this.actions[action];\n\t\t},\n\t\t\n\t\tpressed: function(action) {\n\t\t\treturn this.presses[action];\n\t\t},\n\t\t\n\t\treleased: function(action) {\n\t\t\treturn this.delayedKeyup[action];\n\t\t},\n\t\t\n\t\tclearPressed: function() {\n\t\t\tfor( var action in this.delayedKeyup ) {\n\t\t\t\tif(!this.delayedKeyup.hasOwnProperty(action)) continue;\n\n\t\t\t\tthis.actions[action] = false;\n\t\t\t\tthis.locks[action] = false;\n\t\t\t}\n\t\t\tthis.delayedKeyup = {};\n\t\t\tthis.presses = {};\n\t\t},\n\t\t\n\t\ttouchStart: function(event, action) {\n\t\t\tthis.actions[action] = true;\n\t\t\tthis.presses[action] = true;\n\t\t\t\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\treturn false;\n\t\t},\n\t\t\n\t\ttouchEnd: function(event, action) {\n\t\t\tthis.delayedKeyup[action] = true;\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\treturn false;\n\t\t},\n\t\t\n\t\tupdate: function() {\n\t\t\tif(this.tool)\n\t\t\t\tthis.tool.update();\n\t\t}\n\t});\n\n\tInput.KEY = {\n\t\t'MOUSE1': -1,\n\t\t'MOUSE2': -3,\n\t\t'MWHEEL_UP': -4,\n\t\t'MWHEEL_DOWN': -5,\n\t\t\n\t\t'BACKSPACE': 8,\n\t\t'TAB': 9,\n\t\t'ENTER': 13,\n\t\t'PAUSE': 19,\n\t\t'CAPS': 20,\n\t\t'ESC': 27,\n\t\t'SPACE': 32,\n\t\t'PAGE_UP': 33,\n\t\t'PAGE_DOWN': 34,\n\t\t'END': 35,\n\t\t'HOME': 36,\n\t\t'LEFT_ARROW': 37,\n\t\t'UP_ARROW': 38,\n\t\t'RIGHT_ARROW': 39,\n\t\t'DOWN_ARROW': 40,\n\t\t'INSERT': 45,\n\t\t'DELETE': 46,\n\t\t'_0': 48,\n\t\t'_1': 49,\n\t\t'_2': 50,\n\t\t'_3': 51,\n\t\t'_4': 52,\n\t\t'_5': 53,\n\t\t'_6': 54,\n\t\t'_7': 55,\n\t\t'_8': 56,\n\t\t'_9': 57,\n\t\t'A': 65,\n\t\t'B': 66,\n\t\t'C': 67,\n\t\t'D': 68,\n\t\t'E': 69,\n\t\t'F': 70,\n\t\t'G': 71,\n\t\t'H': 72,\n\t\t'I': 73,\n\t\t'J': 74,\n\t\t'K': 75,\n\t\t'L': 76,\n\t\t'M': 77,\n\t\t'N': 78,\n\t\t'O': 79,\n\t\t'P': 80,\n\t\t'Q': 81,\n\t\t'R': 82,\n\t\t'S': 83,\n\t\t'T': 84,\n\t\t'U': 85,\n\t\t'V': 86,\n\t\t'W': 87,\n\t\t'X': 88,\n\t\t'Y': 89,\n\t\t'Z': 90,\n\t\t'NUMPAD_0': 96,\n\t\t'NUMPAD_1': 97,\n\t\t'NUMPAD_2': 98,\n\t\t'NUMPAD_3': 99,\n\t\t'NUMPAD_4': 100,\n\t\t'NUMPAD_5': 101,\n\t\t'NUMPAD_6': 102,\n\t\t'NUMPAD_7': 103,\n\t\t'NUMPAD_8': 104,\n\t\t'NUMPAD_9': 105,\n\t\t'MULTIPLY': 106,\n\t\t'ADD': 107,\n\t\t'SUBSTRACT': 109,\n\t\t'DECIMAL': 110,\n\t\t'DIVIDE': 111,\n\t\t'F1': 112,\n\t\t'F2': 113,\n\t\t'F3': 114,\n\t\t'F4': 115,\n\t\t'F5': 116,\n\t\t'F6': 117,\n\t\t'F7': 118,\n\t\t'F8': 119,\n\t\t'F9': 120,\n\t\t'F10': 121,\n\t\t'F11': 122,\n\t\t'F12': 123,\n\t\t'SHIFT': 16,\n\t\t'CTRL': 17,\n\t\t'ALT': 18,\n\t\t'PLUS': 187,\n\t\t'COMMA': 188,\n\t\t'MINUS': 189,\n\t\t'PERIOD': 190\n\t};\n\n\texport default Input;\n"]}