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
18 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 { DEFAULT_TOUCH_SLOP } from \"../constants\";\nimport GestureHandler from \"./GestureHandler\";\nimport ScaleGestureDetector from \"../detectors/ScaleGestureDetector\";\nvar PinchGestureHandler = function (_GestureHandler) {\n _inherits(PinchGestureHandler, _GestureHandler);\n var _super = _createSuper(PinchGestureHandler);\n function PinchGestureHandler() {\n var _this;\n _classCallCheck(this, PinchGestureHandler);\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), \"scale\", 1);\n _defineProperty(_assertThisInitialized(_this), \"velocity\", 0);\n _defineProperty(_assertThisInitialized(_this), \"startingSpan\", 0);\n _defineProperty(_assertThisInitialized(_this), \"spanSlop\", DEFAULT_TOUCH_SLOP);\n _defineProperty(_assertThisInitialized(_this), \"scaleDetectorListener\", {\n onScaleBegin: function onScaleBegin(detector) {\n _this.startingSpan = detector.getCurrentSpan();\n return true;\n },\n onScale: function onScale(detector) {\n var prevScaleFactor = _this.scale;\n _this.scale *= detector.getScaleFactor(_this.tracker.getTrackedPointersCount());\n var delta = detector.getTimeDelta();\n if (delta > 0) {\n _this.velocity = (_this.scale - prevScaleFactor) / delta;\n }\n if (Math.abs(_this.startingSpan - detector.getCurrentSpan()) >= _this.spanSlop && _this.currentState === State.BEGAN) {\n _this.activate();\n }\n return true;\n },\n onScaleEnd: function onScaleEnd(_detector) {}\n });\n _defineProperty(_assertThisInitialized(_this), \"scaleGestureDetector\", new ScaleGestureDetector(_this.scaleDetectorListener));\n return _this;\n }\n _createClass(PinchGestureHandler, [{\n key: \"init\",\n value: function init(ref, propsRef) {\n _get(_getPrototypeOf(PinchGestureHandler.prototype), \"init\", this).call(this, ref, propsRef);\n this.setShouldCancelWhenOutside(false);\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(PinchGestureHandler.prototype), \"updateGestureConfig\", this).call(this, _objectSpread({\n enabled: enabled\n }, props));\n }\n }, {\n key: \"transformNativeEvent\",\n value: function transformNativeEvent() {\n return {\n focalX: this.scaleGestureDetector.getFocusX(),\n focalY: this.scaleGestureDetector.getFocusY(),\n velocity: this.velocity,\n scale: this.scale\n };\n }\n }, {\n key: \"onPointerDown\",\n value: function onPointerDown(event) {\n this.tracker.addToTracker(event);\n _get(_getPrototypeOf(PinchGestureHandler.prototype), \"onPointerDown\", this).call(this, event);\n }\n }, {\n key: \"onPointerAdd\",\n value: function onPointerAdd(event) {\n this.tracker.addToTracker(event);\n _get(_getPrototypeOf(PinchGestureHandler.prototype), \"onPointerAdd\", this).call(this, event);\n this.tryBegin();\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n }\n }, {\n key: \"onPointerUp\",\n value: function onPointerUp(event) {\n _get(_getPrototypeOf(PinchGestureHandler.prototype), \"onPointerUp\", this).call(this, event);\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.ACTIVE) {\n return;\n }\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n }, {\n key: \"onPointerRemove\",\n value: function onPointerRemove(event) {\n _get(_getPrototypeOf(PinchGestureHandler.prototype), \"onPointerRemove\", this).call(this, event);\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState === State.ACTIVE && this.tracker.getTrackedPointersCount() < 2) {\n this.end();\n }\n }\n }, {\n key: \"onPointerMove\",\n value: function onPointerMove(event) {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n this.tracker.track(event);\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n _get(_getPrototypeOf(PinchGestureHandler.prototype), \"onPointerMove\", this).call(this, event);\n }\n }, {\n key: \"onPointerOutOfBounds\",\n value: function onPointerOutOfBounds(event) {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n this.tracker.track(event);\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n _get(_getPrototypeOf(PinchGestureHandler.prototype), \"onPointerOutOfBounds\", this).call(this, event);\n }\n }, {\n key: \"onPointerCancel\",\n value: function onPointerCancel(event) {\n _get(_getPrototypeOf(PinchGestureHandler.prototype), \"onPointerCancel\", this).call(this, event);\n this.reset();\n }\n }, {\n key: \"tryBegin\",\n value: function tryBegin() {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n this.resetProgress();\n this.begin();\n }\n }, {\n key: \"activate\",\n value: function activate(force) {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n _get(_getPrototypeOf(PinchGestureHandler.prototype), \"activate\", this).call(this, force);\n }\n }, {\n key: \"onReset\",\n value: function onReset() {\n this.resetProgress();\n }\n }, {\n key: \"resetProgress\",\n value: function resetProgress() {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n this.velocity = 0;\n this.scale = 1;\n }\n }]);\n return PinchGestureHandler;\n}(GestureHandler);\nexport { PinchGestureHandler as default };","map":{"version":3,"sources":["PinchGestureHandler.ts"],"names":["State","DEFAULT_TOUCH_SLOP","GestureHandler","ScaleGestureDetector","PinchGestureHandler","onScaleBegin","detector","startingSpan","getCurrentSpan","onScale","prevScaleFactor","scale","getScaleFactor","tracker","getTrackedPointersCount","delta","getTimeDelta","velocity","Math","abs","spanSlop","currentState","BEGAN","activate","onScaleEnd","_detector","scaleDetectorListener","init","ref","propsRef","setShouldCancelWhenOutside","updateGestureConfig","enabled","props","transformNativeEvent","focalX","scaleGestureDetector","getFocusX","focalY","getFocusY","onPointerDown","event","addToTracker","onPointerAdd","tryBegin","onTouchEvent","onPointerUp","removeFromTracker","pointerId","ACTIVE","end","fail","onPointerRemove","onPointerMove","track","onPointerOutOfBounds","onPointerCancel","reset","UNDETERMINED","resetProgress","begin","force","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nimport ScaleGestureDetector, {\n ScaleGestureListener,\n} from '../detectors/ScaleGestureDetector';\n\nexport default class PinchGestureHandler extends GestureHandler {\n private scale = 1;\n private velocity = 0;\n\n private startingSpan = 0;\n private spanSlop = DEFAULT_TOUCH_SLOP;\n\n private scaleDetectorListener: ScaleGestureListener = {\n onScaleBegin: (detector: ScaleGestureDetector): boolean => {\n this.startingSpan = detector.getCurrentSpan();\n return true;\n },\n onScale: (detector: ScaleGestureDetector): boolean => {\n const prevScaleFactor: number = this.scale;\n this.scale *= detector.getScaleFactor(\n this.tracker.getTrackedPointersCount()\n );\n\n const delta = detector.getTimeDelta();\n if (delta > 0) {\n this.velocity = (this.scale - prevScaleFactor) / delta;\n }\n\n if (\n Math.abs(this.startingSpan - detector.getCurrentSpan()) >=\n this.spanSlop &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n return true;\n },\n onScaleEnd: (\n _detector: ScaleGestureDetector\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ): void => {},\n };\n\n private scaleGestureDetector: ScaleGestureDetector = new ScaleGestureDetector(\n this.scaleDetectorListener\n );\n\n public init(ref: number, propsRef: React.RefObject<unknown>) {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(false);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n }\n\n protected transformNativeEvent() {\n return {\n focalX: this.scaleGestureDetector.getFocusX(),\n focalY: this.scaleGestureDetector.getFocusY(),\n velocity: this.velocity,\n scale: this.scale,\n };\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.tryBegin();\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.ACTIVE) {\n return;\n }\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n this.tracker.removeFromTracker(event.pointerId);\n\n if (\n this.currentState === State.ACTIVE &&\n this.tracker.getTrackedPointersCount() < 2\n ) {\n this.end();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n this.tracker.track(event);\n\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n super.onPointerMove(event);\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n this.tracker.track(event);\n\n this.scaleGestureDetector.onTouchEvent(event, this.tracker);\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.reset();\n }\n\n private tryBegin(): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.resetProgress();\n this.begin();\n }\n\n public activate(force?: boolean): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(force);\n }\n\n protected onReset(): void {\n this.resetProgress();\n }\n\n protected resetProgress(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n this.velocity = 0;\n this.scale = 1;\n }\n}\n"]},"metadata":{},"sourceType":"module"}