{"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 { Direction } from \"../constants\";\nimport GestureHandler from \"./GestureHandler\";\nvar DEFAULT_MAX_DURATION_MS = 800;\nvar DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nvar DEFAULT_DIRECTION = Direction.RIGHT;\nvar DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\nvar FlingGestureHandler = function (_GestureHandler) {\n  _inherits(FlingGestureHandler, _GestureHandler);\n  var _super = _createSuper(FlingGestureHandler);\n  function FlingGestureHandler() {\n    var _this;\n    _classCallCheck(this, FlingGestureHandler);\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), \"numberOfPointersRequired\", DEFAULT_NUMBER_OF_TOUCHES_REQUIRED);\n    _defineProperty(_assertThisInitialized(_this), \"direction\", DEFAULT_DIRECTION);\n    _defineProperty(_assertThisInitialized(_this), \"maxDurationMs\", DEFAULT_MAX_DURATION_MS);\n    _defineProperty(_assertThisInitialized(_this), \"minAcceptableDelta\", DEFAULT_MIN_ACCEPTABLE_DELTA);\n    _defineProperty(_assertThisInitialized(_this), \"delayTimeout\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"startX\", 0);\n    _defineProperty(_assertThisInitialized(_this), \"startY\", 0);\n    _defineProperty(_assertThisInitialized(_this), \"maxNumberOfPointersSimultaneously\", 0);\n    _defineProperty(_assertThisInitialized(_this), \"keyPointer\", NaN);\n    return _this;\n  }\n  _createClass(FlingGestureHandler, [{\n    key: \"init\",\n    value: function init(ref, propsRef) {\n      _get(_getPrototypeOf(FlingGestureHandler.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(FlingGestureHandler.prototype), \"updateGestureConfig\", this).call(this, _objectSpread({\n        enabled: enabled\n      }, props));\n      if (this.config.direction) {\n        this.direction = this.config.direction;\n      }\n      if (this.config.numberOfPointers) {\n        this.numberOfPointersRequired = this.config.numberOfPointers;\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      };\n    }\n  }, {\n    key: \"startFling\",\n    value: function startFling() {\n      var _this2 = this;\n      this.startX = this.tracker.getLastX(this.keyPointer);\n      this.startY = this.tracker.getLastY(this.keyPointer);\n      this.begin();\n      this.maxNumberOfPointersSimultaneously = 1;\n      this.delayTimeout = setTimeout(function () {\n        return _this2.fail();\n      }, this.maxDurationMs);\n    }\n  }, {\n    key: \"tryEndFling\",\n    value: function tryEndFling() {\n      if (this.maxNumberOfPointersSimultaneously === this.numberOfPointersRequired && (this.direction & Direction.RIGHT && this.tracker.getLastX(this.keyPointer) - this.startX > this.minAcceptableDelta || this.direction & Direction.LEFT && this.startX - this.tracker.getLastX(this.keyPointer) > this.minAcceptableDelta || this.direction & Direction.UP && this.startY - this.tracker.getLastY(this.keyPointer) > this.minAcceptableDelta || this.direction & Direction.DOWN && this.tracker.getLastY(this.keyPointer) - this.startY > this.minAcceptableDelta)) {\n        clearTimeout(this.delayTimeout);\n        this.activate();\n        return true;\n      }\n      return false;\n    }\n  }, {\n    key: \"endFling\",\n    value: function endFling() {\n      if (!this.tryEndFling()) {\n        this.fail();\n      }\n    }\n  }, {\n    key: \"onPointerDown\",\n    value: function onPointerDown(event) {\n      this.tracker.addToTracker(event);\n      this.keyPointer = event.pointerId;\n      _get(_getPrototypeOf(FlingGestureHandler.prototype), \"onPointerDown\", this).call(this, event);\n      this.newPointerAction();\n    }\n  }, {\n    key: \"onPointerAdd\",\n    value: function onPointerAdd(event) {\n      this.tracker.addToTracker(event);\n      _get(_getPrototypeOf(FlingGestureHandler.prototype), \"onPointerAdd\", this).call(this, event);\n      this.newPointerAction();\n    }\n  }, {\n    key: \"newPointerAction\",\n    value: function newPointerAction() {\n      if (this.currentState === State.UNDETERMINED) {\n        this.startFling();\n      }\n      if (this.currentState !== State.BEGAN) {\n        return;\n      }\n      this.tryEndFling();\n      if (this.tracker.getTrackedPointersCount() > this.maxNumberOfPointersSimultaneously) {\n        this.maxNumberOfPointersSimultaneously = this.tracker.getTrackedPointersCount();\n      }\n    }\n  }, {\n    key: \"onPointerMove\",\n    value: function onPointerMove(event) {\n      this.tracker.track(event);\n      if (this.currentState !== State.BEGAN) {\n        return;\n      }\n      this.tryEndFling();\n      _get(_getPrototypeOf(FlingGestureHandler.prototype), \"onPointerMove\", this).call(this, event);\n    }\n  }, {\n    key: \"onPointerUp\",\n    value: function onPointerUp(event) {\n      _get(_getPrototypeOf(FlingGestureHandler.prototype), \"onPointerUp\", this).call(this, event);\n      this.onUp(event);\n      this.keyPointer = NaN;\n    }\n  }, {\n    key: \"onPointerRemove\",\n    value: function onPointerRemove(event) {\n      _get(_getPrototypeOf(FlingGestureHandler.prototype), \"onPointerRemove\", this).call(this, event);\n      this.onUp(event);\n    }\n  }, {\n    key: \"onUp\",\n    value: function onUp(event) {\n      this.tracker.removeFromTracker(event.pointerId);\n      if (this.currentState !== State.BEGAN) {\n        return;\n      }\n      this.endFling();\n    }\n  }, {\n    key: \"activate\",\n    value: function activate(force) {\n      _get(_getPrototypeOf(FlingGestureHandler.prototype), \"activate\", this).call(this, force);\n      this.end();\n    }\n  }, {\n    key: \"resetConfig\",\n    value: function resetConfig() {\n      _get(_getPrototypeOf(FlingGestureHandler.prototype), \"resetConfig\", this).call(this);\n      this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n      this.direction = DEFAULT_DIRECTION;\n    }\n  }]);\n  return FlingGestureHandler;\n}(GestureHandler);\nexport { FlingGestureHandler as default };","map":{"version":3,"sources":["FlingGestureHandler.ts"],"names":["State","Direction","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","startFling","startX","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","force","end","resetConfig"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n  private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n  private direction = DEFAULT_DIRECTION;\n\n  private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n  private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n  private delayTimeout!: number;\n\n  private startX = 0;\n  private startY = 0;\n\n  private maxNumberOfPointersSimultaneously = 0;\n  private keyPointer = NaN;\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.direction) {\n      this.direction = this.config.direction;\n    }\n\n    if (this.config.numberOfPointers) {\n      this.numberOfPointersRequired = this.config.numberOfPointers;\n    }\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 startFling(): void {\n    this.startX = this.tracker.getLastX(this.keyPointer);\n    this.startY = this.tracker.getLastY(this.keyPointer);\n\n    this.begin();\n\n    this.maxNumberOfPointersSimultaneously = 1;\n\n    this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n  }\n\n  private tryEndFling(): boolean {\n    if (\n      this.maxNumberOfPointersSimultaneously ===\n        this.numberOfPointersRequired &&\n      ((this.direction & Direction.RIGHT &&\n        this.tracker.getLastX(this.keyPointer) - this.startX >\n          this.minAcceptableDelta) ||\n        (this.direction & Direction.LEFT &&\n          this.startX - this.tracker.getLastX(this.keyPointer) >\n            this.minAcceptableDelta) ||\n        (this.direction & Direction.UP &&\n          this.startY - this.tracker.getLastY(this.keyPointer) >\n            this.minAcceptableDelta) ||\n        (this.direction & Direction.DOWN &&\n          this.tracker.getLastY(this.keyPointer) - this.startY >\n            this.minAcceptableDelta))\n    ) {\n      clearTimeout(this.delayTimeout);\n      this.activate();\n\n      return true;\n    }\n\n    return false;\n  }\n\n  private endFling() {\n    if (!this.tryEndFling()) {\n      this.fail();\n    }\n  }\n\n  protected onPointerDown(event: AdaptedEvent): void {\n    this.tracker.addToTracker(event);\n    this.keyPointer = event.pointerId;\n\n    super.onPointerDown(event);\n    this.newPointerAction();\n  }\n\n  protected onPointerAdd(event: AdaptedEvent): void {\n    this.tracker.addToTracker(event);\n    super.onPointerAdd(event);\n    this.newPointerAction();\n  }\n\n  private newPointerAction(): void {\n    if (this.currentState === State.UNDETERMINED) {\n      this.startFling();\n    }\n\n    if (this.currentState !== State.BEGAN) {\n      return;\n    }\n\n    this.tryEndFling();\n\n    if (\n      this.tracker.getTrackedPointersCount() >\n      this.maxNumberOfPointersSimultaneously\n    ) {\n      this.maxNumberOfPointersSimultaneously =\n        this.tracker.getTrackedPointersCount();\n    }\n  }\n\n  protected onPointerMove(event: AdaptedEvent): void {\n    this.tracker.track(event);\n\n    if (this.currentState !== State.BEGAN) {\n      return;\n    }\n\n    this.tryEndFling();\n\n    super.onPointerMove(event);\n  }\n\n  protected onPointerUp(event: AdaptedEvent): void {\n    super.onPointerUp(event);\n    this.onUp(event);\n\n    this.keyPointer = NaN;\n  }\n\n  protected onPointerRemove(event: AdaptedEvent): void {\n    super.onPointerRemove(event);\n    this.onUp(event);\n  }\n\n  private onUp(event: AdaptedEvent): void {\n    this.tracker.removeFromTracker(event.pointerId);\n    if (this.currentState !== State.BEGAN) {\n      return;\n    }\n    this.endFling();\n  }\n\n  public activate(force?: boolean): void {\n    super.activate(force);\n    this.end();\n  }\n\n  protected resetConfig(): void {\n    super.resetConfig();\n    this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n    this.direction = DEFAULT_DIRECTION;\n  }\n}\n"]},"metadata":{},"sourceType":"module"}