react-ui-animate 5.0.0-rc.3 → 5.0.0-rc.4

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.
Files changed (4) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +206 -206
  3. package/dist/index.js.map +1 -1
  4. package/package.json +54 -54
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2020 Dipesh Rai
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2020 Dipesh Rai
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,206 +1,206 @@
1
- # React UI Animate
2
-
3
- [![npm version](https://badge.fury.io/js/react-ui-animate.svg)](https://badge.fury.io/js/react-ui-animate)
4
-
5
- > Create smooth animations and interactive gestures in React applications effortlessly.
6
-
7
- ### Install
8
-
9
- You can install `react-ui-animate` via `npm` or `yarn`:
10
-
11
- ```sh
12
- npm install react-ui-animate
13
- ```
14
-
15
- ```sh
16
- yarn add react-ui-animate
17
- ```
18
-
19
- ---
20
-
21
- ## Getting Started
22
-
23
- The `react-ui-animate` library provides a straightforward way to add animations and gestures to your React components. Below are some common use cases.
24
-
25
- ### 1. useValue
26
-
27
- Use `useValue` to initialize and update an animated value.
28
-
29
- ```tsx
30
- import React from 'react';
31
- import {
32
- animate,
33
- useValue,
34
- withSpring,
35
- withTiming,
36
- withSequence,
37
- } from 'react-ui-animate';
38
-
39
- export const UseValue: React.FC = () => {
40
- const [width, setWidth] = useValue(100);
41
-
42
- return (
43
- <>
44
- <button
45
- onClick={() => {
46
- setWidth(withSequence([withTiming(100), withSpring(0)]));
47
- }}
48
- >
49
- SEQUENCE (100 → 0)
50
- </button>
51
- <button
52
- onClick={() => {
53
- setWidth(withSpring(200));
54
- }}
55
- >
56
- SPRING (→ 200)
57
- </button>
58
- <button
59
- onClick={() => {
60
- setWidth(400);
61
- }}
62
- >
63
- IMMEDIATE (→ 400)
64
- </button>
65
-
66
- <animate.div
67
- style={{
68
- width,
69
- height: 100,
70
- backgroundColor: 'red',
71
- left: 0,
72
- top: 0,
73
- }}
74
- />
75
- </>
76
- );
77
- };
78
- ```
79
-
80
- ### 2. useMount
81
-
82
- Use `useMount` to animate component mount and unmount transitions.
83
-
84
- ```tsx
85
- import React from 'react';
86
- import {
87
- animate,
88
- useMount,
89
- withDecay,
90
- withSequence,
91
- withSpring,
92
- withTiming,
93
- } from 'react-ui-animate';
94
-
95
- export const UseMount: React.FC = () => {
96
- const [open, setOpen] = React.useState(true);
97
- const mounted = useMount(open, { from: 0, enter: 1, exit: 0 });
98
-
99
- return (
100
- <>
101
- {mounted(
102
- (animation, isMounted) =>
103
- isMounted && (
104
- <animate.div
105
- style={{
106
- width: 100,
107
- height: 100,
108
- backgroundColor: 'teal',
109
- opacity: animation,
110
- }}
111
- />
112
- )
113
- )}
114
-
115
- <button onClick={() => setOpen((prev) => !prev)}>ANIMATE ME</button>
116
- </>
117
- );
118
- };
119
- ```
120
-
121
- ### 3. Interpolation
122
-
123
- Interpolate values for complex mappings like color transitions or movement.
124
-
125
- ```tsx
126
- import React, { useLayoutEffect, useState } from 'react';
127
- import { animate, useValue, withSpring } from 'react-ui-animate';
128
-
129
- export const Interpolation: React.FC = () => {
130
- const [open, setOpen] = useState(false);
131
- const [x, setX] = useValue(0);
132
-
133
- useLayoutEffect(() => {
134
- setX(withSpring(open ? 500 : 0));
135
- }, [open, setX]);
136
-
137
- return (
138
- <>
139
- <animate.div
140
- style={{
141
- width: 100,
142
- height: 100,
143
- backgroundColor: x.to([0, 500], ['red', 'blue']),
144
- translateX: x,
145
- }}
146
- />
147
-
148
- <button onClick={() => setOpen((p) => !p)}>ANIMATE ME</button>
149
- </>
150
- );
151
- };
152
- ```
153
-
154
- ---
155
-
156
- ## API Overview
157
-
158
- - **`useValue(initial)`**: Initializes an animated value.
159
- - **`animate`**: JSX wrapper for animatable elements (`animate.div`, `animate.span`, etc.).
160
- - **Modifiers**: `withSpring`, `withTiming`, `withDecay`, `withSequence` — functions to define animation behavior.
161
- - **`useMount(state, config)`**: Manages mount/unmount transitions. `config` includes `from`, `enter`, and `exit` values.
162
-
163
- ## Gestures
164
-
165
- `react-ui-animate` also provides hooks for handling gestures:
166
-
167
- - `useDrag`
168
- - `useMove`
169
- - `useScroll`
170
- - `useWheel`
171
-
172
- **Example: `useDrag`**
173
-
174
- ```tsx
175
- import React from 'react';
176
- import { useValue, animate, useDrag, withSpring } from 'react-ui-animate';
177
-
178
- export const Draggable: React.FC = () => {
179
- const ref = useRef(null);
180
- const [translateX, setTranslateX] = useValue(0);
181
-
182
- useDrag(ref, ({ down, movement }) => {
183
- setTranslateX(down ? movement.x : withSpring(0));
184
- });
185
-
186
- return (
187
- <animate.div
188
- ref={ref}
189
- style={{
190
- width: 100,
191
- height: 100,
192
- backgroundColor: '#3399ff',
193
- translateX,
194
- }}
195
- />
196
- );
197
- };
198
- ```
199
-
200
- ## Documentation
201
-
202
- For detailed documentation and examples, visit the official [react-ui-animate documentation](https://react-ui-animate.js.org/).
203
-
204
- ## License
205
-
206
- This library is licensed under the MIT License.
1
+ # React UI Animate
2
+
3
+ [![npm version](https://badge.fury.io/js/react-ui-animate.svg)](https://badge.fury.io/js/react-ui-animate)
4
+
5
+ > Create smooth animations and interactive gestures in React applications effortlessly.
6
+
7
+ ### Install
8
+
9
+ You can install `react-ui-animate` via `npm` or `yarn`:
10
+
11
+ ```sh
12
+ npm install react-ui-animate
13
+ ```
14
+
15
+ ```sh
16
+ yarn add react-ui-animate
17
+ ```
18
+
19
+ ---
20
+
21
+ ## Getting Started
22
+
23
+ The `react-ui-animate` library provides a straightforward way to add animations and gestures to your React components. Below are some common use cases.
24
+
25
+ ### 1. useValue
26
+
27
+ Use `useValue` to initialize and update an animated value.
28
+
29
+ ```tsx
30
+ import React from 'react';
31
+ import {
32
+ animate,
33
+ useValue,
34
+ withSpring,
35
+ withTiming,
36
+ withSequence,
37
+ } from 'react-ui-animate';
38
+
39
+ export const UseValue: React.FC = () => {
40
+ const [width, setWidth] = useValue(100);
41
+
42
+ return (
43
+ <>
44
+ <button
45
+ onClick={() => {
46
+ setWidth(withSequence([withTiming(100), withSpring(0)]));
47
+ }}
48
+ >
49
+ SEQUENCE (100 → 0)
50
+ </button>
51
+ <button
52
+ onClick={() => {
53
+ setWidth(withSpring(200));
54
+ }}
55
+ >
56
+ SPRING (→ 200)
57
+ </button>
58
+ <button
59
+ onClick={() => {
60
+ setWidth(400);
61
+ }}
62
+ >
63
+ IMMEDIATE (→ 400)
64
+ </button>
65
+
66
+ <animate.div
67
+ style={{
68
+ width,
69
+ height: 100,
70
+ backgroundColor: 'red',
71
+ left: 0,
72
+ top: 0,
73
+ }}
74
+ />
75
+ </>
76
+ );
77
+ };
78
+ ```
79
+
80
+ ### 2. useMount
81
+
82
+ Use `useMount` to animate component mount and unmount transitions.
83
+
84
+ ```tsx
85
+ import React from 'react';
86
+ import {
87
+ animate,
88
+ useMount,
89
+ withDecay,
90
+ withSequence,
91
+ withSpring,
92
+ withTiming,
93
+ } from 'react-ui-animate';
94
+
95
+ export const UseMount: React.FC = () => {
96
+ const [open, setOpen] = React.useState(true);
97
+ const mounted = useMount(open, { from: 0, enter: 1, exit: 0 });
98
+
99
+ return (
100
+ <>
101
+ {mounted(
102
+ (animation, isMounted) =>
103
+ isMounted && (
104
+ <animate.div
105
+ style={{
106
+ width: 100,
107
+ height: 100,
108
+ backgroundColor: 'teal',
109
+ opacity: animation,
110
+ }}
111
+ />
112
+ )
113
+ )}
114
+
115
+ <button onClick={() => setOpen((prev) => !prev)}>ANIMATE ME</button>
116
+ </>
117
+ );
118
+ };
119
+ ```
120
+
121
+ ### 3. Interpolation
122
+
123
+ Interpolate values for complex mappings like color transitions or movement.
124
+
125
+ ```tsx
126
+ import React, { useLayoutEffect, useState } from 'react';
127
+ import { animate, useValue, withSpring } from 'react-ui-animate';
128
+
129
+ export const Interpolation: React.FC = () => {
130
+ const [open, setOpen] = useState(false);
131
+ const [x, setX] = useValue(0);
132
+
133
+ useLayoutEffect(() => {
134
+ setX(withSpring(open ? 500 : 0));
135
+ }, [open, setX]);
136
+
137
+ return (
138
+ <>
139
+ <animate.div
140
+ style={{
141
+ width: 100,
142
+ height: 100,
143
+ backgroundColor: x.to([0, 500], ['red', 'blue']),
144
+ translateX: x,
145
+ }}
146
+ />
147
+
148
+ <button onClick={() => setOpen((p) => !p)}>ANIMATE ME</button>
149
+ </>
150
+ );
151
+ };
152
+ ```
153
+
154
+ ---
155
+
156
+ ## API Overview
157
+
158
+ - **`useValue(initial)`**: Initializes an animated value.
159
+ - **`animate`**: JSX wrapper for animatable elements (`animate.div`, `animate.span`, etc.).
160
+ - **Modifiers**: `withSpring`, `withTiming`, `withDecay`, `withSequence` — functions to define animation behavior.
161
+ - **`useMount(state, config)`**: Manages mount/unmount transitions. `config` includes `from`, `enter`, and `exit` values.
162
+
163
+ ## Gestures
164
+
165
+ `react-ui-animate` also provides hooks for handling gestures:
166
+
167
+ - `useDrag`
168
+ - `useMove`
169
+ - `useScroll`
170
+ - `useWheel`
171
+
172
+ **Example: `useDrag`**
173
+
174
+ ```tsx
175
+ import React from 'react';
176
+ import { useValue, animate, useDrag, withSpring } from 'react-ui-animate';
177
+
178
+ export const Draggable: React.FC = () => {
179
+ const ref = useRef(null);
180
+ const [translateX, setTranslateX] = useValue(0);
181
+
182
+ useDrag(ref, ({ down, movement }) => {
183
+ setTranslateX(down ? movement.x : withSpring(0));
184
+ });
185
+
186
+ return (
187
+ <animate.div
188
+ ref={ref}
189
+ style={{
190
+ width: 100,
191
+ height: 100,
192
+ backgroundColor: '#3399ff',
193
+ translateX,
194
+ }}
195
+ />
196
+ );
197
+ };
198
+ ```
199
+
200
+ ## Documentation
201
+
202
+ For detailed documentation and examples, visit the official [react-ui-animate documentation](https://react-ui-animate.js.org/).
203
+
204
+ ## License
205
+
206
+ This library is licensed under the MIT License.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/animation/helpers.ts","../src/animation/drivers.ts","../src/animation/useValue.ts","../src/animation/AnimationConfig.ts","../src/animation/descriptors.ts","../src/animation/to.ts","../src/utils/index.ts","../src/gestures/controllers/Gesture.ts","../src/gestures/controllers/DragGesture.ts","../src/gestures/controllers/MoveGesture.ts","../src/gestures/controllers/ScrollGesture.ts","../src/gestures/controllers/WheelGesture.ts","../src/hooks/useDimension.ts","../src/gestures/hooks/useDrag.ts","../src/hooks/useMeasure.ts","../src/animation/useMount.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 } 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 } 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] {\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: any = 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 if (ctrl) ctrl.start();\r\n }\r\n\r\n return [value, set] 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;\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;\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 AnimationConfig = {\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 { AnimationConfig } from './AnimationConfig';\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 ?? AnimationConfig.Spring.EASE.stiffness,\r\n damping: opts?.damping ?? AnimationConfig.Spring.EASE.damping,\r\n mass: opts?.mass ?? AnimationConfig.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","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 bin(bool: boolean) {\r\n return bool ? 1 : 0;\r\n}\r\n\r\nexport function mix(perc: number, val1: number, val2: number) {\r\n return val1 * (1 - perc) + val2 * perc;\r\n}\r\n\r\nexport 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(element: HTMLElement): () => 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 activePointerId: number | null = null;\r\n private attachedEl: 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(element: HTMLElement): () => void {\r\n this.attachedEl = element;\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 element.addEventListener('pointerdown', down, { passive: false });\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 element.removeEventListener('pointerdown', down);\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 || !this.attachedEl) return;\r\n this.attachedEl.setPointerCapture(e.pointerId);\r\n this.activePointerId = e.pointerId;\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) return;\r\n e.preventDefault();\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\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.attachedEl) return;\r\n this.attachedEl.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 }\r\n\r\n private cancel() {\r\n if (this.attachedEl && this.activePointerId !== null) {\r\n this.attachedEl.releasePointerCapture(this.activePointerId);\r\n this.activePointerId = null;\r\n }\r\n }\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 prev = { x: 0, y: 0 };\r\n private lastTime = 0;\r\n private attachedEl: HTMLElement | null = null;\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(element: HTMLElement | Window): () => void {\r\n this.attachedEl = element instanceof HTMLElement ? element : null;\r\n const move = this.onMove.bind(this);\r\n const leave = this.onLeave.bind(this);\r\n\r\n element.addEventListener('pointermove', move, { passive: false });\r\n element.addEventListener('pointerleave', leave);\r\n\r\n return () => {\r\n element.removeEventListener('pointermove', move);\r\n element.removeEventListener('pointerleave', leave);\r\n };\r\n }\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 rect = this.attachedEl?.getBoundingClientRect() ?? {\r\n left: 0,\r\n 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 attachedEl: HTMLElement | null = null;\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(element: HTMLElement | Window): () => void {\r\n this.attachedEl = element instanceof HTMLElement ? element : null;\r\n const scroll = this.onScroll.bind(this);\r\n\r\n element.addEventListener('scroll', scroll, { passive: true });\r\n\r\n return () => {\r\n element.removeEventListener('scroll', scroll);\r\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\r\n };\r\n }\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 x = this.attachedEl ? this.attachedEl.scrollLeft : window.scrollX;\r\n const y = this.attachedEl ? this.attachedEl.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 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(element: HTMLElement | Window): () => void {\r\n const wheel = this.onWheel.bind(this);\r\n element.addEventListener('wheel', wheel, { passive: false });\r\n\r\n return () => {\r\n element.removeEventListener('wheel', wheel);\r\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\r\n };\r\n }\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 { useRef, useEffect, DependencyList } from 'react';\r\n\r\ntype DimensionType = {\r\n width: number;\r\n height: number;\r\n innerWidth: number;\r\n innerHeight: number;\r\n};\r\n\r\nexport function useDimension(\r\n callback: (event: DimensionType) => void,\r\n deps: DependencyList = []\r\n) {\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 const handle = () => {\r\n const root = document.documentElement;\r\n const { clientWidth: width, clientHeight: height } = root;\r\n const { innerWidth, innerHeight } = window;\r\n cbRef.current({ width, height, innerWidth, innerHeight });\r\n };\r\n\r\n const observer = new ResizeObserver(handle);\r\n observer.observe(document.documentElement);\r\n\r\n window.addEventListener('resize', handle);\r\n\r\n handle();\r\n\r\n return () => {\r\n observer.disconnect();\r\n window.removeEventListener('resize', handle);\r\n };\r\n }, []);\r\n}\r\n","import { RefObject, useEffect } from 'react';\r\n\r\nimport {\r\n type DragConfig,\r\n type DragEvent,\r\n DragGesture,\r\n} from '../controllers/DragGesture';\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 useEffect(() => {\r\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\r\n const cleanups = list\r\n .map((r, i) => {\r\n if (!r.current) return null;\r\n const g = new DragGesture(config);\r\n const handler = (e: DragEvent) => onDrag({ ...e, index: i });\r\n g.onChange(handler).onEnd(handler);\r\n return g.attach(r.current);\r\n })\r\n .filter((fn): fn is () => void => !!fn);\r\n\r\n return () => {\r\n cleanups.forEach((fn) => fn());\r\n };\r\n }, [\r\n ...(Array.isArray(refs) ? refs.map((r) => r.current) : [refs.current]),\r\n onDrag,\r\n config,\r\n ]);\r\n}\r\n","import { useRef, useEffect, RefObject, DependencyList } from 'react';\r\n\r\ntype MeasurementValue = number | number[];\r\ninterface MeasurementType {\r\n left: MeasurementValue;\r\n top: MeasurementValue;\r\n width: MeasurementValue;\r\n height: MeasurementValue;\r\n vLeft: MeasurementValue;\r\n vTop: MeasurementValue;\r\n}\r\n\r\nexport function useMeasure(\r\n refs: RefObject<HTMLElement>[],\r\n callback: (m: MeasurementType) => void,\r\n deps: DependencyList = []\r\n) {\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 const els = refs\r\n .map((r) => r.current)\r\n .filter((el): el is HTMLElement => el !== null);\r\n\r\n if (els.length === 0) return;\r\n\r\n const observer = new ResizeObserver((entries) => {\r\n const left: number[] = [];\r\n const top: number[] = [];\r\n const width: number[] = [];\r\n const height: number[] = [];\r\n const vLeft: number[] = [];\r\n const vTop: number[] = [];\r\n\r\n els.forEach((el) => {\r\n const entry = entries.find((en) => en.target === el);\r\n if (!entry) {\r\n left.push(0);\r\n top.push(0);\r\n width.push(0);\r\n height.push(0);\r\n vLeft.push(0);\r\n vTop.push(0);\r\n } else {\r\n const {\r\n left: lx,\r\n top: ty,\r\n width: w,\r\n height: h,\r\n } = entry.target.getBoundingClientRect();\r\n const pageX = lx + window.scrollX;\r\n const pageY = ty + window.scrollY;\r\n\r\n left.push(pageX);\r\n top.push(pageY);\r\n width.push(w);\r\n height.push(h);\r\n vLeft.push(lx);\r\n vTop.push(ty);\r\n }\r\n });\r\n\r\n cbRef.current({ left, top, width, height, vLeft, vTop });\r\n });\r\n\r\n els.forEach((el) => observer.observe(el));\r\n\r\n return () => {\r\n observer.disconnect();\r\n };\r\n }, [refs]);\r\n}\r\n","import { useLayoutEffect, useState } from 'react';\r\nimport { MotionValue } from '@raidipesh78/re-motion';\r\n\r\nimport { useValue } from './useValue';\r\nimport { isDescriptor } from './helpers';\r\nimport { withSpring } from './descriptors';\r\nimport type { Primitive, Descriptor } from './types';\r\n\r\ntype ConfigSingle<T extends Primitive> = {\r\n from?: T;\r\n enter?: T | Descriptor;\r\n exit?: T | Descriptor;\r\n};\r\n\r\ntype 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","import { RefObject, useEffect } from 'react';\r\n\r\nimport { type MoveEvent, MoveGesture } from '../controllers/MoveGesture';\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<T extends HTMLElement>(refs: any, onMove: any): void {\r\n if (refs === window) {\r\n useEffect(() => {\r\n const g = new MoveGesture();\r\n const handler = (e: MoveEvent) => onMove({ ...e, index: 0 });\r\n g.onChange(handler).onEnd(handler);\r\n const cleanup = g.attach(window);\r\n return cleanup;\r\n }, [onMove]);\r\n return;\r\n }\r\n\r\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\r\n\r\n useEffect(() => {\r\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\r\n const cleanups = list\r\n .map((r, i) => {\r\n if (!r.current) return null;\r\n const g = new MoveGesture();\r\n const handler = (e: MoveEvent) => onMove({ ...e, index: i });\r\n g.onChange(handler).onEnd(handler);\r\n return g.attach(r.current);\r\n })\r\n .filter((fn): fn is () => void => !!fn);\r\n\r\n return () => {\r\n cleanups.forEach((fn) => fn());\r\n };\r\n }, [...list.map((r) => r.current), 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, useEffect } from 'react';\r\n\r\nimport { type ScrollEvent, ScrollGesture } from '../controllers/ScrollGesture';\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<T extends HTMLElement>(\r\n refs: any,\r\n onScroll: any\r\n): void {\r\n if (refs === window) {\r\n useEffect(() => {\r\n const g = new ScrollGesture();\r\n const handler = (e: ScrollEvent) => onScroll({ ...e, index: 0 });\r\n g.onChange(handler).onEnd(handler);\r\n const cleanup = g.attach(window);\r\n return cleanup;\r\n }, [onScroll]);\r\n return;\r\n }\r\n\r\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\r\n\r\n useEffect(() => {\r\n const cleanups = list\r\n .map((r, i) => {\r\n if (!r.current) return null;\r\n const g = new ScrollGesture();\r\n const handler = (e: ScrollEvent) => onScroll({ ...e, index: i });\r\n g.onChange(handler).onEnd(handler);\r\n return g.attach(r.current);\r\n })\r\n .filter((fn): fn is () => void => !!fn);\r\n\r\n return () => {\r\n cleanups.forEach((fn) => fn());\r\n };\r\n }, [...list.map((r) => r.current), onScroll]);\r\n}\r\n","import { RefObject, useEffect } from 'react';\r\n\r\nimport { type WheelEvent, WheelGesture } from '../controllers/WheelGesture';\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<T extends HTMLElement>(refs: any, onWheel: any): void {\r\n if (refs === window) {\r\n useEffect(() => {\r\n const g = new WheelGesture();\r\n const handler = (e: WheelEvent) => onWheel({ ...e, index: 0 });\r\n g.onChange(handler).onEnd(handler);\r\n const cleanup = g.attach(window);\r\n return cleanup;\r\n }, [onWheel]);\r\n return;\r\n }\r\n\r\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\r\n\r\n useEffect(() => {\r\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\r\n const cleanups = list\r\n .map((r, i) => {\r\n if (!r.current) return null;\r\n const g = new WheelGesture();\r\n const handler = (e: WheelEvent) => onWheel({ ...e, index: i });\r\n g.onChange(handler).onEnd(handler);\r\n return g.attach(r.current);\r\n })\r\n .filter((fn): fn is () => void => !!fn);\r\n\r\n return () => {\r\n cleanups.forEach((fn) => fn());\r\n };\r\n }, [...list.map((r) => r.current), 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","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","AnimationConfig","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","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","fn","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","config","_this","prev","y","lastTime","movement","offset","activePointerId","attachedEl","pointerDownPos","thresholdPassed","__extends","element","down","onDown","bind","move","onMove","up","onUp","addEventListener","passive","window","removeEventListener","e","button","setPointerCapture","pointerId","clientX","clientY","timeStamp","preventDefault","threshold","dxTotal","dyTotal","hypot","dt","rawX","rawY","moveRaw","axis","releasePointerCapture","MoveGesture","startPos","HTMLElement","leave","onLeave","now","dx","dy","rect","getBoundingClientRect","left","top","rawVx","rawVy","ScrollGesture","prevScroll","scroll","onScroll","endTimeout","clearTimeout","Date","scrollLeft","scrollX","scrollTop","scrollY","setTimeout","WheelGesture","wheel","onWheel","deltaX","deltaY","bool","perc","val1","val2","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","callback","deps","cbRef","useRef","useEffect","current","handle","root","document","documentElement","width","clientWidth","height","clientHeight","innerWidth","innerHeight","observer","ResizeObserver","observe","disconnect","refs","onDrag","cleanups","handler","index","els","el","vLeft","vTop","entry","find","en","target","lx","ty","w","pageX","pageY","push","isOpen","useState","mounted","setMounted","from","enter","exit","values","setValues","useLayoutEffect","queueMicrotask","JSON","stringify","list","ref","onClick","isConnected","contains","ms"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/animation/helpers.ts","../src/animation/drivers.ts","../src/animation/useValue.ts","../src/animation/AnimationConfig.ts","../src/animation/descriptors.ts","../src/animation/to.ts","../src/utils/index.ts","../src/gestures/controllers/Gesture.ts","../src/gestures/controllers/DragGesture.ts","../src/gestures/controllers/MoveGesture.ts","../src/gestures/controllers/ScrollGesture.ts","../src/gestures/controllers/WheelGesture.ts","../src/hooks/useDimension.ts","../src/gestures/hooks/useDrag.ts","../src/hooks/useMeasure.ts","../src/animation/useMount.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';\n\nexport function filterCallbackOptions(\n options: Record<string, any> = {},\n attach: boolean\n) {\n if (attach) return options;\n const { onStart, onChange, onComplete, ...rest } = options;\n return rest;\n}\n\nexport function isDescriptor(x: unknown): x is Descriptor {\n return (\n typeof x === 'object' &&\n x !== null &&\n 'type' in x &&\n typeof (x as any).type === 'string'\n );\n}\n","import {\n decay,\n MotionValue,\n spring,\n timing,\n parallel,\n delay,\n} from '@raidipesh78/re-motion';\n\nimport { filterCallbackOptions } from './helpers';\nimport type { Primitive, Descriptor } from './types';\n\nexport function buildAnimation(\n mv: MotionValue<Primitive>,\n { type, to, options = {} }: Descriptor\n) {\n switch (type) {\n case 'spring':\n return spring(mv, to as Primitive, options);\n case 'timing':\n return timing(mv, to as Primitive, options);\n case 'decay':\n return decay(mv as MotionValue<number>, options.velocity ?? 0, options);\n case 'delay':\n return delay(options.delay ?? 0);\n default:\n console.warn(`Unsupported animation type: ${type}`);\n return { start() {}, pause() {}, resume() {}, cancel() {}, reset() {} };\n }\n}\n\nexport function buildParallel(\n mvMap: Record<string, MotionValue<Primitive>>,\n step: Descriptor\n) {\n const entries = Object.entries(mvMap).filter(([key]) => {\n return (\n step.type === 'decay' ||\n step.type === 'delay' ||\n (step.to as Record<string, Primitive>)[key] !== undefined\n );\n });\n\n const ctrls = entries.map(([key, mv], idx) =>\n buildAnimation(mv, {\n type: step.type,\n to:\n step.type === 'decay' || step.type === 'delay'\n ? (step.to as any)\n : (step.to as Record<string, Primitive>)[key],\n options: filterCallbackOptions(step.options, idx === 0),\n })\n );\n\n return parallel(ctrls);\n}\n","import { useMemo } from 'react';\nimport { delay, sequence, loop, MotionValue } from '@raidipesh78/re-motion';\n\nimport { buildAnimation, buildParallel } from './drivers';\nimport { filterCallbackOptions, isDescriptor } from './helpers';\nimport type { Primitive, Descriptor } from './types';\n\ntype Widen<T> = T extends number ? number : T extends string ? string : T;\n\ntype ValueReturn<T> = T extends Primitive\n ? MotionValue<Widen<T>>\n : T extends Primitive[]\n ? MotionValue<Widen<Primitive>>[]\n : { [K in keyof T]: MotionValue<Widen<T[K]>> };\n\ntype Base = Primitive | Primitive[] | Record<string, Primitive>;\n\nexport function useValue<T extends Base>(\n initial: T\n): [ValueReturn<T>, (to: Base | Descriptor) => void] {\n const value = useMemo(() => {\n if (Array.isArray(initial)) {\n return initial.map((v) => new MotionValue(v));\n }\n\n if (typeof initial === 'object') {\n return Object.fromEntries(\n Object.entries(initial).map(([k, v]) => [k, new MotionValue(v)])\n );\n }\n\n return new MotionValue(initial);\n }, []) as ValueReturn<T>;\n\n function set(to: Base | Descriptor) {\n let ctrl: any = null;\n\n if (Array.isArray(initial)) {\n ctrl = handleArray(\n value as Array<MotionValue<Primitive>>,\n to as Primitive[] | Descriptor\n );\n } else if (typeof initial === 'object') {\n ctrl = handleObject(\n value as Record<string, MotionValue<Primitive>>,\n to as Record<string, Primitive> | Descriptor\n );\n } else {\n ctrl = handlePrimitive(\n value as MotionValue<Primitive>,\n to as Primitive | Descriptor\n );\n }\n\n if (ctrl) ctrl.start();\n }\n\n return [value, set] as const;\n}\n\nfunction handlePrimitive(\n mv: MotionValue<Primitive>,\n to: Primitive | Descriptor\n) {\n if (typeof to === 'number' || typeof to === 'string') {\n mv.set(to);\n return;\n }\n\n if (to.type === 'sequence') {\n const animations = to.options?.animations ?? [];\n const ctrls = animations.map((step) => buildAnimation(mv, step));\n return sequence(ctrls, to.options);\n }\n\n if (to.type === 'loop') {\n const animation = to.options?.animation;\n if (!animation) return;\n\n if (animation.type === 'sequence') {\n const animations = animation.options?.animations ?? [];\n const ctrls = animations.map((step) => buildAnimation(mv, step));\n return loop(sequence(ctrls), to.options?.iterations ?? 0, to.options);\n }\n\n return loop(\n buildAnimation(mv, animation),\n to.options?.iterations ?? 0,\n to.options\n );\n }\n\n return buildAnimation(mv, to);\n}\n\nfunction handleArray(\n mvs: Array<MotionValue<Primitive>>,\n to: Primitive[] | Descriptor\n) {\n if (!isDescriptor(to)) {\n (to as Primitive[]).forEach((val, i) => {\n mvs[i]?.set(val);\n });\n return null;\n }\n\n const desc = to as Descriptor;\n\n const mvsRecord = Object.fromEntries(\n mvs.map((mv, idx) => [idx.toString(), mv])\n ) as Record<string, MotionValue<Primitive>>;\n\n switch (desc.type) {\n case 'sequence': {\n const ctrls = desc.options!.animations!.map((step) =>\n step.type === 'delay'\n ? delay(step.options?.delay ?? 0)\n : buildParallel(mvsRecord, {\n ...step,\n to: Array.isArray(step.to)\n ? Object.fromEntries(\n (step.to as Primitive[]).map((v, i) => [i.toString(), v])\n )\n : step.to,\n })\n );\n\n return sequence(ctrls, desc.options);\n }\n\n case 'loop': {\n const inner = desc.options!.animation!;\n\n if (inner.type === 'sequence') {\n const seqCtrls = inner.options!.animations!.map((step) =>\n buildParallel(mvsRecord, {\n ...step,\n to: Array.isArray(step.to)\n ? Object.fromEntries(\n (step.to as Primitive[]).map((v, i) => [i.toString(), v])\n )\n : step.to,\n })\n );\n\n const seq = sequence(\n seqCtrls,\n filterCallbackOptions(inner.options, true)\n );\n\n return loop(\n seq,\n desc.options!.iterations ?? 0,\n filterCallbackOptions(desc.options, true)\n );\n }\n\n const par = buildParallel(mvsRecord, inner);\n return loop(\n par,\n desc.options!.iterations ?? 0,\n filterCallbackOptions(desc.options, true)\n );\n }\n\n case 'decay':\n return buildParallel(mvsRecord, desc);\n\n default:\n return buildParallel(mvsRecord, desc);\n }\n}\n\nfunction handleObject(\n mvs: Record<string, MotionValue<Primitive>>,\n to: Record<string, Primitive> | Descriptor\n) {\n if (isDescriptor(to)) {\n switch (to.type) {\n case 'sequence': {\n const ctrls = to.options!.animations!.map((step) =>\n step.type === 'delay'\n ? delay(step.options!.delay ?? 0)\n : buildParallel(mvs, step)\n );\n return sequence(ctrls, to.options);\n }\n\n case 'loop': {\n const inner = to.options!.animation!;\n if (inner.type === 'sequence') {\n const ctrls = inner.options!.animations!.map((s) =>\n buildParallel(mvs, s)\n );\n return loop(\n sequence(ctrls, filterCallbackOptions(inner.options, true)),\n to.options!.iterations ?? 0,\n filterCallbackOptions(to.options, true)\n );\n }\n return loop(\n buildParallel(mvs, inner),\n to.options!.iterations ?? 0,\n filterCallbackOptions(to.options, true)\n );\n }\n\n case 'decay':\n return buildParallel(mvs, to);\n\n default:\n return buildParallel(mvs, to);\n }\n }\n\n Object.entries(to).forEach(([k, v]) => {\n mvs[k]?.set(v);\n });\n\n return null;\n}\n","import { Easing } from '@raidipesh78/re-motion';\n\nexport const AnimationConfig = {\n Timing: {\n BOUNCE: { duration: 500, easing: Easing.bounce },\n EASE_IN: { duration: 500, easing: Easing.in(Easing.ease) },\n EASE_OUT: { duration: 500, easing: Easing.out(Easing.ease) },\n EASE_IN_OUT: { duration: 500, easing: Easing.inOut(Easing.ease) },\n POWER1: { duration: 500, easing: Easing.bezier(0.17, 0.42, 0.51, 0.97) },\n POWER2: { duration: 500, easing: Easing.bezier(0.07, 0.11, 0.13, 1) },\n POWER3: { duration: 500, easing: Easing.bezier(0.09, 0.7, 0.16, 1.04) },\n POWER4: { duration: 500, easing: Easing.bezier(0.05, 0.54, 0, 1.03) },\n LINEAR: { duration: 500, easing: Easing.linear },\n },\n Spring: {\n ELASTIC: { mass: 1, damping: 18, stiffness: 250 },\n EASE: { mass: 1, damping: 20, stiffness: 158 },\n STIFF: { mass: 1, damping: 18, stiffness: 350 },\n WOBBLE: { mass: 1, damping: 8, stiffness: 250 },\n },\n};\n","import { AnimationConfig } from './AnimationConfig';\nimport {\n Callbacks,\n DecayOptions,\n Descriptor,\n SpringOptions,\n TimingOptions,\n} from './types';\n\nexport const withSpring = (\n to: Descriptor['to'],\n opts?: SpringOptions & Callbacks\n): Descriptor => ({\n type: 'spring',\n to,\n options: {\n stiffness: opts?.stiffness ?? AnimationConfig.Spring.EASE.stiffness,\n damping: opts?.damping ?? AnimationConfig.Spring.EASE.damping,\n mass: opts?.mass ?? AnimationConfig.Spring.EASE.mass,\n onStart: opts?.onStart,\n onChange: opts?.onChange,\n onComplete: opts?.onComplete,\n },\n});\n\nexport const withTiming = (\n to: Descriptor['to'],\n opts?: TimingOptions & Callbacks\n): Descriptor => ({\n type: 'timing',\n to,\n options: {\n duration: opts?.duration,\n easing: opts?.easing,\n onStart: opts?.onStart,\n onChange: opts?.onChange,\n onComplete: opts?.onComplete,\n },\n});\n\nexport const withDecay = (\n velocity: number,\n opts?: DecayOptions & Callbacks\n): Descriptor => ({\n type: 'decay',\n options: {\n velocity,\n onStart: opts?.onStart,\n onChange: opts?.onChange,\n onComplete: opts?.onComplete,\n },\n});\n\nexport const withDelay = (ms: number): Descriptor => ({\n type: 'delay',\n options: { delay: ms },\n});\n\nexport const withSequence = (\n animations: Descriptor[],\n opts?: Omit<Callbacks, 'onChange'>\n): Descriptor => ({\n type: 'sequence',\n options: {\n animations,\n onStart: opts?.onStart,\n onComplete: opts?.onComplete,\n },\n});\n\nexport const withLoop = (\n animation: Descriptor,\n iterations = Infinity,\n opts?: Omit<Callbacks, 'onChange'>\n): Descriptor => ({\n type: 'loop',\n options: {\n animation,\n iterations,\n onStart: opts?.onStart,\n onComplete: opts?.onComplete,\n },\n});\n","const namedColors: Record<string, string> = {\n transparent: '#00000000',\n aliceblue: '#f0f8ffff',\n antiquewhite: '#faebd7ff',\n aqua: '#00ffffff',\n aquamarine: '#7fffd4ff',\n azure: '#f0ffffff',\n beige: '#f5f5dcff',\n bisque: '#ffe4c4ff',\n black: '#000000ff',\n blanchedalmond: '#ffebcdff',\n blue: '#0000ffff',\n blueviolet: '#8a2be2ff',\n brown: '#a52a2aff',\n burlywood: '#deb887ff',\n burntsienna: '#ea7e5dff',\n cadetblue: '#5f9ea0ff',\n chartreuse: '#7fff00ff',\n chocolate: '#d2691eff',\n coral: '#ff7f50ff',\n cornflowerblue: '#6495edff',\n cornsilk: '#fff8dcff',\n crimson: '#dc143cff',\n cyan: '#00ffffff',\n darkblue: '#00008bff',\n darkcyan: '#008b8bff',\n darkgoldenrod: '#b8860bff',\n darkgray: '#a9a9a9ff',\n darkgreen: '#006400ff',\n darkgrey: '#a9a9a9ff',\n darkkhaki: '#bdb76bff',\n darkmagenta: '#8b008bff',\n darkolivegreen: '#556b2fff',\n darkorange: '#ff8c00ff',\n darkorchid: '#9932ccff',\n darkred: '#8b0000ff',\n darksalmon: '#e9967aff',\n darkseagreen: '#8fbc8fff',\n darkslateblue: '#483d8bff',\n darkslategray: '#2f4f4fff',\n darkslategrey: '#2f4f4fff',\n darkturquoise: '#00ced1ff',\n darkviolet: '#9400d3ff',\n deeppink: '#ff1493ff',\n deepskyblue: '#00bfffff',\n dimgray: '#696969ff',\n dimgrey: '#696969ff',\n dodgerblue: '#1e90ffff',\n firebrick: '#b22222ff',\n floralwhite: '#fffaf0ff',\n forestgreen: '#228b22ff',\n fuchsia: '#ff00ffff',\n gainsboro: '#dcdcdcff',\n ghostwhite: '#f8f8ffff',\n gold: '#ffd700ff',\n goldenrod: '#daa520ff',\n gray: '#808080ff',\n green: '#008000ff',\n greenyellow: '#adff2fff',\n grey: '#808080ff',\n honeydew: '#f0fff0ff',\n hotpink: '#ff69b4ff',\n indianred: '#cd5c5cff',\n indigo: '#4b0082ff',\n ivory: '#fffff0ff',\n khaki: '#f0e68cff',\n lavender: '#e6e6faff',\n lavenderblush: '#fff0f5ff',\n lawngreen: '#7cfc00ff',\n lemonchiffon: '#fffacdff',\n lightblue: '#add8e6ff',\n lightcoral: '#f08080ff',\n lightcyan: '#e0ffffff',\n lightgoldenrodyellow: '#fafad2ff',\n lightgray: '#d3d3d3ff',\n lightgreen: '#90ee90ff',\n lightgrey: '#d3d3d3ff',\n lightpink: '#ffb6c1ff',\n lightsalmon: '#ffa07aff',\n lightseagreen: '#20b2aaff',\n lightskyblue: '#87cefaff',\n lightslategray: '#778899ff',\n lightslategrey: '#778899ff',\n lightsteelblue: '#b0c4deff',\n lightyellow: '#ffffe0ff',\n lime: '#00ff00ff',\n limegreen: '#32cd32ff',\n linen: '#faf0e6ff',\n magenta: '#ff00ffff',\n maroon: '#800000ff',\n mediumaquamarine: '#66cdaaff',\n mediumblue: '#0000cdff',\n mediumorchid: '#ba55d3ff',\n mediumpurple: '#9370dbff',\n mediumseagreen: '#3cb371ff',\n mediumslateblue: '#7b68eeff',\n mediumspringgreen: '#00fa9aff',\n mediumturquoise: '#48d1ccff',\n mediumvioletred: '#c71585ff',\n midnightblue: '#191970ff',\n mintcream: '#f5fffaff',\n mistyrose: '#ffe4e1ff',\n moccasin: '#ffe4b5ff',\n navajowhite: '#ffdeadff',\n navy: '#000080ff',\n oldlace: '#fdf5e6ff',\n olive: '#808000ff',\n olivedrab: '#6b8e23ff',\n orange: '#ffa500ff',\n orangered: '#ff4500ff',\n orchid: '#da70d6ff',\n palegoldenrod: '#eee8aaff',\n palegreen: '#98fb98ff',\n paleturquoise: '#afeeeeff',\n palevioletred: '#db7093ff',\n papayawhip: '#ffefd5ff',\n peachpuff: '#ffdab9ff',\n peru: '#cd853fff',\n pink: '#ffc0cbff',\n plum: '#dda0ddff',\n powderblue: '#b0e0e6ff',\n purple: '#800080ff',\n rebeccapurple: '#663399ff',\n red: '#ff0000ff',\n rosybrown: '#bc8f8fff',\n royalblue: '#4169e1ff',\n saddlebrown: '#8b4513ff',\n salmon: '#fa8072ff',\n sandybrown: '#f4a460ff',\n seagreen: '#2e8b57ff',\n seashell: '#fff5eeff',\n sienna: '#a0522dff',\n silver: '#c0c0c0ff',\n skyblue: '#87ceebff',\n slateblue: '#6a5acdff',\n slategray: '#708090ff',\n slategrey: '#708090ff',\n snow: '#fffafaff',\n springgreen: '#00ff7fff',\n steelblue: '#4682b4ff',\n tan: '#d2b48cff',\n teal: '#008080ff',\n thistle: '#d8bfd8ff',\n tomato: '#ff6347ff',\n turquoise: '#40e0d0ff',\n violet: '#ee82eeff',\n wheat: '#f5deb3ff',\n white: '#ffffffff',\n whitesmoke: '#f5f5f5ff',\n yellow: '#ffff00ff',\n yellowgreen: '#9acd32ff',\n};\n\nconst numberRE = /-?\\d+(\\.\\d+)?/g;\nconst HEX_RE = /^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;\nconst RGB_RE =\n /^rgba?\\(\\s*-?\\d+(\\.\\d+)?%?(?:\\s*,\\s*-?\\d+(\\.\\d+)?%?){2}(?:\\s*,\\s*(0|1|0?\\.\\d+))?\\s*\\)$/i;\nconst HSL_RE =\n /^hsla?\\(\\s*\\d+(\\.\\d+)?(?:\\s*,\\s*\\d+(\\.\\d+)?%){2}(?:\\s*,\\s*(0|1|0?\\.\\d+))?\\s*\\)$/i;\n\nfunction isCssColorLiteral(s: string): boolean {\n const c = s.trim().toLowerCase();\n return (\n HEX_RE.test(c) ||\n RGB_RE.test(c) ||\n HSL_RE.test(c) ||\n namedColors[c] !== undefined\n );\n}\n\nfunction parseCssColor(c: string): [number, number, number, number] {\n let color = c.trim().toLowerCase();\n if (namedColors[color]) color = namedColors[color];\n\n if (HEX_RE.test(color)) {\n let hex = color.slice(1);\n if (hex.length === 3)\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n else if (hex.length === 4)\n hex =\n hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\n const hasA = hex.length === 8;\n const v = parseInt(hex, 16);\n const r = (v >> (hasA ? 24 : 16)) & 0xff;\n const g = (v >> (hasA ? 16 : 8)) & 0xff;\n const b = (v >> (hasA ? 8 : 0)) & 0xff;\n const a = hasA ? (v & 0xff) / 255 : 1;\n return [r, g, b, a];\n }\n\n if (RGB_RE.test(color)) {\n const nums = [...color.matchAll(numberRE)].map((m) => +m[0]);\n const [r, g, b, a = 1] = nums;\n return [r, g, b, a];\n }\n\n if (HSL_RE.test(color)) {\n const nums = [...color.matchAll(numberRE)].map((m) => +m[0]);\n let [h, s, l, a = 1] = nums;\n s /= 100;\n l /= 100;\n const c_ = (1 - Math.abs(2 * l - 1)) * s;\n const x = c_ * (1 - Math.abs(((h / 60) % 2) - 1));\n const m_ = l - c_ / 2;\n let [r1, g1, b1] = [0, 0, 0];\n if (h < 60) [r1, g1, b1] = [c_, x, 0];\n else if (h < 120) [r1, g1, b1] = [x, c_, 0];\n else if (h < 180) [r1, g1, b1] = [0, c_, x];\n else if (h < 240) [r1, g1, b1] = [0, x, c_];\n else if (h < 300) [r1, g1, b1] = [x, 0, c_];\n else [r1, g1, b1] = [c_, 0, x];\n return [\n Math.round((r1 + m_) * 255),\n Math.round((g1 + m_) * 255),\n Math.round((b1 + m_) * 255),\n a,\n ];\n }\n\n throw new Error(`Unrecognized CSS color: ${c}`);\n}\n\ntype ExtrapolateType = 'identity' | 'extend' | 'clamp';\n\ninterface ExtrapolateConfig {\n extrapolate?: ExtrapolateType;\n extrapolateRight?: ExtrapolateType;\n extrapolateLeft?: ExtrapolateType;\n easing?: (t: number) => number;\n}\n\nfunction interpolateString(fromStr: string, toStr: string, p: number): string {\n const funcRegex = /^([a-zA-Z$_][\\w$]*)\\((-?\\d*\\.?\\d+)([a-zA-Z%]*)\\)$/;\n const m1 = fromStr.match(funcRegex);\n const m2 = toStr.match(funcRegex);\n if (m1 && m2 && m1[1] === m2[1] && m1[3] === m2[3]) {\n const name = m1[1];\n const fromN = parseFloat(m1[2]);\n const toN = parseFloat(m2[2]);\n const unit = m1[3];\n const val = fromN + (toN - fromN) * p;\n return `${name}(${val.toFixed(3)}${unit})`;\n }\n\n if (isCssColorLiteral(fromStr) && isCssColorLiteral(toStr)) {\n const c1 = parseCssColor(fromStr);\n const c2 = parseCssColor(toStr);\n const [r1, g1, b1, a1] = c1;\n const [r2, g2, b2, a2] = c2;\n const R = Math.round(r1 + (r2 - r1) * p);\n const G = Math.round(g1 + (g2 - g1) * p);\n const B = Math.round(b1 + (b2 - b1) * p);\n const A = a1 + (a2 - a1) * p;\n return A < 1\n ? `rgba(${R},${G},${B},${A.toFixed(3)})`\n : `rgb(${R},${G},${B})`;\n }\n\n const fromParts = fromStr.split(/(\\s+)/);\n const toParts = toStr.split(/(\\s+)/);\n if (fromParts.length !== toParts.length) {\n throw new Error(\n `interpolate: template mismatch:\\n \"${fromStr}\"\\n vs \"${toStr}\"`\n );\n }\n const numUnitRE = /^(-?\\d+(\\.\\d+)?)([a-zA-Z%]*)$/;\n const mappers = fromParts.map((fp, i) => {\n const tp = toParts[i];\n\n if (fp === tp && /\\s+/.test(fp)) return () => fp;\n\n const n1 = fp.match(numUnitRE);\n const n2 = tp.match(numUnitRE);\n\n if (n1 && n2 && n1[3] === n2[3]) {\n const fromN = parseFloat(n1[1]);\n const toN = parseFloat(n2[1]);\n const unit = n1[3];\n\n return () => {\n const val = fromN + (toN - fromN) * p;\n return `${val.toFixed(3)}${unit}`;\n };\n }\n\n if (isCssColorLiteral(fp) && isCssColorLiteral(tp)) {\n return () => interpolateString(fp, tp, p);\n }\n\n if (fp === tp) return () => fp;\n\n throw new Error(\n `interpolate: cannot interpolate tokens \"${fp}\" vs \"${tp}\"`\n );\n });\n return mappers.map((fn) => fn()).join('');\n}\n\nexport function to(\n input: number,\n inRange: number[],\n outRange: (number | string)[],\n config?: ExtrapolateConfig\n): number | string {\n const len = inRange.length;\n if (len < 2 || outRange.length !== len) {\n throw new Error(\n 'interpolate: inRange and outRange must be arrays of the same length >= 2'\n );\n }\n\n const extrapolateLeft: ExtrapolateType =\n config?.extrapolateLeft ?? config?.extrapolate ?? 'extend';\n const extrapolateRight: ExtrapolateType =\n config?.extrapolateRight ?? config?.extrapolate ?? 'extend';\n\n const mapValue = (tRaw: number): number | string => {\n let t = tRaw;\n if (tRaw < inRange[0] && extrapolateLeft === 'clamp') {\n t = inRange[0];\n } else if (tRaw > inRange[len - 1] && extrapolateRight === 'clamp') {\n t = inRange[len - 1];\n }\n\n let i = 0;\n if (t <= inRange[0]) {\n i = 0;\n } else if (t >= inRange[len - 1]) {\n i = len - 2;\n } else {\n for (let j = 0; j < len - 1; j++) {\n if (t >= inRange[j] && t <= inRange[j + 1]) {\n i = j;\n break;\n }\n }\n }\n\n const t0 = inRange[i];\n const t1 = inRange[i + 1];\n let p = (t - t0) / (t1 - t0);\n\n if (config?.easing) p = config.easing(p);\n\n const fromOut = outRange[i];\n const toOut = outRange[i + 1];\n\n if (typeof fromOut === 'number' && typeof toOut === 'number') {\n return fromOut + (toOut - fromOut) * p;\n }\n\n return interpolateString(String(fromOut), String(toOut), p);\n };\n\n return mapValue(input);\n}\n","export function bin(bool: boolean) {\n return bool ? 1 : 0;\n}\n\nexport function mix(perc: number, val1: number, val2: number) {\n return val1 * (1 - perc) + val2 * perc;\n}\n\nexport function clamp(value: number, lowerbound: number, upperbound: number) {\n return Math.min(Math.max(value, lowerbound), upperbound);\n}\n\nfunction rubber2(distanceFromEdge: number, constant: number) {\n return Math.pow(distanceFromEdge, constant * 5);\n}\n\nfunction rubber(distanceFromEdge: number, dimension: number, constant: number) {\n if (dimension === 0 || Math.abs(dimension) === Infinity)\n return rubber2(distanceFromEdge, constant);\n return (\n (distanceFromEdge * dimension * constant) /\n (dimension + constant * distanceFromEdge)\n );\n}\n\nexport function rubberClamp(\n value: number,\n lowerbound: number,\n upperbound: number,\n constant: number = 0.15\n) {\n if (constant === 0) return clamp(value, lowerbound, upperbound);\n\n if (value < lowerbound) {\n return (\n -rubber(lowerbound - value, upperbound - lowerbound, constant) +\n lowerbound\n );\n }\n\n if (value > upperbound) {\n return (\n +rubber(value - upperbound, upperbound - lowerbound, constant) +\n upperbound\n );\n }\n\n return value;\n}\n\nexport function snapTo(\n value: number,\n velocity: number,\n snapPoints: Array<number>\n): number {\n const finalValue = value + velocity * 0.2;\n const getDiff = (point: number) => Math.abs(point - finalValue);\n const deltas = snapPoints.map(getDiff);\n const minDelta = Math.min(...deltas);\n\n return snapPoints.reduce(function (acc, point) {\n if (getDiff(point) === minDelta) {\n return point;\n } else {\n return acc;\n }\n });\n}\n\nexport function move(array: Array<any>, moveIndex: number, toIndex: number) {\n const item = array[moveIndex];\n const length = array.length;\n const diff = moveIndex - toIndex;\n\n if (diff > 0) {\n return [\n ...array.slice(0, toIndex),\n item,\n ...array.slice(toIndex, moveIndex),\n ...array.slice(moveIndex + 1, length),\n ];\n } else if (diff < 0) {\n const targetIndex = toIndex + 1;\n return [\n ...array.slice(0, moveIndex),\n ...array.slice(moveIndex + 1, targetIndex),\n item,\n ...array.slice(targetIndex, length),\n ];\n }\n return array;\n}\n","type Listener<E> = (event: E) => void;\n\nexport abstract class Gesture<E> {\n public static readonly VELOCITY_LIMIT = 20;\n\n private changeListeners = new Set<Listener<E>>();\n private endListeners = new Set<Listener<E>>();\n\n onChange(listener: Listener<E>): this {\n this.changeListeners.add(listener);\n return this;\n }\n\n onEnd(listener: Listener<E>): this {\n this.endListeners.add(listener);\n return this;\n }\n\n protected emitChange(event: E): void {\n this.changeListeners.forEach((fn) => fn(event));\n }\n\n protected emitEnd(event: E): void {\n this.endListeners.forEach((fn) => fn(event));\n }\n\n abstract attach(element: HTMLElement): () => void;\n}\n","import { clamp } from '../../utils';\nimport { Gesture } from './Gesture';\n\nexport interface DragEvent {\n down: boolean;\n movement: { x: number; y: number };\n offset: { x: number; y: number };\n velocity: { x: number; y: number };\n event: PointerEvent;\n cancel: () => void;\n}\n\nexport interface DragConfig {\n threshold?: number;\n axis?: 'x' | 'y';\n initial?: () => { x: number; y: number };\n}\n\nexport class DragGesture extends Gesture<DragEvent> {\n private config: DragConfig;\n private prev = { x: 0, y: 0 };\n private lastTime = 0;\n\n private movement = { x: 0, y: 0 };\n private velocity = { x: 0, y: 0 };\n private start = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n\n private activePointerId: number | null = null;\n private attachedEl: HTMLElement | null = null;\n private pointerDownPos = { x: 0, y: 0 };\n private thresholdPassed = false;\n\n constructor(config: DragConfig = {}) {\n super();\n this.config = config;\n }\n\n attach(element: HTMLElement): () => void {\n this.attachedEl = element;\n const down = this.onDown.bind(this);\n const move = this.onMove.bind(this);\n const up = this.onUp.bind(this);\n\n element.addEventListener('pointerdown', down, { passive: false });\n window.addEventListener('pointermove', move, { passive: false });\n window.addEventListener('pointerup', up);\n window.addEventListener('pointercancel', up);\n\n return () => {\n element.removeEventListener('pointerdown', down);\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', up);\n window.removeEventListener('pointercancel', up);\n };\n }\n\n private onDown(e: PointerEvent) {\n if (e.button !== 0 || !this.attachedEl) return;\n this.attachedEl.setPointerCapture(e.pointerId);\n this.activePointerId = e.pointerId;\n\n this.start =\n this.thresholdPassed === false && this.start.x === 0 && this.start.y === 0\n ? this.config.initial?.() ?? { x: 0, y: 0 }\n : { ...this.offset };\n this.offset = { ...this.start };\n\n this.pointerDownPos = { x: e.clientX, y: e.clientY };\n this.thresholdPassed = false;\n this.prev = { x: e.clientX, y: e.clientY };\n this.lastTime = e.timeStamp;\n\n this.emitChange({\n down: true,\n movement: { x: 0, y: 0 },\n offset: { ...this.offset },\n velocity: { x: 0, y: 0 },\n event: e,\n cancel: this.cancel.bind(this),\n });\n }\n\n private onMove(e: PointerEvent) {\n if (this.activePointerId !== e.pointerId) return;\n e.preventDefault();\n\n const threshold = this.config.threshold ?? 0;\n if (!this.thresholdPassed) {\n const dxTotal = e.clientX - this.pointerDownPos.x;\n const dyTotal = e.clientY - this.pointerDownPos.y;\n const dist = Math.hypot(dxTotal, dyTotal);\n if (dist < threshold) return;\n this.thresholdPassed = true;\n }\n\n const dt = Math.max((e.timeStamp - this.lastTime) / 1000, 1e-6);\n this.lastTime = e.timeStamp;\n const dx = e.clientX - this.prev.x;\n const dy = e.clientY - this.prev.y;\n const rawX = dx / dt / 1000;\n const rawY = dy / dt / 1000;\n this.velocity = {\n x: clamp(rawX, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n y: clamp(rawY, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n };\n\n const moveRaw = {\n x: e.clientX - this.pointerDownPos.x,\n y: e.clientY - this.pointerDownPos.y,\n };\n this.movement = {\n x: this.config.axis === 'y' ? 0 : moveRaw.x,\n y: this.config.axis === 'x' ? 0 : moveRaw.y,\n };\n\n this.offset = {\n x: this.start.x + this.movement.x,\n y: this.start.y + this.movement.y,\n };\n\n this.prev = { x: e.clientX, y: e.clientY };\n\n this.emitChange({\n down: true,\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: this.cancel.bind(this),\n });\n }\n\n private onUp(e: PointerEvent) {\n if (this.activePointerId !== e.pointerId || !this.attachedEl) return;\n this.attachedEl.releasePointerCapture(e.pointerId);\n\n this.emitEnd({\n down: false,\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: this.cancel.bind(this),\n });\n\n this.activePointerId = null;\n }\n\n private cancel() {\n if (this.attachedEl && this.activePointerId !== null) {\n this.attachedEl.releasePointerCapture(this.activePointerId);\n this.activePointerId = null;\n }\n }\n}\n","import { clamp } from '../../utils';\nimport { Gesture } from './Gesture';\n\nexport interface MoveEvent {\n movement: { x: number; y: number };\n offset: { x: number; y: number };\n velocity: { x: number; y: number };\n event: PointerEvent;\n cancel?: () => void;\n}\n\nexport class MoveGesture extends Gesture<MoveEvent> {\n private prev = { x: 0, y: 0 };\n private lastTime = 0;\n private attachedEl: HTMLElement | null = null;\n\n private movement = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n private velocity = { x: 0, y: 0 };\n private startPos: { x: number; y: number } | null = null;\n\n attach(element: HTMLElement | Window): () => void {\n this.attachedEl = element instanceof HTMLElement ? element : null;\n const move = this.onMove.bind(this);\n const leave = this.onLeave.bind(this);\n\n element.addEventListener('pointermove', move, { passive: false });\n element.addEventListener('pointerleave', leave);\n\n return () => {\n element.removeEventListener('pointermove', move);\n element.removeEventListener('pointerleave', leave);\n };\n }\n\n private onMove(e: PointerEvent) {\n const now = e.timeStamp;\n\n if (this.startPos === null) {\n this.startPos = { x: e.clientX, y: e.clientY };\n this.prev = { x: e.clientX, y: e.clientY };\n this.lastTime = now;\n }\n\n const dt = Math.max((now - this.lastTime) / 1000, 1e-6);\n this.lastTime = now;\n\n const dx = e.clientX - this.prev.x;\n const dy = e.clientY - this.prev.y;\n this.prev = { x: e.clientX, y: e.clientY };\n\n this.movement = {\n x: e.clientX - this.startPos.x,\n y: e.clientY - this.startPos.y,\n };\n\n const rect = this.attachedEl?.getBoundingClientRect() ?? {\n left: 0,\n top: 0,\n };\n this.offset = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n };\n\n const rawVx = dx / dt / 1000;\n const rawVy = dy / dt / 1000;\n this.velocity = {\n x: clamp(rawVx, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n y: clamp(rawVy, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n };\n\n this.emitChange({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => this.onLeave(e),\n });\n }\n\n private onLeave(e: PointerEvent) {\n this.emitEnd({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {},\n });\n }\n}\n","import { clamp } from '../../utils';\nimport { Gesture } from './Gesture';\n\nexport interface ScrollEvent {\n movement: { x: number; y: number };\n offset: { x: number; y: number };\n velocity: { x: number; y: number };\n event: Event;\n cancel?: () => void;\n}\n\nexport class ScrollGesture extends Gesture<ScrollEvent> {\n private attachedEl: HTMLElement | null = null;\n\n private movement = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n private velocity = { x: 0, y: 0 };\n\n private prevScroll = { x: 0, y: 0 };\n private lastTime = 0;\n private endTimeout?: number;\n\n attach(element: HTMLElement | Window): () => void {\n this.attachedEl = element instanceof HTMLElement ? element : null;\n const scroll = this.onScroll.bind(this);\n\n element.addEventListener('scroll', scroll, { passive: true });\n\n return () => {\n element.removeEventListener('scroll', scroll);\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n };\n }\n\n private onScroll(e: Event) {\n const now = Date.now();\n const dt = Math.max((now - this.lastTime) / 1000, 1e-6);\n this.lastTime = now;\n\n const x = this.attachedEl ? this.attachedEl.scrollLeft : window.scrollX;\n const y = this.attachedEl ? this.attachedEl.scrollTop : window.scrollY;\n\n const dx = x - this.prevScroll.x;\n const dy = y - this.prevScroll.y;\n this.prevScroll = { x, y };\n\n this.movement = { x: dx, y: dy };\n this.offset = { x, y };\n\n const rawX = dx / dt / 1000;\n const rawY = dy / dt / 1000;\n this.velocity = {\n x: clamp(rawX, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n y: clamp(rawY, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n };\n\n this.emitChange({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n },\n });\n\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n this.endTimeout = window.setTimeout(() => {\n this.emitEnd({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {},\n });\n }, 150);\n }\n}\n","import { clamp } from '../../utils';\nimport { Gesture } from './Gesture';\n\nexport interface WheelEvent {\n movement: { x: number; y: number };\n offset: { x: number; y: number };\n velocity: { x: number; y: number };\n event: globalThis.WheelEvent;\n cancel?: () => void;\n}\n\nexport class WheelGesture extends Gesture<WheelEvent> {\n private movement = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n private velocity = { x: 0, y: 0 };\n\n private lastTime = 0;\n private endTimeout?: number;\n\n attach(element: HTMLElement | Window): () => void {\n const wheel = this.onWheel.bind(this);\n element.addEventListener('wheel', wheel, { passive: false });\n\n return () => {\n element.removeEventListener('wheel', wheel);\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n };\n }\n\n private onWheel(e: globalThis.WheelEvent) {\n e.preventDefault();\n\n const now = e.timeStamp;\n const dt = Math.max((now - this.lastTime) / 1000, 1e-6);\n this.lastTime = now;\n\n const dx = e.deltaX;\n const dy = e.deltaY;\n\n this.movement = { x: dx, y: dy };\n this.offset.x += dx;\n this.offset.y += dy;\n\n const rawX = dx / dt / 1000;\n const rawY = dy / dt / 1000;\n this.velocity = {\n x: clamp(rawX, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n y: clamp(rawY, -Gesture.VELOCITY_LIMIT, Gesture.VELOCITY_LIMIT),\n };\n\n this.emitChange({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n },\n });\n\n if (this.endTimeout != null) clearTimeout(this.endTimeout);\n this.endTimeout = window.setTimeout(() => {\n this.emitEnd({\n movement: { ...this.movement },\n offset: { ...this.offset },\n velocity: { ...this.velocity },\n event: e,\n cancel: () => {},\n });\n }, 150);\n }\n}\n","import { useRef, useEffect, DependencyList } from 'react';\n\ntype DimensionType = {\n width: number;\n height: number;\n innerWidth: number;\n innerHeight: number;\n};\n\nexport function useDimension(\n callback: (event: DimensionType) => void,\n deps: DependencyList = []\n) {\n const cbRef = useRef(callback);\n\n useEffect(() => {\n cbRef.current = callback;\n }, [callback, ...deps]);\n\n useEffect(() => {\n const handle = () => {\n const root = document.documentElement;\n const { clientWidth: width, clientHeight: height } = root;\n const { innerWidth, innerHeight } = window;\n cbRef.current({ width, height, innerWidth, innerHeight });\n };\n\n const observer = new ResizeObserver(handle);\n observer.observe(document.documentElement);\n\n window.addEventListener('resize', handle);\n\n handle();\n\n return () => {\n observer.disconnect();\n window.removeEventListener('resize', handle);\n };\n }, []);\n}\n","import { RefObject, useEffect } from 'react';\n\nimport {\n type DragConfig,\n type DragEvent,\n DragGesture,\n} from '../controllers/DragGesture';\n\nexport function useDrag<T extends HTMLElement>(\n refs: RefObject<T> | Array<RefObject<T>>,\n onDrag: (e: DragEvent & { index: number }) => void,\n config?: DragConfig\n): void {\n useEffect(() => {\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\n const cleanups = list\n .map((r, i) => {\n if (!r.current) return null;\n const g = new DragGesture(config);\n const handler = (e: DragEvent) => onDrag({ ...e, index: i });\n g.onChange(handler).onEnd(handler);\n return g.attach(r.current);\n })\n .filter((fn): fn is () => void => !!fn);\n\n return () => {\n cleanups.forEach((fn) => fn());\n };\n }, [\n ...(Array.isArray(refs) ? refs.map((r) => r.current) : [refs.current]),\n onDrag,\n config,\n ]);\n}\n","import { useRef, useEffect, RefObject, DependencyList } from 'react';\n\ntype MeasurementValue = number | number[];\ninterface MeasurementType {\n left: MeasurementValue;\n top: MeasurementValue;\n width: MeasurementValue;\n height: MeasurementValue;\n vLeft: MeasurementValue;\n vTop: MeasurementValue;\n}\n\nexport function useMeasure(\n refs: RefObject<HTMLElement>[],\n callback: (m: MeasurementType) => void,\n deps: DependencyList = []\n) {\n const cbRef = useRef(callback);\n\n useEffect(() => {\n cbRef.current = callback;\n }, [callback, ...deps]);\n\n useEffect(() => {\n const els = refs\n .map((r) => r.current)\n .filter((el): el is HTMLElement => el !== null);\n\n if (els.length === 0) return;\n\n const observer = new ResizeObserver((entries) => {\n const left: number[] = [];\n const top: number[] = [];\n const width: number[] = [];\n const height: number[] = [];\n const vLeft: number[] = [];\n const vTop: number[] = [];\n\n els.forEach((el) => {\n const entry = entries.find((en) => en.target === el);\n if (!entry) {\n left.push(0);\n top.push(0);\n width.push(0);\n height.push(0);\n vLeft.push(0);\n vTop.push(0);\n } else {\n const {\n left: lx,\n top: ty,\n width: w,\n height: h,\n } = entry.target.getBoundingClientRect();\n const pageX = lx + window.scrollX;\n const pageY = ty + window.scrollY;\n\n left.push(pageX);\n top.push(pageY);\n width.push(w);\n height.push(h);\n vLeft.push(lx);\n vTop.push(ty);\n }\n });\n\n cbRef.current({ left, top, width, height, vLeft, vTop });\n });\n\n els.forEach((el) => observer.observe(el));\n\n return () => {\n observer.disconnect();\n };\n }, [refs]);\n}\n","import { useLayoutEffect, useState } from 'react';\nimport { MotionValue } from '@raidipesh78/re-motion';\n\nimport { useValue } from './useValue';\nimport { isDescriptor } from './helpers';\nimport { withSpring } from './descriptors';\nimport type { Primitive, Descriptor } from './types';\n\ntype ConfigSingle<T extends Primitive> = {\n from?: T;\n enter?: T | Descriptor;\n exit?: T | Descriptor;\n};\n\ntype ConfigMulti<I extends Record<string, Primitive>> = {\n from: I;\n enter?: I | Descriptor;\n exit?: I | Descriptor;\n};\n\nexport function useMount<T extends Primitive = number>(\n isOpen: boolean,\n config?: ConfigSingle<T>\n): (\n fn: (value: MotionValue<T>, mounted: boolean) => React.ReactNode\n) => React.ReactNode;\n\nexport function useMount<I extends Record<string, Primitive>>(\n isOpen: boolean,\n config: ConfigMulti<I>\n): (\n fn: (\n values: { [K in keyof I]: MotionValue<I[K]> },\n mounted: boolean\n ) => React.ReactNode\n) => React.ReactNode;\n\nexport function useMount(\n isOpen: boolean,\n config: any = {}\n): (fn: (values: any, mounted: boolean) => React.ReactNode) => React.ReactNode {\n const [mounted, setMounted] = useState(isOpen);\n\n const from = config.from ?? 0;\n const enter = config.enter ?? 1;\n const exit = config.exit ?? 0;\n\n const [values, setValues] = useValue(from);\n\n useLayoutEffect(() => {\n if (isOpen) {\n setMounted(true);\n queueMicrotask(() => {\n setValues(isDescriptor(enter) ? enter : withSpring(enter));\n });\n } else {\n queueMicrotask(() => {\n setValues(\n isDescriptor(exit)\n ? {\n ...exit,\n options: {\n ...exit.options,\n onComplete: () => {\n exit.options?.onComplete?.();\n setMounted(false);\n },\n },\n }\n : withSpring(exit, {\n onComplete() {\n setMounted(false);\n },\n })\n );\n });\n }\n }, [isOpen, JSON.stringify(enter), JSON.stringify(exit)]);\n\n return (fn: (vals: any, m: boolean) => React.ReactNode) =>\n fn(values as any, mounted);\n}\n","import { RefObject, useEffect } from 'react';\n\nimport { type MoveEvent, MoveGesture } from '../controllers/MoveGesture';\n\nexport function useMove(\n refs: Window,\n onMove: (e: MoveEvent & { index: 0 }) => void\n): void;\n\nexport function useMove<T extends HTMLElement>(\n refs: RefObject<T> | Array<RefObject<T>>,\n onMove: (e: MoveEvent & { index: number }) => void\n): void;\n\nexport function useMove<T extends HTMLElement>(refs: any, onMove: any): void {\n if (refs === window) {\n useEffect(() => {\n const g = new MoveGesture();\n const handler = (e: MoveEvent) => onMove({ ...e, index: 0 });\n g.onChange(handler).onEnd(handler);\n const cleanup = g.attach(window);\n return cleanup;\n }, [onMove]);\n return;\n }\n\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\n\n useEffect(() => {\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\n const cleanups = list\n .map((r, i) => {\n if (!r.current) return null;\n const g = new MoveGesture();\n const handler = (e: MoveEvent) => onMove({ ...e, index: i });\n g.onChange(handler).onEnd(handler);\n return g.attach(r.current);\n })\n .filter((fn): fn is () => void => !!fn);\n\n return () => {\n cleanups.forEach((fn) => fn());\n };\n }, [...list.map((r) => r.current), onMove]);\n}\n","import { useRef, useEffect, RefObject, DependencyList } from 'react';\n\nexport function useOutsideClick(\n ref: RefObject<HTMLElement>,\n callback: (event: MouseEvent | TouchEvent) => void,\n deps: DependencyList = []\n): void {\n const cbRef = useRef(callback);\n\n useEffect(() => {\n cbRef.current = callback;\n }, [callback, ...deps]);\n\n useEffect(() => {\n function onClick(event: MouseEvent | TouchEvent) {\n const el = ref.current;\n const target = event.target as Node | null;\n\n if (!el || !target || !target.isConnected) return;\n if (!el.contains(target)) {\n cbRef.current(event);\n }\n }\n\n document.addEventListener('mousedown', onClick);\n document.addEventListener('touchstart', onClick);\n\n return () => {\n document.removeEventListener('mousedown', onClick);\n document.removeEventListener('touchstart', onClick);\n };\n }, [ref]);\n}\n","import { RefObject, useEffect } from 'react';\n\nimport { type ScrollEvent, ScrollGesture } from '../controllers/ScrollGesture';\n\nexport function useScroll(\n refs: Window,\n onScroll: (e: ScrollEvent & { index: 0 }) => void\n): void;\n\nexport function useScroll<T extends HTMLElement>(\n refs: RefObject<T> | Array<RefObject<T>>,\n onScroll: (e: ScrollEvent & { index: number }) => void\n): void;\n\nexport function useScroll<T extends HTMLElement>(\n refs: any,\n onScroll: any\n): void {\n if (refs === window) {\n useEffect(() => {\n const g = new ScrollGesture();\n const handler = (e: ScrollEvent) => onScroll({ ...e, index: 0 });\n g.onChange(handler).onEnd(handler);\n const cleanup = g.attach(window);\n return cleanup;\n }, [onScroll]);\n return;\n }\n\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\n\n useEffect(() => {\n const cleanups = list\n .map((r, i) => {\n if (!r.current) return null;\n const g = new ScrollGesture();\n const handler = (e: ScrollEvent) => onScroll({ ...e, index: i });\n g.onChange(handler).onEnd(handler);\n return g.attach(r.current);\n })\n .filter((fn): fn is () => void => !!fn);\n\n return () => {\n cleanups.forEach((fn) => fn());\n };\n }, [...list.map((r) => r.current), onScroll]);\n}\n","import { RefObject, useEffect } from 'react';\n\nimport { type WheelEvent, WheelGesture } from '../controllers/WheelGesture';\n\nexport function useWheel(\n refs: Window,\n onWheel: (e: WheelEvent & { index: 0 }) => void\n): void;\n\nexport function useWheel<T extends HTMLElement>(\n refs: RefObject<T> | Array<RefObject<T>>,\n onWheel: (e: WheelEvent & { index: number }) => void\n): void;\n\nexport function useWheel<T extends HTMLElement>(refs: any, onWheel: any): void {\n if (refs === window) {\n useEffect(() => {\n const g = new WheelGesture();\n const handler = (e: WheelEvent) => onWheel({ ...e, index: 0 });\n g.onChange(handler).onEnd(handler);\n const cleanup = g.attach(window);\n return cleanup;\n }, [onWheel]);\n return;\n }\n\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\n\n useEffect(() => {\n const list: Array<RefObject<T>> = Array.isArray(refs) ? refs : [refs];\n const cleanups = list\n .map((r, i) => {\n if (!r.current) return null;\n const g = new WheelGesture();\n const handler = (e: WheelEvent) => onWheel({ ...e, index: i });\n g.onChange(handler).onEnd(handler);\n return g.attach(r.current);\n })\n .filter((fn): fn is () => void => !!fn);\n\n return () => {\n cleanups.forEach((fn) => fn());\n };\n }, [...list.map((r) => r.current), onWheel]);\n}\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","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","AnimationConfig","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","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","fn","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","config","_this","prev","y","lastTime","movement","offset","activePointerId","attachedEl","pointerDownPos","thresholdPassed","__extends","element","down","onDown","bind","move","onMove","up","onUp","addEventListener","passive","window","removeEventListener","e","button","setPointerCapture","pointerId","clientX","clientY","timeStamp","preventDefault","threshold","dxTotal","dyTotal","hypot","dt","rawX","rawY","moveRaw","axis","releasePointerCapture","MoveGesture","startPos","HTMLElement","leave","onLeave","now","dx","dy","rect","getBoundingClientRect","left","top","rawVx","rawVy","ScrollGesture","prevScroll","scroll","onScroll","endTimeout","clearTimeout","Date","scrollLeft","scrollX","scrollTop","scrollY","setTimeout","WheelGesture","wheel","onWheel","deltaX","deltaY","bool","perc","val1","val2","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","callback","deps","cbRef","useRef","useEffect","current","handle","root","document","documentElement","width","clientWidth","height","clientHeight","innerWidth","innerHeight","observer","ResizeObserver","observe","disconnect","refs","onDrag","cleanups","handler","index","els","el","vLeft","vTop","entry","find","en","target","lx","ty","w","pageX","pageY","push","isOpen","useState","mounted","setMounted","from","enter","exit","values","setValues","useLayoutEffect","queueMicrotask","JSON","stringify","list","ref","onClick","isConnected","contains","ms"],"mappings":"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"}
package/package.json CHANGED
@@ -1,54 +1,54 @@
1
- {
2
- "name": "react-ui-animate",
3
- "version": "5.0.0-rc.3",
4
- "description": "React library for gestures and animation",
5
- "main": "dist/index.js",
6
- "peerDependencies": {
7
- "react": ">=16.8.0 || >=17.0.0 || >=18.0.0"
8
- },
9
- "dependencies": {
10
- "@raidipesh78/re-motion": "^5.2.2"
11
- },
12
- "devDependencies": {
13
- "@rollup/plugin-terser": "^0.4.4",
14
- "@types/jest": "^29.5.12",
15
- "@types/node": "^20.14.9",
16
- "@types/react": "^18.3.3",
17
- "@types/react-dom": "^18.3.0",
18
- "@types/resize-observer-browser": "^0.1.11",
19
- "babel-core": "^5.8.38",
20
- "babel-runtime": "^6.26.0",
21
- "react": "^18.3.1",
22
- "react-dom": "^18.3.1",
23
- "rimraf": "^6.0.1",
24
- "rollup": "^4.18.0",
25
- "rollup-plugin-typescript2": "^0.36.0",
26
- "typescript": "^5.5.2"
27
- },
28
- "scripts": {
29
- "clean": "rimraf -rf dist",
30
- "build": "npm run clean && rollup -c",
31
- "start": "npm run clean && rollup -c -w",
32
- "test": "echo \"Error: no test specified\" && exit 1",
33
- "version:minor": "npm version --no-git-tag-version minor",
34
- "version:major": "npm version --no-git-tag-version major",
35
- "version:patch": "npm version --no-git-tag-version patch",
36
- "publish:next": "npm publish --tag next",
37
- "publish:latest": "npm publish --tag latest"
38
- },
39
- "repository": {
40
- "type": "git",
41
- "url": "git+https://github.com/dipeshrai123/react-ui-animate.git"
42
- },
43
- "keywords": [
44
- "gesture",
45
- "animation",
46
- "react-ui-animate"
47
- ],
48
- "author": "Dipesh Rai",
49
- "license": "MIT",
50
- "bugs": {
51
- "url": "https://github.com/dipeshrai123/react-ui-animate/issues"
52
- },
53
- "homepage": "https://github.com/dipeshrai123/react-ui-animate#readme"
54
- }
1
+ {
2
+ "name": "react-ui-animate",
3
+ "version": "5.0.0-rc.4",
4
+ "description": "React library for gestures and animation",
5
+ "main": "dist/index.js",
6
+ "peerDependencies": {
7
+ "react": ">=16.8.0 || >=17.0.0 || >=18.0.0"
8
+ },
9
+ "dependencies": {
10
+ "@raidipesh78/re-motion": "^5.2.3"
11
+ },
12
+ "devDependencies": {
13
+ "@rollup/plugin-terser": "^0.4.4",
14
+ "@types/jest": "^29.5.12",
15
+ "@types/node": "^20.14.9",
16
+ "@types/react": "^18.3.3",
17
+ "@types/react-dom": "^18.3.0",
18
+ "@types/resize-observer-browser": "^0.1.11",
19
+ "babel-core": "^5.8.38",
20
+ "babel-runtime": "^6.26.0",
21
+ "react": "^18.3.1",
22
+ "react-dom": "^18.3.1",
23
+ "rimraf": "^6.0.1",
24
+ "rollup": "^4.18.0",
25
+ "rollup-plugin-typescript2": "^0.36.0",
26
+ "typescript": "^5.5.2"
27
+ },
28
+ "scripts": {
29
+ "clean": "rimraf -rf dist",
30
+ "build": "npm run clean && rollup -c",
31
+ "start": "npm run clean && rollup -c -w",
32
+ "test": "echo \"Error: no test specified\" && exit 1",
33
+ "version:minor": "npm version --no-git-tag-version minor",
34
+ "version:major": "npm version --no-git-tag-version major",
35
+ "version:patch": "npm version --no-git-tag-version patch",
36
+ "publish:next": "npm publish --tag next",
37
+ "publish:latest": "npm publish --tag latest"
38
+ },
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+https://github.com/dipeshrai123/react-ui-animate.git"
42
+ },
43
+ "keywords": [
44
+ "gesture",
45
+ "animation",
46
+ "react-ui-animate"
47
+ ],
48
+ "author": "Dipesh Rai",
49
+ "license": "MIT",
50
+ "bugs": {
51
+ "url": "https://github.com/dipeshrai123/react-ui-animate/issues"
52
+ },
53
+ "homepage": "https://github.com/dipeshrai123/react-ui-animate#readme"
54
+ }