UNPKG

awv3

Version:
1 lines 3.98 kB
"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t["default"]=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function createStates(e,t,r){var n=arguments.length<=3||void 0===arguments[3]?void 0:arguments[3];return t.reduce(function(t,s){var i;return e.addEventListener(s,r,n),(0,_extends4["default"])({},t,(i={},i[s]={type:s,fulfilled:!1,detach:function(){return e.removeEventListener(s,r)}},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],r=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=[],_events2["default"].mixin(this,r),this.eventHandler=this.handleEvent.bind(this),this.eventHandlerDefault=this.handleEventDefault.bind(this);var n=createStates(this.dom,["mousedown","mouseup","mousemove","mouseout","mousewheel"],this.eventHandler,{passive:!0}),s=createStates(this.dom,["touchstart","touchmove","touchend"],this.eventHandlerDefault,{passive:!1});this.states=(0,_extends4["default"])({},n,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),r=0,e=t?e:(0,_getIterator3["default"])(e);;){var n;if(t){if(r>=e.length)break;n=e[r++]}else{if(r=e.next(),r.done)break;n=r.value}var s=n;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){var t=e.type,r=e.pageX,n=e.pageY,s=e.clientX,i=e.clientY,o=e.button,a=e.which,u=e.wheelDelta,l=e.detail,h=this.states[t];if(!h.fulfilled){if(h.delta=0,void 0!==u?h.delta=u/40:void 0!==l&&(h.delta=-l/3),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;r=p.pageX,n=p.pageY,s=p.clientX,i=p.clientY,h.touches.push({clientX:s,clientY:i,offsetX:r-this.renderer.offset.left-this.view.left,offsetY:n-this.renderer.offset.top-this.view.top,pageX:r,pageY:n})}h.fulfilled=!0,h.pageX=r,h.pageY=n,h.clientX=s,h.clientY=i,h.offsetX=r-this.renderer.offset.left-this.view.left,h.offsetY=n-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;