UNPKG

awv3

Version:
1 lines 3.94 kB
"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function createStates(e,t,n){var r=arguments.length<=3||void 0===arguments[3]?void 0:arguments[3];return t.reduce(function(t,s){var i;return e.addEventListener(s,n,r),(0,_extends4.default)({},t,(i={},i[s]={type:s,fulfilled:!1,detach:function(){return e.removeEventListener(s,n)}},i))},{})}exports.__esModule=!0;var _getIterator2=require("babel-runtime/core-js/get-iterator"),_getIterator3=_interopRequireDefault(_getIterator2),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_extends3=require("babel-runtime/helpers/extends"),_extends4=_interopRequireDefault(_extends3),_error=require("../core/error"),Error=_interopRequireWildcard(_error),_events=require("../core/events"),_events2=_interopRequireDefault(_events);require("event-listener-with-options/js/polyfill");var Dom=function(){function e(){var t=arguments.length<=0||void 0===arguments[0]?Error.log("View undefined"):arguments[0],n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];(0,_classCallCheck3.default)(this,e),this.view=t,this.canvas=t.canvas,this.renderer=t.renderer,this.dom=t.dom,this.recent=[],this.enabled=!0,_events2.default.mixin(this,n),this.eventHandler=this.handleEvent.bind(this),this.eventHandlerDefault=this.handleEventDefault.bind(this);var r=createStates(this.dom,["mousedown","mouseup","mousemove","mouseout","wheel"],this.eventHandler,{passive:!0}),s=createStates(this.dom,["touchstart","touchmove","touchend"],this.eventHandlerDefault,{passive:!1});this.states=(0,_extends4.default)({},r,s),this.mouse={},this.wheel={},this.touch={},this.changes=[]}return e.prototype.detach=function(){for(var e in this.states)this.states[e].detach()},e.prototype.update=function(){if(this.changes.length>0){for(var e=this.changes,t=Array.isArray(e),n=0,e=t?e:(0,_getIterator3.default)(e);;){var r;if(t){if(n>=e.length)break;r=e[n++]}else{if(n=e.next(),n.done)break;r=n.value}var s=r;this.emit(s.type,s),s.fulfilled=!1}this.changes=[]}},e.prototype.handleEventDefault=function(e){e.preventDefault(),this.handleEvent(e)},e.prototype.handleEvent=function(e){if(this.enabled){var t=e.type,n=e.pageX,r=e.pageY,s=e.clientX,i=e.clientY,o=e.button,a=e.which,u=e.deltaMode,l=e.deltaY,h=this.states[t];if(!h.fulfilled){if(h.delta=l*(u?-1:-.03),h.touches=[],e.touches)for(var d=[].slice.call(e.touches),f=Array.isArray(d),c=0,d=f?d:(0,_getIterator3.default)(d);;){var v;if(f){if(c>=d.length)break;v=d[c++]}else{if(c=d.next(),c.done)break;v=c.value}var p=v;n=p.pageX,r=p.pageY,s=p.clientX,i=p.clientY,h.touches.push({clientX:s,clientY:i,offsetX:n-this.renderer.offset.left-this.view.left,offsetY:r-this.renderer.offset.top-this.view.top,pageX:n,pageY:r})}h.fulfilled=!0,h.pageX=n,h.pageY=r,h.clientX=s,h.clientY=i,h.offsetX=n-this.renderer.offset.left-this.view.left,h.offsetY=r-this.renderer.offset.top-this.view.top,h.button=o,h.which=a,h.event=e,this.changes.push(h),"mousedown"===t?(this.mouse.down=!0,this.mouse.button=o,document.addEventListener("mouseup",this.eventHandlerDefault,!1),document.addEventListener("mousemove",this.eventHandlerDefault,!1)):"mouseup"===t?(this.mouse.down=!1,this.mouse.button=o,document.removeEventListener("mouseup",this.eventHandlerDefault),document.removeEventListener("mousemove",this.eventHandlerDefault)):"touchstart"===t?(this.touch.down=!0,document.addEventListener("touchend",this.eventHandlerDefault,!1),document.addEventListener("touchmove",this.eventHandlerDefault,!1)):"touchend"===t&&(this.touch.down=!1,document.removeEventListener("touchend",this.eventHandlerDefault),document.removeEventListener("touchmove",this.eventHandlerDefault)),this.recent[h.type]=h}}},e}();exports.default=Dom;