{"version":3,"sources":["webpack://web/./node_modules/@use-gesture/core/dist/maths-0ab39ae9.esm.js","webpack://web/./node_modules/@use-gesture/core/dist/actions-fe213e88.esm.js","webpack://web/./node_modules/@use-gesture/core/dist/use-gesture-core.esm.js","webpack://web/./node_modules/@use-gesture/react/dist/use-gesture-react.esm.js"],"names":["V","toVector","v","fallback","undefined","Array","isArray","add","v1","v2","sub","addTo","subTo","rubberband","distance","dimension","constant","Math","abs","Infinity","pow","rubberbandIfOutOfBounds","position","min","max","clamp","_defineProperty","obj","key","value","arg","input","hint","prim","Symbol","toPrimitive","res","call","TypeError","String","_toPrimitive","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","ownKeys","e","r","t","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","push","apply","_objectSpread2","arguments","length","forEach","getOwnPropertyDescriptors","defineProperties","EVENT_TYPE_MAP","pointer","start","change","end","mouse","touch","gesture","capitalize","string","toUpperCase","slice","actionsWithoutCaptureSupported","pointerCaptureEvents","parseProp","prop","eventKey","substring","toLowerCase","passive","indexOf","replace","captureKey","includes","capture","device","isTouch","event","getPointerType","pointerType","getValueEvent","type","changedTouches","targetTouches","getTouchList","distanceAngle","P1","P2","dx","clientX","dy","clientY","cx","cy","hypot","angle","atan2","PI","origin","_unused","touchDistanceAngle","ids","from","touches","identifier","pointerId","valueEvent","pointerValues","wheelValues","deltaX","deltaY","deltaMode","args","noop","chain","fns","result","fn","this","assignDefault","assign","Engine","constructor","ctrl","state","computeValues","computeInitial","init","reset","shared","gestureEventStores","gestureTimeoutStores","config","handlers","ingKey","_active","active","_blocked","_force","_step","intentional","_movement","_distance","_direction","_delta","_bounds","axis","memo","elapsedTime","timeDelta","direction","overflow","_movementBound","velocity","movement","delta","timeStamp","target","currentTarget","lastOffset","offset","startTime","values","_values","transform","_initial","initial","compute","dt","preventDefault","cancelable","pointerIds","size","touchIds","locked","document","pointerLockElement","payload","buttons","shiftKey","altKey","metaKey","ctrlKey","getEventDetails","down","pressed","_absoluteDelta","map","axisIntent","_m0","_m1","t0","t1","threshold","hasCustomTransform","sign","v0","restrictToAxis","previousOffset","gestureIsActive","first","last","bounds","setup","computeOffset","ox","oy","x0","x1","y0","y1","Vx","Vy","Rx","Ry","X0","X1","Y0","Y1","computeRubberband","computeMovement","absoluteDelta","emit","clean","triggerAllEvents","handler","aliasKey","eventStore","timeoutStore","CoordinatesEngine","super","axisThreshold","absDx","absDy","selectAxis","lockDirection","identity","commonConfigResolver","enabled","eventOptions","_k","coordinatesConfigResolver","_v","current","HTMLElement","left","right","top","bottom","KEYS_DELTA_MAP","ArrowRight","displacement","factor","ArrowLeft","ArrowUp","ArrowDown","isBrowser","window","createElement","supportsTouchEvents","SUPPORT","GestureEvent","supportsGestureEvents","touchscreen","navigator","maxTouchPoints","pointerLock","DEFAULT_DRAG_AXIS_THRESHOLD","pen","dragConfigResolver","lock","preventScrollAxis","preventScroll","preventScrollDelay","pointerCapture","pointerButtons","filterTaps","tapsThreshold","swipe","duration","delay","keyboardDisplacement","clampStateInternalMovementToBounds","dirx","diry","pinchConfigResolver","scaleBounds","angleBounds","_scaleBounds","D","_angleBounds","A","modifierKey","pinchOnWheel","moveConfigResolver","mouseOnly","scrollConfigResolver","wheelConfigResolver","hoverConfigResolver","EngineMap","Map","ConfigResolverMap","action","set","engine","resolver","dragAction","_pointerId","_pointerActive","_keyboardActive","_preventScroll","_delayed","tap","canceled","cancel","bind","boundRect","getBoundingClientRect","targetRect","setTimeout","setActive","pointerClean","pointerDown","ctrlIds","setEventIds","setPointerCapture","setupPointer","setupScrollPrevention","setupDelayTrigger","startPointerDrag","pointerMove","id","movementX","movementY","remove","pointerUp","hasPointerCapture","releasePointerCapture","_dx","_dy","_mx","_my","svx","svy","sx","sy","sdt","_vx","_vy","pointerClick","detail","stopPropagation","requestPointerLock","sharedConfig","exitPointerLock","persist","persistEvent","keyDown","deltaFn","keyUp","bindFunction","enter","leave","move","moveChange","moveStart","moveEnd","_pointerEvents","_touchIds","turns","axisMovementDifference","touchStart","ctrlTouchIds","every","has","pinchStart","pointerStart","ctrlPointerIds","touchMove","pinchMove","prev_a","delta_a","delta_turns","touchEnd","some","pointerEnd","delete","gestureStart","scale","rotation","gestureMove","_previousMovement","gestureEnd","wheel","find","k","wheelChange","wheelStart","wheelEnd","scroll","scrollChange","scrollEnd","_ref","_ref2","scrollX","scrollY","scrollLeft","scrollTop","scrollValues","sharedConfigResolver","_excluded","resolveWith","resolvers","entries","EventStore","gestureKey","Set","_ctrl","_gestureKey","element","options","listeners","_listeners","deviceProps","toDomEventType","addEventListener","removeEventListener","clear","TimeoutStore","callback","ms","_timeouts","timeout","get","clearTimeout","Controller","internalHandlers","drag","setupGesture","pinch","hover","_event$currentTarget","_event$currentTarget$","contains","getCurrentTargetTouchList","applyHandlers","nativeHandlers","applyConfig","newConfig","_config","rest","source","excluded","i","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","prototype","propertyIsEnumerable","_objectWithoutProperties","parse","_targetEventStore","gestures","effect","props","gestureConfig","bindToProps","nativeBindFunction","handlerProp","withPassiveOption","isNative","_options$capture","_options$passive","actionKey","hasCapture","toHandlerProp","RE_NOT_NATIVE","registerGesture","actions","handlerKey","startKey","endKey","useRecognizers","useDrag","useGesture","_handlers","mergedHandlers","mergedConfig","native","test","RegExp","lastMatch","sortHandlers","parseMergedHandlers"],"mappings":"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","file":"npm.use-gesture.e4dba8ab266f61627f5f.react.bundle.js","sourcesContent":["function clamp(v, min, max) {\n  return Math.max(min, Math.min(v, max));\n}\nconst V = {\n  toVector(v, fallback) {\n    if (v === undefined) v = fallback;\n    return Array.isArray(v) ? v : [v, v];\n  },\n  add(v1, v2) {\n    return [v1[0] + v2[0], v1[1] + v2[1]];\n  },\n  sub(v1, v2) {\n    return [v1[0] - v2[0], v1[1] - v2[1]];\n  },\n  addTo(v1, v2) {\n    v1[0] += v2[0];\n    v1[1] += v2[1];\n  },\n  subTo(v1, v2) {\n    v1[0] -= v2[0];\n    v1[1] -= v2[1];\n  }\n};\nfunction rubberband(distance, dimension, constant) {\n  if (dimension === 0 || Math.abs(dimension) === Infinity) return Math.pow(distance, constant * 5);\n  return distance * dimension * constant / (dimension + constant * distance);\n}\nfunction rubberbandIfOutOfBounds(position, min, max, constant = 0.15) {\n  if (constant === 0) return clamp(position, min, max);\n  if (position < min) return -rubberband(min - position, max - min, constant) + min;\n  if (position > max) return +rubberband(position - max, max - min, constant) + max;\n  return position;\n}\nfunction computeRubberband(bounds, [Vx, Vy], [Rx, Ry]) {\n  const [[X0, X1], [Y0, Y1]] = bounds;\n  return [rubberbandIfOutOfBounds(Vx, X0, X1, Rx), rubberbandIfOutOfBounds(Vy, Y0, Y1, Ry)];\n}\n\nexport { V, computeRubberband as c, rubberbandIfOutOfBounds as r };\n","import { V, c as computeRubberband } from './maths-0ab39ae9.esm.js';\n\nfunction _toPrimitive(input, hint) {\n  if (typeof input !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (typeof res !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n  var key = _toPrimitive(arg, \"string\");\n  return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key);\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}\n\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\n\nconst EVENT_TYPE_MAP = {\n  pointer: {\n    start: 'down',\n    change: 'move',\n    end: 'up'\n  },\n  mouse: {\n    start: 'down',\n    change: 'move',\n    end: 'up'\n  },\n  touch: {\n    start: 'start',\n    change: 'move',\n    end: 'end'\n  },\n  gesture: {\n    start: 'start',\n    change: 'change',\n    end: 'end'\n  }\n};\nfunction capitalize(string) {\n  if (!string) return '';\n  return string[0].toUpperCase() + string.slice(1);\n}\nconst actionsWithoutCaptureSupported = ['enter', 'leave'];\nfunction hasCapture(capture = false, actionKey) {\n  return capture && !actionsWithoutCaptureSupported.includes(actionKey);\n}\nfunction toHandlerProp(device, action = '', capture = false) {\n  const deviceProps = EVENT_TYPE_MAP[device];\n  const actionKey = deviceProps ? deviceProps[action] || action : action;\n  return 'on' + capitalize(device) + capitalize(actionKey) + (hasCapture(capture, actionKey) ? 'Capture' : '');\n}\nconst pointerCaptureEvents = ['gotpointercapture', 'lostpointercapture'];\nfunction parseProp(prop) {\n  let eventKey = prop.substring(2).toLowerCase();\n  const passive = !!~eventKey.indexOf('passive');\n  if (passive) eventKey = eventKey.replace('passive', '');\n  const captureKey = pointerCaptureEvents.includes(eventKey) ? 'capturecapture' : 'capture';\n  const capture = !!~eventKey.indexOf(captureKey);\n  if (capture) eventKey = eventKey.replace('capture', '');\n  return {\n    device: eventKey,\n    capture,\n    passive\n  };\n}\nfunction toDomEventType(device, action = '') {\n  const deviceProps = EVENT_TYPE_MAP[device];\n  const actionKey = deviceProps ? deviceProps[action] || action : action;\n  return device + actionKey;\n}\nfunction isTouch(event) {\n  return 'touches' in event;\n}\nfunction getPointerType(event) {\n  if (isTouch(event)) return 'touch';\n  if ('pointerType' in event) return event.pointerType;\n  return 'mouse';\n}\nfunction getCurrentTargetTouchList(event) {\n  return Array.from(event.touches).filter(e => {\n    var _event$currentTarget, _event$currentTarget$;\n    return e.target === event.currentTarget || ((_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 || (_event$currentTarget$ = _event$currentTarget.contains) === null || _event$currentTarget$ === void 0 ? void 0 : _event$currentTarget$.call(_event$currentTarget, e.target));\n  });\n}\nfunction getTouchList(event) {\n  return event.type === 'touchend' || event.type === 'touchcancel' ? event.changedTouches : event.targetTouches;\n}\nfunction getValueEvent(event) {\n  return isTouch(event) ? getTouchList(event)[0] : event;\n}\nfunction distanceAngle(P1, P2) {\n  try {\n    const dx = P2.clientX - P1.clientX;\n    const dy = P2.clientY - P1.clientY;\n    const cx = (P2.clientX + P1.clientX) / 2;\n    const cy = (P2.clientY + P1.clientY) / 2;\n    const distance = Math.hypot(dx, dy);\n    const angle = -(Math.atan2(dx, dy) * 180) / Math.PI;\n    const origin = [cx, cy];\n    return {\n      angle,\n      distance,\n      origin\n    };\n  } catch (_unused) {}\n  return null;\n}\nfunction touchIds(event) {\n  return getCurrentTargetTouchList(event).map(touch => touch.identifier);\n}\nfunction touchDistanceAngle(event, ids) {\n  const [P1, P2] = Array.from(event.touches).filter(touch => ids.includes(touch.identifier));\n  return distanceAngle(P1, P2);\n}\nfunction pointerId(event) {\n  const valueEvent = getValueEvent(event);\n  return isTouch(event) ? valueEvent.identifier : valueEvent.pointerId;\n}\nfunction pointerValues(event) {\n  const valueEvent = getValueEvent(event);\n  return [valueEvent.clientX, valueEvent.clientY];\n}\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\nfunction wheelValues(event) {\n  let {\n    deltaX,\n    deltaY,\n    deltaMode\n  } = event;\n  if (deltaMode === 1) {\n    deltaX *= LINE_HEIGHT;\n    deltaY *= LINE_HEIGHT;\n  } else if (deltaMode === 2) {\n    deltaX *= PAGE_HEIGHT;\n    deltaY *= PAGE_HEIGHT;\n  }\n  return [deltaX, deltaY];\n}\nfunction scrollValues(event) {\n  var _ref, _ref2;\n  const {\n    scrollX,\n    scrollY,\n    scrollLeft,\n    scrollTop\n  } = event.currentTarget;\n  return [(_ref = scrollX !== null && scrollX !== void 0 ? scrollX : scrollLeft) !== null && _ref !== void 0 ? _ref : 0, (_ref2 = scrollY !== null && scrollY !== void 0 ? scrollY : scrollTop) !== null && _ref2 !== void 0 ? _ref2 : 0];\n}\nfunction getEventDetails(event) {\n  const payload = {};\n  if ('buttons' in event) payload.buttons = event.buttons;\n  if ('shiftKey' in event) {\n    const {\n      shiftKey,\n      altKey,\n      metaKey,\n      ctrlKey\n    } = event;\n    Object.assign(payload, {\n      shiftKey,\n      altKey,\n      metaKey,\n      ctrlKey\n    });\n  }\n  return payload;\n}\n\nfunction call(v, ...args) {\n  if (typeof v === 'function') {\n    return v(...args);\n  } else {\n    return v;\n  }\n}\nfunction noop() {}\nfunction chain(...fns) {\n  if (fns.length === 0) return noop;\n  if (fns.length === 1) return fns[0];\n  return function () {\n    let result;\n    for (const fn of fns) {\n      result = fn.apply(this, arguments) || result;\n    }\n    return result;\n  };\n}\nfunction assignDefault(value, fallback) {\n  return Object.assign({}, fallback, value || {});\n}\n\nconst BEFORE_LAST_KINEMATICS_DELAY = 32;\nclass Engine {\n  constructor(ctrl, args, key) {\n    this.ctrl = ctrl;\n    this.args = args;\n    this.key = key;\n    if (!this.state) {\n      this.state = {};\n      this.computeValues([0, 0]);\n      this.computeInitial();\n      if (this.init) this.init();\n      this.reset();\n    }\n  }\n  get state() {\n    return this.ctrl.state[this.key];\n  }\n  set state(state) {\n    this.ctrl.state[this.key] = state;\n  }\n  get shared() {\n    return this.ctrl.state.shared;\n  }\n  get eventStore() {\n    return this.ctrl.gestureEventStores[this.key];\n  }\n  get timeoutStore() {\n    return this.ctrl.gestureTimeoutStores[this.key];\n  }\n  get config() {\n    return this.ctrl.config[this.key];\n  }\n  get sharedConfig() {\n    return this.ctrl.config.shared;\n  }\n  get handler() {\n    return this.ctrl.handlers[this.key];\n  }\n  reset() {\n    const {\n      state,\n      shared,\n      ingKey,\n      args\n    } = this;\n    shared[ingKey] = state._active = state.active = state._blocked = state._force = false;\n    state._step = [false, false];\n    state.intentional = false;\n    state._movement = [0, 0];\n    state._distance = [0, 0];\n    state._direction = [0, 0];\n    state._delta = [0, 0];\n    state._bounds = [[-Infinity, Infinity], [-Infinity, Infinity]];\n    state.args = args;\n    state.axis = undefined;\n    state.memo = undefined;\n    state.elapsedTime = state.timeDelta = 0;\n    state.direction = [0, 0];\n    state.distance = [0, 0];\n    state.overflow = [0, 0];\n    state._movementBound = [false, false];\n    state.velocity = [0, 0];\n    state.movement = [0, 0];\n    state.delta = [0, 0];\n    state.timeStamp = 0;\n  }\n  start(event) {\n    const state = this.state;\n    const config = this.config;\n    if (!state._active) {\n      this.reset();\n      this.computeInitial();\n      state._active = true;\n      state.target = event.target;\n      state.currentTarget = event.currentTarget;\n      state.lastOffset = config.from ? call(config.from, state) : state.offset;\n      state.offset = state.lastOffset;\n      state.startTime = state.timeStamp = event.timeStamp;\n    }\n  }\n  computeValues(values) {\n    const state = this.state;\n    state._values = values;\n    state.values = this.config.transform(values);\n  }\n  computeInitial() {\n    const state = this.state;\n    state._initial = state._values;\n    state.initial = state.values;\n  }\n  compute(event) {\n    const {\n      state,\n      config,\n      shared\n    } = this;\n    state.args = this.args;\n    let dt = 0;\n    if (event) {\n      state.event = event;\n      if (config.preventDefault && event.cancelable) state.event.preventDefault();\n      state.type = event.type;\n      shared.touches = this.ctrl.pointerIds.size || this.ctrl.touchIds.size;\n      shared.locked = !!document.pointerLockElement;\n      Object.assign(shared, getEventDetails(event));\n      shared.down = shared.pressed = shared.buttons % 2 === 1 || shared.touches > 0;\n      dt = event.timeStamp - state.timeStamp;\n      state.timeStamp = event.timeStamp;\n      state.elapsedTime = state.timeStamp - state.startTime;\n    }\n    if (state._active) {\n      const _absoluteDelta = state._delta.map(Math.abs);\n      V.addTo(state._distance, _absoluteDelta);\n    }\n    if (this.axisIntent) this.axisIntent(event);\n    const [_m0, _m1] = state._movement;\n    const [t0, t1] = config.threshold;\n    const {\n      _step,\n      values\n    } = state;\n    if (config.hasCustomTransform) {\n      if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && values[0];\n      if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && values[1];\n    } else {\n      if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && Math.sign(_m0) * t0;\n      if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && Math.sign(_m1) * t1;\n    }\n    state.intentional = _step[0] !== false || _step[1] !== false;\n    if (!state.intentional) return;\n    const movement = [0, 0];\n    if (config.hasCustomTransform) {\n      const [v0, v1] = values;\n      movement[0] = _step[0] !== false ? v0 - _step[0] : 0;\n      movement[1] = _step[1] !== false ? v1 - _step[1] : 0;\n    } else {\n      movement[0] = _step[0] !== false ? _m0 - _step[0] : 0;\n      movement[1] = _step[1] !== false ? _m1 - _step[1] : 0;\n    }\n    if (this.restrictToAxis && !state._blocked) this.restrictToAxis(movement);\n    const previousOffset = state.offset;\n    const gestureIsActive = state._active && !state._blocked || state.active;\n    if (gestureIsActive) {\n      state.first = state._active && !state.active;\n      state.last = !state._active && state.active;\n      state.active = shared[this.ingKey] = state._active;\n      if (event) {\n        if (state.first) {\n          if ('bounds' in config) state._bounds = call(config.bounds, state);\n          if (this.setup) this.setup();\n        }\n        state.movement = movement;\n        this.computeOffset();\n      }\n    }\n    const [ox, oy] = state.offset;\n    const [[x0, x1], [y0, y1]] = state._bounds;\n    state.overflow = [ox < x0 ? -1 : ox > x1 ? 1 : 0, oy < y0 ? -1 : oy > y1 ? 1 : 0];\n    state._movementBound[0] = state.overflow[0] ? state._movementBound[0] === false ? state._movement[0] : state._movementBound[0] : false;\n    state._movementBound[1] = state.overflow[1] ? state._movementBound[1] === false ? state._movement[1] : state._movementBound[1] : false;\n    const rubberband = state._active ? config.rubberband || [0, 0] : [0, 0];\n    state.offset = computeRubberband(state._bounds, state.offset, rubberband);\n    state.delta = V.sub(state.offset, previousOffset);\n    this.computeMovement();\n    if (gestureIsActive && (!state.last || dt > BEFORE_LAST_KINEMATICS_DELAY)) {\n      state.delta = V.sub(state.offset, previousOffset);\n      const absoluteDelta = state.delta.map(Math.abs);\n      V.addTo(state.distance, absoluteDelta);\n      state.direction = state.delta.map(Math.sign);\n      state._direction = state._delta.map(Math.sign);\n      if (!state.first && dt > 0) {\n        state.velocity = [absoluteDelta[0] / dt, absoluteDelta[1] / dt];\n        state.timeDelta = dt;\n      }\n    }\n  }\n  emit() {\n    const state = this.state;\n    const shared = this.shared;\n    const config = this.config;\n    if (!state._active) this.clean();\n    if ((state._blocked || !state.intentional) && !state._force && !config.triggerAllEvents) return;\n    const memo = this.handler(_objectSpread2(_objectSpread2(_objectSpread2({}, shared), state), {}, {\n      [this.aliasKey]: state.values\n    }));\n    if (memo !== undefined) state.memo = memo;\n  }\n  clean() {\n    this.eventStore.clean();\n    this.timeoutStore.clean();\n  }\n}\n\nfunction selectAxis([dx, dy], threshold) {\n  const absDx = Math.abs(dx);\n  const absDy = Math.abs(dy);\n  if (absDx > absDy && absDx > threshold) {\n    return 'x';\n  }\n  if (absDy > absDx && absDy > threshold) {\n    return 'y';\n  }\n  return undefined;\n}\nclass CoordinatesEngine extends Engine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"aliasKey\", 'xy');\n  }\n  reset() {\n    super.reset();\n    this.state.axis = undefined;\n  }\n  init() {\n    this.state.offset = [0, 0];\n    this.state.lastOffset = [0, 0];\n  }\n  computeOffset() {\n    this.state.offset = V.add(this.state.lastOffset, this.state.movement);\n  }\n  computeMovement() {\n    this.state.movement = V.sub(this.state.offset, this.state.lastOffset);\n  }\n  axisIntent(event) {\n    const state = this.state;\n    const config = this.config;\n    if (!state.axis && event) {\n      const threshold = typeof config.axisThreshold === 'object' ? config.axisThreshold[getPointerType(event)] : config.axisThreshold;\n      state.axis = selectAxis(state._movement, threshold);\n    }\n    state._blocked = (config.lockDirection || !!config.axis) && !state.axis || !!config.axis && config.axis !== state.axis;\n  }\n  restrictToAxis(v) {\n    if (this.config.axis || this.config.lockDirection) {\n      switch (this.state.axis) {\n        case 'x':\n          v[1] = 0;\n          break;\n        case 'y':\n          v[0] = 0;\n          break;\n      }\n    }\n  }\n}\n\nconst identity = v => v;\nconst DEFAULT_RUBBERBAND = 0.15;\nconst commonConfigResolver = {\n  enabled(value = true) {\n    return value;\n  },\n  eventOptions(value, _k, config) {\n    return _objectSpread2(_objectSpread2({}, config.shared.eventOptions), value);\n  },\n  preventDefault(value = false) {\n    return value;\n  },\n  triggerAllEvents(value = false) {\n    return value;\n  },\n  rubberband(value = 0) {\n    switch (value) {\n      case true:\n        return [DEFAULT_RUBBERBAND, DEFAULT_RUBBERBAND];\n      case false:\n        return [0, 0];\n      default:\n        return V.toVector(value);\n    }\n  },\n  from(value) {\n    if (typeof value === 'function') return value;\n    if (value != null) return V.toVector(value);\n  },\n  transform(value, _k, config) {\n    const transform = value || config.shared.transform;\n    this.hasCustomTransform = !!transform;\n    if (process.env.NODE_ENV === 'development') {\n      const originalTransform = transform || identity;\n      return v => {\n        const r = originalTransform(v);\n        if (!isFinite(r[0]) || !isFinite(r[1])) {\n          console.warn(`[@use-gesture]: config.transform() must produce a valid result, but it was: [${r[0]},${[1]}]`);\n        }\n        return r;\n      };\n    }\n    return transform || identity;\n  },\n  threshold(value) {\n    return V.toVector(value, 0);\n  }\n};\nif (process.env.NODE_ENV === 'development') {\n  Object.assign(commonConfigResolver, {\n    domTarget(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n      }\n      return NaN;\n    },\n    lockDirection(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`lockDirection\\` option has been merged with \\`axis\\`. Use it as in \\`{ axis: 'lock' }\\``);\n      }\n      return NaN;\n    },\n    initial(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`initial\\` option has been renamed to \\`from\\`.`);\n      }\n      return NaN;\n    }\n  });\n}\n\nconst DEFAULT_AXIS_THRESHOLD = 0;\nconst coordinatesConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n  axis(_v, _k, {\n    axis\n  }) {\n    this.lockDirection = axis === 'lock';\n    if (!this.lockDirection) return axis;\n  },\n  axisThreshold(value = DEFAULT_AXIS_THRESHOLD) {\n    return value;\n  },\n  bounds(value = {}) {\n    if (typeof value === 'function') {\n      return state => coordinatesConfigResolver.bounds(value(state));\n    }\n    if ('current' in value) {\n      return () => value.current;\n    }\n    if (typeof HTMLElement === 'function' && value instanceof HTMLElement) {\n      return value;\n    }\n    const {\n      left = -Infinity,\n      right = Infinity,\n      top = -Infinity,\n      bottom = Infinity\n    } = value;\n    return [[left, right], [top, bottom]];\n  }\n});\n\nconst KEYS_DELTA_MAP = {\n  ArrowRight: (displacement, factor = 1) => [displacement * factor, 0],\n  ArrowLeft: (displacement, factor = 1) => [-1 * displacement * factor, 0],\n  ArrowUp: (displacement, factor = 1) => [0, -1 * displacement * factor],\n  ArrowDown: (displacement, factor = 1) => [0, displacement * factor]\n};\nclass DragEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'dragging');\n  }\n  reset() {\n    super.reset();\n    const state = this.state;\n    state._pointerId = undefined;\n    state._pointerActive = false;\n    state._keyboardActive = false;\n    state._preventScroll = false;\n    state._delayed = false;\n    state.swipe = [0, 0];\n    state.tap = false;\n    state.canceled = false;\n    state.cancel = this.cancel.bind(this);\n  }\n  setup() {\n    const state = this.state;\n    if (state._bounds instanceof HTMLElement) {\n      const boundRect = state._bounds.getBoundingClientRect();\n      const targetRect = state.currentTarget.getBoundingClientRect();\n      const _bounds = {\n        left: boundRect.left - targetRect.left + state.offset[0],\n        right: boundRect.right - targetRect.right + state.offset[0],\n        top: boundRect.top - targetRect.top + state.offset[1],\n        bottom: boundRect.bottom - targetRect.bottom + state.offset[1]\n      };\n      state._bounds = coordinatesConfigResolver.bounds(_bounds);\n    }\n  }\n  cancel() {\n    const state = this.state;\n    if (state.canceled) return;\n    state.canceled = true;\n    state._active = false;\n    setTimeout(() => {\n      this.compute();\n      this.emit();\n    }, 0);\n  }\n  setActive() {\n    this.state._active = this.state._pointerActive || this.state._keyboardActive;\n  }\n  clean() {\n    this.pointerClean();\n    this.state._pointerActive = false;\n    this.state._keyboardActive = false;\n    super.clean();\n  }\n  pointerDown(event) {\n    const config = this.config;\n    const state = this.state;\n    if (event.buttons != null && (Array.isArray(config.pointerButtons) ? !config.pointerButtons.includes(event.buttons) : config.pointerButtons !== -1 && config.pointerButtons !== event.buttons)) return;\n    const ctrlIds = this.ctrl.setEventIds(event);\n    if (config.pointerCapture) {\n      event.target.setPointerCapture(event.pointerId);\n    }\n    if (ctrlIds && ctrlIds.size > 1 && state._pointerActive) return;\n    this.start(event);\n    this.setupPointer(event);\n    state._pointerId = pointerId(event);\n    state._pointerActive = true;\n    this.computeValues(pointerValues(event));\n    this.computeInitial();\n    if (config.preventScrollAxis && getPointerType(event) !== 'mouse') {\n      state._active = false;\n      this.setupScrollPrevention(event);\n    } else if (config.delay > 0) {\n      this.setupDelayTrigger(event);\n      if (config.triggerAllEvents) {\n        this.compute(event);\n        this.emit();\n      }\n    } else {\n      this.startPointerDrag(event);\n    }\n  }\n  startPointerDrag(event) {\n    const state = this.state;\n    state._active = true;\n    state._preventScroll = true;\n    state._delayed = false;\n    this.compute(event);\n    this.emit();\n  }\n  pointerMove(event) {\n    const state = this.state;\n    const config = this.config;\n    if (!state._pointerActive) return;\n    const id = pointerId(event);\n    if (state._pointerId !== undefined && id !== state._pointerId) return;\n    const _values = pointerValues(event);\n    if (document.pointerLockElement === event.target) {\n      state._delta = [event.movementX, event.movementY];\n    } else {\n      state._delta = V.sub(_values, state._values);\n      this.computeValues(_values);\n    }\n    V.addTo(state._movement, state._delta);\n    this.compute(event);\n    if (state._delayed && state.intentional) {\n      this.timeoutStore.remove('dragDelay');\n      state.active = false;\n      this.startPointerDrag(event);\n      return;\n    }\n    if (config.preventScrollAxis && !state._preventScroll) {\n      if (state.axis) {\n        if (state.axis === config.preventScrollAxis || config.preventScrollAxis === 'xy') {\n          state._active = false;\n          this.clean();\n          return;\n        } else {\n          this.timeoutStore.remove('startPointerDrag');\n          this.startPointerDrag(event);\n          return;\n        }\n      } else {\n        return;\n      }\n    }\n    this.emit();\n  }\n  pointerUp(event) {\n    this.ctrl.setEventIds(event);\n    try {\n      if (this.config.pointerCapture && event.target.hasPointerCapture(event.pointerId)) {\n        ;\n        event.target.releasePointerCapture(event.pointerId);\n      }\n    } catch (_unused) {\n      if (process.env.NODE_ENV === 'development') {\n        console.warn(`[@use-gesture]: If you see this message, it's likely that you're using an outdated version of \\`@react-three/fiber\\`. \\n\\nPlease upgrade to the latest version.`);\n      }\n    }\n    const state = this.state;\n    const config = this.config;\n    if (!state._active || !state._pointerActive) return;\n    const id = pointerId(event);\n    if (state._pointerId !== undefined && id !== state._pointerId) return;\n    this.state._pointerActive = false;\n    this.setActive();\n    this.compute(event);\n    const [dx, dy] = state._distance;\n    state.tap = dx <= config.tapsThreshold && dy <= config.tapsThreshold;\n    if (state.tap && config.filterTaps) {\n      state._force = true;\n    } else {\n      const [_dx, _dy] = state._delta;\n      const [_mx, _my] = state._movement;\n      const [svx, svy] = config.swipe.velocity;\n      const [sx, sy] = config.swipe.distance;\n      const sdt = config.swipe.duration;\n      if (state.elapsedTime < sdt) {\n        const _vx = Math.abs(_dx / state.timeDelta);\n        const _vy = Math.abs(_dy / state.timeDelta);\n        if (_vx > svx && Math.abs(_mx) > sx) state.swipe[0] = Math.sign(_dx);\n        if (_vy > svy && Math.abs(_my) > sy) state.swipe[1] = Math.sign(_dy);\n      }\n    }\n    this.emit();\n  }\n  pointerClick(event) {\n    if (!this.state.tap && event.detail > 0) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n  setupPointer(event) {\n    const config = this.config;\n    const device = config.device;\n    if (process.env.NODE_ENV === 'development') {\n      try {\n        if (device === 'pointer' && config.preventScrollDelay === undefined) {\n          const currentTarget = 'uv' in event ? event.sourceEvent.currentTarget : event.currentTarget;\n          const style = window.getComputedStyle(currentTarget);\n          if (style.touchAction === 'auto') {\n            console.warn(`[@use-gesture]: The drag target has its \\`touch-action\\` style property set to \\`auto\\`. It is recommended to add \\`touch-action: 'none'\\` so that the drag gesture behaves correctly on touch-enabled devices. For more information read this: https://use-gesture.netlify.app/docs/extras/#touch-action.\\n\\nThis message will only show in development mode. It won't appear in production. If this is intended, you can ignore it.`, currentTarget);\n          }\n        }\n      } catch (_unused2) {}\n    }\n    if (config.pointerLock) {\n      event.currentTarget.requestPointerLock();\n    }\n    if (!config.pointerCapture) {\n      this.eventStore.add(this.sharedConfig.window, device, 'change', this.pointerMove.bind(this));\n      this.eventStore.add(this.sharedConfig.window, device, 'end', this.pointerUp.bind(this));\n      this.eventStore.add(this.sharedConfig.window, device, 'cancel', this.pointerUp.bind(this));\n    }\n  }\n  pointerClean() {\n    if (this.config.pointerLock && document.pointerLockElement === this.state.currentTarget) {\n      document.exitPointerLock();\n    }\n  }\n  preventScroll(event) {\n    if (this.state._preventScroll && event.cancelable) {\n      event.preventDefault();\n    }\n  }\n  setupScrollPrevention(event) {\n    this.state._preventScroll = false;\n    persistEvent(event);\n    const remove = this.eventStore.add(this.sharedConfig.window, 'touch', 'change', this.preventScroll.bind(this), {\n      passive: false\n    });\n    this.eventStore.add(this.sharedConfig.window, 'touch', 'end', remove);\n    this.eventStore.add(this.sharedConfig.window, 'touch', 'cancel', remove);\n    this.timeoutStore.add('startPointerDrag', this.startPointerDrag.bind(this), this.config.preventScrollDelay, event);\n  }\n  setupDelayTrigger(event) {\n    this.state._delayed = true;\n    this.timeoutStore.add('dragDelay', () => {\n      this.state._step = [0, 0];\n      this.startPointerDrag(event);\n    }, this.config.delay);\n  }\n  keyDown(event) {\n    const deltaFn = KEYS_DELTA_MAP[event.key];\n    if (deltaFn) {\n      const state = this.state;\n      const factor = event.shiftKey ? 10 : event.altKey ? 0.1 : 1;\n      this.start(event);\n      state._delta = deltaFn(this.config.keyboardDisplacement, factor);\n      state._keyboardActive = true;\n      V.addTo(state._movement, state._delta);\n      this.compute(event);\n      this.emit();\n    }\n  }\n  keyUp(event) {\n    if (!(event.key in KEYS_DELTA_MAP)) return;\n    this.state._keyboardActive = false;\n    this.setActive();\n    this.compute(event);\n    this.emit();\n  }\n  bind(bindFunction) {\n    const device = this.config.device;\n    bindFunction(device, 'start', this.pointerDown.bind(this));\n    if (this.config.pointerCapture) {\n      bindFunction(device, 'change', this.pointerMove.bind(this));\n      bindFunction(device, 'end', this.pointerUp.bind(this));\n      bindFunction(device, 'cancel', this.pointerUp.bind(this));\n      bindFunction('lostPointerCapture', '', this.pointerUp.bind(this));\n    }\n    if (this.config.keys) {\n      bindFunction('key', 'down', this.keyDown.bind(this));\n      bindFunction('key', 'up', this.keyUp.bind(this));\n    }\n    if (this.config.filterTaps) {\n      bindFunction('click', '', this.pointerClick.bind(this), {\n        capture: true,\n        passive: false\n      });\n    }\n  }\n}\nfunction persistEvent(event) {\n  'persist' in event && typeof event.persist === 'function' && event.persist();\n}\n\nconst isBrowser = typeof window !== 'undefined' && window.document && window.document.createElement;\nfunction supportsTouchEvents() {\n  return isBrowser && 'ontouchstart' in window;\n}\nfunction isTouchScreen() {\n  return supportsTouchEvents() || isBrowser && window.navigator.maxTouchPoints > 1;\n}\nfunction supportsPointerEvents() {\n  return isBrowser && 'onpointerdown' in window;\n}\nfunction supportsPointerLock() {\n  return isBrowser && 'exitPointerLock' in window.document;\n}\nfunction supportsGestureEvents() {\n  try {\n    return 'constructor' in GestureEvent;\n  } catch (e) {\n    return false;\n  }\n}\nconst SUPPORT = {\n  isBrowser,\n  gesture: supportsGestureEvents(),\n  touch: supportsTouchEvents(),\n  touchscreen: isTouchScreen(),\n  pointer: supportsPointerEvents(),\n  pointerLock: supportsPointerLock()\n};\n\nconst DEFAULT_PREVENT_SCROLL_DELAY = 250;\nconst DEFAULT_DRAG_DELAY = 180;\nconst DEFAULT_SWIPE_VELOCITY = 0.5;\nconst DEFAULT_SWIPE_DISTANCE = 50;\nconst DEFAULT_SWIPE_DURATION = 250;\nconst DEFAULT_KEYBOARD_DISPLACEMENT = 10;\nconst DEFAULT_DRAG_AXIS_THRESHOLD = {\n  mouse: 0,\n  touch: 0,\n  pen: 8\n};\nconst dragConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n  device(_v, _k, {\n    pointer: {\n      touch = false,\n      lock = false,\n      mouse = false\n    } = {}\n  }) {\n    this.pointerLock = lock && SUPPORT.pointerLock;\n    if (SUPPORT.touch && touch) return 'touch';\n    if (this.pointerLock) return 'mouse';\n    if (SUPPORT.pointer && !mouse) return 'pointer';\n    if (SUPPORT.touch) return 'touch';\n    return 'mouse';\n  },\n  preventScrollAxis(value, _k, {\n    preventScroll\n  }) {\n    this.preventScrollDelay = typeof preventScroll === 'number' ? preventScroll : preventScroll || preventScroll === undefined && value ? DEFAULT_PREVENT_SCROLL_DELAY : undefined;\n    if (!SUPPORT.touchscreen || preventScroll === false) return undefined;\n    return value ? value : preventScroll !== undefined ? 'y' : undefined;\n  },\n  pointerCapture(_v, _k, {\n    pointer: {\n      capture = true,\n      buttons = 1,\n      keys = true\n    } = {}\n  }) {\n    this.pointerButtons = buttons;\n    this.keys = keys;\n    return !this.pointerLock && this.device === 'pointer' && capture;\n  },\n  threshold(value, _k, {\n    filterTaps = false,\n    tapsThreshold = 3,\n    axis = undefined\n  }) {\n    const threshold = V.toVector(value, filterTaps ? tapsThreshold : axis ? 1 : 0);\n    this.filterTaps = filterTaps;\n    this.tapsThreshold = tapsThreshold;\n    return threshold;\n  },\n  swipe({\n    velocity = DEFAULT_SWIPE_VELOCITY,\n    distance = DEFAULT_SWIPE_DISTANCE,\n    duration = DEFAULT_SWIPE_DURATION\n  } = {}) {\n    return {\n      velocity: this.transform(V.toVector(velocity)),\n      distance: this.transform(V.toVector(distance)),\n      duration\n    };\n  },\n  delay(value = 0) {\n    switch (value) {\n      case true:\n        return DEFAULT_DRAG_DELAY;\n      case false:\n        return 0;\n      default:\n        return value;\n    }\n  },\n  axisThreshold(value) {\n    if (!value) return DEFAULT_DRAG_AXIS_THRESHOLD;\n    return _objectSpread2(_objectSpread2({}, DEFAULT_DRAG_AXIS_THRESHOLD), value);\n  },\n  keyboardDisplacement(value = DEFAULT_KEYBOARD_DISPLACEMENT) {\n    return value;\n  }\n});\nif (process.env.NODE_ENV === 'development') {\n  Object.assign(dragConfigResolver, {\n    useTouch(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`useTouch\\` option has been renamed to \\`pointer.touch\\`. Use it as in \\`{ pointer: { touch: true } }\\`.`);\n      }\n      return NaN;\n    },\n    experimental_preventWindowScrollY(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`experimental_preventWindowScrollY\\` option has been renamed to \\`preventScroll\\`.`);\n      }\n      return NaN;\n    },\n    swipeVelocity(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`swipeVelocity\\` option has been renamed to \\`swipe.velocity\\`. Use it as in \\`{ swipe: { velocity: 0.5 } }\\`.`);\n      }\n      return NaN;\n    },\n    swipeDistance(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`swipeDistance\\` option has been renamed to \\`swipe.distance\\`. Use it as in \\`{ swipe: { distance: 50 } }\\`.`);\n      }\n      return NaN;\n    },\n    swipeDuration(value) {\n      if (value !== undefined) {\n        throw Error(`[@use-gesture]: \\`swipeDuration\\` option has been renamed to \\`swipe.duration\\`. Use it as in \\`{ swipe: { duration: 250 } }\\`.`);\n      }\n      return NaN;\n    }\n  });\n}\n\nfunction clampStateInternalMovementToBounds(state) {\n  const [ox, oy] = state.overflow;\n  const [dx, dy] = state._delta;\n  const [dirx, diry] = state._direction;\n  if (ox < 0 && dx > 0 && dirx < 0 || ox > 0 && dx < 0 && dirx > 0) {\n    state._movement[0] = state._movementBound[0];\n  }\n  if (oy < 0 && dy > 0 && diry < 0 || oy > 0 && dy < 0 && diry > 0) {\n    state._movement[1] = state._movementBound[1];\n  }\n}\n\nconst SCALE_ANGLE_RATIO_INTENT_DEG = 30;\nconst PINCH_WHEEL_RATIO = 100;\nclass PinchEngine extends Engine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'pinching');\n    _defineProperty(this, \"aliasKey\", 'da');\n  }\n  init() {\n    this.state.offset = [1, 0];\n    this.state.lastOffset = [1, 0];\n    this.state._pointerEvents = new Map();\n  }\n  reset() {\n    super.reset();\n    const state = this.state;\n    state._touchIds = [];\n    state.canceled = false;\n    state.cancel = this.cancel.bind(this);\n    state.turns = 0;\n  }\n  computeOffset() {\n    const {\n      type,\n      movement,\n      lastOffset\n    } = this.state;\n    if (type === 'wheel') {\n      this.state.offset = V.add(movement, lastOffset);\n    } else {\n      this.state.offset = [(1 + movement[0]) * lastOffset[0], movement[1] + lastOffset[1]];\n    }\n  }\n  computeMovement() {\n    const {\n      offset,\n      lastOffset\n    } = this.state;\n    this.state.movement = [offset[0] / lastOffset[0], offset[1] - lastOffset[1]];\n  }\n  axisIntent() {\n    const state = this.state;\n    const [_m0, _m1] = state._movement;\n    if (!state.axis) {\n      const axisMovementDifference = Math.abs(_m0) * SCALE_ANGLE_RATIO_INTENT_DEG - Math.abs(_m1);\n      if (axisMovementDifference < 0) state.axis = 'angle';else if (axisMovementDifference > 0) state.axis = 'scale';\n    }\n  }\n  restrictToAxis(v) {\n    if (this.config.lockDirection) {\n      if (this.state.axis === 'scale') v[1] = 0;else if (this.state.axis === 'angle') v[0] = 0;\n    }\n  }\n  cancel() {\n    const state = this.state;\n    if (state.canceled) return;\n    setTimeout(() => {\n      state.canceled = true;\n      state._active = false;\n      this.compute();\n      this.emit();\n    }, 0);\n  }\n  touchStart(event) {\n    this.ctrl.setEventIds(event);\n    const state = this.state;\n    const ctrlTouchIds = this.ctrl.touchIds;\n    if (state._active) {\n      if (state._touchIds.every(id => ctrlTouchIds.has(id))) return;\n    }\n    if (ctrlTouchIds.size < 2) return;\n    this.start(event);\n    state._touchIds = Array.from(ctrlTouchIds).slice(0, 2);\n    const payload = touchDistanceAngle(event, state._touchIds);\n    if (!payload) return;\n    this.pinchStart(event, payload);\n  }\n  pointerStart(event) {\n    if (event.buttons != null && event.buttons % 2 !== 1) return;\n    this.ctrl.setEventIds(event);\n    event.target.setPointerCapture(event.pointerId);\n    const state = this.state;\n    const _pointerEvents = state._pointerEvents;\n    const ctrlPointerIds = this.ctrl.pointerIds;\n    if (state._active) {\n      if (Array.from(_pointerEvents.keys()).every(id => ctrlPointerIds.has(id))) return;\n    }\n    if (_pointerEvents.size < 2) {\n      _pointerEvents.set(event.pointerId, event);\n    }\n    if (state._pointerEvents.size < 2) return;\n    this.start(event);\n    const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n    if (!payload) return;\n    this.pinchStart(event, payload);\n  }\n  pinchStart(event, payload) {\n    const state = this.state;\n    state.origin = payload.origin;\n    this.computeValues([payload.distance, payload.angle]);\n    this.computeInitial();\n    this.compute(event);\n    this.emit();\n  }\n  touchMove(event) {\n    if (!this.state._active) return;\n    const payload = touchDistanceAngle(event, this.state._touchIds);\n    if (!payload) return;\n    this.pinchMove(event, payload);\n  }\n  pointerMove(event) {\n    const _pointerEvents = this.state._pointerEvents;\n    if (_pointerEvents.has(event.pointerId)) {\n      _pointerEvents.set(event.pointerId, event);\n    }\n    if (!this.state._active) return;\n    const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n    if (!payload) return;\n    this.pinchMove(event, payload);\n  }\n  pinchMove(event, payload) {\n    const state = this.state;\n    const prev_a = state._values[1];\n    const delta_a = payload.angle - prev_a;\n    let delta_turns = 0;\n    if (Math.abs(delta_a) > 270) delta_turns += Math.sign(delta_a);\n    this.computeValues([payload.distance, payload.angle - 360 * delta_turns]);\n    state.origin = payload.origin;\n    state.turns = delta_turns;\n    state._movement = [state._values[0] / state._initial[0] - 1, state._values[1] - state._initial[1]];\n    this.compute(event);\n    this.emit();\n  }\n  touchEnd(event) {\n    this.ctrl.setEventIds(event);\n    if (!this.state._active) return;\n    if (this.state._touchIds.some(id => !this.ctrl.touchIds.has(id))) {\n      this.state._active = false;\n      this.compute(event);\n      this.emit();\n    }\n  }\n  pointerEnd(event) {\n    const state = this.state;\n    this.ctrl.setEventIds(event);\n    try {\n      event.target.releasePointerCapture(event.pointerId);\n    } catch (_unused) {}\n    if (state._pointerEvents.has(event.pointerId)) {\n      state._pointerEvents.delete(event.pointerId);\n    }\n    if (!state._active) return;\n    if (state._pointerEvents.size < 2) {\n      state._active = false;\n      this.compute(event);\n      this.emit();\n    }\n  }\n  gestureStart(event) {\n    if (event.cancelable) event.preventDefault();\n    const state = this.state;\n    if (state._active) return;\n    this.start(event);\n    this.computeValues([event.scale, event.rotation]);\n    state.origin = [event.clientX, event.clientY];\n    this.compute(event);\n    this.emit();\n  }\n  gestureMove(event) {\n    if (event.cancelable) event.preventDefault();\n    if (!this.state._active) return;\n    const state = this.state;\n    this.computeValues([event.scale, event.rotation]);\n    state.origin = [event.clientX, event.clientY];\n    const _previousMovement = state._movement;\n    state._movement = [event.scale - 1, event.rotation];\n    state._delta = V.sub(state._movement, _previousMovement);\n    this.compute(event);\n    this.emit();\n  }\n  gestureEnd(event) {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute(event);\n    this.emit();\n  }\n  wheel(event) {\n    const modifierKey = this.config.modifierKey;\n    if (modifierKey && (Array.isArray(modifierKey) ? !modifierKey.find(k => event[k]) : !event[modifierKey])) return;\n    if (!this.state._active) this.wheelStart(event);else this.wheelChange(event);\n    this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n  }\n  wheelStart(event) {\n    this.start(event);\n    this.wheelChange(event);\n  }\n  wheelChange(event) {\n    const isR3f = ('uv' in event);\n    if (!isR3f) {\n      if (event.cancelable) {\n        event.preventDefault();\n      }\n      if (process.env.NODE_ENV === 'development' && !event.defaultPrevented) {\n        console.warn(`[@use-gesture]: To properly support zoom on trackpads, try using the \\`target\\` option.\\n\\nThis message will only appear in development mode.`);\n      }\n    }\n    const state = this.state;\n    state._delta = [-wheelValues(event)[1] / PINCH_WHEEL_RATIO * state.offset[0], 0];\n    V.addTo(state._movement, state._delta);\n    clampStateInternalMovementToBounds(state);\n    this.state.origin = [event.clientX, event.clientY];\n    this.compute(event);\n    this.emit();\n  }\n  wheelEnd() {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute();\n    this.emit();\n  }\n  bind(bindFunction) {\n    const device = this.config.device;\n    if (!!device) {\n      bindFunction(device, 'start', this[device + 'Start'].bind(this));\n      bindFunction(device, 'change', this[device + 'Move'].bind(this));\n      bindFunction(device, 'end', this[device + 'End'].bind(this));\n      bindFunction(device, 'cancel', this[device + 'End'].bind(this));\n      bindFunction('lostPointerCapture', '', this[device + 'End'].bind(this));\n    }\n    if (this.config.pinchOnWheel) {\n      bindFunction('wheel', '', this.wheel.bind(this), {\n        passive: false\n      });\n    }\n  }\n}\n\nconst pinchConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n  device(_v, _k, {\n    shared,\n    pointer: {\n      touch = false\n    } = {}\n  }) {\n    const sharedConfig = shared;\n    if (sharedConfig.target && !SUPPORT.touch && SUPPORT.gesture) return 'gesture';\n    if (SUPPORT.touch && touch) return 'touch';\n    if (SUPPORT.touchscreen) {\n      if (SUPPORT.pointer) return 'pointer';\n      if (SUPPORT.touch) return 'touch';\n    }\n  },\n  bounds(_v, _k, {\n    scaleBounds = {},\n    angleBounds = {}\n  }) {\n    const _scaleBounds = state => {\n      const D = assignDefault(call(scaleBounds, state), {\n        min: -Infinity,\n        max: Infinity\n      });\n      return [D.min, D.max];\n    };\n    const _angleBounds = state => {\n      const A = assignDefault(call(angleBounds, state), {\n        min: -Infinity,\n        max: Infinity\n      });\n      return [A.min, A.max];\n    };\n    if (typeof scaleBounds !== 'function' && typeof angleBounds !== 'function') return [_scaleBounds(), _angleBounds()];\n    return state => [_scaleBounds(state), _angleBounds(state)];\n  },\n  threshold(value, _k, config) {\n    this.lockDirection = config.axis === 'lock';\n    const threshold = V.toVector(value, this.lockDirection ? [0.1, 3] : 0);\n    return threshold;\n  },\n  modifierKey(value) {\n    if (value === undefined) return 'ctrlKey';\n    return value;\n  },\n  pinchOnWheel(value = true) {\n    return value;\n  }\n});\n\nclass MoveEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'moving');\n  }\n  move(event) {\n    if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n    if (!this.state._active) this.moveStart(event);else this.moveChange(event);\n    this.timeoutStore.add('moveEnd', this.moveEnd.bind(this));\n  }\n  moveStart(event) {\n    this.start(event);\n    this.computeValues(pointerValues(event));\n    this.compute(event);\n    this.computeInitial();\n    this.emit();\n  }\n  moveChange(event) {\n    if (!this.state._active) return;\n    const values = pointerValues(event);\n    const state = this.state;\n    state._delta = V.sub(values, state._values);\n    V.addTo(state._movement, state._delta);\n    this.computeValues(values);\n    this.compute(event);\n    this.emit();\n  }\n  moveEnd(event) {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute(event);\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('pointer', 'change', this.move.bind(this));\n    bindFunction('pointer', 'leave', this.moveEnd.bind(this));\n  }\n}\n\nconst moveConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n  mouseOnly: (value = true) => value\n});\n\nclass ScrollEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'scrolling');\n  }\n  scroll(event) {\n    if (!this.state._active) this.start(event);\n    this.scrollChange(event);\n    this.timeoutStore.add('scrollEnd', this.scrollEnd.bind(this));\n  }\n  scrollChange(event) {\n    if (event.cancelable) event.preventDefault();\n    const state = this.state;\n    const values = scrollValues(event);\n    state._delta = V.sub(values, state._values);\n    V.addTo(state._movement, state._delta);\n    this.computeValues(values);\n    this.compute(event);\n    this.emit();\n  }\n  scrollEnd() {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute();\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('scroll', '', this.scroll.bind(this));\n  }\n}\n\nconst scrollConfigResolver = coordinatesConfigResolver;\n\nclass WheelEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'wheeling');\n  }\n  wheel(event) {\n    if (!this.state._active) this.start(event);\n    this.wheelChange(event);\n    this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n  }\n  wheelChange(event) {\n    const state = this.state;\n    state._delta = wheelValues(event);\n    V.addTo(state._movement, state._delta);\n    clampStateInternalMovementToBounds(state);\n    this.compute(event);\n    this.emit();\n  }\n  wheelEnd() {\n    if (!this.state._active) return;\n    this.state._active = false;\n    this.compute();\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('wheel', '', this.wheel.bind(this));\n  }\n}\n\nconst wheelConfigResolver = coordinatesConfigResolver;\n\nclass HoverEngine extends CoordinatesEngine {\n  constructor(...args) {\n    super(...args);\n    _defineProperty(this, \"ingKey\", 'hovering');\n  }\n  enter(event) {\n    if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n    this.start(event);\n    this.computeValues(pointerValues(event));\n    this.compute(event);\n    this.emit();\n  }\n  leave(event) {\n    if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n    const state = this.state;\n    if (!state._active) return;\n    state._active = false;\n    const values = pointerValues(event);\n    state._movement = state._delta = V.sub(values, state._values);\n    this.computeValues(values);\n    this.compute(event);\n    state.delta = state.movement;\n    this.emit();\n  }\n  bind(bindFunction) {\n    bindFunction('pointer', 'enter', this.enter.bind(this));\n    bindFunction('pointer', 'leave', this.leave.bind(this));\n  }\n}\n\nconst hoverConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n  mouseOnly: (value = true) => value\n});\n\nconst EngineMap = new Map();\nconst ConfigResolverMap = new Map();\nfunction registerAction(action) {\n  EngineMap.set(action.key, action.engine);\n  ConfigResolverMap.set(action.key, action.resolver);\n}\nconst dragAction = {\n  key: 'drag',\n  engine: DragEngine,\n  resolver: dragConfigResolver\n};\nconst hoverAction = {\n  key: 'hover',\n  engine: HoverEngine,\n  resolver: hoverConfigResolver\n};\nconst moveAction = {\n  key: 'move',\n  engine: MoveEngine,\n  resolver: moveConfigResolver\n};\nconst pinchAction = {\n  key: 'pinch',\n  engine: PinchEngine,\n  resolver: pinchConfigResolver\n};\nconst scrollAction = {\n  key: 'scroll',\n  engine: ScrollEngine,\n  resolver: scrollConfigResolver\n};\nconst wheelAction = {\n  key: 'wheel',\n  engine: WheelEngine,\n  resolver: wheelConfigResolver\n};\n\nexport { ConfigResolverMap as C, EngineMap as E, SUPPORT as S, _objectSpread2 as _, _defineProperty as a, touchIds as b, chain as c, toHandlerProp as d, dragAction as e, pinchAction as f, hoverAction as h, isTouch as i, moveAction as m, parseProp as p, registerAction as r, scrollAction as s, toDomEventType as t, wheelAction as w };\n","import { S as SUPPORT, C as ConfigResolverMap, _ as _objectSpread2, a as _defineProperty, t as toDomEventType, i as isTouch, b as touchIds, E as EngineMap, c as chain, p as parseProp, d as toHandlerProp } from './actions-fe213e88.esm.js';\nimport './maths-0ab39ae9.esm.js';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\n\nconst sharedConfigResolver = {\n  target(value) {\n    if (value) {\n      return () => 'current' in value ? value.current : value;\n    }\n    return undefined;\n  },\n  enabled(value = true) {\n    return value;\n  },\n  window(value = SUPPORT.isBrowser ? window : undefined) {\n    return value;\n  },\n  eventOptions({\n    passive = true,\n    capture = false\n  } = {}) {\n    return {\n      passive,\n      capture\n    };\n  },\n  transform(value) {\n    return value;\n  }\n};\n\nconst _excluded = [\"target\", \"eventOptions\", \"window\", \"enabled\", \"transform\"];\nfunction resolveWith(config = {}, resolvers) {\n  const result = {};\n  for (const [key, resolver] of Object.entries(resolvers)) {\n    switch (typeof resolver) {\n      case 'function':\n        if (process.env.NODE_ENV === 'development') {\n          const r = resolver.call(result, config[key], key, config);\n          if (!Number.isNaN(r)) result[key] = r;\n        } else {\n          result[key] = resolver.call(result, config[key], key, config);\n        }\n        break;\n      case 'object':\n        result[key] = resolveWith(config[key], resolver);\n        break;\n      case 'boolean':\n        if (resolver) result[key] = config[key];\n        break;\n    }\n  }\n  return result;\n}\nfunction parse(newConfig, gestureKey, _config = {}) {\n  const _ref = newConfig,\n    {\n      target,\n      eventOptions,\n      window,\n      enabled,\n      transform\n    } = _ref,\n    rest = _objectWithoutProperties(_ref, _excluded);\n  _config.shared = resolveWith({\n    target,\n    eventOptions,\n    window,\n    enabled,\n    transform\n  }, sharedConfigResolver);\n  if (gestureKey) {\n    const resolver = ConfigResolverMap.get(gestureKey);\n    _config[gestureKey] = resolveWith(_objectSpread2({\n      shared: _config.shared\n    }, rest), resolver);\n  } else {\n    for (const key in rest) {\n      const resolver = ConfigResolverMap.get(key);\n      if (resolver) {\n        _config[key] = resolveWith(_objectSpread2({\n          shared: _config.shared\n        }, rest[key]), resolver);\n      } else if (process.env.NODE_ENV === 'development') {\n        if (!['drag', 'pinch', 'scroll', 'wheel', 'move', 'hover'].includes(key)) {\n          if (key === 'domTarget') {\n            throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n          }\n          console.warn(`[@use-gesture]: Unknown config key \\`${key}\\` was used. Please read the documentation for further information.`);\n        }\n      }\n    }\n  }\n  return _config;\n}\n\nclass EventStore {\n  constructor(ctrl, gestureKey) {\n    _defineProperty(this, \"_listeners\", new Set());\n    this._ctrl = ctrl;\n    this._gestureKey = gestureKey;\n  }\n  add(element, device, action, handler, options) {\n    const listeners = this._listeners;\n    const type = toDomEventType(device, action);\n    const _options = this._gestureKey ? this._ctrl.config[this._gestureKey].eventOptions : {};\n    const eventOptions = _objectSpread2(_objectSpread2({}, _options), options);\n    element.addEventListener(type, handler, eventOptions);\n    const remove = () => {\n      element.removeEventListener(type, handler, eventOptions);\n      listeners.delete(remove);\n    };\n    listeners.add(remove);\n    return remove;\n  }\n  clean() {\n    this._listeners.forEach(remove => remove());\n    this._listeners.clear();\n  }\n}\n\nclass TimeoutStore {\n  constructor() {\n    _defineProperty(this, \"_timeouts\", new Map());\n  }\n  add(key, callback, ms = 140, ...args) {\n    this.remove(key);\n    this._timeouts.set(key, window.setTimeout(callback, ms, ...args));\n  }\n  remove(key) {\n    const timeout = this._timeouts.get(key);\n    if (timeout) window.clearTimeout(timeout);\n  }\n  clean() {\n    this._timeouts.forEach(timeout => void window.clearTimeout(timeout));\n    this._timeouts.clear();\n  }\n}\n\nclass Controller {\n  constructor(handlers) {\n    _defineProperty(this, \"gestures\", new Set());\n    _defineProperty(this, \"_targetEventStore\", new EventStore(this));\n    _defineProperty(this, \"gestureEventStores\", {});\n    _defineProperty(this, \"gestureTimeoutStores\", {});\n    _defineProperty(this, \"handlers\", {});\n    _defineProperty(this, \"config\", {});\n    _defineProperty(this, \"pointerIds\", new Set());\n    _defineProperty(this, \"touchIds\", new Set());\n    _defineProperty(this, \"state\", {\n      shared: {\n        shiftKey: false,\n        metaKey: false,\n        ctrlKey: false,\n        altKey: false\n      }\n    });\n    resolveGestures(this, handlers);\n  }\n  setEventIds(event) {\n    if (isTouch(event)) {\n      this.touchIds = new Set(touchIds(event));\n      return this.touchIds;\n    } else if ('pointerId' in event) {\n      if (event.type === 'pointerup' || event.type === 'pointercancel') this.pointerIds.delete(event.pointerId);else if (event.type === 'pointerdown') this.pointerIds.add(event.pointerId);\n      return this.pointerIds;\n    }\n  }\n  applyHandlers(handlers, nativeHandlers) {\n    this.handlers = handlers;\n    this.nativeHandlers = nativeHandlers;\n  }\n  applyConfig(config, gestureKey) {\n    this.config = parse(config, gestureKey, this.config);\n  }\n  clean() {\n    this._targetEventStore.clean();\n    for (const key of this.gestures) {\n      this.gestureEventStores[key].clean();\n      this.gestureTimeoutStores[key].clean();\n    }\n  }\n  effect() {\n    if (this.config.shared.target) this.bind();\n    return () => this._targetEventStore.clean();\n  }\n  bind(...args) {\n    const sharedConfig = this.config.shared;\n    const props = {};\n    let target;\n    if (sharedConfig.target) {\n      target = sharedConfig.target();\n      if (!target) return;\n    }\n    if (sharedConfig.enabled) {\n      for (const gestureKey of this.gestures) {\n        const gestureConfig = this.config[gestureKey];\n        const bindFunction = bindToProps(props, gestureConfig.eventOptions, !!target);\n        if (gestureConfig.enabled) {\n          const Engine = EngineMap.get(gestureKey);\n          new Engine(this, args, gestureKey).bind(bindFunction);\n        }\n      }\n      const nativeBindFunction = bindToProps(props, sharedConfig.eventOptions, !!target);\n      for (const eventKey in this.nativeHandlers) {\n        nativeBindFunction(eventKey, '', event => this.nativeHandlers[eventKey](_objectSpread2(_objectSpread2({}, this.state.shared), {}, {\n          event,\n          args\n        })), undefined, true);\n      }\n    }\n    for (const handlerProp in props) {\n      props[handlerProp] = chain(...props[handlerProp]);\n    }\n    if (!target) return props;\n    for (const handlerProp in props) {\n      const {\n        device,\n        capture,\n        passive\n      } = parseProp(handlerProp);\n      this._targetEventStore.add(target, device, '', props[handlerProp], {\n        capture,\n        passive\n      });\n    }\n  }\n}\nfunction setupGesture(ctrl, gestureKey) {\n  ctrl.gestures.add(gestureKey);\n  ctrl.gestureEventStores[gestureKey] = new EventStore(ctrl, gestureKey);\n  ctrl.gestureTimeoutStores[gestureKey] = new TimeoutStore();\n}\nfunction resolveGestures(ctrl, internalHandlers) {\n  if (internalHandlers.drag) setupGesture(ctrl, 'drag');\n  if (internalHandlers.wheel) setupGesture(ctrl, 'wheel');\n  if (internalHandlers.scroll) setupGesture(ctrl, 'scroll');\n  if (internalHandlers.move) setupGesture(ctrl, 'move');\n  if (internalHandlers.pinch) setupGesture(ctrl, 'pinch');\n  if (internalHandlers.hover) setupGesture(ctrl, 'hover');\n}\nconst bindToProps = (props, eventOptions, withPassiveOption) => (device, action, handler, options = {}, isNative = false) => {\n  var _options$capture, _options$passive;\n  const capture = (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : eventOptions.capture;\n  const passive = (_options$passive = options.passive) !== null && _options$passive !== void 0 ? _options$passive : eventOptions.passive;\n  let handlerProp = isNative ? device : toHandlerProp(device, action, capture);\n  if (withPassiveOption && passive) handlerProp += 'Passive';\n  props[handlerProp] = props[handlerProp] || [];\n  props[handlerProp].push(handler);\n};\n\nconst RE_NOT_NATIVE = /^on(Drag|Wheel|Scroll|Move|Pinch|Hover)/;\nfunction sortHandlers(_handlers) {\n  const native = {};\n  const handlers = {};\n  const actions = new Set();\n  for (let key in _handlers) {\n    if (RE_NOT_NATIVE.test(key)) {\n      actions.add(RegExp.lastMatch);\n      handlers[key] = _handlers[key];\n    } else {\n      native[key] = _handlers[key];\n    }\n  }\n  return [handlers, native, actions];\n}\nfunction registerGesture(actions, handlers, handlerKey, key, internalHandlers, config) {\n  if (!actions.has(handlerKey)) return;\n  if (!EngineMap.has(key)) {\n    if (process.env.NODE_ENV === 'development') {\n      console.warn(`[@use-gesture]: You've created a custom handler that that uses the \\`${key}\\` gesture but isn't properly configured.\\n\\nPlease add \\`${key}Action\\` when creating your handler.`);\n    }\n    return;\n  }\n  const startKey = handlerKey + 'Start';\n  const endKey = handlerKey + 'End';\n  const fn = state => {\n    let memo = undefined;\n    if (state.first && startKey in handlers) handlers[startKey](state);\n    if (handlerKey in handlers) memo = handlers[handlerKey](state);\n    if (state.last && endKey in handlers) handlers[endKey](state);\n    return memo;\n  };\n  internalHandlers[key] = fn;\n  config[key] = config[key] || {};\n}\nfunction parseMergedHandlers(mergedHandlers, mergedConfig) {\n  const [handlers, nativeHandlers, actions] = sortHandlers(mergedHandlers);\n  const internalHandlers = {};\n  registerGesture(actions, handlers, 'onDrag', 'drag', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onWheel', 'wheel', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onScroll', 'scroll', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onPinch', 'pinch', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onMove', 'move', internalHandlers, mergedConfig);\n  registerGesture(actions, handlers, 'onHover', 'hover', internalHandlers, mergedConfig);\n  return {\n    handlers: internalHandlers,\n    config: mergedConfig,\n    nativeHandlers\n  };\n}\n\nexport { Controller, parseMergedHandlers };\n","import { registerAction, dragAction, pinchAction, wheelAction, scrollAction, moveAction, hoverAction } from '@use-gesture/core/actions';\nexport * from '@use-gesture/core/actions';\nimport React from 'react';\nimport { Controller, parseMergedHandlers } from '@use-gesture/core';\nexport * from '@use-gesture/core/utils';\nexport * from '@use-gesture/core/types';\n\nfunction useRecognizers(handlers, config = {}, gestureKey, nativeHandlers) {\n  const ctrl = React.useMemo(() => new Controller(handlers), []);\n  ctrl.applyHandlers(handlers, nativeHandlers);\n  ctrl.applyConfig(config, gestureKey);\n  React.useEffect(ctrl.effect.bind(ctrl));\n  React.useEffect(() => {\n    return ctrl.clean.bind(ctrl);\n  }, []);\n  if (config.target === undefined) {\n    return ctrl.bind.bind(ctrl);\n  }\n  return undefined;\n}\n\nfunction useDrag(handler, config) {\n  registerAction(dragAction);\n  return useRecognizers({\n    drag: handler\n  }, config || {}, 'drag');\n}\n\nfunction usePinch(handler, config) {\n  registerAction(pinchAction);\n  return useRecognizers({\n    pinch: handler\n  }, config || {}, 'pinch');\n}\n\nfunction useWheel(handler, config) {\n  registerAction(wheelAction);\n  return useRecognizers({\n    wheel: handler\n  }, config || {}, 'wheel');\n}\n\nfunction useScroll(handler, config) {\n  registerAction(scrollAction);\n  return useRecognizers({\n    scroll: handler\n  }, config || {}, 'scroll');\n}\n\nfunction useMove(handler, config) {\n  registerAction(moveAction);\n  return useRecognizers({\n    move: handler\n  }, config || {}, 'move');\n}\n\nfunction useHover(handler, config) {\n  registerAction(hoverAction);\n  return useRecognizers({\n    hover: handler\n  }, config || {}, 'hover');\n}\n\nfunction createUseGesture(actions) {\n  actions.forEach(registerAction);\n  return function useGesture(_handlers, _config) {\n    const {\n      handlers,\n      nativeHandlers,\n      config\n    } = parseMergedHandlers(_handlers, _config || {});\n    return useRecognizers(handlers, config, undefined, nativeHandlers);\n  };\n}\n\nfunction useGesture(handlers, config) {\n  const hook = createUseGesture([dragAction, pinchAction, scrollAction, wheelAction, moveAction, hoverAction]);\n  return hook(handlers, config || {});\n}\n\nexport { createUseGesture, useDrag, useGesture, useHover, useMove, usePinch, useScroll, useWheel };\n"],"sourceRoot":""}