{"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: \"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","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  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"}