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
29 KiB
1 line
29 KiB
{"ast":null,"code":"import _defineProperty2 from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _get from \"@babel/runtime/helpers/get\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nvar _excluded = [\"enabled\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty2(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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; } }\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { State } from \"../../State\";\nimport { EventTypes } from \"../interfaces\";\nimport GestureHandler from \"./GestureHandler\";\nvar DEFAULT_MAX_DURATION_MS = 500;\nvar DEFAULT_MAX_DELAY_MS = 500;\nvar DEFAULT_NUMBER_OF_TAPS = 1;\nvar DEFAULT_MIN_NUMBER_OF_POINTERS = 1;\nvar TapGestureHandler = function (_GestureHandler) {\n _inherits(TapGestureHandler, _GestureHandler);\n var _super = _createSuper(TapGestureHandler);\n function TapGestureHandler() {\n var _this;\n _classCallCheck(this, TapGestureHandler);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"maxDeltaX\", Number.MIN_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"maxDeltaY\", Number.MIN_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"maxDistSq\", Number.MIN_SAFE_INTEGER);\n _defineProperty(_assertThisInitialized(_this), \"maxDurationMs\", DEFAULT_MAX_DURATION_MS);\n _defineProperty(_assertThisInitialized(_this), \"maxDelayMs\", DEFAULT_MAX_DELAY_MS);\n _defineProperty(_assertThisInitialized(_this), \"numberOfTaps\", DEFAULT_NUMBER_OF_TAPS);\n _defineProperty(_assertThisInitialized(_this), \"minNumberOfPointers\", DEFAULT_MIN_NUMBER_OF_POINTERS);\n _defineProperty(_assertThisInitialized(_this), \"currentMaxNumberOfPointers\", 1);\n _defineProperty(_assertThisInitialized(_this), \"startX\", 0);\n _defineProperty(_assertThisInitialized(_this), \"startY\", 0);\n _defineProperty(_assertThisInitialized(_this), \"offsetX\", 0);\n _defineProperty(_assertThisInitialized(_this), \"offsetY\", 0);\n _defineProperty(_assertThisInitialized(_this), \"lastX\", 0);\n _defineProperty(_assertThisInitialized(_this), \"lastY\", 0);\n _defineProperty(_assertThisInitialized(_this), \"waitTimeout\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"delayTimeout\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"tapsSoFar\", 0);\n return _this;\n }\n _createClass(TapGestureHandler, [{\n key: \"init\",\n value: function init(ref, propsRef) {\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"init\", this).call(this, ref, propsRef);\n }\n }, {\n key: \"updateGestureConfig\",\n value: function updateGestureConfig(_ref) {\n var _ref$enabled = _ref.enabled,\n enabled = _ref$enabled === void 0 ? true : _ref$enabled,\n props = _objectWithoutProperties(_ref, _excluded);\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"updateGestureConfig\", this).call(this, _objectSpread({\n enabled: enabled\n }, props));\n if (this.config.numberOfTaps !== undefined) {\n this.numberOfTaps = this.config.numberOfTaps;\n }\n if (this.config.maxDurationMs !== undefined) {\n this.maxDurationMs = this.config.maxDurationMs;\n }\n if (this.config.maxDelayMs !== undefined) {\n this.maxDelayMs = this.config.maxDelayMs;\n }\n if (this.config.maxDeltaX !== undefined) {\n this.maxDeltaX = this.config.maxDeltaX;\n }\n if (this.config.maxDeltaY !== undefined) {\n this.maxDeltaY = this.config.maxDeltaY;\n }\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n if (this.config.minPointers !== undefined) {\n this.minNumberOfPointers = this.config.minPointers;\n }\n }\n }, {\n key: \"resetConfig\",\n value: function resetConfig() {\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"resetConfig\", this).call(this);\n this.maxDeltaX = Number.MIN_SAFE_INTEGER;\n this.maxDeltaY = Number.MIN_SAFE_INTEGER;\n this.maxDistSq = Number.MIN_SAFE_INTEGER;\n this.maxDurationMs = DEFAULT_MAX_DURATION_MS;\n this.maxDelayMs = DEFAULT_MAX_DELAY_MS;\n this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n }\n }, {\n key: \"transformNativeEvent\",\n value: function transformNativeEvent() {\n var rect = this.view.getBoundingClientRect();\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY()\n };\n }\n }, {\n key: \"clearTimeouts\",\n value: function clearTimeouts() {\n clearTimeout(this.waitTimeout);\n clearTimeout(this.delayTimeout);\n }\n }, {\n key: \"startTap\",\n value: function startTap() {\n var _this2 = this;\n this.clearTimeouts();\n this.waitTimeout = setTimeout(function () {\n return _this2.fail();\n }, this.maxDurationMs);\n }\n }, {\n key: \"endTap\",\n value: function endTap() {\n var _this3 = this;\n this.clearTimeouts();\n if (++this.tapsSoFar === this.numberOfTaps && this.currentMaxNumberOfPointers >= this.minNumberOfPointers) {\n this.activate();\n } else {\n this.delayTimeout = setTimeout(function () {\n return _this3.fail();\n }, this.maxDelayMs);\n }\n }\n }, {\n key: \"onPointerDown\",\n value: function onPointerDown(event) {\n this.tracker.addToTracker(event);\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"onPointerDown\", this).call(this, event);\n this.trySettingPosition(event);\n this.startX = event.x;\n this.startY = event.y;\n this.lastX = event.x;\n this.lastY = event.y;\n this.updateState(event);\n }\n }, {\n key: \"onPointerAdd\",\n value: function onPointerAdd(event) {\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"onPointerAdd\", this).call(this, event);\n this.tracker.addToTracker(event);\n this.trySettingPosition(event);\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n this.updateState(event);\n }\n }, {\n key: \"onPointerUp\",\n value: function onPointerUp(event) {\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"onPointerUp\", this).call(this, event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.tracker.removeFromTracker(event.pointerId);\n this.updateState(event);\n }\n }, {\n key: \"onPointerRemove\",\n value: function onPointerRemove(event) {\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"onPointerRemove\", this).call(this, event);\n this.tracker.removeFromTracker(event.pointerId);\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY = this.startY;\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.startX = this.lastX;\n this.startY = this.lastY;\n this.updateState(event);\n }\n }, {\n key: \"onPointerMove\",\n value: function onPointerMove(event) {\n this.trySettingPosition(event);\n this.tracker.track(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.updateState(event);\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"onPointerMove\", this).call(this, event);\n }\n }, {\n key: \"onPointerOutOfBounds\",\n value: function onPointerOutOfBounds(event) {\n this.trySettingPosition(event);\n this.tracker.track(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n this.updateState(event);\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"onPointerOutOfBounds\", this).call(this, event);\n }\n }, {\n key: \"onPointerCancel\",\n value: function onPointerCancel(event) {\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"onPointerCancel\", this).call(this, event);\n this.tracker.resetTracker();\n this.fail();\n }\n }, {\n key: \"updateState\",\n value: function updateState(event) {\n if (this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()) {\n this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount();\n }\n if (this.shouldFail()) {\n this.fail();\n return;\n }\n switch (this.currentState) {\n case State.UNDETERMINED:\n if (event.eventType === EventTypes.DOWN) {\n this.begin();\n }\n this.startTap();\n break;\n case State.BEGAN:\n if (event.eventType === EventTypes.UP) {\n this.endTap();\n }\n if (event.eventType === EventTypes.DOWN) {\n this.startTap();\n }\n break;\n default:\n break;\n }\n }\n }, {\n key: \"trySettingPosition\",\n value: function trySettingPosition(event) {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n this.offsetX = 0;\n this.offsetY = 0;\n this.startX = event.x;\n this.startY = event.y;\n }\n }, {\n key: \"shouldFail\",\n value: function shouldFail() {\n var dx = this.lastX - this.startX + this.offsetX;\n if (this.maxDeltaX !== Number.MIN_SAFE_INTEGER && Math.abs(dx) > this.maxDeltaX) {\n return true;\n }\n var dy = this.lastY - this.startY + this.offsetY;\n if (this.maxDeltaY !== Number.MIN_SAFE_INTEGER && Math.abs(dy) > this.maxDeltaY) {\n return true;\n }\n var distSq = dy * dy + dx * dx;\n return this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq;\n }\n }, {\n key: \"activate\",\n value: function activate() {\n _get(_getPrototypeOf(TapGestureHandler.prototype), \"activate\", this).call(this);\n this.end();\n }\n }, {\n key: \"onCancel\",\n value: function onCancel() {\n this.resetProgress();\n this.clearTimeouts();\n }\n }, {\n key: \"resetProgress\",\n value: function resetProgress() {\n this.clearTimeouts();\n this.tapsSoFar = 0;\n this.currentMaxNumberOfPointers = 0;\n }\n }]);\n return TapGestureHandler;\n}(GestureHandler);\nexport { TapGestureHandler as default };","map":{"version":3,"sources":["TapGestureHandler.ts"],"names":["State","EventTypes","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MAX_DELAY_MS","DEFAULT_NUMBER_OF_TAPS","DEFAULT_MIN_NUMBER_OF_POINTERS","TapGestureHandler","Number","MIN_SAFE_INTEGER","init","ref","propsRef","updateGestureConfig","enabled","props","config","numberOfTaps","undefined","maxDurationMs","maxDelayMs","maxDeltaX","maxDeltaY","maxDist","maxDistSq","minPointers","minNumberOfPointers","resetConfig","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","clearTimeouts","clearTimeout","waitTimeout","delayTimeout","startTap","setTimeout","fail","endTap","tapsSoFar","currentMaxNumberOfPointers","activate","onPointerDown","event","addToTracker","trySettingPosition","startX","startY","lastX","lastY","updateState","onPointerAdd","offsetX","offsetY","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerMove","track","onPointerOutOfBounds","onPointerCancel","resetTracker","getTrackedPointersCount","shouldFail","currentState","UNDETERMINED","eventType","DOWN","begin","BEGAN","UP","dx","Math","abs","dy","distSq","end","onCancel","resetProgress"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config, EventTypes } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 500;\nconst DEFAULT_MAX_DELAY_MS = 500;\nconst DEFAULT_NUMBER_OF_TAPS = 1;\nconst DEFAULT_MIN_NUMBER_OF_POINTERS = 1;\n\nexport default class TapGestureHandler extends GestureHandler {\n private maxDeltaX = Number.MIN_SAFE_INTEGER;\n private maxDeltaY = Number.MIN_SAFE_INTEGER;\n private maxDistSq = Number.MIN_SAFE_INTEGER;\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private maxDelayMs = DEFAULT_MAX_DELAY_MS;\n\n private numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n private minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n private currentMaxNumberOfPointers = 1;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private waitTimeout: number | undefined;\n private delayTimeout: number | undefined;\n\n private tapsSoFar = 0;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.numberOfTaps !== undefined) {\n this.numberOfTaps = this.config.numberOfTaps;\n }\n\n if (this.config.maxDurationMs !== undefined) {\n this.maxDurationMs = this.config.maxDurationMs;\n }\n\n if (this.config.maxDelayMs !== undefined) {\n this.maxDelayMs = this.config.maxDelayMs;\n }\n\n if (this.config.maxDeltaX !== undefined) {\n this.maxDeltaX = this.config.maxDeltaX;\n }\n\n if (this.config.maxDeltaY !== undefined) {\n this.maxDeltaY = this.config.maxDeltaY;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minNumberOfPointers = this.config.minPointers;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.maxDeltaX = Number.MIN_SAFE_INTEGER;\n this.maxDeltaY = Number.MIN_SAFE_INTEGER;\n this.maxDistSq = Number.MIN_SAFE_INTEGER;\n this.maxDurationMs = DEFAULT_MAX_DURATION_MS;\n this.maxDelayMs = DEFAULT_MAX_DELAY_MS;\n this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n private clearTimeouts(): void {\n clearTimeout(this.waitTimeout);\n clearTimeout(this.delayTimeout);\n }\n\n private startTap(): void {\n this.clearTimeouts();\n\n this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private endTap(): void {\n this.clearTimeouts();\n\n if (\n ++this.tapsSoFar === this.numberOfTaps &&\n this.currentMaxNumberOfPointers >= this.minNumberOfPointers\n ) {\n this.activate();\n } else {\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs);\n }\n }\n\n //Handling Events\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.trySettingPosition(event);\n\n this.startX = event.x;\n this.startY = event.y;\n\n this.lastX = event.x;\n this.lastY = event.y;\n\n this.updateState(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n super.onPointerAdd(event);\n this.tracker.addToTracker(event);\n this.trySettingPosition(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tracker.removeFromTracker(event.pointerId);\n\n this.updateState(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY = this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n this.updateState(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.tracker.resetTracker();\n this.fail();\n }\n\n private updateState(event: AdaptedEvent): void {\n if (\n this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()\n ) {\n this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount();\n }\n\n if (this.shouldFail()) {\n this.fail();\n return;\n }\n\n switch (this.currentState) {\n case State.UNDETERMINED:\n if (event.eventType === EventTypes.DOWN) {\n this.begin();\n }\n this.startTap();\n break;\n case State.BEGAN:\n if (event.eventType === EventTypes.UP) {\n this.endTap();\n }\n if (event.eventType === EventTypes.DOWN) {\n this.startTap();\n }\n break;\n default:\n break;\n }\n }\n\n private trySettingPosition(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.offsetX = 0;\n this.offsetY = 0;\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private shouldFail(): boolean {\n const dx = this.lastX - this.startX + this.offsetX;\n\n if (\n this.maxDeltaX !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dx) > this.maxDeltaX\n ) {\n return true;\n }\n\n const dy = this.lastY - this.startY + this.offsetY;\n if (\n this.maxDeltaY !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dy) > this.maxDeltaY\n ) {\n return true;\n }\n\n const distSq = dy * dy + dx * dx;\n\n return (\n this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq\n );\n }\n\n public activate(): void {\n super.activate();\n\n this.end();\n }\n\n protected onCancel(): void {\n this.resetProgress();\n this.clearTimeouts();\n }\n\n protected resetProgress(): void {\n this.clearTimeouts();\n this.tapsSoFar = 0;\n this.currentMaxNumberOfPointers = 0;\n }\n}\n"]},"metadata":{},"sourceType":"module"} |