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