rege 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../drag/index.ts","../utils.ts","../hover/index.ts","../key/index.ts","../resize/index.ts","../pinch/utils.ts","../wheel/utils.ts","../wheel/index.ts","../pinch/index.ts","../scroll/utils.ts","../scroll/index.ts"],"sourcesContent":["import { EventState, event } from 'reev'\nimport { DragState } from './types'\nimport { vec2, addV, subV, cpV, getDevice, getClientVec2 } from '../utils'\n\nexport const EVENT_FOR_DRAG = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerdown',\n move: 'pointermove',\n end: 'pointerup',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup',\n up: 'mousecancel',\n },\n}\n\nexport const dragEvent = <El extends Element = Element>(\n state: Partial<DragState<El>> = {}\n) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onDrag = () => {\n self.isDragStart = self.active && !self._active\n self.isDragging = self.active && self._active\n self.isDragEnd = !self.active && self._active\n }\n\n const onDragStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n if (self.target.setPointerCapture && 'pointerId' in e)\n // @ts-ignore\n self.target.setPointerCapture(e.pointerId)\n self.onDrag(self)\n }\n\n const onDragging = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.onDrag(self)\n }\n\n const onDragEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n if (self.target.releasePointerCapture && 'pointerId' in e)\n // @ts-ignore\n self.target.releasePointerCapture(e.pointerId)\n self.onDrag(self)\n }\n\n const onMount = (target: El) => {\n self.target = target\n const { start, move, end, up } = EVENT_FOR_DRAG[self.device]\n target.addEventListener(start, self.onDragStart)\n target.addEventListener(move, self.onDragging)\n target.addEventListener(end, self.onDragEnd)\n target.addEventListener(up, self.onDragEnd)\n }\n\n const onClean = () => {\n const target = self.target\n if (!target) return\n const { start, move, end, up } = EVENT_FOR_DRAG[self.device]\n target.removeEventListener(start, self.onDragStart)\n target.removeEventListener(move, self.onDragging)\n target.removeEventListener(end, self.onDragEnd)\n target.removeEventListener(up, self.onDragEnd)\n }\n\n const ref = (el: El) => {\n self(state as DragState<El>)\n if (el) {\n self.onMount(el)\n } else self.onClean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: getDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n isDragStart: false,\n isDragging: false,\n isDragEnd: false,\n onDrag,\n onDragStart,\n onDragging,\n onDragEnd,\n onMount,\n onClean,\n ref,\n }) as EventState<DragState<El>>\n\n return self\n}\n","/**\n * CALCULATE VECTOR\n * REF: https://github.com/toji/gl-matrix/blob/master/src/vec2.js\n */\nexport const isF = (f: unknown): f is Function => typeof f === 'function'\n\nconst Vec = typeof Float32Array !== 'undefined' ? Float32Array : Array\n\nexport const vec2 = (x = 0, y = 0, out = new Vec(2)): Vec2 => {\n out[0] = x\n out[1] = y\n return out as Vec2\n}\n\nexport type Vec2 = [x: number, y: number]\n\nexport const addV = (a: Vec2, b: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n return out\n}\n\nexport const subV = (a: Vec2, b: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n return out\n}\n\nexport const cpV = (a: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0]\n out[1] = a[1]\n return out\n}\n\n/**\n * SUPPORT\n */\nconst isBrowser =\n typeof window !== 'undefined' &&\n !!window.document &&\n !!window.document.createElement\n\nconst supportsTouchEvents = () => isBrowser && 'ontouchstart' in window\n\nconst isTouchScreen = () =>\n supportsTouchEvents() ||\n (isBrowser && window.navigator.maxTouchPoints > 1)\n\nconst supportsPointerEvents = () => isBrowser && 'onpointerdown' in window\n\nconst supportsPointerLock = () =>\n isBrowser && 'exitPointerLock' in window.document\n\nconst supportsGestureEvents = () => {\n try {\n // @ts-ignore eslint-disable-next-line\n return 'constructor' in GestureEvent\n } catch (e) {\n return false\n }\n}\n\n// prettier-ignore\nexport const SUPPORT: Record<string, boolean> = { // Mac\n isBrowser, // true\n get gesture() {\n return (\n SUPPORT._gesture ??\n (SUPPORT._gesture = supportsGestureEvents())\n )\n },\n get touch() {\n return (\n SUPPORT._touch ??\n (SUPPORT._touch = supportsTouchEvents())\n )\n },\n get touchscreen() {\n return (\n SUPPORT._touchscreen ??\n (SUPPORT._touchscreen = isTouchScreen())\n )\n },\n get pointer() {\n return (\n SUPPORT._pointer ??\n (SUPPORT._pointer = supportsPointerEvents())\n )\n },\n get pointerLock() {\n return (\n SUPPORT._pointerLock ??\n (SUPPORT._pointerLock = supportsPointerLock())\n )\n },\n}\n\n/**\n * https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/config/dragConfigResolver.ts\n */\nexport const getDevice = (lock = false) => {\n const pointerLock = lock && SUPPORT.pointerLock\n if (pointerLock) return 'mouse'\n if (SUPPORT.touch) return 'touch'\n if (SUPPORT.pointer) return 'pointer'\n return 'mouse'\n}\n\nexport const getClientVec2 = (e: any, device: unknown, out: Vec2): Vec2 => {\n if (device !== 'touch') {\n return vec2(e.clientX, e.clientY, out)\n }\n const [touch] = e.changedTouches\n return vec2(touch.clientX, touch.clientY, out)\n}\n","import { HoverState } from './types'\nimport { EventState, event } from 'reev'\nimport { vec2, addV, subV, getDevice, getClientVec2, cpV } from '../utils'\n\nexport const EVENT_FOR_HOVER = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerenter',\n move: 'pointermove',\n end: 'pointerleave',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mouseenter',\n move: 'mousemove',\n end: 'mouseleave',\n up: 'mousecancel',\n },\n}\n\nexport const hoverEvent = <El extends Element = Element>(\n state: Partial<HoverState<El>> = {}\n) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onHover = () => {\n self.isHoverStart = !self._active && self.active\n self.isHovering = self._active && self.active\n self.isHoverEnd = self._active && !self.active\n }\n\n const onHoverStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n self.onHover(self)\n }\n\n const onHovering = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.onHover(self)\n }\n\n const onHoverEnd = (e: Event) => {\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.onHover(self)\n }\n\n const onMount = (target: El) => {\n self.target = target\n const { start, move, end, up } = EVENT_FOR_HOVER[self.device]\n target.addEventListener(start, self.onHoverStart)\n target.addEventListener(move, self.onHovering)\n target.addEventListener(end, self.onHoverEnd)\n target.addEventListener(up, self.onHoverEnd)\n }\n\n const onClean = () => {\n const target = self.target\n if (!target) return\n const { start, move, end, up } = EVENT_FOR_HOVER[self.device]\n target.removeEventListener(start, self.onHoverStart)\n target.removeEventListener(move, self.onHovering)\n target.removeEventListener(end, self.onHoverEnd)\n target.removeEventListener(up, self.onHoverEnd)\n }\n\n const ref = (target: El | null) => {\n self(state as HoverState<El>)\n if (target) {\n self.onMount(target)\n } else self.onClean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: getDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n isHoverStart: false,\n isHovering: false,\n isHoverEnd: false,\n onHover,\n onHoverStart,\n onHovering,\n onHoverEnd,\n onMount,\n onClean,\n ref,\n }) as EventState<HoverState<El>>\n\n return self\n}\n","import { event } from 'reev'\nimport { KeyState } from './types'\n\nexport const keyEvent = <El extends Element = Element>(\n state: Partial<KeyState<El>> = {}\n) => {\n const onKeydown = (e: KeyboardEvent) => {\n self.event = e\n self.key = e.key\n self.code = e.code\n self.onKey?.(self)\n }\n\n const onMount = (el: El | Window) => {\n if (!el) el = el || window\n self.target = el\n\n // @ts-ignore set tabindex to make element focusable\n el.setAttribute('tabindex', '1') // @ts-ignore\n el.addEventListener('keydown', self.onKeydown)\n }\n\n const onClean = () => {\n const el = self.target\n if (!el) return // @ts-ignore\n el.removeEventListener('keydown', self.onKeydown)\n }\n\n const ref = (el: Element | null) => {\n self(state)\n if (el) self.onMount(el as El)\n else self.onClean()\n }\n\n const self = event<KeyState<El>>({ onKeydown, onMount, onClean, ref })\n return self\n}\n","import { EventState, event } from 'reev'\nimport { ResizeState } from './types'\n\nconst DELAY = 100\n\ntype ResizeEventCallback = (entry: ResizeObserverEntry) => () => void\n\nexport const resizeEvent = <El extends Element = Element>(\n state: ResizeState\n) => {\n const on: ResizeEventCallback = (entry) => () => {\n // ???\n }\n\n const onMount = (target: El) => {\n const register = (entry: ResizeObserverEntry) => {\n if (entry.target !== target) return\n const id = setTimeout(on(entry), DELAY)\n self.listener()\n self.listener = () => clearTimeout(id)\n }\n\n self.observer = new ResizeObserver((entries) => {\n entries.forEach(register)\n })\n\n self.observer.observe(target)\n }\n\n const onClean = () => {}\n\n const ref = (el: El) => {\n self(state)\n if (el) {\n self.onMount(el)\n } else self.onClean(null)\n }\n\n const self = event({\n observer: null,\n listener: () => {},\n onResize: () => {},\n onMount,\n onClean,\n ref,\n }) as EventState<ResizeState<El>>\n\n return self\n}\n","import { SUPPORT } from '../utils'\n\n/**\n * ref:\n * https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/config/pinchConfigResolver.ts\n */\nexport const pinchDevice = (touch = false) => {\n if (!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 return 'wheel'\n}\n","import { vec2, Vec2 } from '../utils'\n\nconst LINE_HEIGHT = 40\n\nconst PAGE_HEIGHT = 800\n\nexport const wheelValues = (event: Event, out: Vec2): Vec2 => {\n if (!(event instanceof WheelEvent)) return vec2(0, 0, out)\n\n let { deltaX, deltaY, deltaMode } = 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 vec2(deltaX, deltaY, out)\n}\n","import { vec2, addV, cpV } from '../utils'\nimport { wheelValues } from './utils'\nimport { EventState, event } from 'reev'\nimport { WheelState } from './types'\n\nexport const wheelEvent = <El extends Element = Element>(\n config?: WheelState\n) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onWheel = () => {\n self.isWheelStart = self.active && !self._active\n self.isWheeling = self.active && self._active\n self.isWheelEnd = !self.active && self._active\n }\n const onWheelStart = (e: WheelEvent) => {\n self.event = e\n self.active = true\n wheelValues(e, self.delta)\n self.onWheel(self)\n }\n\n const onWheeling = (e: Event) => {\n // register onWheelEnd\n const id = setTimeout(() => self.onWheelEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n self.event = e\n if (!self.active) {\n self.onWheelStart(e)\n return\n }\n\n self._active = self.active\n cpV(self.value, self._value)\n wheelValues(e, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n self.onWheel(self)\n }\n\n const onWheelEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n self.onWheel(self)\n }\n\n const onMount = (target: El) => {\n self.target = target\n target.addEventListener('wheel', self.onWheeling)\n }\n\n const onClean = () => {\n const target = self.target\n if (!target) return\n target.removeEventListener('wheel', self.onWheeling)\n }\n\n const ref = (el: Element | null) => {\n self(config as WheelState<El>)\n if (el) {\n self.onMount(el)\n } else self.onClean(null)\n }\n\n const self = event({\n active: false,\n _active: false,\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n timeout: 100,\n clearTimeout: () => {},\n memo: {},\n isWheelStart: false,\n isWheeling: false,\n isWheelEnd: false,\n onWheel,\n onWheelStart,\n onWheeling,\n onWheelEnd,\n onMount,\n onClean,\n ref,\n }) as EventState<WheelState<El>>\n\n return self\n}\n","import { EventState } from 'reev'\nimport { pinchDevice } from './utils'\nimport { PinchState } from './types'\nimport { vec2, addV, subV, getClientVec2, cpV } from '../utils'\nimport { wheelEvent } from '../wheel'\n\nexport const EVENT_FOR_PINCH = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerdown',\n move: 'pointermove',\n end: 'pointerup',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup',\n up: 'mousecancel',\n },\n}\n\nexport const pinchEvent = <El extends Element = Element>(\n state: Partial<PinchState<El>> = {}\n) => {\n const self = wheelEvent() as unknown as EventState<PinchState<El>>\n\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onPinch = () => {\n self.isPinchStart = !self._active && self.active\n self.isPinching = self._active && self.active\n self.isPinchEnd = self._active && !self.active\n }\n\n const onPinchStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n self.onPinch(self)\n }\n\n const onPinching = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.onPinch(self)\n }\n\n const onPinchEnd = (e: Event) => {\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.onPinch(self)\n }\n\n const onWheelStart = () => {\n self.onPinch(self)\n }\n\n const onWheeling = () => {\n self.onPinch(self)\n }\n\n const onWheelEnd = () => {\n self.onPinch(self)\n }\n\n const onMount = (target: El) => {\n self.target = target\n if (self.device === 'wheel') return\n const { start, move, end, up } = EVENT_FOR_PINCH[self.device]\n target.addEventListener(start, self.onPinchStart)\n target.addEventListener(move, self.onPinching)\n target.addEventListener(end, self.onPinchEnd)\n target.addEventListener(up, self.onPinchEnd)\n }\n\n const onClean = () => {\n const target = self.target\n if (!target || self.device === 'wheel') return\n const { start, move, end, up } = EVENT_FOR_PINCH[self.device]\n target.removeEventListener(start, self.onPinchStart)\n target.removeEventListener(move, self.onPinching)\n target.removeEventListener(end, self.onPinchEnd)\n target.removeEventListener(up, self.onPinchEnd)\n }\n\n const ref = () => {\n self(state as PinchState<El>)\n }\n\n self({\n _active: false,\n active: false,\n device: pinchDevice(),\n _rotate: 0,\n rotate: 0,\n _size: 1,\n size: 1,\n _scale: vec2(1, 1),\n scale: vec2(1, 1),\n _value: vec2(),\n value: vec2(),\n delta: vec2(),\n offset: vec2(),\n movement: vec2(),\n target: null as unknown as El,\n event: null as unknown as any,\n memo: {},\n isPinchStart: false,\n isPinching: false,\n isPinchEnd: false,\n onWheelStart,\n onWheeling,\n onWheelEnd,\n onPinch,\n onPinchStart,\n onPinching,\n onPinchEnd,\n onMount,\n onClean,\n ref,\n })\n\n return self\n}\n","import { vec2, Vec2 } from '../utils'\n\nexport const scrollValues = (e: any, out = vec2()): Vec2 => {\n const { scrollX: x, scrollLeft: xx } = e.currentTarget\n const { scrollY: y, scrollTop: yy } = e.currentTarget\n return vec2(x ?? xx ?? 0, y ?? yy ?? 0, out)\n}\n","import { vec2, addV, cpV, subV } from '../utils'\nimport { scrollValues } from './utils'\nimport { EventState, event } from 'reev'\nimport { ScrollState } from './types'\n\nexport const scrollEvent = <El extends Element = Element>(\n config?: ScrollState\n) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const onScroll = () => {\n self.isScrollStart = self.active && !self._active\n self.isScrolling = self.active && self._active\n self.isScrollEnd = !self.active && self._active\n }\n\n const onScrollStart = (e: Event) => {\n self.event = e\n self.active = true\n scrollValues(e, self.value)\n self.onScroll(self)\n }\n\n const onScrolling = (e: Event) => {\n // register onWheelEnd\n const id = setTimeout(() => self.onScrollEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n\n if (!self.active) {\n self.onScrollStart(e)\n return\n }\n\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n scrollValues(e, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.onScroll(self)\n }\n\n const onScrollEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n self.onScroll(self)\n }\n\n const onMount = (target: El) => {\n self.target = target // @TODO set event to target\n window.addEventListener('scroll', self.onScrolling)\n }\n\n const onClean = () => {\n window.removeEventListener('scroll', self.onScrolling)\n }\n\n const ref = (el: Element | null) => {\n self(config as ScrollState<El>)\n if (el) {\n self.onMount(el)\n } else self.onClean(null)\n }\n\n const self = event({\n active: false,\n _active: false,\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n timeout: 100,\n clearTimeout: () => {},\n isScrollStart: false,\n isScrolling: false,\n isScrollEnd: false,\n onScroll,\n onScrollStart,\n onScrolling,\n onScrollEnd,\n onMount,\n onClean,\n ref,\n }) as EventState<ScrollState<El>>\n\n return self\n}\n"],"mappings":"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","names":["event","Vec","vec2","x","y","out","addV","a","b","subV","cpV","isBrowser","supportsTouchEvents","isTouchScreen","supportsPointerEvents","supportsPointerLock","supportsGestureEvents","SUPPORT","getDevice","lock","getClientVec2","e","device","touch","EVENT_FOR_DRAG","dragEvent","state","initValues","vec2","self","onDrag","onDragStart","e","getClientVec2","onDragging","cpV","subV","addV","onDragEnd","onMount","target","start","move","end","up","onClean","ref","el","event","getDevice","event","EVENT_FOR_HOVER","hoverEvent","state","initValues","vec2","self","onHover","onHoverStart","e","getClientVec2","onHovering","cpV","subV","addV","onHoverEnd","onMount","target","start","move","end","up","onClean","ref","event","getDevice","event","keyEvent","state","self","e","el","event","DELAY","resizeEvent","state","on","entry","self","target","register","id","entries","el","pinchDevice","touch","SUPPORT","LINE_HEIGHT","PAGE_HEIGHT","wheelValues","event","out","vec2","deltaX","deltaY","deltaMode","event","wheelEvent","config","initValues","vec2","self","onWheel","onWheelStart","e","wheelValues","onWheeling","id","cpV","addV","onWheelEnd","onMount","target","onClean","ref","el","EVENT_FOR_PINCH","pinchEvent","state","self","wheelEvent","initValues","vec2","onPinch","onPinchStart","e","getClientVec2","onPinching","cpV","subV","addV","onPinchEnd","onWheelStart","onWheeling","onWheelEnd","onMount","target","start","move","end","up","onClean","ref","pinchDevice","scrollValues","e","out","vec2","x","xx","y","yy","event","scrollEvent","config","initValues","vec2","self","onScroll","onScrollStart","e","scrollValues","onScrolling","id","cpV","subV","addV","onScrollEnd","onMount","target","onClean","ref","el"]}
1
+ {"version":3,"sources":["../src/drag/index.ts","../src/utils.ts","../src/hover/index.ts","../src/key/index.ts","../src/resize/index.ts","../src/pinch/index.ts","../src/pinch/utils.ts","../src/scroll/utils.ts","../src/scroll/index.ts","../src/wheel/utils.ts","../src/wheel/index.ts"],"sourcesContent":["import { EventState, event } from 'reev/src'\nimport { DragState } from './types'\nimport { vec2, addV, subV, cpV, getDevice, getClientVec2 } from '../utils'\n\nexport * from './types'\n\nexport const EVENT_FOR_DRAG = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerdown',\n move: 'pointermove',\n end: 'pointerup',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n end: 'mouseup',\n up: 'mousecancel',\n },\n}\n\nexport const dragEvent = <El extends Element = Element>(state: Partial<DragState<El>> = {}) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const drag = () => {\n self.isDragStart = self.active && !self._active\n self.isDragging = self.active && self._active\n self.isDragEnd = !self.active && self._active\n }\n\n const dragStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n if (self.target.setPointerCapture && 'pointerId' in e)\n // @ts-ignore\n self.target.setPointerCapture(e.pointerId)\n self.drag(self)\n }\n\n const dragging = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.drag(self)\n }\n\n const dragEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n if (self.target.releasePointerCapture && 'pointerId' in e)\n // @ts-ignore\n self.target.releasePointerCapture(e.pointerId)\n self.drag(self)\n }\n\n const mount = (target: El) => {\n self.target = target\n const { start, move, end, up } = EVENT_FOR_DRAG[self.device]\n target.addEventListener(start, self.dragStart)\n target.addEventListener(move, self.dragging)\n target.addEventListener(end, self.dragEnd)\n target.addEventListener(up, self.dragEnd)\n }\n\n const clean = () => {\n const target = self.target\n if (!target) return\n const { start, move, end, up } = EVENT_FOR_DRAG[self.device]\n target.removeEventListener(start, self.dragStart)\n target.removeEventListener(move, self.dragging)\n target.removeEventListener(end, self.dragEnd)\n target.removeEventListener(up, self.dragEnd)\n }\n\n const ref = (el: El) => {\n self(state as DragState<El>)\n if (el) {\n self.mount(el)\n } else self.clean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: getDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n isDragStart: false,\n isDragging: false,\n isDragEnd: false,\n drag,\n dragStart,\n dragging,\n dragEnd,\n mount,\n clean,\n ref,\n }) as EventState<DragState<El>>\n\n return self\n}\n","/**\n * CALCULATE VECTOR\n * REF: https://github.com/toji/gl-matrix/blob/master/src/vec2.js\n */\nexport const isF = (f: unknown): f is Function => typeof f === 'function'\n\nconst Vec = typeof Float32Array !== 'undefined' ? Float32Array : Array\n\nexport const vec2 = (x = 0, y = 0, out = new Vec(2)): Vec2 => {\n out[0] = x\n out[1] = y\n return out as Vec2\n}\n\nexport type Vec2 = [x: number, y: number]\n\nexport const addV = (a: Vec2, b: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n return out\n}\n\nexport const subV = (a: Vec2, b: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n return out\n}\n\nexport const cpV = (a: Vec2, out = vec2()): Vec2 => {\n out[0] = a[0]\n out[1] = a[1]\n return out\n}\n\n/**\n * SUPPORT\n */\nconst isBrowser = typeof window !== 'undefined' && !!window.document && !!window.document.createElement\n\nconst supportsTouchEvents = () => isBrowser && 'ontouchstart' in window\n\nconst isTouchScreen = () => supportsTouchEvents() || (isBrowser && window.navigator.maxTouchPoints > 1)\n\nconst supportsPointerEvents = () => isBrowser && 'onpointerdown' in window\n\nconst supportsPointerLock = () => isBrowser && 'exitPointerLock' in window.document\n\nconst supportsGestureEvents = () => {\n try {\n // @ts-ignore eslint-disable-next-line\n return 'constructor' in GestureEvent\n } catch (e) {\n return false\n }\n}\n\n// prettier-ignore\nexport const SUPPORT: Record<string, boolean> = { // Mac\n isBrowser, // true\n get gesture() {\n return (\n SUPPORT._gesture ??\n (SUPPORT._gesture = supportsGestureEvents())\n )\n },\n get touch() {\n return (\n SUPPORT._touch ??\n (SUPPORT._touch = supportsTouchEvents())\n )\n },\n get touchscreen() {\n return (\n SUPPORT._touchscreen ??\n (SUPPORT._touchscreen = isTouchScreen())\n )\n },\n get pointer() {\n return (\n SUPPORT._pointer ??\n (SUPPORT._pointer = supportsPointerEvents())\n )\n },\n get pointerLock() {\n return (\n SUPPORT._pointerLock ??\n (SUPPORT._pointerLock = supportsPointerLock())\n )\n },\n}\n\n/**\n * https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/config/dragConfigResolver.ts\n */\nexport const getDevice = (lock = false) => {\n const pointerLock = lock && SUPPORT.pointerLock\n if (pointerLock) return 'mouse'\n if (SUPPORT.touch) return 'touch'\n if (SUPPORT.pointer) return 'pointer'\n return 'mouse'\n}\n\nexport const getClientVec2 = (e: any, device: unknown, out: Vec2): Vec2 => {\n if (device !== 'touch') {\n return vec2(e.clientX, e.clientY, out)\n }\n const [touch] = e.changedTouches\n return vec2(touch.clientX, touch.clientY, out)\n}\n","import { HoverState } from './types'\nimport { EventState, event } from 'reev/src'\nimport { vec2, addV, subV, getDevice, getClientVec2, cpV } from '../utils'\n\nexport * from './types'\n\nexport const EVENT_FOR_HOVER = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n up: 'touchcancel',\n },\n pointer: {\n start: 'pointerenter',\n move: 'pointermove',\n end: 'pointerleave',\n up: 'pointercancel',\n },\n mouse: {\n start: 'mouseenter',\n move: 'mousemove',\n end: 'mouseleave',\n up: 'mousecancel',\n },\n}\n\nexport const hoverEvent = <El extends Element = Element>(state: Partial<HoverState<El>> = {}) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const hover = () => {\n self.isHoverStart = !self._active && self.active\n self.isHovering = self._active && self.active\n self.isHoverEnd = self._active && !self.active\n }\n\n const hoverStart = (e: Event) => {\n self.event = e\n self.active = true\n getClientVec2(e, self.device, self.value)\n self.hover(self)\n }\n\n const hovering = (e: Event) => {\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n getClientVec2(e, self.device, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.hover(self)\n }\n\n const hoverEnd = (e: Event) => {\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.hover(self)\n }\n\n const mount = (target: El) => {\n self.target = target\n const { start, move, end, up } = EVENT_FOR_HOVER[self.device]\n target.addEventListener(start, self.hoverStart)\n target.addEventListener(move, self.hovering)\n target.addEventListener(end, self.hoverEnd)\n target.addEventListener(up, self.hoverEnd)\n }\n\n const clean = () => {\n const target = self.target\n if (!target) return\n const { start, move, end, up } = EVENT_FOR_HOVER[self.device]\n target.removeEventListener(start, self.hoverStart)\n target.removeEventListener(move, self.hovering)\n target.removeEventListener(end, self.hoverEnd)\n target.removeEventListener(up, self.hoverEnd)\n }\n\n const ref = (target: El | null) => {\n self(state as HoverState<El>)\n if (target) {\n self.mount(target)\n } else self.clean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: getDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n isHoverStart: false,\n isHovering: false,\n isHoverEnd: false,\n hover,\n hoverStart,\n hovering,\n hoverEnd,\n mount,\n clean,\n ref,\n }) as EventState<HoverState<El>>\n\n return self\n}\n","import { event } from 'reev/src'\nimport { KeyState } from './types'\n\nexport * from './types'\n\nexport const keyEvent = <El extends Element = Element>(state: Partial<KeyState<El>> = {}) => {\n const keydown = (e: KeyboardEvent) => {\n self.event = e\n self.pressedKey = e.key\n self.code = e.code\n self.key?.(self)\n }\n\n const mount = (el: El | Window) => {\n if (!el) el = el || window\n self.target = el\n\n // @ts-ignore set tabindex to make element focusable\n el.setAttribute('tabindex', '1') // @ts-ignore\n el.addEventListener('keydown', self.keydown)\n }\n\n const clean = () => {\n const el = self.target\n if (!el) return // @ts-ignore\n el.removeEventListener('keydown', self.keydown)\n }\n\n const ref = (el: Element | null) => {\n self(state)\n if (el) self.mount(el as El)\n else self.clean()\n }\n\n const self = event<KeyState<El>>({ keydown, mount, clean, ref })\n return self\n}\n","import { EventState, event } from 'reev/src'\nimport { ResizeState } from './types'\n\nexport * from './types'\n\nconst DELAY = 100\n\ntype ResizeEventCallback = (entry: ResizeObserverEntry) => () => void\n\nexport const resizeEvent = <El extends Element = Element>(state: ResizeState) => {\n const on: ResizeEventCallback = (entry) => () => {\n // ???\n }\n\n const mount = (target: El) => {\n const register = (entry: ResizeObserverEntry) => {\n if (entry.target !== target) return\n const id = setTimeout(on(entry), DELAY)\n self.listener()\n self.listener = () => clearTimeout(id)\n }\n\n self.observer = new ResizeObserver((entries) => {\n entries.forEach(register)\n })\n\n self.observer.observe(target)\n }\n\n const clean = () => {}\n\n const ref = (el: El) => {\n self(state)\n if (el) {\n self.mount(el)\n } else self.clean(null)\n }\n\n const self = event({\n observer: null,\n listener: () => {},\n resize: () => {},\n mount,\n clean,\n ref,\n }) as EventState<ResizeState<El>>\n\n return self\n}\n","import { EventState, event } from 'reev/src'\nimport { PinchState } from './types'\nimport { vec2, addV, subV, cpV } from '../utils'\nimport { pinchDevice, touchDistanceAngle, pointerDistanceAngle, getCurrentTargetTouchIds, wheelPinchDelta, WebKitGestureEvent, DistanceAngle } from './utils'\n\nexport * from './types'\n\nexport const EVENT_FOR_PINCH = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n end: 'touchend',\n cancel: 'touchcancel',\n },\n pointer: {\n start: 'pointerdown',\n move: 'pointermove',\n end: 'pointerup',\n cancel: 'pointercancel',\n },\n gesture: {\n start: 'gesturestart',\n change: 'gesturechange',\n end: 'gestureend',\n },\n}\n\nexport const pinchEvent = <El extends Element = Element>(config: Partial<PinchState<El>> = {}) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const pinch = () => {\n self.isPinchStart = self.active && !self._active\n self.isPinching = self.active && self._active\n self.isPinchEnd = !self.active && self._active\n }\n\n // ===== Common pinch handlers =====\n\n const pinchStart = (e: Event, payload: DistanceAngle) => {\n self.event = e\n self.active = true\n\n // Store initial values [distance, angle]\n vec2(payload.distance, payload.angle, self.value)\n vec2(payload.distance, payload.angle, self.initial)\n cpV(payload.origin, self.origin)\n\n self.scale = 1\n self.turns = 0\n\n self.pinch(self)\n }\n\n const pinching = (e: Event, payload: DistanceAngle) => {\n if (!self.active) return\n\n self.event = e\n self._active = self.active\n\n // Store previous values\n cpV(self.value, self._value)\n\n // Current values [distance, angle]\n const prevAngle = self._value[1]\n let newAngle = payload.angle\n\n // Handle angle wrapping (for full rotations)\n const deltaAngle = newAngle - prevAngle\n if (Math.abs(deltaAngle) > 270) {\n self.turns += Math.sign(deltaAngle)\n newAngle -= 360 * Math.sign(deltaAngle)\n }\n\n vec2(payload.distance, newAngle, self.value)\n cpV(payload.origin, self.origin)\n\n // Calculate movement: [scaleRatio - 1, angleDelta]\n // scaleRatio = currentDistance / initialDistance\n const scaleRatio = self.value[0] / self.initial[0] - 1\n const angleDelta = self.value[1] - self.initial[1]\n vec2(scaleRatio, angleDelta, self.movement)\n\n // Calculate delta from previous frame\n subV(self.value, self._value, self.delta)\n // Convert distance delta to scale delta for consistency\n self.delta[0] = self._value[0] !== 0 ? self.value[0] / self._value[0] - 1 : 0\n\n // Update offset (cumulative)\n addV(self.offset, self.delta, self.offset)\n\n // Update scale\n self.scale = self.initial[0] !== 0 ? self.value[0] / self.initial[0] : 1\n\n self.pinch(self)\n }\n\n const pinchEnd = (e: Event) => {\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.pinch(self)\n }\n\n // ===== Touch event handlers =====\n\n const touchStart = (e: TouchEvent) => {\n const touchIds = getCurrentTargetTouchIds(e)\n\n if (self.active) {\n // Check if the touches that started the gesture are still present\n if (self._touchIds.every((id) => touchIds.includes(id))) return\n }\n\n if (touchIds.length < 2) return\n\n // Store the first two touch ids\n self._touchIds = touchIds.slice(0, 2)\n\n const payload = touchDistanceAngle(e, self._touchIds)\n if (!payload) return\n\n pinchStart(e, payload)\n }\n\n const touchMove = (e: TouchEvent) => {\n if (!self.active) return\n\n const payload = touchDistanceAngle(e, self._touchIds)\n if (!payload) return\n\n pinching(e, payload)\n }\n\n const touchEnd = (e: TouchEvent) => {\n if (!self.active) return\n\n // Check if any of our tracked touches ended\n const currentTouchIds = Array.from(e.touches).map((t) => t.identifier)\n if (self._touchIds.some((id) => !currentTouchIds.includes(id))) {\n pinchEnd(e)\n }\n }\n\n // ===== Pointer event handlers =====\n\n const pointerStart = (e: PointerEvent) => {\n // Only track left mouse button or touch\n if (e.buttons != null && e.buttons % 2 !== 1) return\n\n const _pointerEvents = self._pointerEvents\n\n if (self.active) {\n // Check if the pointers that started the gesture are still present\n if (Array.from(_pointerEvents.keys()).every((id) => self._pointerEvents.has(id))) return\n }\n\n // Capture the pointer\n try {\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n } catch {}\n\n if (_pointerEvents.size < 2) {\n _pointerEvents.set(e.pointerId, e)\n }\n\n if (_pointerEvents.size < 2) return\n\n const payload = pointerDistanceAngle(_pointerEvents)\n if (!payload) return\n\n pinchStart(e, payload)\n }\n\n const pointerMove = (e: PointerEvent) => {\n const _pointerEvents = self._pointerEvents\n\n if (_pointerEvents.has(e.pointerId)) {\n _pointerEvents.set(e.pointerId, e)\n }\n\n if (!self.active) return\n\n const payload = pointerDistanceAngle(_pointerEvents)\n if (!payload) return\n\n pinching(e, payload)\n }\n\n const pointerEnd = (e: PointerEvent) => {\n try {\n ;(e.target as HTMLElement).releasePointerCapture(e.pointerId)\n } catch {}\n\n const _pointerEvents = self._pointerEvents\n\n if (_pointerEvents.has(e.pointerId)) {\n _pointerEvents.delete(e.pointerId)\n }\n\n if (!self.active) return\n\n if (_pointerEvents.size < 2) {\n pinchEnd(e)\n }\n }\n\n // ===== Safari Gesture event handlers =====\n\n const gestureStart = (e: Event) => {\n const ge = e as WebKitGestureEvent\n if (e.cancelable) e.preventDefault()\n\n if (self.active) return\n\n self.event = e\n self.active = true\n\n // GestureEvent provides scale and rotation directly\n vec2(ge.scale, ge.rotation, self.value)\n vec2(ge.scale, ge.rotation, self.initial)\n vec2(ge.clientX, ge.clientY, self.origin)\n\n self.scale = 1\n self.turns = 0\n\n self.pinch(self)\n }\n\n const gestureChange = (e: Event) => {\n const ge = e as WebKitGestureEvent\n if (e.cancelable) e.preventDefault()\n\n if (!self.active) return\n\n self.event = e\n self._active = self.active\n\n cpV(self.value, self._value)\n\n // GestureEvent gives us scale and rotation directly\n vec2(ge.scale, ge.rotation, self.value)\n vec2(ge.clientX, ge.clientY, self.origin)\n\n // movement = [scale - 1, rotation]\n vec2(ge.scale - 1, ge.rotation, self.movement)\n\n // delta from previous\n subV(self.value, self._value, self.delta)\n\n // Update offset\n addV(self.offset, self.delta, self.offset)\n\n self.scale = ge.scale\n\n self.pinch(self)\n }\n\n const gestureEnd = (e: Event) => {\n if (!self.active) return\n pinchEnd(e)\n }\n\n // ===== Wheel event handlers (trackpad pinch fallback) =====\n\n const wheelStart = (e: WheelEvent) => {\n self.event = e\n self.active = true\n\n // For wheel, we track scale change as value[0], rotation as value[1] (always 0)\n vec2(1, 0, self.value)\n vec2(1, 0, self.initial)\n vec2(e.clientX, e.clientY, self.origin)\n\n self.scale = 1\n self.turns = 0\n\n // Apply the initial wheel delta\n const scaleDelta = wheelPinchDelta(e, self.offset[0] + 1)\n self.delta[0] = scaleDelta\n self.delta[1] = 0\n self.value[0] += scaleDelta\n addV(self.offset, self.delta, self.offset)\n vec2(self.value[0] - 1, 0, self.movement)\n\n self.scale = self.value[0]\n\n self.pinch(self)\n }\n\n const wheeling = (e: WheelEvent) => {\n // Set up timeout to detect wheel end\n const id = setTimeout(() => wheelEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n\n if (!self.active) {\n wheelStart(e)\n return\n }\n\n self.event = e\n self._active = self.active\n\n cpV(self.value, self._value)\n vec2(e.clientX, e.clientY, self.origin)\n\n // Calculate scale delta from wheel\n const scaleDelta = wheelPinchDelta(e, self.offset[0] + 1)\n self.delta[0] = scaleDelta\n self.delta[1] = 0\n\n self.value[0] += scaleDelta\n addV(self.offset, self.delta, self.offset)\n vec2(self.value[0] - 1, 0, self.movement)\n\n self.scale = self.value[0]\n\n self.pinch(self)\n }\n\n const wheelEnd = (e: Event) => {\n if (!self.active) return\n self.event = e\n self._active = true\n self.active = false\n initValues()\n self.pinch(self)\n }\n\n // ===== Lifecycle methods =====\n\n const mount = (target: El) => {\n self.target = target\n const device = self.device\n\n if (device === 'wheel') {\n target.addEventListener('wheel', wheeling as EventListener, { passive: false })\n } else if (device === 'gesture') {\n const events = EVENT_FOR_PINCH.gesture\n target.addEventListener(events.start, gestureStart)\n target.addEventListener(events.change, gestureChange)\n target.addEventListener(events.end, gestureEnd)\n } else if (device === 'touch') {\n const events = EVENT_FOR_PINCH.touch\n target.addEventListener(events.start, touchStart as EventListener)\n target.addEventListener(events.move, touchMove as EventListener)\n target.addEventListener(events.end, touchEnd as EventListener)\n target.addEventListener(events.cancel, touchEnd as EventListener)\n } else if (device === 'pointer') {\n const events = EVENT_FOR_PINCH.pointer\n target.addEventListener(events.start, pointerStart as EventListener)\n target.addEventListener(events.move, pointerMove as EventListener)\n target.addEventListener(events.end, pointerEnd as EventListener)\n target.addEventListener(events.cancel, pointerEnd as EventListener)\n }\n }\n\n const clean = () => {\n const target = self.target\n if (!target) return\n const device = self.device\n\n if (device === 'wheel') {\n target.removeEventListener('wheel', wheeling as EventListener)\n } else if (device === 'gesture') {\n const events = EVENT_FOR_PINCH.gesture\n target.removeEventListener(events.start, gestureStart)\n target.removeEventListener(events.change, gestureChange)\n target.removeEventListener(events.end, gestureEnd)\n } else if (device === 'touch') {\n const events = EVENT_FOR_PINCH.touch\n target.removeEventListener(events.start, touchStart as EventListener)\n target.removeEventListener(events.move, touchMove as EventListener)\n target.removeEventListener(events.end, touchEnd as EventListener)\n target.removeEventListener(events.cancel, touchEnd as EventListener)\n } else if (device === 'pointer') {\n const events = EVENT_FOR_PINCH.pointer\n target.removeEventListener(events.start, pointerStart as EventListener)\n target.removeEventListener(events.move, pointerMove as EventListener)\n target.removeEventListener(events.end, pointerEnd as EventListener)\n target.removeEventListener(events.cancel, pointerEnd as EventListener)\n }\n }\n\n const ref = (el: El | null) => {\n self(config as PinchState<El>)\n if (el) {\n self.mount(el)\n } else self.clean()\n }\n\n const self = event({\n _active: false,\n active: false,\n device: pinchDevice(),\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n initial: vec2(0, 0),\n origin: vec2(0, 0),\n _touchIds: [] as number[],\n _pointerEvents: new Map<number, PointerEvent>(),\n scale: 1,\n turns: 0,\n target: null as unknown as El,\n event: null as unknown as Event,\n memo: {},\n timeout: 100,\n clearTimeout: () => {},\n isPinchStart: false,\n isPinching: false,\n isPinchEnd: false,\n pinch,\n pinchStart: (e: Event) => {\n // This is called externally, need to detect device and delegate\n if (self.device === 'touch') touchStart(e as TouchEvent)\n else if (self.device === 'pointer') pointerStart(e as PointerEvent)\n else if (self.device === 'gesture') gestureStart(e)\n else if (self.device === 'wheel') wheeling(e as WheelEvent)\n },\n pinching: (e: Event) => {\n if (self.device === 'touch') touchMove(e as TouchEvent)\n else if (self.device === 'pointer') pointerMove(e as PointerEvent)\n else if (self.device === 'gesture') gestureChange(e)\n else if (self.device === 'wheel') wheeling(e as WheelEvent)\n },\n pinchEnd: (e: Event) => {\n if (self.device === 'touch') touchEnd(e as TouchEvent)\n else if (self.device === 'pointer') pointerEnd(e as PointerEvent)\n else if (self.device === 'gesture') gestureEnd(e)\n else if (self.device === 'wheel') wheelEnd(e)\n },\n mount,\n clean,\n ref,\n }) as EventState<PinchState<El>>\n\n return self\n}\n","import { SUPPORT, Vec2, vec2 } from '../utils'\n\n/**\n * ref:\n * https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/config/pinchConfigResolver.ts\n */\nexport const pinchDevice = (touch = false) => {\n if (!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 return 'wheel'\n}\n\n/**\n * Wheel delta normalization constants\n * ref: https://github.com/facebookarchive/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n */\nconst LINE_HEIGHT = 40\nconst PAGE_HEIGHT = 800\nconst PINCH_WHEEL_RATIO = 100\n\n/**\n * Calculate distance and angle between two touch/pointer points\n * ref: https://github.com/pmndrs/use-gesture/blob/main/packages/core/src/utils/events.ts\n */\nexport interface DistanceAngle {\n distance: number\n angle: number\n origin: Vec2\n}\n\nexport const distanceAngle = (p1: Touch | PointerEvent, p2: Touch | PointerEvent): DistanceAngle | null => {\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\n const distance = Math.hypot(dx, dy)\n // Convert to degrees, negative to match natural gesture direction\n const angle = -(Math.atan2(dx, dy) * 180) / Math.PI\n const origin = vec2(cx, cy)\n\n return { distance, angle, origin }\n } catch {\n return null\n }\n}\n\n/**\n * Get touch distance and angle from touch event using stored touch ids\n */\nexport const touchDistanceAngle = (event: TouchEvent, ids: number[]): DistanceAngle | null => {\n const touches = Array.from(event.touches).filter((touch) => ids.includes(touch.identifier))\n if (touches.length < 2) return null\n return distanceAngle(touches[0], touches[1])\n}\n\n/**\n * Get pointer distance and angle from pointer events map\n */\nexport const pointerDistanceAngle = (pointerEvents: Map<number, PointerEvent>): DistanceAngle | null => {\n const pointers = Array.from(pointerEvents.values())\n if (pointers.length < 2) return null\n return distanceAngle(pointers[0], pointers[1])\n}\n\n/**\n * Get all touch identifiers for the current target\n */\nexport const getCurrentTargetTouchIds = (event: TouchEvent): number[] => {\n return Array.from(event.touches)\n .filter((touch) => touch.target === event.currentTarget || (event.currentTarget as Node)?.contains?.(touch.target as Node))\n .map((touch) => touch.identifier)\n}\n\n/**\n * Normalize wheel values for pinch gesture (trackpad pinch)\n * Returns scale delta based on wheel deltaY\n */\nexport const wheelPinchDelta = (event: WheelEvent, currentScale: number): number => {\n let { deltaY, deltaMode } = event\n\n // Normalize wheel values\n if (deltaMode === 1) {\n deltaY *= LINE_HEIGHT\n } else if (deltaMode === 2) {\n deltaY *= PAGE_HEIGHT\n }\n\n // Convert to scale delta (negative because wheel down = zoom out)\n return (-deltaY / PINCH_WHEEL_RATIO) * currentScale\n}\n\n/**\n * WebKit gesture event type (Safari)\n */\nexport interface WebKitGestureEvent extends UIEvent {\n scale: number\n rotation: number\n clientX: number\n clientY: number\n}\n","import { vec2, Vec2 } from '../utils'\n\nexport const scrollValues = (e: any, out = vec2()): Vec2 => {\n const { scrollX: x, scrollLeft: xx } = e.currentTarget\n const { scrollY: y, scrollTop: yy } = e.currentTarget\n return vec2(x ?? xx ?? 0, y ?? yy ?? 0, out)\n}\n","import { vec2, addV, cpV, subV } from '../utils'\nimport { scrollValues } from './utils'\nimport { EventState, event } from 'reev/src'\nimport { ScrollState } from './types'\n\nexport * from './types'\n\nexport const scrollEvent = <El extends Element = Element>(config?: ScrollState) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const scroll = () => {\n self.isScrollStart = self.active && !self._active\n self.isScrolling = self.active && self._active\n self.isScrollEnd = !self.active && self._active\n }\n\n const scrollStart = (e: Event) => {\n self.event = e\n self.active = true\n scrollValues(e, self.value)\n self.scroll(self)\n }\n\n const scrolling = (e: Event) => {\n // register wheelEnd\n const id = setTimeout(() => self.scrollEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n\n if (!self.active) {\n self.scrollStart(e)\n return\n }\n\n self.event = e\n self._active = self.active\n cpV(self.value, self._value)\n scrollValues(e, self.value)\n if (self._active) {\n subV(self.value, self._value, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n }\n self.scroll(self)\n }\n\n const scrollEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n self.scroll(self)\n }\n\n const mount = (target: El) => {\n self.target = target // @TODO set event to target\n window.addEventListener('scroll', self.scrolling)\n }\n\n const clean = () => {\n window.removeEventListener('scroll', self.scrolling)\n }\n\n const ref = (el: Element | null) => {\n self(config as ScrollState<El>)\n if (el) {\n self.mount(el)\n } else self.clean(null)\n }\n\n const self = event({\n active: false,\n _active: false,\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n memo: {},\n timeout: 100,\n clearTimeout: () => {},\n isScrollStart: false,\n isScrolling: false,\n isScrollEnd: false,\n scroll,\n scrollStart,\n scrolling,\n scrollEnd,\n mount,\n clean,\n ref,\n }) as EventState<ScrollState<El>>\n\n return self\n}\n","import { vec2, Vec2 } from '../utils'\n\nconst LINE_HEIGHT = 40\n\nconst PAGE_HEIGHT = 800\n\nexport const wheelValues = (event: Event, out: Vec2): Vec2 => {\n if (!(event instanceof WheelEvent)) return vec2(0, 0, out)\n\n let { deltaX, deltaY, deltaMode } = 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 vec2(deltaX, deltaY, out)\n}\n","import { vec2, addV, cpV } from '../utils'\nimport { wheelValues } from './utils'\nimport { EventState, event } from 'reev/src'\nimport { WheelState } from './types'\n\nexport * from './types'\n\nexport const wheelEvent = <El extends Element = Element>(config?: WheelState) => {\n const initValues = () => {\n vec2(0, 0, self.value)\n vec2(0, 0, self._value)\n vec2(0, 0, self.delta)\n vec2(0, 0, self.movement)\n }\n\n const wheel = () => {\n self.isWheelStart = self.active && !self._active\n self.isWheeling = self.active && self._active\n self.isWheelEnd = !self.active && self._active\n }\n const wheelStart = (e: WheelEvent) => {\n self.event = e\n self.active = true\n wheelValues(e, self.delta)\n self.wheel(self)\n }\n\n const wheeling = (e: Event) => {\n // register wheelEnd\n const id = setTimeout(() => self.wheelEnd(e), self.timeout)\n self.clearTimeout()\n self.clearTimeout = () => clearTimeout(id)\n self.event = e\n if (!self.active) {\n self.wheelStart(e)\n return\n }\n\n self._active = self.active\n cpV(self.value, self._value)\n wheelValues(e, self.delta)\n addV(self.offset, self.delta, self.offset)\n addV(self.movement, self.delta, self.movement)\n self.wheel(self)\n }\n\n const wheelEnd = (e: Event) => {\n self.event = e\n self.active = false\n initValues()\n self.wheel(self)\n }\n\n const mount = (target: El) => {\n self.target = target\n target.addEventListener('wheel', self.wheeling)\n }\n\n const clean = () => {\n const target = self.target\n if (!target) return\n target.removeEventListener('wheel', self.wheeling)\n }\n\n const ref = (el: Element | null) => {\n self(config as WheelState<El>)\n if (el) {\n self.mount(el)\n } else self.clean(null)\n }\n\n const self = event({\n active: false,\n _active: false,\n _value: vec2(0, 0),\n value: vec2(0, 0),\n delta: vec2(0, 0),\n offset: vec2(0, 0),\n movement: vec2(0, 0),\n target: null,\n event: null,\n timeout: 100,\n clearTimeout: () => {},\n memo: {},\n isWheelStart: false,\n isWheeling: false,\n isWheelEnd: false,\n wheel,\n wheelStart,\n wheeling,\n wheelEnd,\n mount,\n clean,\n ref,\n }) as EventState<WheelState<El>>\n\n return self\n}\n"],"mappings":"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","names":["event","Vec","vec2","x","y","out","addV","a","b","subV","cpV","isBrowser","supportsTouchEvents","isTouchScreen","supportsPointerEvents","supportsPointerLock","supportsGestureEvents","SUPPORT","getDevice","lock","getClientVec2","e","device","touch","EVENT_FOR_DRAG","dragEvent","state","initValues","vec2","self","drag","dragStart","e","getClientVec2","dragging","cpV","subV","addV","dragEnd","mount","target","start","move","end","up","clean","ref","el","event","getDevice","event","EVENT_FOR_HOVER","hoverEvent","state","initValues","vec2","self","hover","hoverStart","e","getClientVec2","hovering","cpV","subV","addV","hoverEnd","mount","target","start","move","end","up","clean","ref","event","getDevice","event","keyEvent","state","self","e","el","event","DELAY","resizeEvent","state","on","entry","self","target","register","id","entries","el","event","pinchDevice","touch","SUPPORT","LINE_HEIGHT","PAGE_HEIGHT","PINCH_WHEEL_RATIO","distanceAngle","p1","p2","dx","dy","cx","cy","distance","angle","origin","vec2","touchDistanceAngle","event","ids","touches","pointerDistanceAngle","pointerEvents","pointers","getCurrentTargetTouchIds","wheelPinchDelta","currentScale","deltaY","deltaMode","EVENT_FOR_PINCH","pinchEvent","config","initValues","vec2","self","pinch","pinchStart","e","payload","cpV","pinching","prevAngle","newAngle","deltaAngle","scaleRatio","angleDelta","subV","addV","pinchEnd","touchStart","touchIds","getCurrentTargetTouchIds","id","touchDistanceAngle","touchMove","touchEnd","currentTouchIds","t","pointerStart","_pointerEvents","pointerDistanceAngle","pointerMove","pointerEnd","gestureStart","ge","gestureChange","gestureEnd","wheelStart","scaleDelta","wheelPinchDelta","wheeling","wheelEnd","mount","target","device","events","clean","ref","el","event","pinchDevice","scrollValues","e","out","vec2","x","xx","y","yy","event","scrollEvent","config","initValues","vec2","self","scroll","scrollStart","e","scrollValues","scrolling","id","cpV","subV","addV","scrollEnd","mount","target","clean","ref","el","LINE_HEIGHT","PAGE_HEIGHT","wheelValues","event","out","vec2","deltaX","deltaY","deltaMode","event","wheelEvent","config","initValues","vec2","self","wheel","wheelStart","e","wheelValues","wheeling","id","cpV","addV","wheelEnd","mount","target","clean","ref","el"]}
@@ -0,0 +1,53 @@
1
+ import * as reev_src_types from 'reev/src/types';
2
+ import { b as DragArg, D as DragState, c as HoverArg, H as HoverState, d as KeyArg, K as KeyState, g as PinchArg, P as PinchState, e as ResizeArg, R as ResizeState, h as ScrollConfig, S as ScrollState, i as WheelConfig, W as WheelState } from './types-372314b9.js';
3
+ import { ReactNode } from 'react';
4
+
5
+ declare const useDrag: <El extends Element = Element>(arg: DragArg<El>) => reev_src_types.default<DragState<El>, any[] | unknown[]>;
6
+
7
+ interface DragProps<El extends Element = Element> extends Partial<DragState<El>> {
8
+ children(self: DragState<El>): ReactNode;
9
+ }
10
+ declare const Drag: <El extends Element = Element>(props: DragProps<El>) => ReactNode;
11
+
12
+ declare const useHover: <El extends Element = Element>(arg?: HoverArg) => reev_src_types.default<HoverState<El>, reev_src_types.ExtractArgs<HoverState<El>>>;
13
+
14
+ interface HoverProps<El extends Element = Element> extends Partial<HoverState<El>> {
15
+ children: (state: HoverState<El>) => ReactNode;
16
+ }
17
+ declare const Hover: (props: HoverProps) => ReactNode;
18
+
19
+ declare const useKey: <El extends Element = Element>(arg: KeyArg<El>) => reev_src_types.default<KeyState<El>, reev_src_types.ExtractArgs<KeyState<El>>>;
20
+ interface KeyProps<El extends Element = Element> extends Partial<KeyState<El>> {
21
+ children: (state: KeyState<El>) => ReactNode;
22
+ }
23
+ declare const Key: <El extends Element = Element>(props: KeyProps<El>) => ReactNode;
24
+
25
+ declare const usePinch: <El extends Element = Element>(arg?: PinchArg) => reev_src_types.default<PinchState<El>, reev_src_types.ExtractArgs<PinchState<El>>>;
26
+
27
+ interface PinchProps<El extends Element = Element> extends Partial<PinchState<El>> {
28
+ children: (state: PinchState<El>) => ReactNode;
29
+ }
30
+ declare const Pinch: (props: PinchProps) => ReactNode;
31
+
32
+ declare const useResize: (arg: ResizeArg) => reev_src_types.default<ResizeState<Element>, any[]>;
33
+
34
+ interface ResizeProps<El extends Element = Element> extends Partial<ResizeState<El>> {
35
+ children: (state: ResizeState<El>) => ReactNode;
36
+ }
37
+ declare const Resize: <El extends Element = Element>(props: ResizeProps<El>) => ReactNode;
38
+
39
+ declare const useScroll: <El extends Element = Element>(config: ScrollConfig) => reev_src_types.default<ScrollState<El>, any[] | unknown[]>;
40
+
41
+ interface ScrollProps<El extends Element = Element> extends Partial<ScrollState<El>> {
42
+ children: (state: ScrollState<El>) => ReactNode;
43
+ }
44
+ declare const Scroll: <El extends Element = Element>(props: ScrollProps<El>) => ReactNode;
45
+
46
+ declare const useWheel: <El extends Element = Element>(config: WheelConfig) => reev_src_types.default<WheelState<El>, any[] | unknown[]>;
47
+
48
+ interface WheelProps<El extends Element = Element> extends Partial<WheelState<El>> {
49
+ children: (state: WheelState<El>) => ReactNode;
50
+ }
51
+ declare const Wheel: <El extends Element = Element>(props: WheelProps<El>) => ReactNode;
52
+
53
+ export { Drag, DragProps, Hover, HoverProps, Key, KeyProps, Pinch, PinchProps, Resize, ResizeProps, Scroll, ScrollProps, Wheel, WheelProps, useDrag, useHover, useKey, usePinch, useResize, useScroll, useWheel };
package/dist/react.js CHANGED
@@ -1,2 +1,2 @@
1
- var M=Object.defineProperty;var ve=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var ue=Object.prototype.hasOwnProperty;var Ee=(n,t)=>{for(var l in t)M(n,l,{get:t[l],enumerable:!0})},de=(n,t,l,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let v of me(t))!ue.call(n,v)&&v!==l&&M(n,v,{get:()=>t[v],enumerable:!(c=ve(t,v))||c.enumerable});return n};var pe=n=>de(M({},"__esModule",{value:!0}),n);var We={};Ee(We,{Drag:()=>Pe,Hover:()=>_e,Key:()=>Ve,Pinch:()=>ye,Resize:()=>De,Scroll:()=>He,Wheel:()=>Le,useDrag:()=>I,useHover:()=>Y,useKey:()=>j,usePinch:()=>ne,useResize:()=>le,useScroll:()=>ie,useWheel:()=>ce});module.exports=pe(We);var y=require("reev/react");var F=require("reev");var d=n=>typeof n=="function",fe=typeof Float32Array<"u"?Float32Array:Array,r=(n=0,t=0,l=new fe(2))=>(l[0]=n,l[1]=t,l),u=(n,t,l=r())=>(l[0]=n[0]+t[0],l[1]=n[1]+t[1],l),P=(n,t,l=r())=>(l[0]=n[0]-t[0],l[1]=n[1]-t[1],l),S=(n,t=r())=>(t[0]=n[0],t[1]=n[1],t),_=typeof window<"u"&&!!window.document&&!!window.document.createElement,A=()=>_&&"ontouchstart"in window,he=()=>A()||_&&window.navigator.maxTouchPoints>1,Se=()=>_&&"onpointerdown"in window,xe=()=>_&&"exitPointerLock"in window.document,ge=()=>{try{return"constructor"in GestureEvent}catch{return!1}},m={isBrowser:_,get gesture(){return m._gesture??(m._gesture=ge())},get touch(){return m._touch??(m._touch=A())},get touchscreen(){return m._touchscreen??(m._touchscreen=he())},get pointer(){return m._pointer??(m._pointer=Se())},get pointerLock(){return m._pointerLock??(m._pointerLock=xe())}},V=(n=!1)=>n&&m.pointerLock?"mouse":m.touch?"touch":m.pointer?"pointer":"mouse",g=(n,t,l)=>{if(t!=="touch")return r(n.clientX,n.clientY,l);let[c]=n.changedTouches;return r(c.clientX,c.clientY,l)};var O={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",up:"pointercancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup",up:"mousecancel"}},X=(n={})=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isDragStart=e.active&&!e._active,e.isDragging=e.active&&e._active,e.isDragEnd=!e.active&&e._active},c=o=>{e.event=o,e.active=!0,g(o,e.device,e.value),e.target.setPointerCapture&&"pointerId"in o&&e.target.setPointerCapture(o.pointerId),e.onDrag(e)},v=o=>{e.event=o,e._active=e.active,S(e.value,e._value),g(o,e.device,e.value),e._active&&(P(e.value,e._value,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement)),e.onDrag(e)},s=o=>{e.event=o,e.active=!1,t(),e.target.releasePointerCapture&&"pointerId"in o&&e.target.releasePointerCapture(o.pointerId),e.onDrag(e)},a=o=>{e.target=o;let{start:p,move:x,end:i,up:h}=O[e.device];o.addEventListener(p,e.onDragStart),o.addEventListener(x,e.onDragging),o.addEventListener(i,e.onDragEnd),o.addEventListener(h,e.onDragEnd)},f=()=>{let o=e.target;if(!o)return;let{start:p,move:x,end:i,up:h}=O[e.device];o.removeEventListener(p,e.onDragStart),o.removeEventListener(x,e.onDragging),o.removeEventListener(i,e.onDragEnd),o.removeEventListener(h,e.onDragEnd)},E=o=>{e(n),o?e.onMount(o):e.onClean()},e=(0,F.event)({_active:!1,active:!1,device:V(),_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,memo:{},isDragStart:!1,isDragging:!1,isDragEnd:!1,onDrag:l,onDragStart:c,onDragging:v,onDragEnd:s,onMount:a,onClean:f,ref:E});return e};var I=n=>{d(n)&&(n={onDrag:n});let t=(0,y.useMutable)(n);return(0,y.useOnce)(()=>X(t))};var Pe=n=>{let{children:t,...l}=n;return t(I(l))};var w=require("reev/react");var G=require("reev");var J={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerenter",move:"pointermove",end:"pointerleave",up:"pointercancel"},mouse:{start:"mouseenter",move:"mousemove",end:"mouseleave",up:"mousecancel"}},N=(n={})=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isHoverStart=!e._active&&e.active,e.isHovering=e._active&&e.active,e.isHoverEnd=e._active&&!e.active},c=o=>{e.event=o,e.active=!0,g(o,e.device,e.value),e.onHover(e)},v=o=>{e.event=o,e._active=e.active,S(e.value,e._value),g(o,e.device,e.value),e._active&&(P(e.value,e._value,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement)),e.onHover(e)},s=o=>{e.event=o,e._active=!0,e.active=!1,t(),e.onHover(e)},a=o=>{e.target=o;let{start:p,move:x,end:i,up:h}=J[e.device];o.addEventListener(p,e.onHoverStart),o.addEventListener(x,e.onHovering),o.addEventListener(i,e.onHoverEnd),o.addEventListener(h,e.onHoverEnd)},f=()=>{let o=e.target;if(!o)return;let{start:p,move:x,end:i,up:h}=J[e.device];o.removeEventListener(p,e.onHoverStart),o.removeEventListener(x,e.onHovering),o.removeEventListener(i,e.onHoverEnd),o.removeEventListener(h,e.onHoverEnd)},E=o=>{e(n),o?e.onMount(o):e.onClean()},e=(0,G.event)({_active:!1,active:!1,device:V(),_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,memo:{},isHoverStart:!1,isHovering:!1,isHoverEnd:!1,onHover:l,onHoverStart:c,onHovering:v,onHoverEnd:s,onMount:a,onClean:f,ref:E});return e};var Y=n=>{d(n)&&(n={onHover:n});let t=(0,w.useMutable)(n);return(0,w.useOnce)(()=>N(t))};var _e=n=>{let{children:t,...l}=n;return t(Y(l))};var D=require("reev/react");var U=require("reev"),B=(n={})=>{let s=(0,U.event)({onKeydown:a=>{s.event=a,s.key=a.key,s.code=a.code,s.onKey?.(s)},onMount:a=>{a||(a=a||window),s.target=a,a.setAttribute("tabindex","1"),a.addEventListener("keydown",s.onKeydown)},onClean:()=>{let a=s.target;a&&a.removeEventListener("keydown",s.onKeydown)},ref:a=>{s(n),a?s.onMount(a):s.onClean()}});return s};var j=n=>{d(n)&&(n={onKey:n});let t=(0,D.useMutable)(n);return(0,D.useOnce)(()=>B(t))},Ve=n=>{let{children:t,...l}=n;return t(j(l))};var L=require("reev/react");var q=(n=!1)=>{if(!m.touch&&m.gesture)return"gesture";if(m.touch&&n)return"touch";if(m.touchscreen){if(m.pointer)return"pointer";if(m.touch)return"touch"}return"wheel"};var Q=40,Z=800,k=(n,t)=>{if(!(n instanceof WheelEvent))return r(0,0,t);let{deltaX:l,deltaY:c,deltaMode:v}=n;return v===1?(l*=Q,c*=Q):v===2&&(l*=Z,c*=Z),r(l,c,t)};var $=require("reev"),H=n=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isWheelStart=e.active&&!e._active,e.isWheeling=e.active&&e._active,e.isWheelEnd=!e.active&&e._active},c=o=>{e.event=o,e.active=!0,k(o,e.delta),e.onWheel(e)},v=o=>{let p=setTimeout(()=>e.onWheelEnd(o),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),e.event=o,!e.active){e.onWheelStart(o);return}e._active=e.active,S(e.value,e._value),k(o,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement),e.onWheel(e)},s=o=>{e.event=o,e.active=!1,t(),e.onWheel(e)},a=o=>{e.target=o,o.addEventListener("wheel",e.onWheeling)},f=()=>{let o=e.target;o&&o.removeEventListener("wheel",e.onWheeling)},E=o=>{e(n),o?e.onMount(o):e.onClean(null)},e=(0,$.event)({active:!1,_active:!1,_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,timeout:100,clearTimeout:()=>{},memo:{},isWheelStart:!1,isWheeling:!1,isWheelEnd:!1,onWheel:l,onWheelStart:c,onWheeling:v,onWheelEnd:s,onMount:a,onClean:f,ref:E});return e};var ee={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",up:"pointercancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup",up:"mousecancel"}},te=(n={})=>{let t=H(),l=()=>{r(0,0,t.value),r(0,0,t._value),r(0,0,t.delta),r(0,0,t.movement)},c=()=>{t.isPinchStart=!t._active&&t.active,t.isPinching=t._active&&t.active,t.isPinchEnd=t._active&&!t.active},v=i=>{t.event=i,t.active=!0,g(i,t.device,t.value),t.onPinch(t)},s=i=>{t.event=i,t._active=t.active,S(t.value,t._value),g(i,t.device,t.value),t._active&&(P(t.value,t._value,t.delta),u(t.offset,t.delta,t.offset),u(t.movement,t.delta,t.movement)),t.onPinch(t)},a=i=>{t.event=i,t._active=!0,t.active=!1,l(),t.onPinch(t)},f=()=>{t.onPinch(t)},E=()=>{t.onPinch(t)},e=()=>{t.onPinch(t)},o=i=>{if(t.target=i,t.device==="wheel")return;let{start:h,move:T,end:b,up:z}=ee[t.device];i.addEventListener(h,t.onPinchStart),i.addEventListener(T,t.onPinching),i.addEventListener(b,t.onPinchEnd),i.addEventListener(z,t.onPinchEnd)},p=()=>{let i=t.target;if(!i||t.device==="wheel")return;let{start:h,move:T,end:b,up:z}=ee[t.device];i.removeEventListener(h,t.onPinchStart),i.removeEventListener(T,t.onPinching),i.removeEventListener(b,t.onPinchEnd),i.removeEventListener(z,t.onPinchEnd)},x=()=>{t(n)};return t({_active:!1,active:!1,device:q(),_rotate:0,rotate:0,_size:1,size:1,_scale:r(1,1),scale:r(1,1),_value:r(),value:r(),delta:r(),offset:r(),movement:r(),target:null,event:null,memo:{},isPinchStart:!1,isPinching:!1,isPinchEnd:!1,onWheelStart:f,onWheeling:E,onWheelEnd:e,onPinch:c,onPinchStart:v,onPinching:s,onPinchEnd:a,onMount:o,onClean:p,ref:x}),t};var ne=n=>{d(n)&&(n={onPinch:n});let t=(0,L.useMutable)(n);return(0,L.useOnce)(()=>te(t))};var ye=n=>{let{children:t,...l}=n;return t(ne(l))};var oe=require("reev"),we=100,re=n=>{let t=a=>()=>{},s=(0,oe.event)({observer:null,listener:()=>{},onResize:()=>{},onMount:a=>{let f=E=>{if(E.target!==a)return;let e=setTimeout(t(E),we);s.listener(),s.listener=()=>clearTimeout(e)};s.observer=new ResizeObserver(E=>{E.forEach(f)}),s.observer.observe(a)},onClean:()=>{},ref:a=>{s(n),a?s.onMount(a):s.onClean(null)}});return s};var W=require("reev/react");var le=n=>{d(n)&&(n={onResize:n});let t=(0,W.useMutable)(n);return(0,W.useOnce)(()=>re(t))};var De=n=>{let{children:t,...l}=n;return t(le(l))};var C=require("reev/react");var K=(n,t=r())=>{let{scrollX:l,scrollLeft:c}=n.currentTarget,{scrollY:v,scrollTop:s}=n.currentTarget;return r(l??c??0,v??s??0,t)};var se=require("reev"),ae=n=>{let t=()=>{r(0,0,e.value),r(0,0,e._value),r(0,0,e.delta),r(0,0,e.movement)},l=()=>{e.isScrollStart=e.active&&!e._active,e.isScrolling=e.active&&e._active,e.isScrollEnd=!e.active&&e._active},c=o=>{e.event=o,e.active=!0,K(o,e.value),e.onScroll(e)},v=o=>{let p=setTimeout(()=>e.onScrollEnd(o),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),!e.active){e.onScrollStart(o);return}e.event=o,e._active=e.active,S(e.value,e._value),K(o,e.value),e._active&&(P(e.value,e._value,e.delta),u(e.offset,e.delta,e.offset),u(e.movement,e.delta,e.movement)),e.onScroll(e)},s=o=>{e.event=o,e.active=!1,t(),e.onScroll(e)},a=o=>{e.target=o,window.addEventListener("scroll",e.onScrolling)},f=()=>{window.removeEventListener("scroll",e.onScrolling)},E=o=>{e(n),o?e.onMount(o):e.onClean(null)},e=(0,se.event)({active:!1,_active:!1,_value:r(0,0),value:r(0,0),delta:r(0,0),offset:r(0,0),movement:r(0,0),target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isScrollStart:!1,isScrolling:!1,isScrollEnd:!1,onScroll:l,onScrollStart:c,onScrolling:v,onScrollEnd:s,onMount:a,onClean:f,ref:E});return e};var ie=n=>{d(n)&&(n={onScroll:n});let t=(0,C.useMutable)(n);return(0,C.useOnce)(()=>ae(t))};var He=n=>{let{children:t,...l}=n;return t(ie(l))};var R=require("reev/react");var ce=n=>{d(n)&&(n={onWheel:n});let t=(0,R.useMutable)(n);return(0,R.useOnce)(()=>H(t))};var Le=n=>{let{children:t,...l}=n;return t(ce(l))};0&&(module.exports={Drag,Hover,Key,Pinch,Resize,Scroll,Wheel,useDrag,useHover,useKey,usePinch,useResize,useScroll,useWheel});
1
+ var C=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var be=Object.getOwnPropertyNames;var De=Object.prototype.hasOwnProperty;var Re=(n,o)=>{for(var a in o)C(n,a,{get:o[a],enumerable:!0})},Ae=(n,o,a,m)=>{if(o&&typeof o=="object"||typeof o=="function")for(let E of be(o))!De.call(n,E)&&E!==a&&C(n,E,{get:()=>o[E],enumerable:!(m=Te(o,E))||m.enumerable});return n};var He=n=>Ae(C({},"__esModule",{value:!0}),n);var qe={};Re(qe,{Drag:()=>Me,Hover:()=>Ce,Key:()=>Ke,Pinch:()=>Ge,Resize:()=>Ue,Scroll:()=>Be,Wheel:()=>je,useDrag:()=>J,useHover:()=>ee,useKey:()=>re,usePinch:()=>le,useResize:()=>me,useScroll:()=>fe,useWheel:()=>Se});module.exports=He(qe);var A=require("reev/src/react");var j=require("reev/src");var x=n=>typeof n=="function",Ie=typeof Float32Array<"u"?Float32Array:Array,s=(n=0,o=0,a=new Ie(2))=>(a[0]=n,a[1]=o,a),h=(n,o,a=s())=>(a[0]=n[0]+o[0],a[1]=n[1]+o[1],a),w=(n,o,a=s())=>(a[0]=n[0]-o[0],a[1]=n[1]-o[1],a),S=(n,o=s())=>(o[0]=n[0],o[1]=n[1],o),b=typeof window<"u"&&!!window.document&&!!window.document.createElement,U=()=>b&&"ontouchstart"in window,We=()=>U()||b&&window.navigator.maxTouchPoints>1,ke=()=>b&&"onpointerdown"in window,ze=()=>b&&"exitPointerLock"in window.document,Ne=()=>{try{return"constructor"in GestureEvent}catch{return!1}},f={isBrowser:b,get gesture(){return f._gesture??(f._gesture=Ne())},get touch(){return f._touch??(f._touch=U())},get touchscreen(){return f._touchscreen??(f._touchscreen=We())},get pointer(){return f._pointer??(f._pointer=ke())},get pointerLock(){return f._pointerLock??(f._pointerLock=ze())}},R=(n=!1)=>n&&f.pointerLock?"mouse":f.touch?"touch":f.pointer?"pointer":"mouse",V=(n,o,a)=>{if(o!=="touch")return s(n.clientX,n.clientY,a);let[m]=n.changedTouches;return s(m.clientX,m.clientY,a)};var B={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",up:"pointercancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup",up:"mousecancel"}},q=(n={})=>{let o=()=>{s(0,0,e.value),s(0,0,e._value),s(0,0,e.delta),s(0,0,e.movement)},a=()=>{e.isDragStart=e.active&&!e._active,e.isDragging=e.active&&e._active,e.isDragEnd=!e.active&&e._active},m=i=>{e.event=i,e.active=!0,V(i,e.device,e.value),e.target.setPointerCapture&&"pointerId"in i&&e.target.setPointerCapture(i.pointerId),e.drag(e)},E=i=>{e.event=i,e._active=e.active,S(e.value,e._value),V(i,e.device,e.value),e._active&&(w(e.value,e._value,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement)),e.drag(e)},v=i=>{e.event=i,e.active=!1,o(),e.target.releasePointerCapture&&"pointerId"in i&&e.target.releasePointerCapture(i.pointerId),e.drag(e)},u=i=>{e.target=i;let{start:p,move:_,end:L,up:P}=B[e.device];i.addEventListener(p,e.dragStart),i.addEventListener(_,e.dragging),i.addEventListener(L,e.dragEnd),i.addEventListener(P,e.dragEnd)},g=()=>{let i=e.target;if(!i)return;let{start:p,move:_,end:L,up:P}=B[e.device];i.removeEventListener(p,e.dragStart),i.removeEventListener(_,e.dragging),i.removeEventListener(L,e.dragEnd),i.removeEventListener(P,e.dragEnd)},d=i=>{e(n),i?e.mount(i):e.clean()},e=(0,j.event)({_active:!1,active:!1,device:R(),_value:s(0,0),value:s(0,0),delta:s(0,0),offset:s(0,0),movement:s(0,0),target:null,event:null,memo:{},isDragStart:!1,isDragging:!1,isDragEnd:!1,drag:a,dragStart:m,dragging:E,dragEnd:v,mount:u,clean:g,ref:d});return e};var J=n=>{x(n)&&(n={drag:n});let o=(0,A.useMutable)(n);return(0,A.useOnce)(()=>q(o))};var Me=n=>{let{children:o,...a}=n;return o(J(a))};var H=require("reev/src/react");var Z=require("reev/src");var Q={touch:{start:"touchstart",move:"touchmove",end:"touchend",up:"touchcancel"},pointer:{start:"pointerenter",move:"pointermove",end:"pointerleave",up:"pointercancel"},mouse:{start:"mouseenter",move:"mousemove",end:"mouseleave",up:"mousecancel"}},$=(n={})=>{let o=()=>{s(0,0,e.value),s(0,0,e._value),s(0,0,e.delta),s(0,0,e.movement)},a=()=>{e.isHoverStart=!e._active&&e.active,e.isHovering=e._active&&e.active,e.isHoverEnd=e._active&&!e.active},m=i=>{e.event=i,e.active=!0,V(i,e.device,e.value),e.hover(e)},E=i=>{e.event=i,e._active=e.active,S(e.value,e._value),V(i,e.device,e.value),e._active&&(w(e.value,e._value,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement)),e.hover(e)},v=i=>{e.event=i,e._active=!0,e.active=!1,o(),e.hover(e)},u=i=>{e.target=i;let{start:p,move:_,end:L,up:P}=Q[e.device];i.addEventListener(p,e.hoverStart),i.addEventListener(_,e.hovering),i.addEventListener(L,e.hoverEnd),i.addEventListener(P,e.hoverEnd)},g=()=>{let i=e.target;if(!i)return;let{start:p,move:_,end:L,up:P}=Q[e.device];i.removeEventListener(p,e.hoverStart),i.removeEventListener(_,e.hovering),i.removeEventListener(L,e.hoverEnd),i.removeEventListener(P,e.hoverEnd)},d=i=>{e(n),i?e.mount(i):e.clean()},e=(0,Z.event)({_active:!1,active:!1,device:R(),_value:s(0,0),value:s(0,0),delta:s(0,0),offset:s(0,0),movement:s(0,0),target:null,event:null,memo:{},isHoverStart:!1,isHovering:!1,isHoverEnd:!1,hover:a,hoverStart:m,hovering:E,hoverEnd:v,mount:u,clean:g,ref:d});return e};var ee=n=>{x(n)&&(n={hover:n});let o=(0,H.useMutable)(n);return(0,H.useOnce)(()=>$(o))};var Ce=n=>{let{children:o,...a}=n;return o(ee(a))};var I=require("reev/src/react");var te=require("reev/src"),ne=(n={})=>{let v=(0,te.event)({keydown:u=>{v.event=u,v.pressedKey=u.key,v.code=u.code,v.key?.(v)},mount:u=>{u||(u=u||window),v.target=u,u.setAttribute("tabindex","1"),u.addEventListener("keydown",v.keydown)},clean:()=>{let u=v.target;u&&u.removeEventListener("keydown",v.keydown)},ref:u=>{v(n),u?v.mount(u):v.clean()}});return v};var re=n=>{x(n)&&(n={key:n});let o=(0,I.useMutable)(n);return(0,I.useOnce)(()=>ne(o))},Ke=n=>{let{children:o,...a}=n;return o(re(a))};var W=require("reev/src/react");var ae=require("reev/src");var oe=(n=!1)=>{if(!f.touch&&f.gesture)return"gesture";if(f.touch&&n)return"touch";if(f.touchscreen){if(f.pointer)return"pointer";if(f.touch)return"touch"}return"wheel"},Oe=40,Ye=800,Fe=100,ie=(n,o)=>{try{let a=o.clientX-n.clientX,m=o.clientY-n.clientY,E=(o.clientX+n.clientX)/2,v=(o.clientY+n.clientY)/2,u=Math.hypot(a,m),g=-(Math.atan2(a,m)*180)/Math.PI,d=s(E,v);return{distance:u,angle:g,origin:d}}catch{return null}},K=(n,o)=>{let a=Array.from(n.touches).filter(m=>o.includes(m.identifier));return a.length<2?null:ie(a[0],a[1])},O=n=>{let o=Array.from(n.values());return o.length<2?null:ie(o[0],o[1])},se=n=>Array.from(n.touches).filter(o=>o.target===n.currentTarget||n.currentTarget?.contains?.(o.target)).map(o=>o.identifier),Y=(n,o)=>{let{deltaY:a,deltaMode:m}=n;return m===1?a*=Oe:m===2&&(a*=Ye),-a/Fe*o};var T={touch:{start:"touchstart",move:"touchmove",end:"touchend",cancel:"touchcancel"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup",cancel:"pointercancel"},gesture:{start:"gesturestart",change:"gesturechange",end:"gestureend"}},ce=(n={})=>{let o=()=>{s(0,0,t.value),s(0,0,t._value),s(0,0,t.delta),s(0,0,t.movement)},a=()=>{t.isPinchStart=t.active&&!t._active,t.isPinching=t.active&&t._active,t.isPinchEnd=!t.active&&t._active},m=(r,c)=>{t.event=r,t.active=!0,s(c.distance,c.angle,t.value),s(c.distance,c.angle,t.initial),S(c.origin,t.origin),t.scale=1,t.turns=0,t.pinch(t)},E=(r,c)=>{if(!t.active)return;t.event=r,t._active=t.active,S(t.value,t._value);let l=t._value[1],y=c.angle,M=y-l;Math.abs(M)>270&&(t.turns+=Math.sign(M),y-=360*Math.sign(M)),s(c.distance,y,t.value),S(c.origin,t.origin);let ye=t.value[0]/t.initial[0]-1,Ve=t.value[1]-t.initial[1];s(ye,Ve,t.movement),w(t.value,t._value,t.delta),t.delta[0]=t._value[0]!==0?t.value[0]/t._value[0]-1:0,h(t.offset,t.delta,t.offset),t.scale=t.initial[0]!==0?t.value[0]/t.initial[0]:1,t.pinch(t)},v=r=>{t.event=r,t._active=!0,t.active=!1,o(),t.pinch(t)},u=r=>{let c=se(r);if(t.active&&t._touchIds.every(y=>c.includes(y))||c.length<2)return;t._touchIds=c.slice(0,2);let l=K(r,t._touchIds);l&&m(r,l)},g=r=>{if(!t.active)return;let c=K(r,t._touchIds);c&&E(r,c)},d=r=>{if(!t.active)return;let c=Array.from(r.touches).map(l=>l.identifier);t._touchIds.some(l=>!c.includes(l))&&v(r)},e=r=>{if(r.buttons!=null&&r.buttons%2!==1)return;let c=t._pointerEvents;if(t.active&&Array.from(c.keys()).every(y=>t._pointerEvents.has(y)))return;try{r.target.setPointerCapture(r.pointerId)}catch{}if(c.size<2&&c.set(r.pointerId,r),c.size<2)return;let l=O(c);l&&m(r,l)},i=r=>{let c=t._pointerEvents;if(c.has(r.pointerId)&&c.set(r.pointerId,r),!t.active)return;let l=O(c);l&&E(r,l)},p=r=>{try{r.target.releasePointerCapture(r.pointerId)}catch{}let c=t._pointerEvents;c.has(r.pointerId)&&c.delete(r.pointerId),t.active&&c.size<2&&v(r)},_=r=>{let c=r;r.cancelable&&r.preventDefault(),!t.active&&(t.event=r,t.active=!0,s(c.scale,c.rotation,t.value),s(c.scale,c.rotation,t.initial),s(c.clientX,c.clientY,t.origin),t.scale=1,t.turns=0,t.pinch(t))},L=r=>{let c=r;r.cancelable&&r.preventDefault(),t.active&&(t.event=r,t._active=t.active,S(t.value,t._value),s(c.scale,c.rotation,t.value),s(c.clientX,c.clientY,t.origin),s(c.scale-1,c.rotation,t.movement),w(t.value,t._value,t.delta),h(t.offset,t.delta,t.offset),t.scale=c.scale,t.pinch(t))},P=r=>{t.active&&v(r)},_e=r=>{t.event=r,t.active=!0,s(1,0,t.value),s(1,0,t.initial),s(r.clientX,r.clientY,t.origin),t.scale=1,t.turns=0;let c=Y(r,t.offset[0]+1);t.delta[0]=c,t.delta[1]=0,t.value[0]+=c,h(t.offset,t.delta,t.offset),s(t.value[0]-1,0,t.movement),t.scale=t.value[0],t.pinch(t)},D=r=>{let c=setTimeout(()=>X(r),t.timeout);if(t.clearTimeout(),t.clearTimeout=()=>clearTimeout(c),!t.active){_e(r);return}t.event=r,t._active=t.active,S(t.value,t._value),s(r.clientX,r.clientY,t.origin);let l=Y(r,t.offset[0]+1);t.delta[0]=l,t.delta[1]=0,t.value[0]+=l,h(t.offset,t.delta,t.offset),s(t.value[0]-1,0,t.movement),t.scale=t.value[0],t.pinch(t)},X=r=>{t.active&&(t.event=r,t._active=!0,t.active=!1,o(),t.pinch(t))},Le=r=>{t.target=r;let c=t.device;if(c==="wheel")r.addEventListener("wheel",D,{passive:!1});else if(c==="gesture"){let l=T.gesture;r.addEventListener(l.start,_),r.addEventListener(l.change,L),r.addEventListener(l.end,P)}else if(c==="touch"){let l=T.touch;r.addEventListener(l.start,u),r.addEventListener(l.move,g),r.addEventListener(l.end,d),r.addEventListener(l.cancel,d)}else if(c==="pointer"){let l=T.pointer;r.addEventListener(l.start,e),r.addEventListener(l.move,i),r.addEventListener(l.end,p),r.addEventListener(l.cancel,p)}},Pe=()=>{let r=t.target;if(!r)return;let c=t.device;if(c==="wheel")r.removeEventListener("wheel",D);else if(c==="gesture"){let l=T.gesture;r.removeEventListener(l.start,_),r.removeEventListener(l.change,L),r.removeEventListener(l.end,P)}else if(c==="touch"){let l=T.touch;r.removeEventListener(l.start,u),r.removeEventListener(l.move,g),r.removeEventListener(l.end,d),r.removeEventListener(l.cancel,d)}else if(c==="pointer"){let l=T.pointer;r.removeEventListener(l.start,e),r.removeEventListener(l.move,i),r.removeEventListener(l.end,p),r.removeEventListener(l.cancel,p)}},we=r=>{t(n),r?t.mount(r):t.clean()},t=(0,ae.event)({_active:!1,active:!1,device:oe(),_value:s(0,0),value:s(0,0),delta:s(0,0),offset:s(0,0),movement:s(0,0),initial:s(0,0),origin:s(0,0),_touchIds:[],_pointerEvents:new Map,scale:1,turns:0,target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isPinchStart:!1,isPinching:!1,isPinchEnd:!1,pinch:a,pinchStart:r=>{t.device==="touch"?u(r):t.device==="pointer"?e(r):t.device==="gesture"?_(r):t.device==="wheel"&&D(r)},pinching:r=>{t.device==="touch"?g(r):t.device==="pointer"?i(r):t.device==="gesture"?L(r):t.device==="wheel"&&D(r)},pinchEnd:r=>{t.device==="touch"?d(r):t.device==="pointer"?p(r):t.device==="gesture"?P(r):t.device==="wheel"&&X(r)},mount:Le,clean:Pe,ref:we});return t};var le=n=>{x(n)&&(n={pinch:n});let o=(0,W.useMutable)(n);return(0,W.useOnce)(()=>ce(o))};var Ge=n=>{let{children:o,...a}=n;return o(le(a))};var ve=require("reev/src"),Xe=100,ue=n=>{let o=u=>()=>{},v=(0,ve.event)({observer:null,listener:()=>{},resize:()=>{},mount:u=>{let g=d=>{if(d.target!==u)return;let e=setTimeout(o(d),Xe);v.listener(),v.listener=()=>clearTimeout(e)};v.observer=new ResizeObserver(d=>{d.forEach(g)}),v.observer.observe(u)},clean:()=>{},ref:u=>{v(n),u?v.mount(u):v.clean(null)}});return v};var k=require("reev/src/react");var me=n=>{x(n)&&(n={resize:n});let o=(0,k.useMutable)(n);return(0,k.useOnce)(()=>ue(o))};var Ue=n=>{let{children:o,...a}=n;return o(me(a))};var z=require("reev/src/react");var F=(n,o=s())=>{let{scrollX:a,scrollLeft:m}=n.currentTarget,{scrollY:E,scrollTop:v}=n.currentTarget;return s(a??m??0,E??v??0,o)};var Ee=require("reev/src"),de=n=>{let o=()=>{s(0,0,e.value),s(0,0,e._value),s(0,0,e.delta),s(0,0,e.movement)},a=()=>{e.isScrollStart=e.active&&!e._active,e.isScrolling=e.active&&e._active,e.isScrollEnd=!e.active&&e._active},m=i=>{e.event=i,e.active=!0,F(i,e.value),e.scroll(e)},E=i=>{let p=setTimeout(()=>e.scrollEnd(i),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),!e.active){e.scrollStart(i);return}e.event=i,e._active=e.active,S(e.value,e._value),F(i,e.value),e._active&&(w(e.value,e._value,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement)),e.scroll(e)},v=i=>{e.event=i,e.active=!1,o(),e.scroll(e)},u=i=>{e.target=i,window.addEventListener("scroll",e.scrolling)},g=()=>{window.removeEventListener("scroll",e.scrolling)},d=i=>{e(n),i?e.mount(i):e.clean(null)},e=(0,Ee.event)({active:!1,_active:!1,_value:s(0,0),value:s(0,0),delta:s(0,0),offset:s(0,0),movement:s(0,0),target:null,event:null,memo:{},timeout:100,clearTimeout:()=>{},isScrollStart:!1,isScrolling:!1,isScrollEnd:!1,scroll:a,scrollStart:m,scrolling:E,scrollEnd:v,mount:u,clean:g,ref:d});return e};var fe=n=>{x(n)&&(n={scroll:n});let o=(0,z.useMutable)(n);return(0,z.useOnce)(()=>de(o))};var Be=n=>{let{children:o,...a}=n;return o(fe(a))};var N=require("reev/src/react");var pe=40,he=800,G=(n,o)=>{if(!(n instanceof WheelEvent))return s(0,0,o);let{deltaX:a,deltaY:m,deltaMode:E}=n;return E===1?(a*=pe,m*=pe):E===2&&(a*=he,m*=he),s(a,m,o)};var ge=require("reev/src"),xe=n=>{let o=()=>{s(0,0,e.value),s(0,0,e._value),s(0,0,e.delta),s(0,0,e.movement)},a=()=>{e.isWheelStart=e.active&&!e._active,e.isWheeling=e.active&&e._active,e.isWheelEnd=!e.active&&e._active},m=i=>{e.event=i,e.active=!0,G(i,e.delta),e.wheel(e)},E=i=>{let p=setTimeout(()=>e.wheelEnd(i),e.timeout);if(e.clearTimeout(),e.clearTimeout=()=>clearTimeout(p),e.event=i,!e.active){e.wheelStart(i);return}e._active=e.active,S(e.value,e._value),G(i,e.delta),h(e.offset,e.delta,e.offset),h(e.movement,e.delta,e.movement),e.wheel(e)},v=i=>{e.event=i,e.active=!1,o(),e.wheel(e)},u=i=>{e.target=i,i.addEventListener("wheel",e.wheeling)},g=()=>{let i=e.target;i&&i.removeEventListener("wheel",e.wheeling)},d=i=>{e(n),i?e.mount(i):e.clean(null)},e=(0,ge.event)({active:!1,_active:!1,_value:s(0,0),value:s(0,0),delta:s(0,0),offset:s(0,0),movement:s(0,0),target:null,event:null,timeout:100,clearTimeout:()=>{},memo:{},isWheelStart:!1,isWheeling:!1,isWheelEnd:!1,wheel:a,wheelStart:m,wheeling:E,wheelEnd:v,mount:u,clean:g,ref:d});return e};var Se=n=>{x(n)&&(n={wheel:n});let o=(0,N.useMutable)(n);return(0,N.useOnce)(()=>xe(o))};var je=n=>{let{children:o,...a}=n;return o(Se(a))};0&&(module.exports={Drag,Hover,Key,Pinch,Resize,Scroll,Wheel,useDrag,useHover,useKey,usePinch,useResize,useScroll,useWheel});
2
2
  //# sourceMappingURL=react.js.map