You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
14 KiB
1 line
14 KiB
{"ast":null,"code":"import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport { EventTypes, MouseButtons, PointerType } from \"../interfaces\";\nimport EventManager from \"./EventManager\";\nimport { isPointerInBounds } from \"../utils\";\nvar PointerEventManager = function (_EventManager) {\n _inherits(PointerEventManager, _EventManager);\n var _super = _createSuper(PointerEventManager);\n function PointerEventManager() {\n _classCallCheck(this, PointerEventManager);\n return _super.apply(this, arguments);\n }\n _createClass(PointerEventManager, [{\n key: \"setListeners\",\n value: function setListeners() {\n var _this = this;\n this.view.addEventListener('pointerdown', function (event) {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n if (!isPointerInBounds(_this.view, {\n x: event.clientX,\n y: event.clientY\n })) {\n return;\n }\n var adaptedEvent = _this.mapEvent(event, EventTypes.DOWN);\n var target = event.target;\n target.setPointerCapture(adaptedEvent.pointerId);\n _this.markAsInBounds(adaptedEvent.pointerId);\n if (++_this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n _this.onPointerAdd(adaptedEvent);\n } else {\n _this.onPointerDown(adaptedEvent);\n }\n });\n this.view.addEventListener('pointerup', function (event) {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n if (_this.activePointersCounter === 0) {\n return;\n }\n var adaptedEvent = _this.mapEvent(event, EventTypes.UP);\n var target = event.target;\n target.releasePointerCapture(adaptedEvent.pointerId);\n _this.markAsOutOfBounds(adaptedEvent.pointerId);\n if (--_this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n _this.onPointerRemove(adaptedEvent);\n } else {\n _this.onPointerUp(adaptedEvent);\n }\n });\n this.view.addEventListener('pointermove', function (event) {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n if (event.pointerType === PointerType.MOUSE && event.buttons !== MouseButtons.LEFT) {\n return;\n }\n var adaptedEvent = _this.mapEvent(event, EventTypes.MOVE);\n var inBounds = isPointerInBounds(_this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y\n });\n var pointerIndex = _this.pointersInBounds.indexOf(adaptedEvent.pointerId);\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n _this.onPointerEnter(adaptedEvent);\n _this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n _this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.OUT;\n _this.onPointerOut(adaptedEvent);\n _this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n _this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n });\n this.view.addEventListener('pointercancel', function (event) {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n var adaptedEvent = _this.mapEvent(event, EventTypes.CANCEL);\n _this.onPointerCancel(adaptedEvent);\n _this.markAsOutOfBounds(adaptedEvent.pointerId);\n _this.activePointersCounter = 0;\n });\n }\n }, {\n key: \"mapEvent\",\n value: function mapEvent(event, eventType) {\n return {\n x: event.clientX,\n y: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n pointerId: event.pointerId,\n eventType: eventType,\n pointerType: event.pointerType,\n buttons: event.buttons,\n time: event.timeStamp\n };\n }\n }]);\n return PointerEventManager;\n}(EventManager);\nexport { PointerEventManager as default };","map":{"version":3,"sources":["PointerEventManager.ts"],"names":["EventTypes","MouseButtons","PointerType","EventManager","isPointerInBounds","PointerEventManager","setListeners","view","addEventListener","event","pointerType","TOUCH","x","clientX","y","clientY","adaptedEvent","mapEvent","DOWN","target","setPointerCapture","pointerId","markAsInBounds","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","UP","releasePointerCapture","markAsOutOfBounds","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","MOUSE","buttons","LEFT","MOVE","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","OUT","onPointerOut","onPointerOutOfBounds","CANCEL","onPointerCancel","offsetX","offsetY","time","timeStamp"],"mappings":"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","sourcesContent":["import {\n AdaptedEvent,\n EventTypes,\n MouseButtons,\n PointerType,\n} from '../interfaces';\nimport EventManager from './EventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default class PointerEventManager extends EventManager {\n public setListeners(): void {\n this.view.addEventListener('pointerdown', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n if (\n !isPointerInBounds(this.view, { x: event.clientX, y: event.clientY })\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.DOWN);\n const target = event.target as HTMLElement;\n\n target.setPointerCapture(adaptedEvent.pointerId);\n this.markAsInBounds(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointerup', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.UP);\n const target = event.target as HTMLElement;\n\n target.releasePointerCapture(adaptedEvent.pointerId);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n });\n\n this.view.addEventListener('pointermove', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n if (\n event.pointerType === PointerType.MOUSE &&\n event.buttons !== MouseButtons.LEFT\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.MOVE);\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.OUT;\n this.onPointerOut(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('pointercancel', (event: PointerEvent): void => {\n if (event.pointerType === PointerType.TOUCH) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(\n event,\n EventTypes.CANCEL\n );\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n });\n }\n\n protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent {\n return {\n x: event.clientX,\n y: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n pointerId: event.pointerId,\n eventType: eventType,\n pointerType: event.pointerType as PointerType,\n buttons: event.buttons,\n time: event.timeStamp,\n };\n }\n}\n"]},"metadata":{},"sourceType":"module"} |