react-ui-animate 5.0.0-rc.9 → 5.0.1-next.1
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.
- package/.releaserc.json +15 -0
- package/LICENSE +21 -21
- package/README.md +206 -206
- package/package.json +63 -55
- package/dist/animation/Config.d.ts +0 -63
- package/dist/animation/descriptors.d.ts +0 -7
- package/dist/animation/drivers.d.ts +0 -4
- package/dist/animation/helpers.d.ts +0 -3
- package/dist/animation/hooks/index.d.ts +0 -2
- package/dist/animation/hooks/useMount.d.ts +0 -16
- package/dist/animation/hooks/useValue.d.ts +0 -9
- package/dist/animation/index.d.ts +0 -5
- package/dist/animation/modules/Mount.d.ts +0 -17
- package/dist/animation/modules/index.d.ts +0 -1
- package/dist/animation/to.d.ts +0 -9
- package/dist/animation/types.d.ts +0 -41
- package/dist/gestures/controllers/DragGesture.d.ts +0 -47
- package/dist/gestures/controllers/Gesture.d.ts +0 -13
- package/dist/gestures/controllers/MoveGesture.d.ts +0 -30
- package/dist/gestures/controllers/ScrollGesture.d.ts +0 -29
- package/dist/gestures/controllers/WheelGesture.d.ts +0 -28
- package/dist/gestures/hooks/index.d.ts +0 -4
- package/dist/gestures/hooks/useDrag.d.ts +0 -5
- package/dist/gestures/hooks/useMove.d.ts +0 -8
- package/dist/gestures/hooks/useRecognizer.d.ts +0 -13
- package/dist/gestures/hooks/useScroll.d.ts +0 -8
- package/dist/gestures/hooks/useWheel.d.ts +0 -8
- package/dist/gestures/index.d.ts +0 -1
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/useOutsideClick.d.ts +0 -2
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -1
- package/dist/utils/index.d.ts +0 -4
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/animation/helpers.ts","../src/animation/drivers.ts","../src/animation/hooks/useValue.ts","../src/animation/Config.ts","../src/animation/descriptors.ts","../src/animation/hooks/useMount.ts","../src/animation/to.ts","../src/utils/index.ts","../src/gestures/controllers/Gesture.ts","../src/gestures/controllers/DragGesture.ts","../src/gestures/hooks/useRecognizer.ts","../src/gestures/controllers/MoveGesture.ts","../src/gestures/controllers/ScrollGesture.ts","../src/gestures/controllers/WheelGesture.ts","../src/animation/modules/Mount.tsx","../src/gestures/hooks/useDrag.ts","../src/gestures/hooks/useMove.ts","../src/hooks/useOutsideClick.ts","../src/gestures/hooks/useScroll.ts","../src/gestures/hooks/useWheel.ts"],"sourcesContent":["import type { Descriptor } from './types';\r\n\r\nexport function filterCallbackOptions(\r\n options: Record<string, any> = {},\r\n attach: boolean\r\n) {\r\n if (attach) return options;\r\n const { onStart, onChange, onComplete, ...rest } = options;\r\n return rest;\r\n}\r\n\r\nexport function isDescriptor(x: unknown): x is Descriptor {\r\n return (\r\n typeof x === 'object' &&\r\n x !== null &&\r\n 'type' in x &&\r\n typeof (x as any).type === 'string'\r\n );\r\n}\r\n","import {\r\n decay,\r\n MotionValue,\r\n spring,\r\n timing,\r\n parallel,\r\n delay,\r\n} from '@raidipesh78/re-motion';\r\n\r\nimport { filterCallbackOptions } from './helpers';\r\nimport type { Primitive, Descriptor } from './types';\r\n\r\nexport function buildAnimation(\r\n mv: MotionValue<Primitive>,\r\n { type, to, options = {} }: Descriptor\r\n) {\r\n switch (type) {\r\n case 'spring':\r\n return spring(mv, to as Primitive, options);\r\n case 'timing':\r\n return timing(mv, to as Primitive, options);\r\n case 'decay':\r\n return decay(mv as MotionValue<number>, options.velocity ?? 0, options);\r\n case 'delay':\r\n return delay(options.delay ?? 0);\r\n default:\r\n console.warn(`Unsupported animation type: ${type}`);\r\n return { start() {}, pause() {}, resume() {}, cancel() {}, reset() {} };\r\n }\r\n}\r\n\r\nexport function buildParallel(\r\n mvMap: Record<string, MotionValue<Primitive>>,\r\n step: Descriptor\r\n) {\r\n const entries = Object.entries(mvMap).filter(([key]) => {\r\n return (\r\n step.type === 'decay' ||\r\n step.type === 'delay' ||\r\n (step.to as Record<string, Primitive>)[key] !== undefined\r\n );\r\n });\r\n\r\n const ctrls = entries.map(([key, mv], idx) =>\r\n buildAnimation(mv, {\r\n type: step.type,\r\n to:\r\n step.type === 'decay' || step.type === 'delay'\r\n ? (step.to as any)\r\n : (step.to as Record<string, Primitive>)[key],\r\n options: filterCallbackOptions(step.options, idx === 0),\r\n })\r\n );\r\n\r\n return parallel(ctrls);\r\n}\r\n","import { useMemo, useRef } from 'react';\r\nimport { delay, sequence, loop, MotionValue } from '@raidipesh78/re-motion';\r\n\r\nimport { buildAnimation, buildParallel } from '../drivers';\r\nimport { filterCallbackOptions, isDescriptor } from '../helpers';\r\nimport type { Primitive, Descriptor, Controls } from '../types';\r\n\r\ntype Widen<T> = T extends number ? number : T extends string ? string : T;\r\n\r\ntype ValueReturn<T> = T extends Primitive\r\n ? MotionValue<Widen<T>>\r\n : T extends Primitive[]\r\n ? MotionValue<Widen<Primitive>>[]\r\n : { [K in keyof T]: MotionValue<Widen<T[K]>> };\r\n\r\ntype Base = Primitive | Primitive[] | Record<string, Primitive>;\r\n\r\nexport function useValue<T extends Base>(\r\n initial: T\r\n): [ValueReturn<T>, (to: Base | Descriptor) => void, Controls] {\r\n const controllerRef = useRef<Controls | null>(null);\r\n\r\n const value = useMemo(() => {\r\n if (Array.isArray(initial)) {\r\n return initial.map((v) => new MotionValue(v));\r\n }\r\n\r\n if (typeof initial === 'object') {\r\n return Object.fromEntries(\r\n Object.entries(initial).map(([k, v]) => [k, new MotionValue(v)])\r\n );\r\n }\r\n\r\n return new MotionValue(initial);\r\n }, []) as ValueReturn<T>;\r\n\r\n function set(to: Base | Descriptor) {\r\n let ctrl: Controls | null = null;\r\n\r\n if (Array.isArray(initial)) {\r\n ctrl = handleArray(\r\n value as Array<MotionValue<Primitive>>,\r\n to as Primitive[] | Descriptor\r\n );\r\n } else if (typeof initial === 'object') {\r\n ctrl = handleObject(\r\n value as Record<string, MotionValue<Primitive>>,\r\n to as Record<string, Primitive> | Descriptor\r\n );\r\n } else {\r\n ctrl = handlePrimitive(\r\n value as MotionValue<Primitive>,\r\n to as Primitive | Descriptor\r\n );\r\n }\r\n\r\n controllerRef.current = ctrl;\r\n if (ctrl) ctrl.start();\r\n }\r\n\r\n const controls = {\r\n start: () => controllerRef.current?.start(),\r\n pause: () => controllerRef.current?.pause(),\r\n resume: () => controllerRef.current?.resume(),\r\n cancel: () => controllerRef.current?.cancel(),\r\n reset: () => controllerRef.current?.reset(),\r\n };\r\n\r\n return [value, set, controls] as const;\r\n}\r\n\r\nfunction handlePrimitive(\r\n mv: MotionValue<Primitive>,\r\n to: Primitive | Descriptor\r\n) {\r\n if (typeof to === 'number' || typeof to === 'string') {\r\n mv.set(to);\r\n return null;\r\n }\r\n\r\n if (to.type === 'sequence') {\r\n const animations = to.options?.animations ?? [];\r\n const ctrls = animations.map((step) => buildAnimation(mv, step));\r\n return sequence(ctrls, to.options);\r\n }\r\n\r\n if (to.type === 'loop') {\r\n const animation = to.options?.animation;\r\n if (!animation) return null;\r\n\r\n if (animation.type === 'sequence') {\r\n const animations = animation.options?.animations ?? [];\r\n const ctrls = animations.map((step) => buildAnimation(mv, step));\r\n return loop(sequence(ctrls), to.options?.iterations ?? 0, to.options);\r\n }\r\n\r\n return loop(\r\n buildAnimation(mv, animation),\r\n to.options?.iterations ?? 0,\r\n to.options\r\n );\r\n }\r\n\r\n return buildAnimation(mv, to);\r\n}\r\n\r\nfunction handleArray(\r\n mvs: Array<MotionValue<Primitive>>,\r\n to: Primitive[] | Descriptor\r\n) {\r\n if (!isDescriptor(to)) {\r\n (to as Primitive[]).forEach((val, i) => {\r\n mvs[i]?.set(val);\r\n });\r\n return null;\r\n }\r\n\r\n const desc = to as Descriptor;\r\n\r\n const mvsRecord = Object.fromEntries(\r\n mvs.map((mv, idx) => [idx.toString(), mv])\r\n ) as Record<string, MotionValue<Primitive>>;\r\n\r\n switch (desc.type) {\r\n case 'sequence': {\r\n const ctrls = desc.options!.animations!.map((step) =>\r\n step.type === 'delay'\r\n ? delay(step.options?.delay ?? 0)\r\n : buildParallel(mvsRecord, {\r\n ...step,\r\n to: Array.isArray(step.to)\r\n ? Object.fromEntries(\r\n (step.to as Primitive[]).map((v, i) => [i.toString(), v])\r\n )\r\n : step.to,\r\n })\r\n );\r\n\r\n return sequence(ctrls, desc.options);\r\n }\r\n\r\n case 'loop': {\r\n const inner = desc.options!.animation!;\r\n\r\n if (inner.type === 'sequence') {\r\n const seqCtrls = inner.options!.animations!.map((step) =>\r\n buildParallel(mvsRecord, {\r\n ...step,\r\n to: Array.isArray(step.to)\r\n ? Object.fromEntries(\r\n (step.to as Primitive[]).map((v, i) => [i.toString(), v])\r\n )\r\n : step.to,\r\n })\r\n );\r\n\r\n const seq = sequence(\r\n seqCtrls,\r\n filterCallbackOptions(inner.options, true)\r\n );\r\n\r\n return loop(\r\n seq,\r\n desc.options!.iterations ?? 0,\r\n filterCallbackOptions(desc.options, true)\r\n );\r\n }\r\n\r\n const par = buildParallel(mvsRecord, inner);\r\n return loop(\r\n par,\r\n desc.options!.iterations ?? 0,\r\n filterCallbackOptions(desc.options, true)\r\n );\r\n }\r\n\r\n case 'decay':\r\n return buildParallel(mvsRecord, desc);\r\n\r\n default:\r\n return buildParallel(mvsRecord, desc);\r\n }\r\n}\r\n\r\nfunction handleObject(\r\n mvs: Record<string, MotionValue<Primitive>>,\r\n to: Record<string, Primitive> | Descriptor\r\n) {\r\n if (isDescriptor(to)) {\r\n switch (to.type) {\r\n case 'sequence': {\r\n const ctrls = to.options!.animations!.map((step) =>\r\n step.type === 'delay'\r\n ? delay(step.options!.delay ?? 0)\r\n : buildParallel(mvs, step)\r\n );\r\n return sequence(ctrls, to.options);\r\n }\r\n\r\n case 'loop': {\r\n const inner = to.options!.animation!;\r\n if (inner.type === 'sequence') {\r\n const ctrls = inner.options!.animations!.map((s) =>\r\n buildParallel(mvs, s)\r\n );\r\n return loop(\r\n sequence(ctrls, filterCallbackOptions(inner.options, true)),\r\n to.options!.iterations ?? 0,\r\n filterCallbackOptions(to.options, true)\r\n );\r\n }\r\n return loop(\r\n buildParallel(mvs, inner),\r\n to.options!.iterations ?? 0,\r\n filterCallbackOptions(to.options, true)\r\n );\r\n }\r\n\r\n case 'decay':\r\n return buildParallel(mvs, to);\r\n\r\n default:\r\n return buildParallel(mvs, to);\r\n }\r\n }\r\n\r\n Object.entries(to).forEach(([k, v]) => {\r\n mvs[k]?.set(v);\r\n });\r\n\r\n return null;\r\n}\r\n","import { Easing } from '@raidipesh78/re-motion';\r\n\r\nexport const Config = {\r\n Timing: {\r\n BOUNCE: { duration: 500, easing: Easing.bounce },\r\n EASE_IN: { duration: 500, easing: Easing.in(Easing.ease) },\r\n EASE_OUT: { duration: 500, easing: Easing.out(Easing.ease) },\r\n EASE_IN_OUT: { duration: 500, easing: Easing.inOut(Easing.ease) },\r\n POWER1: { duration: 500, easing: Easing.bezier(0.17, 0.42, 0.51, 0.97) },\r\n POWER2: { duration: 500, easing: Easing.bezier(0.07, 0.11, 0.13, 1) },\r\n POWER3: { duration: 500, easing: Easing.bezier(0.09, 0.7, 0.16, 1.04) },\r\n POWER4: { duration: 500, easing: Easing.bezier(0.05, 0.54, 0, 1.03) },\r\n LINEAR: { duration: 500, easing: Easing.linear },\r\n },\r\n Spring: {\r\n ELASTIC: { mass: 1, damping: 18, stiffness: 250 },\r\n EASE: { mass: 1, damping: 20, stiffness: 158 },\r\n STIFF: { mass: 1, damping: 18, stiffness: 350 },\r\n WOBBLE: { mass: 1, damping: 8, stiffness: 250 },\r\n },\r\n};\r\n","import { Config } from './Config';\r\nimport {\r\n Callbacks,\r\n DecayOptions,\r\n Descriptor,\r\n SpringOptions,\r\n TimingOptions,\r\n} from './types';\r\n\r\nexport const withSpring = (\r\n to: Descriptor['to'],\r\n opts?: SpringOptions & Callbacks\r\n): Descriptor => ({\r\n type: 'spring',\r\n to,\r\n options: {\r\n stiffness: opts?.stiffness ?? Config.Spring.EASE.stiffness,\r\n damping: opts?.damping ?? Config.Spring.EASE.damping,\r\n mass: opts?.mass ?? Config.Spring.EASE.mass,\r\n onStart: opts?.onStart,\r\n onChange: opts?.onChange,\r\n onComplete: opts?.onComplete,\r\n },\r\n});\r\n\r\nexport const withTiming = (\r\n to: Descriptor['to'],\r\n opts?: TimingOptions & Callbacks\r\n): Descriptor => ({\r\n type: 'timing',\r\n to,\r\n options: {\r\n duration: opts?.duration,\r\n easing: opts?.easing,\r\n onStart: opts?.onStart,\r\n onChange: opts?.onChange,\r\n onComplete: opts?.onComplete,\r\n },\r\n});\r\n\r\nexport const withDecay = (\r\n velocity: number,\r\n opts?: DecayOptions & Callbacks\r\n): Descriptor => ({\r\n type: 'decay',\r\n options: {\r\n velocity,\r\n onStart: opts?.onStart,\r\n onChange: opts?.onChange,\r\n onComplete: opts?.onComplete,\r\n },\r\n});\r\n\r\nexport const withDelay = (ms: number): Descriptor => ({\r\n type: 'delay',\r\n options: { delay: ms },\r\n});\r\n\r\nexport const withSequence = (\r\n animations: Descriptor[],\r\n opts?: Omit<Callbacks, 'onChange'>\r\n): Descriptor => ({\r\n type: 'sequence',\r\n options: {\r\n animations,\r\n onStart: opts?.onStart,\r\n onComplete: opts?.onComplete,\r\n },\r\n});\r\n\r\nexport const withLoop = (\r\n animation: Descriptor,\r\n iterations = Infinity,\r\n opts?: Omit<Callbacks, 'onChange'>\r\n): Descriptor => ({\r\n type: 'loop',\r\n options: {\r\n animation,\r\n iterations,\r\n onStart: opts?.onStart,\r\n onComplete: opts?.onComplete,\r\n },\r\n});\r\n","import { useLayoutEffect, useState } from 'react';\r\nimport { MotionValue } from '@raidipesh78/re-motion';\r\n\r\nimport { withSpring } from '../descriptors';\r\nimport { isDescriptor } from '../helpers';\r\nimport type { Primitive, Descriptor } from '../types';\r\nimport { useValue } from './useValue';\r\n\r\nexport type ConfigSingle<T extends Primitive> = {\r\n from?: T;\r\n enter?: T | Descriptor;\r\n exit?: T | Descriptor;\r\n};\r\n\r\nexport type ConfigMulti<I extends Record<string, Primitive>> = {\r\n from: I;\r\n enter?: I | Descriptor;\r\n exit?: I | Descriptor;\r\n};\r\n\r\nexport function useMount<T extends Primitive = number>(\r\n isOpen: boolean,\r\n config?: ConfigSingle<T>\r\n): (\r\n fn: (value: MotionValue<T>, mounted: boolean) => React.ReactNode\r\n) => React.ReactNode;\r\n\r\nexport function useMount<I extends Record<string, Primitive>>(\r\n isOpen: boolean,\r\n config: ConfigMulti<I>\r\n): (\r\n fn: (\r\n values: { [K in keyof I]: MotionValue<I[K]> },\r\n mounted: boolean\r\n ) => React.ReactNode\r\n) => React.ReactNode;\r\n\r\nexport function useMount(\r\n isOpen: boolean,\r\n config: any = {}\r\n): (fn: (values: any, mounted: boolean) => React.ReactNode) => React.ReactNode {\r\n const [mounted, setMounted] = useState(isOpen);\r\n\r\n const from = config.from ?? 0;\r\n const enter = config.enter ?? 1;\r\n const exit = config.exit ?? 0;\r\n\r\n const [values, setValues] = useValue(from);\r\n\r\n useLayoutEffect(() => {\r\n if (isOpen) {\r\n setMounted(true);\r\n queueMicrotask(() => {\r\n setValues(isDescriptor(enter) ? enter : withSpring(enter));\r\n });\r\n } else {\r\n queueMicrotask(() => {\r\n setValues(\r\n isDescriptor(exit)\r\n ? {\r\n ...exit,\r\n options: {\r\n ...exit.options,\r\n onComplete: () => {\r\n exit.options?.onComplete?.();\r\n setMounted(false);\r\n },\r\n },\r\n }\r\n : withSpring(exit, {\r\n onComplete() {\r\n setMounted(false);\r\n },\r\n })\r\n );\r\n });\r\n }\r\n }, [isOpen, JSON.stringify(enter), JSON.stringify(exit)]);\r\n\r\n return (fn: (vals: any, m: boolean) => React.ReactNode) =>\r\n fn(values as any, mounted);\r\n}\r\n","const namedColors: Record<string, string> = {\r\n transparent: '#00000000',\r\n aliceblue: '#f0f8ffff',\r\n antiquewhite: '#faebd7ff',\r\n aqua: '#00ffffff',\r\n aquamarine: '#7fffd4ff',\r\n azure: '#f0ffffff',\r\n beige: '#f5f5dcff',\r\n bisque: '#ffe4c4ff',\r\n black: '#000000ff',\r\n blanchedalmond: '#ffebcdff',\r\n blue: '#0000ffff',\r\n blueviolet: '#8a2be2ff',\r\n brown: '#a52a2aff',\r\n burlywood: '#deb887ff',\r\n burntsienna: '#ea7e5dff',\r\n cadetblue: '#5f9ea0ff',\r\n chartreuse: '#7fff00ff',\r\n chocolate: '#d2691eff',\r\n coral: '#ff7f50ff',\r\n cornflowerblue: '#6495edff',\r\n cornsilk: '#fff8dcff',\r\n crimson: '#dc143cff',\r\n cyan: '#00ffffff',\r\n darkblue: '#00008bff',\r\n darkcyan: '#008b8bff',\r\n darkgoldenrod: '#b8860bff',\r\n darkgray: '#a9a9a9ff',\r\n darkgreen: '#006400ff',\r\n darkgrey: '#a9a9a9ff',\r\n darkkhaki: '#bdb76bff',\r\n darkmagenta: '#8b008bff',\r\n darkolivegreen: '#556b2fff',\r\n darkorange: '#ff8c00ff',\r\n darkorchid: '#9932ccff',\r\n darkred: '#8b0000ff',\r\n darksalmon: '#e9967aff',\r\n darkseagreen: '#8fbc8fff',\r\n darkslateblue: '#483d8bff',\r\n darkslategray: '#2f4f4fff',\r\n darkslategrey: '#2f4f4fff',\r\n darkturquoise: '#00ced1ff',\r\n darkviolet: '#9400d3ff',\r\n deeppink: '#ff1493ff',\r\n deepskyblue: '#00bfffff',\r\n dimgray: '#696969ff',\r\n dimgrey: '#696969ff',\r\n dodgerblue: '#1e90ffff',\r\n firebrick: '#b22222ff',\r\n floralwhite: '#fffaf0ff',\r\n forestgreen: '#228b22ff',\r\n fuchsia: '#ff00ffff',\r\n gainsboro: '#dcdcdcff',\r\n ghostwhite: '#f8f8ffff',\r\n gold: '#ffd700ff',\r\n goldenrod: '#daa520ff',\r\n gray: '#808080ff',\r\n green: '#008000ff',\r\n greenyellow: '#adff2fff',\r\n grey: '#808080ff',\r\n honeydew: '#f0fff0ff',\r\n hotpink: '#ff69b4ff',\r\n indianred: '#cd5c5cff',\r\n indigo: '#4b0082ff',\r\n ivory: '#fffff0ff',\r\n khaki: '#f0e68cff',\r\n lavender: '#e6e6faff',\r\n lavenderblush: '#fff0f5ff',\r\n lawngreen: '#7cfc00ff',\r\n lemonchiffon: '#fffacdff',\r\n lightblue: '#add8e6ff',\r\n lightcoral: '#f08080ff',\r\n lightcyan: '#e0ffffff',\r\n lightgoldenrodyellow: '#fafad2ff',\r\n lightgray: '#d3d3d3ff',\r\n lightgreen: '#90ee90ff',\r\n lightgrey: '#d3d3d3ff',\r\n lightpink: '#ffb6c1ff',\r\n lightsalmon: '#ffa07aff',\r\n lightseagreen: '#20b2aaff',\r\n lightskyblue: '#87cefaff',\r\n lightslategray: '#778899ff',\r\n lightslategrey: '#778899ff',\r\n lightsteelblue: '#b0c4deff',\r\n lightyellow: '#ffffe0ff',\r\n lime: '#00ff00ff',\r\n limegreen: '#32cd32ff',\r\n linen: '#faf0e6ff',\r\n magenta: '#ff00ffff',\r\n maroon: '#800000ff',\r\n mediumaquamarine: '#66cdaaff',\r\n mediumblue: '#0000cdff',\r\n mediumorchid: '#ba55d3ff',\r\n mediumpurple: '#9370dbff',\r\n mediumseagreen: '#3cb371ff',\r\n mediumslateblue: '#7b68eeff',\r\n mediumspringgreen: '#00fa9aff',\r\n mediumturquoise: '#48d1ccff',\r\n mediumvioletred: '#c71585ff',\r\n midnightblue: '#191970ff',\r\n mintcream: '#f5fffaff',\r\n mistyrose: '#ffe4e1ff',\r\n moccasin: '#ffe4b5ff',\r\n navajowhite: '#ffdeadff',\r\n navy: '#000080ff',\r\n oldlace: '#fdf5e6ff',\r\n olive: '#808000ff',\r\n olivedrab: '#6b8e23ff',\r\n orange: '#ffa500ff',\r\n orangered: '#ff4500ff',\r\n orchid: '#da70d6ff',\r\n palegoldenrod: '#eee8aaff',\r\n palegreen: '#98fb98ff',\r\n paleturquoise: '#afeeeeff',\r\n palevioletred: '#db7093ff',\r\n papayawhip: '#ffefd5ff',\r\n peachpuff: '#ffdab9ff',\r\n peru: '#cd853fff',\r\n pink: '#ffc0cbff',\r\n plum: '#dda0ddff',\r\n powderblue: '#b0e0e6ff',\r\n purple: '#800080ff',\r\n rebeccapurple: '#663399ff',\r\n red: '#ff0000ff',\r\n rosybrown: '#bc8f8fff',\r\n royalblue: '#4169e1ff',\r\n saddlebrown: '#8b4513ff',\r\n salmon: '#fa8072ff',\r\n sandybrown: '#f4a460ff',\r\n seagreen: '#2e8b57ff',\r\n seashell: '#fff5eeff',\r\n sienna: '#a0522dff',\r\n silver: '#c0c0c0ff',\r\n skyblue: '#87ceebff',\r\n slateblue: '#6a5acdff',\r\n slategray: '#708090ff',\r\n slategrey: '#708090ff',\r\n snow: '#fffafaff',\r\n springgreen: '#00ff7fff',\r\n steelblue: '#4682b4ff',\r\n tan: '#d2b48cff',\r\n teal: '#008080ff',\r\n thistle: '#d8bfd8ff',\r\n tomato: '#ff6347ff',\r\n turquoise: '#40e0d0ff',\r\n violet: '#ee82eeff',\r\n wheat: '#f5deb3ff',\r\n white: '#ffffffff',\r\n whitesmoke: '#f5f5f5ff',\r\n yellow: '#ffff00ff',\r\n yellowgreen: '#9acd32ff',\r\n};\r\n\r\nconst numberRE = /-?\\d+(\\.\\d+)?/g;\r\nconst HEX_RE = /^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;\r\nconst RGB_RE =\r\n /^rgba?\\(\\s*-?\\d+(\\.\\d+)?%?(?:\\s*,\\s*-?\\d+(\\.\\d+)?%?){2}(?:\\s*,\\s*(0|1|0?\\.\\d+))?\\s*\\)$/i;\r\nconst HSL_RE =\r\n /^hsla?\\(\\s*\\d+(\\.\\d+)?(?:\\s*,\\s*\\d+(\\.\\d+)?%){2}(?:\\s*,\\s*(0|1|0?\\.\\d+))?\\s*\\)$/i;\r\n\r\nfunction isCssColorLiteral(s: string): boolean {\r\n const c = s.trim().toLowerCase();\r\n return (\r\n HEX_RE.test(c) ||\r\n RGB_RE.test(c) ||\r\n HSL_RE.test(c) ||\r\n namedColors[c] !== undefined\r\n );\r\n}\r\n\r\nfunction parseCssColor(c: string): [number, number, number, number] {\r\n let color = c.trim().toLowerCase();\r\n if (namedColors[color]) color = namedColors[color];\r\n\r\n if (HEX_RE.test(color)) {\r\n let hex = color.slice(1);\r\n if (hex.length === 3)\r\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\r\n else if (hex.length === 4)\r\n hex =\r\n hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\r\n const hasA = hex.length === 8;\r\n const v = parseInt(hex, 16);\r\n const r = (v >> (hasA ? 24 : 16)) & 0xff;\r\n const g = (v >> (hasA ? 16 : 8)) & 0xff;\r\n const b = (v >> (hasA ? 8 : 0)) & 0xff;\r\n const a = hasA ? (v & 0xff) / 255 : 1;\r\n return [r, g, b, a];\r\n }\r\n\r\n if (RGB_RE.test(color)) {\r\n const nums = [...color.matchAll(numberRE)].map((m) => +m[0]);\r\n const [r, g, b, a = 1] = nums;\r\n return [r, g, b, a];\r\n }\r\n\r\n if (HSL_RE.test(color)) {\r\n const nums = [...color.matchAll(numberRE)].map((m) => +m[0]);\r\n let [h, s, l, a = 1] = nums;\r\n s /= 100;\r\n l /= 100;\r\n const c_ = (1 - Math.abs(2 * l - 1)) * s;\r\n const x = c_ * (1 - Math.abs(((h / 60) % 2) - 1));\r\n const m_ = l - c_ / 2;\r\n let [r1, g1, b1] = [0, 0, 0];\r\n if (h < 60) [r1, g1, b1] = [c_, x, 0];\r\n else if (h < 120) [r1, g1, b1] = [x, c_, 0];\r\n else if (h < 180) [r1, g1, b1] = [0, c_, x];\r\n else if (h < 240) [r1, g1, b1] = [0, x, c_];\r\n else if (h < 300) [r1, g1, b1] = [x, 0, c_];\r\n else [r1, g1, b1] = [c_, 0, x];\r\n return [\r\n Math.round((r1 + m_) * 255),\r\n Math.round((g1 + m_) * 255),\r\n Math.round((b1 + m_) * 255),\r\n a,\r\n ];\r\n }\r\n\r\n throw new Error(`Unrecognized CSS color: ${c}`);\r\n}\r\n\r\ntype ExtrapolateType = 'identity' | 'extend' | 'clamp';\r\n\r\ninterface ExtrapolateConfig {\r\n extrapolate?: ExtrapolateType;\r\n extrapolateRight?: ExtrapolateType;\r\n extrapolateLeft?: ExtrapolateType;\r\n easing?: (t: number) => number;\r\n}\r\n\r\nfunction interpolateString(fromStr: string, toStr: string, p: number): string {\r\n const funcRegex = /^([a-zA-Z$_][\\w$]*)\\((-?\\d*\\.?\\d+)([a-zA-Z%]*)\\)$/;\r\n const m1 = fromStr.match(funcRegex);\r\n const m2 = toStr.match(funcRegex);\r\n if (m1 && m2 && m1[1] === m2[1] && m1[3] === m2[3]) {\r\n const name = m1[1];\r\n const fromN = parseFloat(m1[2]);\r\n const toN = parseFloat(m2[2]);\r\n const unit = m1[3];\r\n const val = fromN + (toN - fromN) * p;\r\n return `${name}(${val.toFixed(3)}${unit})`;\r\n }\r\n\r\n if (isCssColorLiteral(fromStr) && isCssColorLiteral(toStr)) {\r\n const c1 = parseCssColor(fromStr);\r\n const c2 = parseCssColor(toStr);\r\n const [r1, g1, b1, a1] = c1;\r\n const [r2, g2, b2, a2] = c2;\r\n const R = Math.round(r1 + (r2 - r1) * p);\r\n const G = Math.round(g1 + (g2 - g1) * p);\r\n const B = Math.round(b1 + (b2 - b1) * p);\r\n const A = a1 + (a2 - a1) * p;\r\n return A < 1\r\n ? `rgba(${R},${G},${B},${A.toFixed(3)})`\r\n : `rgb(${R},${G},${B})`;\r\n }\r\n\r\n const fromParts = fromStr.split(/(\\s+)/);\r\n const toParts = toStr.split(/(\\s+)/);\r\n if (fromParts.length !== toParts.length) {\r\n throw new Error(\r\n `interpolate: template mismatch:\\n \"${fromStr}\"\\n vs \"${toStr}\"`\r\n );\r\n }\r\n const numUnitRE = /^(-?\\d+(\\.\\d+)?)([a-zA-Z%]*)$/;\r\n const mappers = fromParts.map((fp, i) => {\r\n const tp = toParts[i];\r\n\r\n if (fp === tp && /\\s+/.test(fp)) return () => fp;\r\n\r\n const n1 = fp.match(numUnitRE);\r\n const n2 = tp.match(numUnitRE);\r\n\r\n if (n1 && n2 && n1[3] === n2[3]) {\r\n const fromN = parseFloat(n1[1]);\r\n const toN = parseFloat(n2[1]);\r\n const unit = n1[3];\r\n\r\n return () => {\r\n const val = fromN + (toN - fromN) * p;\r\n return `${val.toFixed(3)}${unit}`;\r\n };\r\n }\r\n\r\n if (isCssColorLiteral(fp) && isCssColorLiteral(tp)) {\r\n return () => interpolateString(fp, tp, p);\r\n }\r\n\r\n if (fp === tp) return () => fp;\r\n\r\n throw new Error(\r\n `interpolate: cannot interpolate tokens \"${fp}\" vs \"${tp}\"`\r\n );\r\n });\r\n return mappers.map((fn) => fn()).join('');\r\n}\r\n\r\nexport function to(\r\n input: number,\r\n inRange: number[],\r\n outRange: (number | string)[],\r\n config?: ExtrapolateConfig\r\n): number | string {\r\n const len = inRange.length;\r\n if (len < 2 || outRange.length !== len) {\r\n throw new Error(\r\n 'interpolate: inRange and outRange must be arrays of the same length >= 2'\r\n );\r\n }\r\n\r\n const extrapolateLeft: ExtrapolateType =\r\n config?.extrapolateLeft ?? config?.extrapolate ?? 'extend';\r\n const extrapolateRight: ExtrapolateType =\r\n config?.extrapolateRight ?? config?.extrapolate ?? 'extend';\r\n\r\n const mapValue = (tRaw: number): number | string => {\r\n let t = tRaw;\r\n if (tRaw < inRange[0] && extrapolateLeft === 'clamp') {\r\n t = inRange[0];\r\n } else if (tRaw > inRange[len - 1] && extrapolateRight === 'clamp') {\r\n t = inRange[len - 1];\r\n }\r\n\r\n let i = 0;\r\n if (t <= inRange[0]) {\r\n i = 0;\r\n } else if (t >= inRange[len - 1]) {\r\n i = len - 2;\r\n } else {\r\n for (let j = 0; j < len - 1; j++) {\r\n if (t >= inRange[j] && t <= inRange[j + 1]) {\r\n i = j;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const t0 = inRange[i];\r\n const t1 = inRange[i + 1];\r\n let p = (t - t0) / (t1 - t0);\r\n\r\n if (config?.easing) p = config.easing(p);\r\n\r\n const fromOut = outRange[i];\r\n const toOut = outRange[i + 1];\r\n\r\n if (typeof fromOut === 'number' && typeof toOut === 'number') {\r\n return fromOut + (toOut - fromOut) * p;\r\n }\r\n\r\n return interpolateString(String(fromOut), String(toOut), p);\r\n };\r\n\r\n return mapValue(input);\r\n}\r\n","export function clamp(value: number, lowerbound: number, upperbound: number) {\r\n return Math.min(Math.max(value, lowerbound), upperbound);\r\n}\r\n\r\nfunction rubber2(distanceFromEdge: number, constant: number) {\r\n return Math.pow(distanceFromEdge, constant * 5);\r\n}\r\n\r\nfunction rubber(distanceFromEdge: number, dimension: number, constant: number) {\r\n if (dimension === 0 || Math.abs(dimension) === Infinity)\r\n return rubber2(distanceFromEdge, constant);\r\n return (\r\n (distanceFromEdge * dimension * constant) /\r\n (dimension + constant * distanceFromEdge)\r\n );\r\n}\r\n\r\nexport function rubberClamp(\r\n value: number,\r\n lowerbound: number,\r\n upperbound: number,\r\n constant: number = 0.15\r\n) {\r\n if (constant === 0) return clamp(value, lowerbound, upperbound);\r\n\r\n if (value < lowerbound) {\r\n return (\r\n -rubber(lowerbound - value, upperbound - lowerbound, constant) +\r\n lowerbound\r\n );\r\n }\r\n\r\n if (value > upperbound) {\r\n return (\r\n +rubber(value - upperbound, upperbound - lowerbound, constant) +\r\n upperbound\r\n );\r\n }\r\n\r\n return value;\r\n}\r\n\r\nexport function snapTo(\r\n value: number,\r\n velocity: number,\r\n snapPoints: Array<number>\r\n): number {\r\n const finalValue = value + velocity * 0.2;\r\n const getDiff = (point: number) => Math.abs(point - finalValue);\r\n const deltas = snapPoints.map(getDiff);\r\n const minDelta = Math.min(...deltas);\r\n\r\n return snapPoints.reduce(function (acc, point) {\r\n if (getDiff(point) === minDelta) {\r\n return point;\r\n } else {\r\n return acc;\r\n }\r\n });\r\n}\r\n\r\nexport function move(array: Array<any>, moveIndex: number, toIndex: number) {\r\n const item = array[moveIndex];\r\n const length = array.length;\r\n const diff = moveIndex - toIndex;\r\n\r\n if (diff > 0) {\r\n return [\r\n ...array.slice(0, toIndex),\r\n item,\r\n ...array.slice(toIndex, moveIndex),\r\n ...array.slice(moveIndex + 1, length),\r\n ];\r\n } else if (diff < 0) {\r\n const targetIndex = toIndex + 1;\r\n return [\r\n ...array.slice(0, moveIndex),\r\n ...array.slice(moveIndex + 1, targetIndex),\r\n item,\r\n ...array.slice(targetIndex, length),\r\n ];\r\n }\r\n return array;\r\n}\r\n","type Listener<E> = (event: E) => void;\r\n\r\nexport abstract class Gesture<E> {\r\n public static readonly VELOCITY_LIMIT = 20;\r\n\r\n private changeListeners = new Set<Listener<E>>();\r\n private endListeners = new Set<Listener<E>>();\r\n\r\n onChange(listener: Listener<E>): this {\r\n this.changeListeners.add(listener);\r\n return this;\r\n }\r\n\r\n onEnd(listener: Listener<E>): this {\r\n this.endListeners.add(listener);\r\n return this;\r\n }\r\n\r\n protected emitChange(event: E): void {\r\n this.changeListeners.forEach((fn) => fn(event));\r\n }\r\n\r\n protected emitEnd(event: E): void {\r\n this.endListeners.forEach((fn) => fn(event));\r\n }\r\n\r\n abstract attach(elements: HTMLElement | HTMLElement | Window): () => void;\r\n\r\n abstract cancel(): void;\r\n}\r\n","import { clamp } from '../../utils';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport interface DragEvent {\r\n down: boolean;\r\n movement: { x: number; y: number };\r\n offset: { x: number; y: number };\r\n velocity: { x: number; y: number };\r\n event: PointerEvent;\r\n cancel: () => void;\r\n}\r\n\r\nexport interface DragConfig {\r\n threshold?: number;\r\n axis?: 'x' | 'y';\r\n initial?: () => { x: number; y: number };\r\n}\r\n\r\nexport class DragGesture extends Gesture<DragEvent> {\r\n private config: DragConfig;\r\n private prev = { x: 0, y: 0 };\r\n private lastTime = 0;\r\n\r\n private movement = { x: 0, y: 0 };\r\n private velocity = { x: 0, y: 0 };\r\n private start = { x: 0, y: 0 };\r\n private offset = { x: 0, y: 0 };\r\n\r\n private pointerCaptured = false;\r\n private activePointerId: number | null = null;\r\n private attachedEls = new Set<HTMLElement>();\r\n private activeEl: HTMLElement | null = null;\r\n private pointerDownPos = { x: 0, y: 0 };\r\n private thresholdPassed = false;\r\n\r\n constructor(config: DragConfig = {}) {\r\n super();\r\n this.config = config;\r\n }\r\n\r\n attach(elements: HTMLElement | HTMLElement[] | Window): () => void {\r\n if (elements === window) return () => {};\r\n\r\n const els = Array.isArray(elements) ? elements : [elements as HTMLElement];\r\n const down = this.onDown.bind(this);\r\n const move = this.onMove.bind(this);\r\n const up = this.onUp.bind(this);\r\n\r\n els.forEach((el) => {\r\n this.attachedEls.add(el);\r\n el.addEventListener('pointerdown', down, { passive: false });\r\n });\r\n\r\n window.addEventListener('pointermove', move, { passive: false });\r\n window.addEventListener('pointerup', up);\r\n window.addEventListener('pointercancel', up);\r\n\r\n return () => {\r\n els.forEach((el) => {\r\n el.removeEventListener('pointerdown', down);\r\n this.attachedEls.delete(el);\r\n });\r\n\r\n window.removeEventListener('pointermove', move);\r\n window.removeEventListener('pointerup', up);\r\n window.removeEventListener('pointercancel', up);\r\n };\r\n }\r\n\r\n private onDown(e: PointerEvent) {\r\n if (e.button !== 0) return;\r\n\r\n const target = e.currentTarget as HTMLElement;\r\n if (!this.attachedEls.has(target)) return;\r\n\r\n this.activeEl = target;\r\n this.activePointerId = e.pointerId;\r\n this.pointerCaptured = false;\r\n\r\n this.start =\r\n this.thresholdPassed === false && this.start.x === 0 && this.start.y === 0\r\n ? this.config.initial?.() ?? { x: 0, y: 0 }\r\n : { ...this.offset };\r\n this.offset = { ...this.start };\r\n\r\n this.pointerDownPos = { x: e.clientX, y: e.clientY };\r\n this.thresholdPassed = false;\r\n this.prev = { x: e.clientX, y: e.clientY };\r\n this.lastTime = e.timeStamp;\r\n\r\n this.emitChange({\r\n down: true,\r\n movement: { x: 0, y: 0 },\r\n offset: { ...this.offset },\r\n velocity: { x: 0, y: 0 },\r\n event: e,\r\n cancel: this.cancel.bind(this),\r\n });\r\n }\r\n\r\n private onMove(e: PointerEvent) {\r\n if (this.activePointerId !== e.pointerId || !this.activeEl) return;\r\n\r\n const threshold = this.config.threshold ?? 0;\r\n if (!this.thresholdPassed) {\r\n const dxTotal = e.clientX - this.pointerDownPos.x;\r\n const dyTotal = e.clientY - this.pointerDownPos.y;\r\n const dist = Math.hypot(dxTotal, dyTotal);\r\n if (dist < threshold) return;\r\n this.thresholdPassed = true;\r\n\r\n this.activeEl.setPointerCapture(e.pointerId);\r\n this.pointerCaptured = true;\r\n }\r\n\r\n if (this.pointerCaptured) {\r\n e.preventDefault();\r\n }\r\n\r\n const dt = Math.max((e.timeStamp - this.lastTime) / 1000, 1e-6);\r\n this.lastTime = e.timeStamp;\r\n const dx = e.clientX - this.prev.x;\r\n const dy = e.clientY - this.prev.y;\r\n const rawX = dx / dt / 1000;\r\n const rawY = dy / dt / 1000;\r\n this.velocity = {\r\n x: clamp(rawX, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\r\n y: clamp(rawY, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\r\n };\r\n\r\n const moveRaw = {\r\n x: e.clientX - this.pointerDownPos.x,\r\n y: e.clientY - this.pointerDownPos.y,\r\n };\r\n this.movement = {\r\n x: this.config.axis === 'y' ? 0 : moveRaw.x,\r\n y: this.config.axis === 'x' ? 0 : moveRaw.y,\r\n };\r\n\r\n this.offset = {\r\n x: this.start.x + this.movement.x,\r\n y: this.start.y + this.movement.y,\r\n };\r\n\r\n this.prev = { x: e.clientX, y: e.clientY };\r\n\r\n this.emitChange({\r\n down: true,\r\n movement: { ...this.movement },\r\n offset: { ...this.offset },\r\n velocity: { ...this.velocity },\r\n event: e,\r\n cancel: this.cancel.bind(this),\r\n });\r\n }\r\n\r\n private onUp(e: PointerEvent) {\r\n if (this.activePointerId !== e.pointerId || !this.activeEl) return;\r\n this.activeEl.releasePointerCapture(e.pointerId);\r\n\r\n this.emitEnd({\r\n down: false,\r\n movement: { ...this.movement },\r\n offset: { ...this.offset },\r\n velocity: { ...this.velocity },\r\n event: e,\r\n cancel: this.cancel.bind(this),\r\n });\r\n\r\n this.activePointerId = null;\r\n this.pointerCaptured = false;\r\n }\r\n\r\n cancel() {\r\n if (this.activeEl && this.activePointerId !== null) {\r\n this.activeEl.releasePointerCapture(this.activePointerId);\r\n this.activePointerId = null;\r\n this.activeEl = null;\r\n }\r\n }\r\n}\r\n","import { RefObject, useEffect, useRef } from 'react';\r\n\r\ninterface GestureInstance<E> {\r\n onChange(handler: (event: E) => void): this;\r\n onEnd(handler: (event: E) => void): this;\r\n attach(target: Window | HTMLElement): () => void;\r\n}\r\n\r\ninterface GestureConstructor<C, E> {\r\n new (config?: C): GestureInstance<E>;\r\n}\r\n\r\nexport function useRecognizer<T extends HTMLElement, C, E>(\r\n GestureClass: GestureConstructor<C, E>,\r\n refs: Window | RefObject<T> | Array<RefObject<T>>,\r\n onEvent: (e: E & { index: number }) => void,\r\n config?: C\r\n) {\r\n const handlerRef = useLatest(onEvent);\r\n const configRef = useLatest(config);\r\n\r\n if (refs === window) {\r\n const gestureRef = useRef<GestureInstance<E>>();\r\n\r\n if (!gestureRef.current) {\r\n const g = new GestureClass(configRef.current);\r\n const handler = (e: E) => handlerRef.current({ ...e, index: 0 });\r\n g.onChange(handler).onEnd(handler);\r\n gestureRef.current = g;\r\n }\r\n\r\n useEffect(() => {\r\n const cleanup = gestureRef.current!.attach(window);\r\n return () => {\r\n cleanup();\r\n };\r\n }, [refs]);\r\n\r\n return;\r\n }\r\n\r\n const list = Array.isArray(refs) ? refs : ([refs] as RefObject<T>[]);\r\n const gesturesRef = useRef<GestureInstance<E>[]>([]);\r\n\r\n if (gesturesRef.current.length !== list.length) {\r\n gesturesRef.current = list.map((_, i) => {\r\n const g = new GestureClass(configRef.current);\r\n const handler = (e: E) => handlerRef.current({ ...e, index: i });\r\n g.onChange(handler).onEnd(handler);\r\n return g;\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n const cleanups = list\r\n .map((r, i) => {\r\n const el = r.current;\r\n if (!el) return null;\r\n return gesturesRef.current[i].attach(el);\r\n })\r\n .filter((fn): fn is () => void => !!fn);\r\n\r\n return () => cleanups.forEach((fn) => fn());\r\n }, [list.map((r) => r.current)]);\r\n}\r\n\r\nfunction useLatest<T>(value: T) {\r\n const ref = useRef(value);\r\n useEffect(() => {\r\n ref.current = value;\r\n }, [value]);\r\n return ref as React.MutableRefObject<T>;\r\n}\r\n","import { clamp } from '../../utils';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport interface MoveEvent {\r\n movement: { x: number; y: number };\r\n offset: { x: number; y: number };\r\n velocity: { x: number; y: number };\r\n event: PointerEvent;\r\n cancel?: () => void;\r\n}\r\n\r\nexport class MoveGesture extends Gesture<MoveEvent> {\r\n private attachedEls = new Set<HTMLElement | Window>();\r\n\r\n private prev = { x: 0, y: 0 };\r\n private lastTime = 0;\r\n\r\n private movement = { x: 0, y: 0 };\r\n private offset = { x: 0, y: 0 };\r\n private velocity = { x: 0, y: 0 };\r\n private startPos: { x: number; y: number } | null = null;\r\n\r\n attach(elements: HTMLElement | HTMLElement[] | Window): () => void {\r\n const els = Array.isArray(elements) ? elements : [elements];\r\n const move = this.onMove.bind(this);\r\n const leave = this.onLeave.bind(this);\r\n\r\n els.forEach((el) => {\r\n this.attachedEls.add(el);\r\n el.addEventListener('pointermove', move, { passive: false });\r\n el.addEventListener('pointerleave', leave);\r\n });\r\n\r\n return () => {\r\n els.forEach((el) => {\r\n el.removeEventListener('pointermove', move);\r\n el.removeEventListener('pointerleave', leave);\r\n this.attachedEls.delete(el);\r\n });\r\n };\r\n }\r\n\r\n cancel(): void {}\r\n\r\n private onMove(e: PointerEvent) {\r\n const now = e.timeStamp;\r\n\r\n if (this.startPos === null) {\r\n this.startPos = { x: e.clientX, y: e.clientY };\r\n this.prev = { x: e.clientX, y: e.clientY };\r\n this.lastTime = now;\r\n }\r\n\r\n const dt = Math.max((now - this.lastTime) / 1000, 1e-6);\r\n this.lastTime = now;\r\n\r\n const dx = e.clientX - this.prev.x;\r\n const dy = e.clientY - this.prev.y;\r\n this.prev = { x: e.clientX, y: e.clientY };\r\n\r\n this.movement = {\r\n x: e.clientX - this.startPos.x,\r\n y: e.clientY - this.startPos.y,\r\n };\r\n\r\n const tgt = e.currentTarget as HTMLElement | Window;\r\n const rect =\r\n tgt instanceof HTMLElement\r\n ? tgt.getBoundingClientRect()\r\n : { left: 0, top: 0 };\r\n\r\n this.offset = {\r\n x: e.clientX - rect.left,\r\n y: e.clientY - rect.top,\r\n };\r\n\r\n const rawVx = dx / dt / 1000;\r\n const rawVy = dy / dt / 1000;\r\n this.velocity = {\r\n x: clamp(rawVx, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\r\n y: clamp(rawVy, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\r\n };\r\n\r\n this.emitChange({\r\n movement: { ...this.movement },\r\n offset: { ...this.offset },\r\n velocity: { ...this.velocity },\r\n event: e,\r\n cancel: () => this.onLeave(e),\r\n });\r\n }\r\n\r\n private onLeave(e: PointerEvent) {\r\n this.emitEnd({\r\n movement: { ...this.movement },\r\n offset: { ...this.offset },\r\n velocity: { ...this.velocity },\r\n event: e,\r\n cancel: () => {},\r\n });\r\n }\r\n}\r\n","import { clamp } from '../../utils';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport interface ScrollEvent {\r\n movement: { x: number; y: number };\r\n offset: { x: number; y: number };\r\n velocity: { x: number; y: number };\r\n event: Event;\r\n cancel?: () => void;\r\n}\r\n\r\nexport class ScrollGesture extends Gesture<ScrollEvent> {\r\n private attachedEls = new Set<HTMLElement | Window>();\r\n\r\n private movement = { x: 0, y: 0 };\r\n private offset = { x: 0, y: 0 };\r\n private velocity = { x: 0, y: 0 };\r\n\r\n private prevScroll = { x: 0, y: 0 };\r\n private lastTime = 0;\r\n private endTimeout?: number;\r\n\r\n attach(elements: HTMLElement | HTMLElement[] | Window): () => void {\r\n const els = Array.isArray(elements) ? elements : [elements];\r\n const scroll = this.onScroll.bind(this);\r\n\r\n els.forEach((el) => {\r\n this.attachedEls.add(el);\r\n el.addEventListener('scroll', scroll, { passive: true });\r\n });\r\n\r\n return () => {\r\n els.forEach((el) => {\r\n el.removeEventListener('scroll', scroll);\r\n this.attachedEls.delete(el);\r\n });\r\n\r\n if (this.endTimeout != null) {\r\n clearTimeout(this.endTimeout);\r\n this.endTimeout = undefined;\r\n }\r\n };\r\n }\r\n\r\n cancel(): void {}\r\n\r\n private onScroll(e: Event) {\r\n const now = Date.now();\r\n const dt = Math.max((now - this.lastTime) / 1000, 1e-6);\r\n this.lastTime = now;\r\n\r\n const tgt = e.currentTarget as HTMLElement | Window;\r\n const x = tgt instanceof HTMLElement ? tgt.scrollLeft : window.scrollX;\r\n const y = tgt instanceof HTMLElement ? tgt.scrollTop : window.scrollY;\r\n\r\n const dx = x - this.prevScroll.x;\r\n const dy = y - this.prevScroll.y;\r\n this.prevScroll = { x, y };\r\n\r\n this.movement = { x: dx, y: dy };\r\n this.offset = { x, y };\r\n\r\n const rawX = dx / dt / 1000;\r\n const rawY = dy / dt / 1000;\r\n this.velocity = {\r\n x: clamp(rawX, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\r\n y: clamp(rawY, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\r\n };\r\n\r\n this.emitChange({\r\n movement: { ...this.movement },\r\n offset: { ...this.offset },\r\n velocity: { ...this.velocity },\r\n event: e,\r\n cancel: () => {\r\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\r\n },\r\n });\r\n\r\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\r\n this.endTimeout = window.setTimeout(() => {\r\n this.emitEnd({\r\n movement: { ...this.movement },\r\n offset: { ...this.offset },\r\n velocity: { ...this.velocity },\r\n event: e,\r\n cancel: () => {},\r\n });\r\n }, 150);\r\n }\r\n}\r\n","import { clamp } from '../../utils';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport interface WheelEvent {\r\n movement: { x: number; y: number };\r\n offset: { x: number; y: number };\r\n velocity: { x: number; y: number };\r\n event: globalThis.WheelEvent;\r\n cancel?: () => void;\r\n}\r\n\r\nexport class WheelGesture extends Gesture<WheelEvent> {\r\n private attachedEls = new Set<HTMLElement | Window>();\r\n\r\n private movement = { x: 0, y: 0 };\r\n private offset = { x: 0, y: 0 };\r\n private velocity = { x: 0, y: 0 };\r\n\r\n private lastTime = 0;\r\n private endTimeout?: number;\r\n\r\n attach(elements: HTMLElement | HTMLElement[] | Window): () => void {\r\n const els = Array.isArray(elements) ? elements : [elements];\r\n const wheel = this.onWheel.bind(this);\r\n\r\n els.forEach((el) => {\r\n this.attachedEls.add(el);\r\n el.addEventListener('wheel', wheel, { passive: false });\r\n });\r\n\r\n return () => {\r\n els.forEach((el) => {\r\n el.removeEventListener('wheel', wheel);\r\n this.attachedEls.delete(el);\r\n });\r\n\r\n if (this.endTimeout != null) {\r\n clearTimeout(this.endTimeout);\r\n this.endTimeout = undefined;\r\n }\r\n };\r\n }\r\n\r\n cancel(): void {}\r\n\r\n private onWheel(e: globalThis.WheelEvent) {\r\n e.preventDefault();\r\n\r\n const now = e.timeStamp;\r\n const dt = Math.max((now - this.lastTime) / 1000, 1e-6);\r\n this.lastTime = now;\r\n\r\n const dx = e.deltaX;\r\n const dy = e.deltaY;\r\n\r\n this.movement = { x: dx, y: dy };\r\n this.offset.x += dx;\r\n this.offset.y += dy;\r\n\r\n const rawX = dx / dt / 1000;\r\n const rawY = dy / dt / 1000;\r\n this.velocity = {\r\n x: clamp(rawX, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\r\n y: clamp(rawY, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\r\n };\r\n\r\n this.emitChange({\r\n movement: { ...this.movement },\r\n offset: { ...this.offset },\r\n velocity: { ...this.velocity },\r\n event: e,\r\n cancel: () => {\r\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\r\n },\r\n });\r\n\r\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\r\n this.endTimeout = window.setTimeout(() => {\r\n this.emitEnd({\r\n movement: { ...this.movement },\r\n offset: { ...this.offset },\r\n velocity: { ...this.velocity },\r\n event: e,\r\n cancel: () => {},\r\n });\r\n }, 150);\r\n }\r\n}\r\n","import { ReactNode } from 'react';\r\nimport type { MotionValue } from '@raidipesh78/re-motion';\r\n\r\nimport type { Primitive } from '../types';\r\nimport {\r\n useMount,\r\n type ConfigMulti,\r\n type ConfigSingle,\r\n} from '../hooks/useMount';\r\n\r\ninterface MountPropsSingle<T extends Primitive>\r\n extends Partial<ConfigSingle<T>> {\r\n state: boolean;\r\n children: (animation: MotionValue<T>) => ReactNode;\r\n}\r\n\r\ninterface MountPropsMulti<I extends Record<string, Primitive>>\r\n extends ConfigMulti<I> {\r\n state: boolean;\r\n children: (animation: { [K in keyof I]: MotionValue<I[K]> }) => ReactNode;\r\n}\r\n\r\nexport function Mount<T extends Primitive = number>(\r\n props: MountPropsSingle<T>\r\n): JSX.Element;\r\n\r\nexport function Mount<I extends Record<string, Primitive>>(\r\n props: MountPropsMulti<I>\r\n): JSX.Element;\r\n\r\nexport function Mount({\r\n state,\r\n children,\r\n ...config\r\n}: MountPropsSingle<any> | MountPropsMulti<any>) {\r\n const open = useMount(state, config);\r\n return (\r\n <>{open((animation, mounted) => mounted && children(animation as any))}</>\r\n );\r\n}\r\n","import { RefObject } from 'react';\r\n\r\nimport {\r\n type DragConfig,\r\n type DragEvent,\r\n DragGesture,\r\n} from '../controllers/DragGesture';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useDrag<T extends HTMLElement>(\r\n refs: RefObject<T> | Array<RefObject<T>>,\r\n onDrag: (e: DragEvent & { index: number }) => void,\r\n config?: DragConfig\r\n): void {\r\n return useRecognizer(DragGesture, refs, onDrag, config);\r\n}\r\n","import { RefObject } from 'react';\r\n\r\nimport { type MoveEvent, MoveGesture } from '../controllers/MoveGesture';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useMove(\r\n refs: Window,\r\n onMove: (e: MoveEvent & { index: 0 }) => void\r\n): void;\r\n\r\nexport function useMove<T extends HTMLElement>(\r\n refs: RefObject<T> | Array<RefObject<T>>,\r\n onMove: (e: MoveEvent & { index: number }) => void\r\n): void;\r\n\r\nexport function useMove(refs: any, onMove: any): void {\r\n return useRecognizer(MoveGesture, refs, onMove);\r\n}\r\n","import { useRef, useEffect, RefObject, DependencyList } from 'react';\r\n\r\nexport function useOutsideClick(\r\n ref: RefObject<HTMLElement>,\r\n callback: (event: MouseEvent | TouchEvent) => void,\r\n deps: DependencyList = []\r\n): void {\r\n const cbRef = useRef(callback);\r\n\r\n useEffect(() => {\r\n cbRef.current = callback;\r\n }, [callback, ...deps]);\r\n\r\n useEffect(() => {\r\n function onClick(event: MouseEvent | TouchEvent) {\r\n const el = ref.current;\r\n const target = event.target as Node | null;\r\n\r\n if (!el || !target || !target.isConnected) return;\r\n if (!el.contains(target)) {\r\n cbRef.current(event);\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', onClick);\r\n document.addEventListener('touchstart', onClick);\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', onClick);\r\n document.removeEventListener('touchstart', onClick);\r\n };\r\n }, [ref]);\r\n}\r\n","import { RefObject } from 'react';\r\n\r\nimport { type ScrollEvent, ScrollGesture } from '../controllers/ScrollGesture';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useScroll(\r\n refs: Window,\r\n onScroll: (e: ScrollEvent & { index: 0 }) => void\r\n): void;\r\n\r\nexport function useScroll<T extends HTMLElement>(\r\n refs: RefObject<T> | Array<RefObject<T>>,\r\n onScroll: (e: ScrollEvent & { index: number }) => void\r\n): void;\r\n\r\nexport function useScroll(refs: any, onScroll: any): void {\r\n return useRecognizer(ScrollGesture, refs, onScroll);\r\n}\r\n","import { RefObject } from 'react';\r\n\r\nimport { type WheelEvent, WheelGesture } from '../controllers/WheelGesture';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useWheel(\r\n refs: Window,\r\n onWheel: (e: WheelEvent & { index: 0 }) => void\r\n): void;\r\n\r\nexport function useWheel<T extends HTMLElement>(\r\n refs: RefObject<T> | Array<RefObject<T>>,\r\n onWheel: (e: WheelEvent & { index: number }) => void\r\n): void;\r\n\r\nexport function useWheel(refs: any, onWheel: any): void {\r\n return useRecognizer(WheelGesture, refs, onWheel);\r\n}\r\n"],"names":["filterCallbackOptions","options","attach","onStart","onChange","isDescriptor","x","type","buildAnimation","mv","_a","to","_d","spring","timing","decay","_b","velocity","delay","_c","console","warn","start","pause","resume","cancel","reset","buildParallel","mvMap","step","ctrls","Object","entries","filter","key","__read","undefined","map","idx","parallel","useValue","initial","controllerRef","useRef","value","useMemo","Array","isArray","v","MotionValue","fromEntries","k","ctrl","mvs","forEach","val","i","set","desc","mvsRecord","toString","animations","__assign","sequence","inner","animation","seqCtrls","seq","loop","iterations","par","handleArray","s","handleObject","_e","_f","_g","_j","_h","handlePrimitive","current","Config","Timing","BOUNCE","duration","easing","Easing","bounce","EASE_IN","in","ease","EASE_OUT","out","EASE_IN_OUT","inOut","POWER1","bezier","POWER2","POWER3","POWER4","LINEAR","linear","Spring","ELASTIC","mass","damping","stiffness","EASE","STIFF","WOBBLE","withSpring","opts","onComplete","useMount","isOpen","config","useState","mounted","setMounted","from","enter","exit","values","setValues","useLayoutEffect","queueMicrotask","JSON","stringify","fn","namedColors","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","numberRE","HEX_RE","RGB_RE","HSL_RE","isCssColorLiteral","c","trim","toLowerCase","test","parseCssColor","color","hex","slice","length","hasA","parseInt","r","g","b","a","nums","__spreadArray","matchAll","m","h","l","_k","c_","Math","abs","m_","_l","r1","g1","b1","round","Error","interpolateString","fromStr","toStr","p","funcRegex","m1","match","m2","name_1","fromN","parseFloat","toN","unit","concat","toFixed","c1","c2","a1","r2","g2","b2","a2","R","G","B","A","fromParts","split","toParts","numUnitRE","fp","tp","n1","n2","fromN_1","toN_1","unit_1","join","clamp","lowerbound","upperbound","min","max","rubber","distanceFromEdge","dimension","constant","Infinity","pow","rubber2","Gesture","this","changeListeners","Set","endListeners","prototype","listener","add","onEnd","emitChange","event","emitEnd","VELOCITY_LIMIT","DragGesture","_super","_this","prev","y","lastTime","movement","offset","pointerCaptured","activePointerId","attachedEls","activeEl","pointerDownPos","thresholdPassed","__extends","elements","window","els","down","onDown","bind","move","onMove","up","onUp","el","addEventListener","passive","removeEventListener","delete","e","button","target","currentTarget","has","pointerId","clientX","clientY","timeStamp","threshold","dxTotal","dyTotal","hypot","setPointerCapture","preventDefault","dt","rawX","rawY","moveRaw","axis","releasePointerCapture","useRecognizer","GestureClass","refs","onEvent","handlerRef","useLatest","configRef","list","gesturesRef","_","handler","index","useEffect","cleanups","gestureRef_1","cleanup","ref","MoveGesture","startPos","leave","onLeave","now","dx","dy","tgt","rect","HTMLElement","getBoundingClientRect","left","top","rawVx","rawVy","ScrollGesture","prevScroll","scroll","onScroll","endTimeout","clearTimeout","Date","scrollLeft","scrollX","scrollTop","scrollY","setTimeout","WheelGesture","wheel","onWheel","deltaX","deltaY","state","children","open","__rest","_jsx","array","moveIndex","toIndex","item","diff","targetIndex","snapPoints","finalValue","getDiff","point","deltas","minDelta","reduce","acc","input","inRange","outRange","len","extrapolateLeft","extrapolate","extrapolateRight","tRaw","t","j","t0","fromOut","toOut","String","mapValue","onDrag","callback","deps","cbRef","onClick","isConnected","contains","document","ms"],"mappings":"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"}
|
package/dist/utils/index.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare function clamp(value: number, lowerbound: number, upperbound: number): number;
|
|
2
|
-
export declare function rubberClamp(value: number, lowerbound: number, upperbound: number, constant?: number): number;
|
|
3
|
-
export declare function snapTo(value: number, velocity: number, snapPoints: Array<number>): number;
|
|
4
|
-
export declare function move(array: Array<any>, moveIndex: number, toIndex: number): any[];
|