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
15 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 GestureHandler from \"./GestureHandler\";\nvar DEFAULT_MIN_DURATION_MS = 500;\nvar DEFAULT_MAX_DIST_DP = 10;\nvar SCALING_FACTOR = 10;\nvar LongPressGestureHandler = function (_GestureHandler) {\n _inherits(LongPressGestureHandler, _GestureHandler);\n var _super = _createSuper(LongPressGestureHandler);\n function LongPressGestureHandler() {\n var _this;\n _classCallCheck(this, LongPressGestureHandler);\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), \"minDurationMs\", DEFAULT_MIN_DURATION_MS);\n _defineProperty(_assertThisInitialized(_this), \"defaultMaxDistSq\", DEFAULT_MAX_DIST_DP * SCALING_FACTOR);\n _defineProperty(_assertThisInitialized(_this), \"maxDistSq\", _this.defaultMaxDistSq);\n _defineProperty(_assertThisInitialized(_this), \"startX\", 0);\n _defineProperty(_assertThisInitialized(_this), \"startY\", 0);\n _defineProperty(_assertThisInitialized(_this), \"startTime\", 0);\n _defineProperty(_assertThisInitialized(_this), \"previousTime\", 0);\n _defineProperty(_assertThisInitialized(_this), \"activationTimeout\", void 0);\n return _this;\n }\n _createClass(LongPressGestureHandler, [{\n key: \"init\",\n value: function init(ref, propsRef) {\n _get(_getPrototypeOf(LongPressGestureHandler.prototype), \"init\", this).call(this, ref, propsRef);\n this.view.oncontextmenu = function () {\n return false;\n };\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 duration: Date.now() - this.startTime\n };\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(LongPressGestureHandler.prototype), \"updateGestureConfig\", this).call(this, _objectSpread({\n enabled: enabled\n }, props));\n if (this.config.minDurationMs !== undefined) {\n this.minDurationMs = this.config.minDurationMs;\n }\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n }\n }, {\n key: \"resetConfig\",\n value: function resetConfig() {\n _get(_getPrototypeOf(LongPressGestureHandler.prototype), \"resetConfig\", this).call(this);\n this.minDurationMs = DEFAULT_MIN_DURATION_MS;\n this.maxDistSq = this.defaultMaxDistSq;\n }\n }, {\n key: \"onStateChange\",\n value: function onStateChange(_newState, _oldState) {\n clearTimeout(this.activationTimeout);\n }\n }, {\n key: \"onPointerDown\",\n value: function onPointerDown(event) {\n this.tracker.addToTracker(event);\n _get(_getPrototypeOf(LongPressGestureHandler.prototype), \"onPointerDown\", this).call(this, event);\n this.tryBegin(event);\n this.tryActivate();\n this.checkDistanceFail(event);\n }\n }, {\n key: \"onPointerMove\",\n value: function onPointerMove(event) {\n _get(_getPrototypeOf(LongPressGestureHandler.prototype), \"onPointerMove\", this).call(this, event);\n this.tracker.track(event);\n this.checkDistanceFail(event);\n }\n }, {\n key: \"onPointerUp\",\n value: function onPointerUp(event) {\n _get(_getPrototypeOf(LongPressGestureHandler.prototype), \"onPointerUp\", this).call(this, event);\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }, {\n key: \"tryBegin\",\n value: function tryBegin(event) {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n this.previousTime = Date.now();\n this.startTime = this.previousTime;\n this.begin();\n this.startX = event.x;\n this.startY = event.y;\n }\n }, {\n key: \"tryActivate\",\n value: function tryActivate() {\n var _this2 = this;\n if (this.minDurationMs > 0) {\n this.activationTimeout = setTimeout(function () {\n _this2.activate();\n }, this.minDurationMs);\n } else if (this.minDurationMs === 0) {\n this.activate();\n }\n }\n }, {\n key: \"checkDistanceFail\",\n value: function checkDistanceFail(event) {\n var dx = event.x - this.startX;\n var dy = event.y - this.startY;\n var distSq = dx * dx + dy * dy;\n if (distSq <= this.maxDistSq) {\n return;\n }\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n }\n }]);\n return LongPressGestureHandler;\n}(GestureHandler);\nexport { LongPressGestureHandler as default };","map":{"version":3,"sources":["LongPressGestureHandler.ts"],"names":["State","GestureHandler","DEFAULT_MIN_DURATION_MS","DEFAULT_MAX_DIST_DP","SCALING_FACTOR","LongPressGestureHandler","defaultMaxDistSq","init","ref","propsRef","view","oncontextmenu","transformNativeEvent","rect","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","duration","Date","now","startTime","updateGestureConfig","enabled","props","config","minDurationMs","undefined","maxDist","maxDistSq","resetConfig","onStateChange","_newState","_oldState","clearTimeout","activationTimeout","onPointerDown","event","addToTracker","tryBegin","tryActivate","checkDistanceFail","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","currentState","ACTIVE","end","fail","UNDETERMINED","previousTime","begin","startX","startY","setTimeout","activate","dx","dy","distSq","cancel"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MIN_DURATION_MS = 500;\nconst DEFAULT_MAX_DIST_DP = 10;\nconst SCALING_FACTOR = 10;\n\nexport default class LongPressGestureHandler extends GestureHandler {\n private minDurationMs = DEFAULT_MIN_DURATION_MS;\n private defaultMaxDistSq = DEFAULT_MAX_DIST_DP * SCALING_FACTOR;\n\n private maxDistSq = this.defaultMaxDistSq;\n private startX = 0;\n private startY = 0;\n\n private startTime = 0;\n private previousTime = 0;\n\n private activationTimeout: number | undefined;\n\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n\n this.view.oncontextmenu = () => false;\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 duration: Date.now() - this.startTime,\n };\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.minDurationMs !== undefined) {\n this.minDurationMs = this.config.minDurationMs;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.minDurationMs = DEFAULT_MIN_DURATION_MS;\n this.maxDistSq = this.defaultMaxDistSq;\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {\n clearTimeout(this.activationTimeout);\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n this.tryBegin(event);\n this.tryActivate();\n this.checkDistanceFail(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n super.onPointerMove(event);\n this.tracker.track(event);\n this.checkDistanceFail(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n private tryBegin(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.previousTime = Date.now();\n this.startTime = this.previousTime;\n\n this.begin();\n\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private tryActivate(): void {\n if (this.minDurationMs > 0) {\n this.activationTimeout = setTimeout(() => {\n this.activate();\n }, this.minDurationMs);\n } else if (this.minDurationMs === 0) {\n this.activate();\n }\n }\n\n private checkDistanceFail(event: AdaptedEvent): void {\n const dx = event.x - this.startX;\n const dy = event.y - this.startY;\n const distSq = dx * dx + dy * dy;\n\n if (distSq <= this.maxDistSq) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.cancel();\n } else {\n this.fail();\n }\n }\n}\n"]},"metadata":{},"sourceType":"module"}