react-ui-animate 2.0.0-rc.6 → 2.0.0-rc.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/animationType.d.ts +13 -13
- package/dist/animation/getInitialConfig.d.ts +2 -2
- package/dist/animation/interpolation.d.ts +3 -3
- package/dist/animation/modules/MountedBlock.d.ts +2 -2
- package/dist/animation/useAnimatedValue.d.ts +4 -4
- package/dist/animation/useMountedValue.d.ts +5 -4
- package/dist/index.js +26 -55
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/animation/getInitialConfig.ts +2 -2
- package/src/animation/interpolation.ts +3 -3
- package/src/animation/modules/MountedBlock.tsx +2 -2
- package/src/animation/useAnimatedValue.ts +4 -4
- package/src/animation/useMountedValue.ts +6 -54
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
export declare const AnimationConfigUtils: {
|
|
2
|
-
ELASTIC: import("@raidipesh78/re-motion").
|
|
3
|
-
BOUNCE: import("@raidipesh78/re-motion").
|
|
4
|
-
EASE: import("@raidipesh78/re-motion").
|
|
5
|
-
STIFF: import("@raidipesh78/re-motion").
|
|
6
|
-
WOOBLE: import("@raidipesh78/re-motion").
|
|
7
|
-
EASE_IN: import("@raidipesh78/re-motion").
|
|
8
|
-
EASE_OUT: import("@raidipesh78/re-motion").
|
|
9
|
-
EASE_IN_OUT: import("@raidipesh78/re-motion").
|
|
10
|
-
POWER1: import("@raidipesh78/re-motion").
|
|
11
|
-
POWER2: import("@raidipesh78/re-motion").
|
|
12
|
-
POWER3: import("@raidipesh78/re-motion").
|
|
13
|
-
POWER4: import("@raidipesh78/re-motion").
|
|
14
|
-
LINEAR: import("@raidipesh78/re-motion").
|
|
2
|
+
ELASTIC: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
3
|
+
BOUNCE: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
4
|
+
EASE: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
5
|
+
STIFF: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
6
|
+
WOOBLE: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
7
|
+
EASE_IN: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
8
|
+
EASE_OUT: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
9
|
+
EASE_IN_OUT: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
10
|
+
POWER1: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
11
|
+
POWER2: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
12
|
+
POWER3: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
13
|
+
POWER4: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
14
|
+
LINEAR: import("@raidipesh78/re-motion").TransitionValueConfig;
|
|
15
15
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TransitionValueConfig } from '@raidipesh78/re-motion';
|
|
2
2
|
export declare type InitialConfigType = 'linear' | 'easein' | 'easeout' | 'easeinout' | 'ease' | 'power1' | 'power2' | 'power3' | 'power4' | 'elastic' | 'stiff' | 'wooble' | 'bounce';
|
|
3
|
-
export declare const getInitialConfig: (animationType?: "linear" | "easein" | "easeout" | "easeinout" | "ease" | "power1" | "power2" | "power3" | "power4" | "elastic" | "stiff" | "wooble" | "bounce" | undefined) =>
|
|
3
|
+
export declare const getInitialConfig: (animationType?: "linear" | "easein" | "easeout" | "easeinout" | "ease" | "power1" | "power2" | "power3" | "power4" | "elastic" | "stiff" | "wooble" | "bounce" | undefined) => TransitionValueConfig;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExtrapolateConfig,
|
|
1
|
+
import { ExtrapolateConfig, FluidValue } from '@raidipesh78/re-motion';
|
|
2
2
|
import { ValueType } from './useAnimatedValue';
|
|
3
3
|
/**
|
|
4
4
|
* interpolate functions maps input range to given output range
|
|
@@ -8,7 +8,7 @@ import { ValueType } from './useAnimatedValue';
|
|
|
8
8
|
* @param extrapolateConfig - "clamp" | "identity" | "extend"
|
|
9
9
|
* @returns - number | TransitionValue
|
|
10
10
|
*/
|
|
11
|
-
export declare function interpolate(value: number |
|
|
11
|
+
export declare function interpolate(value: number | FluidValue | ValueType, inputRange: Array<number>, outputRange: Array<number | string>, extrapolateConfig?: ExtrapolateConfig): any;
|
|
12
12
|
/**
|
|
13
13
|
* bInterpolate functions maps input range [0, 1] to given [minOutput, maxOutput]
|
|
14
14
|
* sorthand function to interpolate input range [0, 1]
|
|
@@ -18,4 +18,4 @@ export declare function interpolate(value: number | TransitionValue | ValueType,
|
|
|
18
18
|
* @param extrapolateConfig - "clamp" | "identity" | "extend"
|
|
19
19
|
* @returns - number | TransitionValue
|
|
20
20
|
*/
|
|
21
|
-
export declare function bInterpolate(value: number |
|
|
21
|
+
export declare function bInterpolate(value: number | FluidValue | ValueType, minOutput: number | string, maxOutput: number | string, extrapolateConfig?: ExtrapolateConfig): any;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { FluidValue } from '@raidipesh78/re-motion';
|
|
3
3
|
import { UseMountedValueConfig } from '../useMountedValue';
|
|
4
4
|
interface MountedBlockProps {
|
|
5
5
|
state: boolean;
|
|
6
6
|
children: (animation: {
|
|
7
|
-
value:
|
|
7
|
+
value: FluidValue;
|
|
8
8
|
}) => React.ReactNode;
|
|
9
9
|
config: UseMountedValueConfig;
|
|
10
10
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TransitionValueConfig } from '@raidipesh78/re-motion';
|
|
2
2
|
declare type Length = number | string;
|
|
3
|
-
|
|
4
|
-
export interface UseAnimatedValueConfig extends UseTransitionConfig {
|
|
3
|
+
export interface UseAnimatedValueConfig extends TransitionValueConfig {
|
|
5
4
|
}
|
|
6
5
|
declare type AssignValue = {
|
|
7
6
|
toValue: Length;
|
|
@@ -12,10 +11,11 @@ export declare type ValueType = Length | AssignValue | ((update: (next: AssignVa
|
|
|
12
11
|
* `useAnimatedValue` returns an animation value with `.value` and `.currentValue` property which is
|
|
13
12
|
* initialized when passed to argument (`initialValue`). The retured value persist until the lifetime of
|
|
14
13
|
* a component. It doesnot cast any re-renders which can is very good for performance optimization.
|
|
14
|
+
*
|
|
15
15
|
* @param { string | number } initialValue - Initial value
|
|
16
16
|
* @param { UseAnimatedValueConfig } config - Animation configuration object.
|
|
17
17
|
*/
|
|
18
|
-
export declare function useAnimatedValue(initialValue:
|
|
18
|
+
export declare function useAnimatedValue(initialValue: Length, config?: UseAnimatedValueConfig): {
|
|
19
19
|
value: ValueType;
|
|
20
20
|
currentValue: number | string;
|
|
21
21
|
};
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { UseMountConfig, FluidValue } from '@raidipesh78/re-motion';
|
|
3
3
|
export interface UseMountedValueConfig extends UseMountConfig {
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
6
6
|
* `useMountedValue` handles mounting and unmounting of a component which captures current state
|
|
7
7
|
* passed as an arugment (`state`) and exposes the shadow state which handles the mount and unmount
|
|
8
8
|
* of a component.
|
|
9
|
+
*
|
|
9
10
|
* @param { boolean } state - Boolean indicating the component should mount or unmount.
|
|
10
11
|
* @param { UseMountedValueConfig } config - Animation configuration.
|
|
11
12
|
*/
|
|
12
|
-
export declare function useMountedValue(state: boolean, config: UseMountedValueConfig): (
|
|
13
|
-
value:
|
|
14
|
-
}, mounted: boolean) => React.ReactNode) =>
|
|
13
|
+
export declare function useMountedValue(state: boolean, config: UseMountedValueConfig): (cb: (value: {
|
|
14
|
+
value: FluidValue;
|
|
15
|
+
}, mounted: boolean) => React.ReactNode) => any;
|
package/dist/index.js
CHANGED
|
@@ -58,6 +58,31 @@ var AnimatedInline = reMotion.makeAnimatedComponent('span');
|
|
|
58
58
|
*/
|
|
59
59
|
var AnimatedImage = reMotion.makeAnimatedComponent('img');
|
|
60
60
|
|
|
61
|
+
/**
|
|
62
|
+
* `useMountedValue` handles mounting and unmounting of a component which captures current state
|
|
63
|
+
* passed as an arugment (`state`) and exposes the shadow state which handles the mount and unmount
|
|
64
|
+
* of a component.
|
|
65
|
+
*
|
|
66
|
+
* @param { boolean } state - Boolean indicating the component should mount or unmount.
|
|
67
|
+
* @param { UseMountedValueConfig } config - Animation configuration.
|
|
68
|
+
*/
|
|
69
|
+
function useMountedValue(state, config) {
|
|
70
|
+
var mv = reMotion.useMount(state, config);
|
|
71
|
+
return function (cb) { return mv(function (a, m) { return cb({ value: a }, m); }); };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* MountedBlock - Higher order component which handles mounting and unmounting of a component.
|
|
76
|
+
* @prop { boolean } state - Boolean indicating the component should mount or unmount.
|
|
77
|
+
* @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.
|
|
78
|
+
* @prop { UseMountedValueConfig } config - Animation configuration.
|
|
79
|
+
*/
|
|
80
|
+
var MountedBlock = function (_a) {
|
|
81
|
+
var state = _a.state, children = _a.children, config = _a.config;
|
|
82
|
+
var open = useMountedValue(state, config);
|
|
83
|
+
return React.createElement(React.Fragment, null, open(function (animation, mounted) { return mounted && children(animation); }));
|
|
84
|
+
};
|
|
85
|
+
|
|
61
86
|
/*! *****************************************************************************
|
|
62
87
|
Copyright (c) Microsoft Corporation.
|
|
63
88
|
|
|
@@ -133,61 +158,6 @@ function __spread() {
|
|
|
133
158
|
return ar;
|
|
134
159
|
}
|
|
135
160
|
|
|
136
|
-
/**
|
|
137
|
-
* `useMountedValue` handles mounting and unmounting of a component which captures current state
|
|
138
|
-
* passed as an arugment (`state`) and exposes the shadow state which handles the mount and unmount
|
|
139
|
-
* of a component.
|
|
140
|
-
* @param { boolean } state - Boolean indicating the component should mount or unmount.
|
|
141
|
-
* @param { UseMountedValueConfig } config - Animation configuration.
|
|
142
|
-
*/
|
|
143
|
-
function useMountedValue(state, config) {
|
|
144
|
-
var initial = React.useRef(true);
|
|
145
|
-
var _a = __read(React.useState(state), 2), mounted = _a[0], setMounted = _a[1];
|
|
146
|
-
var _b = React.useRef(config).current, from = _b.from, enter = _b.enter, exit = _b.exit, innerConfig = _b.config, enterConfig = _b.enterConfig, exitConfig = _b.exitConfig;
|
|
147
|
-
var _c = __read(reMotion.useTransition(from, innerConfig), 2), animation = _c[0], setAnimation = _c[1];
|
|
148
|
-
React.useEffect(function () {
|
|
149
|
-
if (state) {
|
|
150
|
-
initial.current = true;
|
|
151
|
-
setMounted(true);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
initial.current = false;
|
|
155
|
-
setAnimation({
|
|
156
|
-
toValue: exit,
|
|
157
|
-
config: exitConfig,
|
|
158
|
-
}, function (_a) {
|
|
159
|
-
var finished = _a.finished;
|
|
160
|
-
if (finished) {
|
|
161
|
-
setMounted(false);
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
}, [state]);
|
|
166
|
-
React.useEffect(function () {
|
|
167
|
-
if (mounted && initial.current) {
|
|
168
|
-
setAnimation({
|
|
169
|
-
toValue: enter,
|
|
170
|
-
config: enterConfig,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
}, [mounted, initial.current]);
|
|
174
|
-
return function (callback) {
|
|
175
|
-
return callback({ value: animation }, mounted);
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* MountedBlock - Higher order component which handles mounting and unmounting of a component.
|
|
181
|
-
* @prop { boolean } state - Boolean indicating the component should mount or unmount.
|
|
182
|
-
* @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.
|
|
183
|
-
* @prop { UseMountedValueConfig } config - Animation configuration.
|
|
184
|
-
*/
|
|
185
|
-
var MountedBlock = function (_a) {
|
|
186
|
-
var state = _a.state, children = _a.children, config = _a.config;
|
|
187
|
-
var open = useMountedValue(state, config);
|
|
188
|
-
return React.createElement(React.Fragment, null, open(function (animation, mounted) { return mounted && children(animation); }));
|
|
189
|
-
};
|
|
190
|
-
|
|
191
161
|
var getInitialConfig = function (animationType) {
|
|
192
162
|
switch (animationType) {
|
|
193
163
|
case 'elastic':
|
|
@@ -240,6 +210,7 @@ var AnimationConfigUtils = {
|
|
|
240
210
|
* `useAnimatedValue` returns an animation value with `.value` and `.currentValue` property which is
|
|
241
211
|
* initialized when passed to argument (`initialValue`). The retured value persist until the lifetime of
|
|
242
212
|
* a component. It doesnot cast any re-renders which can is very good for performance optimization.
|
|
213
|
+
*
|
|
243
214
|
* @param { string | number } initialValue - Initial value
|
|
244
215
|
* @param { UseAnimatedValueConfig } config - Animation configuration object.
|
|
245
216
|
*/
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils/delay.ts","../src/animation/interpolation.ts","../src/animation/modules/AnimatedBlock.ts","../src/animation/modules/AnimatedInline.ts","../src/animation/modules/AnimatedImage.ts","../src/animation/useMountedValue.ts","../src/animation/modules/MountedBlock.tsx","../src/animation/getInitialConfig.ts","../src/animation/animationType.ts","../src/animation/useAnimatedValue.ts","../src/animation/modules/ScrollableBlock.tsx","../src/gestures/math.ts","../src/animation/modules/TransitionBlock.tsx","../src/gestures/eventAttacher.ts","../src/gestures/withDefault.ts","../src/gestures/controllers/Gesture.ts","../src/gestures/controllers/DragGesture.ts","../src/gestures/controllers/MouseMoveGesture.ts","../src/gestures/controllers/ScrollGesture.ts","../src/gestures/controllers/WheelGesture.ts","../src/gestures/hooks/useRecognizer.ts","../src/gestures/hooks/useDrag.ts","../src/gestures/hooks/useMouseMove.ts","../src/gestures/hooks/useScroll.ts","../src/gestures/hooks/useWheel.ts","../src/gestures/hooks/useGesture.ts","../src/hooks/useOutsideClick.ts","../src/hooks/useMeasure.ts","../src/hooks/useWindowDimension.ts"],"sourcesContent":["/**\r\n * @param { number } ms - number of milliseconds to delay code execution\r\n * @returns Promise\r\n */\r\nexport function delay(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(() => resolve(null), ms);\r\n });\r\n}\r\n","import { ExtrapolateConfig, TransitionValue } from '@raidipesh78/re-motion';\r\nimport { ValueType } from './useAnimatedValue';\r\nimport { interpolate as internalInterpolate } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * interpolate functions maps input range to given output range\r\n * @param value - number | TransitionValue\r\n * @param inputRange - Array<number>\r\n * @param outputRange - Array<number | string>\r\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\r\n * @returns - number | TransitionValue\r\n */\r\nexport function interpolate(\r\n value: number | TransitionValue | ValueType,\r\n inputRange: Array<number>,\r\n outputRange: Array<number | string>,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n return internalInterpolate(\r\n value as any,\r\n inputRange,\r\n outputRange,\r\n extrapolateConfig\r\n );\r\n}\r\n\r\n/**\r\n * bInterpolate functions maps input range [0, 1] to given [minOutput, maxOutput]\r\n * sorthand function to interpolate input range [0, 1]\r\n * @param value - number | TransitionValue\r\n * @param minOutput - number | string\r\n * @param maxOutput - number | string\r\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\r\n * @returns - number | TransitionValue\r\n */\r\nexport function bInterpolate(\r\n value: number | TransitionValue | ValueType,\r\n minOutput: number | string,\r\n maxOutput: number | string,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n return internalInterpolate(\r\n value as any,\r\n [0, 1],\r\n [minOutput, maxOutput],\r\n extrapolateConfig\r\n );\r\n}\r\n","import { makeAnimatedComponent } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * AnimatedBlock - A higher order component built upon `div` element\r\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\r\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\r\n */\r\nexport const AnimatedBlock = makeAnimatedComponent('div');\r\n","import { makeAnimatedComponent } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * AnimatedInline - A higher order component built upon `span` element\r\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\r\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\r\n */\r\nexport const AnimatedInline = makeAnimatedComponent('span');\r\n","import { makeAnimatedComponent } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * AnimatedImage - A higher order component built upon `img` element\r\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\r\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\r\n */\r\nexport const AnimatedImage = makeAnimatedComponent('img');\r\n","import * as React from 'react';\r\nimport {\r\n useTransition,\r\n TransitionValue,\r\n UseMountConfig,\r\n} from '@raidipesh78/re-motion';\r\n\r\nexport interface UseMountedValueConfig extends UseMountConfig {}\r\n\r\n/**\r\n * `useMountedValue` handles mounting and unmounting of a component which captures current state\r\n * passed as an arugment (`state`) and exposes the shadow state which handles the mount and unmount\r\n * of a component.\r\n * @param { boolean } state - Boolean indicating the component should mount or unmount.\r\n * @param { UseMountedValueConfig } config - Animation configuration.\r\n */\r\nexport function useMountedValue(state: boolean, config: UseMountedValueConfig) {\r\n const initial = React.useRef(true);\r\n const [mounted, setMounted] = React.useState(state);\r\n const {\r\n from,\r\n enter,\r\n exit,\r\n config: innerConfig,\r\n enterConfig,\r\n exitConfig,\r\n } = React.useRef(config).current;\r\n const [animation, setAnimation] = useTransition(from, innerConfig);\r\n\r\n React.useEffect(() => {\r\n if (state) {\r\n initial.current = true;\r\n setMounted(true);\r\n } else {\r\n initial.current = false;\r\n setAnimation(\r\n {\r\n toValue: exit,\r\n config: exitConfig,\r\n },\r\n function ({ finished }) {\r\n if (finished) {\r\n setMounted(false);\r\n }\r\n }\r\n );\r\n }\r\n }, [state]);\r\n\r\n React.useEffect(() => {\r\n if (mounted && initial.current) {\r\n setAnimation({\r\n toValue: enter,\r\n config: enterConfig,\r\n });\r\n }\r\n }, [mounted, initial.current]);\r\n\r\n return function (\r\n callback: (\r\n { value: animation }: { value: TransitionValue },\r\n mounted: boolean\r\n ) => React.ReactNode\r\n ) {\r\n return callback({ value: animation }, mounted);\r\n };\r\n}\r\n","import * as React from 'react';\r\nimport { TransitionValue } from '@raidipesh78/re-motion';\r\nimport { useMountedValue, UseMountedValueConfig } from '../useMountedValue';\r\n\r\ninterface MountedBlockProps {\r\n state: boolean;\r\n children: (animation: { value: TransitionValue }) => React.ReactNode;\r\n config: UseMountedValueConfig;\r\n}\r\n\r\n/**\r\n * MountedBlock - Higher order component which handles mounting and unmounting of a component.\r\n * @prop { boolean } state - Boolean indicating the component should mount or unmount.\r\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\r\n * @prop { UseMountedValueConfig } config - Animation configuration.\r\n */\r\nexport const MountedBlock = ({\r\n state,\r\n children,\r\n config,\r\n}: MountedBlockProps) => {\r\n const open = useMountedValue(state, config);\r\n\r\n return <>{open((animation, mounted) => mounted && children(animation))}</>;\r\n};\r\n","import { Easing, UseTransitionConfig } from '@raidipesh78/re-motion';\r\nexport type InitialConfigType =\r\n | 'linear'\r\n | 'easein'\r\n | 'easeout'\r\n | 'easeinout'\r\n | 'ease'\r\n | 'power1'\r\n | 'power2'\r\n | 'power3'\r\n | 'power4'\r\n | 'elastic'\r\n | 'stiff'\r\n | 'wooble'\r\n | 'bounce';\r\n\r\nexport const getInitialConfig = (\r\n animationType?: InitialConfigType\r\n): UseTransitionConfig => {\r\n switch (animationType) {\r\n case 'elastic':\r\n return { mass: 1, friction: 18, tension: 250 };\r\n\r\n case 'stiff':\r\n return { mass: 1, friction: 18, tension: 350 };\r\n\r\n case 'wooble':\r\n return { mass: 1, friction: 8, tension: 250 };\r\n\r\n case 'bounce':\r\n return { duration: 500, easing: Easing.bounce };\r\n\r\n case 'power1':\r\n return { duration: 500, easing: Easing.bezier(0.17, 0.42, 0.51, 0.97) };\r\n\r\n case 'power2':\r\n return { duration: 500, easing: Easing.bezier(0.07, 0.11, 0.13, 1) };\r\n\r\n case 'power3':\r\n return { duration: 500, easing: Easing.bezier(0.09, 0.7, 0.16, 1.04) };\r\n\r\n case 'power4':\r\n return { duration: 500, easing: Easing.bezier(0.05, 0.54, 0, 1.03) };\r\n\r\n case 'linear':\r\n return { duration: 500, easing: Easing.linear };\r\n\r\n case 'easein':\r\n return { duration: 500, easing: Easing.in(Easing.ease) };\r\n\r\n case 'easeout':\r\n return { duration: 500, easing: Easing.out(Easing.ease) };\r\n\r\n case 'easeinout':\r\n return { duration: 500, easing: Easing.inOut(Easing.ease) };\r\n\r\n case 'ease':\r\n default:\r\n return { mass: 1, friction: 34, tension: 290 };\r\n }\r\n};\r\n","import { getInitialConfig } from './getInitialConfig';\r\n\r\nexport const AnimationConfigUtils = {\r\n ELASTIC: getInitialConfig('elastic'),\r\n BOUNCE: getInitialConfig('bounce'),\r\n EASE: getInitialConfig('ease'),\r\n STIFF: getInitialConfig('stiff'),\r\n WOOBLE: getInitialConfig('wooble'),\r\n EASE_IN: getInitialConfig('easein'),\r\n EASE_OUT: getInitialConfig('easeout'),\r\n EASE_IN_OUT: getInitialConfig('easeinout'),\r\n POWER1: getInitialConfig('power1'),\r\n POWER2: getInitialConfig('power2'),\r\n POWER3: getInitialConfig('power3'),\r\n POWER4: getInitialConfig('power4'),\r\n LINEAR: getInitialConfig('linear'),\r\n};\r\n","import { useTransition, UseTransitionConfig } from '@raidipesh78/re-motion';\r\nimport { AnimationConfigUtils } from './animationType';\r\n\r\n// useAnimatedValue value type\r\ntype Length = number | string;\r\ntype AnimatedValueType = Length;\r\n\r\nexport interface UseAnimatedValueConfig extends UseTransitionConfig {}\r\n\r\ntype AssignValue = {\r\n toValue: Length;\r\n config?: UseAnimatedValueConfig;\r\n};\r\nexport type ValueType =\r\n | Length\r\n | AssignValue\r\n | ((update: (next: AssignValue) => Promise<any>) => void);\r\n\r\n/**\r\n * `useAnimatedValue` returns an animation value with `.value` and `.currentValue` property which is\r\n * initialized when passed to argument (`initialValue`). The retured value persist until the lifetime of\r\n * a component. It doesnot cast any re-renders which can is very good for performance optimization.\r\n * @param { string | number } initialValue - Initial value\r\n * @param { UseAnimatedValueConfig } config - Animation configuration object.\r\n */\r\nexport function useAnimatedValue(\r\n initialValue: AnimatedValueType,\r\n config?: UseAnimatedValueConfig\r\n) {\r\n const [animation, setAnimation] = useTransition(initialValue, {\r\n ...AnimationConfigUtils.EASE,\r\n ...config,\r\n });\r\n\r\n const targetObject: {\r\n value: ValueType;\r\n currentValue: number | string;\r\n } = {\r\n value: animation as any,\r\n currentValue: animation.get(),\r\n };\r\n\r\n return new Proxy(targetObject, {\r\n set: function (_, key, value: ValueType) {\r\n if (key === 'value') {\r\n if (typeof value === 'number' || typeof value === 'string') {\r\n setAnimation({ toValue: value });\r\n } else if (typeof value === 'object' || typeof value === 'function') {\r\n setAnimation(value);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n throw new Error('You cannot set any other property to animation node.');\r\n },\r\n get: function (_, key) {\r\n if (key === 'value') {\r\n return animation;\r\n }\r\n\r\n if (key === 'currentValue') {\r\n return animation.get();\r\n }\r\n\r\n throw new Error(\r\n 'You cannot access any other property from animation node.'\r\n );\r\n },\r\n });\r\n}\r\n","import * as React from 'react';\r\nimport {\r\n useAnimatedValue,\r\n UseAnimatedValueConfig,\r\n ValueType,\r\n} from '../useAnimatedValue';\r\n\r\ninterface ScrollableBlockProps {\r\n children?: (animation: { value: ValueType }) => React.ReactNode;\r\n direction?: 'single' | 'both';\r\n threshold?: number;\r\n animationConfig?: UseAnimatedValueConfig;\r\n}\r\n\r\n/**\r\n * ScrollableBlock - Higher order component to handle the entrance or exit animation\r\n * of a component when it enters or exit the viewport. Accepts child as a function with\r\n * `AnimatedValue` as its first argument which can be interpolated on input range [0, 1]\r\n * @prop { function } children - child as a function with `AnimatedValue` as its first argument.\r\n * @prop { 'single' | 'both' } direction - single applies animation on enter once, both applies on enter and exit.\r\n * @prop { number } threshold - should be in range 0 to 1 which equivalent to `IntersectionObserver` threshold.\r\n * @prop { UseAnimatedValueConfig } animationConfig - Animation config\r\n */\r\nexport const ScrollableBlock = (props: ScrollableBlockProps) => {\r\n const {\r\n children,\r\n direction = 'single',\r\n animationConfig,\r\n threshold = 0.2,\r\n } = props;\r\n const scrollableBlockRef = React.useRef<HTMLDivElement>(null);\r\n const animation = useAnimatedValue(0, animationConfig); // 0: not intersecting | 1: intersecting\r\n\r\n React.useEffect(() => {\r\n const _scrollableBlock = scrollableBlockRef.current;\r\n\r\n const observer = new IntersectionObserver(\r\n function ([entry]) {\r\n const { isIntersecting } = entry;\r\n\r\n if (isIntersecting) {\r\n animation.value = 1;\r\n } else {\r\n if (direction === 'both') animation.value = 0;\r\n }\r\n },\r\n {\r\n root: null, // FOR VIEWPORT ONLY\r\n threshold,\r\n }\r\n );\r\n\r\n if (_scrollableBlock) {\r\n observer.observe(_scrollableBlock);\r\n }\r\n\r\n return () => {\r\n if (_scrollableBlock) {\r\n observer.unobserve(_scrollableBlock);\r\n }\r\n };\r\n }, []);\r\n\r\n return (\r\n <div ref={scrollableBlockRef}>\r\n {children && children({ value: animation.value })}\r\n </div>\r\n );\r\n};\r\n","/**\r\n * bin(booleanValue)\r\n * returns 1 if booleanValue == true and 0 if booleanValue == false\r\n */\r\nexport function bin(bool: boolean) {\r\n return bool ? 1 : 0;\r\n}\r\n\r\n/**\r\n * mix(progress, a, b)\r\n * linear interpolation between a and b\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\n/**\r\n * clamp(value, min, max)\r\n * clamps value for min and max bounds\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\n/**\r\n * rubberClamp(value, min, max, constant?)\r\n * constant is optional : default 0.15\r\n * clamps the value for min and max value and\r\n * extends beyond min and max values with constant\r\n * factor to create elastic rubber band effect\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\n/**\r\n * snapTo(value, velocity, snapPoints[])\r\n * Calculates the final snapPoint according to given current value,\r\n * velocity and snapPoints array\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\n/**\r\n * move(array, moveIndex, toIndex)\r\n * move array item from moveIndex to toIndex without array modification\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","import * as React from 'react';\r\nimport { bin } from '../../gestures/math';\r\nimport {\r\n useAnimatedValue,\r\n UseAnimatedValueConfig,\r\n ValueType,\r\n} from '../useAnimatedValue';\r\n\r\ninterface TransitionBlockProps {\r\n state: boolean;\r\n children: (animation: { value: ValueType }) => React.ReactNode;\r\n config?: UseAnimatedValueConfig;\r\n}\r\n\r\n/**\r\n * TransitionBlock - Higher order component which animates on state change.\r\n * @prop { boolean } state - Boolean indicating the current state of animation, usually `false = 0 and true = 1`.\r\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\r\n * @prop { UseAnimatedValueConfig } config - Animation configuration.\r\n */\r\nexport const TransitionBlock = ({\r\n state,\r\n children,\r\n config,\r\n}: TransitionBlockProps) => {\r\n const amv = useAnimatedValue(bin(state), config);\r\n\r\n return <>{children({ value: amv.value })}</>;\r\n};\r\n","type MouseEventType =\r\n | 'click'\r\n | 'dblclick'\r\n | 'mousedown'\r\n | 'mousemove'\r\n | 'mouseup'\r\n | 'touchstart'\r\n | 'touchmove'\r\n | 'touchend'\r\n | 'mouseenter'\r\n | 'mouseleave'\r\n | 'mouseout'\r\n | 'mouseover'\r\n | 'scroll'\r\n | 'wheel'\r\n | 'contextmenu';\r\n\r\ntype DomTargetTypes = Array<Window | Document | HTMLElement>;\r\n\r\n/**\r\n * Attach single document / window event / HTMLElement\r\n */\r\nfunction attachEvent(\r\n domTargets: DomTargetTypes,\r\n event: MouseEventType,\r\n callback: (e: any) => void,\r\n capture: any = false\r\n) {\r\n domTargets.forEach((target) => {\r\n target.addEventListener(event, callback, capture);\r\n });\r\n\r\n return function () {\r\n domTargets.forEach((target) => {\r\n target.removeEventListener(event, callback, capture);\r\n });\r\n };\r\n}\r\n\r\n/**\r\n * Attach multiple document / window event / HTMLElement\r\n */\r\nexport function attachEvents(\r\n domTargets: DomTargetTypes,\r\n events: Array<\r\n [event: MouseEventType, callback: (e: any) => void, capture?: any]\r\n >\r\n) {\r\n const subscribers = new Map();\r\n\r\n events.forEach(function ([event, callback, capture = false]) {\r\n subscribers.set(event, attachEvent(domTargets, event, callback, capture));\r\n });\r\n\r\n return function (eventKeys?: Array<string>) {\r\n for (const [eventKey, subscriber] of subscribers.entries()) {\r\n if (!eventKeys) {\r\n subscriber();\r\n return;\r\n }\r\n\r\n if (eventKeys.indexOf(eventKey) !== -1) {\r\n subscriber();\r\n }\r\n }\r\n };\r\n}\r\n","export const withDefault = (x: number, y: number) => {\r\n return { x, y };\r\n};\r\n","export class Gesture {\r\n currentIndex?: number;\r\n lastTimeStamp: number = Date.now();\r\n isActive: boolean = false;\r\n targetElement?: HTMLElement; // represents the bounded element\r\n targetElements: Array<HTMLElement> = []; // represents the bounded elements\r\n config?: any;\r\n callback?: <T>(event: T) => void;\r\n _subscribe?: (eventKeys?: Array<string>) => void;\r\n static _VELOCITY_LIMIT: number = 20;\r\n\r\n // it must be overridden by other child classes\r\n _initEvents() {}\r\n\r\n // cancel events\r\n // we only canceled down and move events because mouse up\r\n // will not be triggered\r\n _cancelEvents() {\r\n if (this._subscribe) {\r\n this._subscribe();\r\n }\r\n }\r\n\r\n // re-apply new callback\r\n applyCallback(callback: <T>(event: T) => void) {\r\n this.callback = callback;\r\n }\r\n\r\n // apply gesture\r\n applyGesture({\r\n targetElement,\r\n targetElements,\r\n callback,\r\n config,\r\n }: {\r\n targetElement?: any;\r\n targetElements?: any;\r\n callback: <T>(event: T) => void;\r\n config?: any;\r\n }) {\r\n this.targetElement = targetElement;\r\n this.targetElements = targetElements.map(\r\n (element: { current: any }) => element.current\r\n );\r\n this.callback = callback;\r\n this.config = config;\r\n\r\n // initialize events\r\n this._initEvents();\r\n\r\n // unbind\r\n return () => this._subscribe && this._subscribe();\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport class DragGesture extends Gesture {\r\n movementStart: Vector2 = withDefault(0, 0);\r\n initialMovement: Vector2 = withDefault(0, 0);\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n translation: Vector2 = withDefault(0, 0);\r\n offset: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement || this.targetElements.length > 0) {\r\n this._subscribe = attachEvents(\r\n [window],\r\n [\r\n ['mousedown', this.pointerDown.bind(this)],\r\n ['mousemove', this.pointerMove.bind(this)],\r\n ['mouseup', this.pointerUp.bind(this)],\r\n ['touchstart', this.pointerDown.bind(this), { passive: false }],\r\n ['touchmove', this.pointerMove.bind(this), { passive: false }],\r\n ['touchend', this.pointerUp.bind(this)],\r\n ]\r\n );\r\n }\r\n }\r\n\r\n // @override - cancel events\r\n // we only canceled down and move events because mouse up\r\n // will not be triggered\r\n _cancelEvents() {\r\n if (this._subscribe) {\r\n this._subscribe(['mousedown', 'mousemove', 'touchstart', 'touchmove']);\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n args: [this.currentIndex],\r\n down: this.isActive,\r\n movementX: this.movement.x,\r\n movementY: this.movement.y,\r\n offsetX: this.translation.x,\r\n offsetY: this.translation.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n distanceX: Math.abs(this.movement.x),\r\n distanceY: Math.abs(this.movement.y),\r\n directionX: Math.sign(this.movement.x),\r\n directionY: Math.sign(this.movement.y),\r\n cancel: () => {\r\n this._cancelEvents();\r\n },\r\n });\r\n }\r\n }\r\n\r\n pointerDown(e: any) {\r\n if (e.type === 'touchstart') {\r\n this.movementStart = {\r\n x: e.touches[0].clientX,\r\n y: e.touches[0].clientY,\r\n };\r\n } else {\r\n this.movementStart = { x: e.clientX, y: e.clientY };\r\n }\r\n\r\n this.movement = { x: 0, y: 0 };\r\n this.offset = { x: this.translation.x, y: this.translation.y };\r\n this.previousMovement = { x: 0, y: 0 };\r\n this.velocity = { x: 0, y: 0 };\r\n\r\n // find current selected element\r\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\r\n\r\n if (e.target === this.targetElement || currElem) {\r\n this.isActive = true;\r\n e.preventDefault();\r\n\r\n // set args\r\n if (currElem) {\r\n this.currentIndex = this.targetElements.indexOf(currElem);\r\n }\r\n\r\n // if initial function is defined then call it to get initial movementX and movementY\r\n // if only select to bounded draggable element\r\n const initial = this.config?.initial && this.config.initial();\r\n const initialMovementX = initial?.movementX;\r\n const initialMovementY = initial?.movementY;\r\n\r\n this.initialMovement = {\r\n x: initialMovementX ?? 0,\r\n y: initialMovementY ?? 0,\r\n };\r\n\r\n this.movement = {\r\n x: this.initialMovement.x,\r\n y: this.initialMovement.y,\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.initialMovement.x,\r\n y: this.initialMovement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n }\r\n\r\n pointerMove(e: any) {\r\n if (this.isActive) {\r\n e.preventDefault();\r\n const now = Date.now();\r\n const deltaTime = clamp(now - this.lastTimeStamp, 0.1, 64);\r\n this.lastTimeStamp = now;\r\n\r\n const t = deltaTime / 1000;\r\n\r\n if (e.type === 'touchmove') {\r\n this.movement = {\r\n x:\r\n this.initialMovement.x +\r\n (e.touches[0].clientX - this.movementStart.x),\r\n y:\r\n this.initialMovement.y +\r\n (e.touches[0].clientY - this.movementStart.y),\r\n };\r\n } else {\r\n this.movement = {\r\n x: this.initialMovement.x + (e.clientX - this.movementStart.x),\r\n y: this.initialMovement.y + (e.clientY - this.movementStart.y),\r\n };\r\n }\r\n\r\n this.translation = {\r\n x: this.offset.x + this.movement.x,\r\n y: this.offset.y + this.movement.y,\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n (this.movement.x - this.previousMovement.x) / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n (this.movement.y - this.previousMovement.y) / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.movement.x,\r\n y: this.movement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n }\r\n\r\n pointerUp() {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n this._handleCallback();\r\n this._cancelEvents();\r\n this._initEvents();\r\n }\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport class MouseMoveGesture extends Gesture {\r\n event?: MouseEvent;\r\n isActiveID?: any;\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n direction: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement) {\r\n this._subscribe = attachEvents(\r\n [this.targetElement],\r\n [['mousemove', this.onMouseMove.bind(this)]]\r\n );\r\n } else if (this.targetElements.length > 0) {\r\n this._subscribe = attachEvents(this.targetElements, [\r\n ['mousemove', this.onMouseMove.bind(this)],\r\n ]);\r\n } else {\r\n this._subscribe = attachEvents(\r\n [window],\r\n [['mousemove', this.onMouseMove.bind(this)]]\r\n );\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n args: [this.currentIndex],\r\n event: this.event,\r\n isMoving: this.isActive,\r\n target: this.event?.target,\r\n mouseX: this.movement.x,\r\n mouseY: this.movement.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n directionX: this.direction.x,\r\n directionY: this.direction.y,\r\n });\r\n }\r\n }\r\n\r\n onMouseMove(e: MouseEvent) {\r\n // find current selected element\r\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\r\n\r\n // set args\r\n if (currElem) {\r\n this.currentIndex = this.targetElements.indexOf(currElem);\r\n }\r\n\r\n this.event = e;\r\n\r\n const now: number = Date.now();\r\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\r\n this.lastTimeStamp = now;\r\n const t = deltaTime / 1000; // seconds\r\n\r\n const x = e.clientX;\r\n const y = e.clientY;\r\n\r\n this.movement = { x, y };\r\n\r\n if (this.isActiveID !== -1) {\r\n this.isActive = true;\r\n clearTimeout(this.isActiveID);\r\n }\r\n\r\n this.isActiveID = setTimeout(() => {\r\n this.isActive = false;\r\n this.direction = { x: 0, y: 0 };\r\n this.velocity = { x: 0, y: 0 };\r\n\r\n this._handleCallback();\r\n }, 250); // Debounce 250 milliseconds\r\n\r\n const diffX = this.movement.x - this.previousMovement.x;\r\n const diffY = this.movement.y - this.previousMovement.y;\r\n\r\n this.direction = {\r\n x: Math.sign(diffX),\r\n y: Math.sign(diffY),\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n diffX / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n diffY / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = { x: this.movement.x, y: this.movement.y };\r\n\r\n this._handleCallback();\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport class ScrollGesture extends Gesture {\r\n isActiveID?: any;\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n direction: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement) {\r\n this._subscribe = attachEvents(\r\n [this.targetElement],\r\n [['scroll', this.scrollElementListener.bind(this)]]\r\n );\r\n } else {\r\n this._subscribe = attachEvents(\r\n [window],\r\n [['scroll', this.scrollListener.bind(this)]]\r\n );\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n isScrolling: this.isActive,\r\n scrollX: this.movement.x,\r\n scrollY: this.movement.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n directionX: this.direction.x,\r\n directionY: this.direction.y,\r\n });\r\n }\r\n }\r\n\r\n onScroll({ x, y }: Vector2) {\r\n const now: number = Date.now();\r\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\r\n this.lastTimeStamp = now;\r\n const t = deltaTime / 1000; // seconds\r\n\r\n this.movement = { x, y };\r\n\r\n // Clear if scrolling\r\n if (this.isActiveID !== -1) {\r\n this.isActive = true;\r\n clearTimeout(this.isActiveID);\r\n }\r\n\r\n this.isActiveID = setTimeout(() => {\r\n this.isActive = false;\r\n this.direction = { x: 0, y: 0 };\r\n\r\n // Reset Velocity\r\n this.velocity = { x: 0, y: 0 };\r\n\r\n this._handleCallback(); // Debounce 250milliseconds\r\n }, 250);\r\n\r\n const diffX = this.movement.x - this.previousMovement.x;\r\n const diffY = this.movement.y - this.previousMovement.y;\r\n\r\n this.direction = {\r\n x: Math.sign(diffX),\r\n y: Math.sign(diffY),\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n diffX / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n diffY / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.movement.x,\r\n y: this.movement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n\r\n scrollListener() {\r\n const { pageYOffset: y, pageXOffset: x } = window;\r\n this.onScroll({ x, y });\r\n }\r\n\r\n scrollElementListener() {\r\n const x = this.targetElement?.scrollLeft || 0;\r\n const y = this.targetElement?.scrollTop || 0;\r\n this.onScroll({ x, y });\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nconst LINE_HEIGHT = 40;\r\nconst PAGE_HEIGHT = 800;\r\n\r\nexport class WheelGesture extends Gesture {\r\n isActiveID?: any;\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n direction: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n delta: Vector2 = withDefault(0, 0);\r\n\r\n // Holds offsets\r\n offset: Vector2 = withDefault(0, 0);\r\n translation: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement) {\r\n this._subscribe = attachEvents(\r\n [this.targetElement],\r\n [['wheel', this.onWheel.bind(this)]]\r\n );\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n target: this.targetElement,\r\n isWheeling: this.isActive,\r\n deltaX: this.delta.x,\r\n deltaY: this.delta.y,\r\n directionX: this.direction.x,\r\n directionY: this.direction.y,\r\n movementX: this.movement.x,\r\n movementY: this.movement.y,\r\n offsetX: this.offset.x,\r\n offsetY: this.offset.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n });\r\n }\r\n }\r\n\r\n onWheel(event: WheelEvent) {\r\n let { deltaX, deltaY, deltaMode } = event;\r\n\r\n const now: number = Date.now();\r\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\r\n this.lastTimeStamp = now;\r\n const t = deltaTime / 1000; // seconds\r\n\r\n this.isActive = true;\r\n\r\n if (this.isActiveID !== -1) {\r\n this.isActive = true;\r\n clearTimeout(this.isActiveID);\r\n }\r\n\r\n this.isActiveID = setTimeout(() => {\r\n this.isActive = false;\r\n this.translation = { x: this.offset.x, y: this.offset.y };\r\n this._handleCallback();\r\n\r\n this.velocity = { x: 0, y: 0 }; // Reset Velocity\r\n this.movement = { x: 0, y: 0 };\r\n }, 200);\r\n\r\n // normalize wheel values, especially for Firefox\r\n if (deltaMode === 1) {\r\n deltaX *= LINE_HEIGHT;\r\n deltaY *= LINE_HEIGHT;\r\n } else if (deltaMode === 2) {\r\n deltaX *= PAGE_HEIGHT;\r\n deltaY *= PAGE_HEIGHT;\r\n }\r\n\r\n this.delta = { x: deltaX, y: deltaY };\r\n this.movement = {\r\n x: this.movement.x + deltaX,\r\n y: this.movement.y + deltaY,\r\n };\r\n this.offset = {\r\n x: this.translation.x + this.movement.x,\r\n y: this.translation.y + this.movement.y,\r\n };\r\n\r\n const diffX = this.movement.x - this.previousMovement.x;\r\n const diffY = this.movement.y - this.previousMovement.y;\r\n\r\n this.direction = {\r\n x: Math.sign(diffX),\r\n y: Math.sign(diffY),\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n diffX / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n diffY / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.movement.x,\r\n y: this.movement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport * as React from 'react';\r\n\r\ntype UseRecognizerHandlerType = Array<\r\n [\r\n key: 'drag' | 'wheel' | 'move' | 'scroll',\r\n gesture: any,\r\n callback: any,\r\n config?: any\r\n ]\r\n>;\r\n\r\nexport const useRecognizer = (handlers: UseRecognizerHandlerType) => {\r\n const ref = React.useRef<any>();\r\n const elementRefs = React.useRef<Array<any>>([]);\r\n const subscribers = React.useRef<\r\n Map<string, { keyIndex: number; gesture: any; unsubscribe: any }>\r\n >(new Map()).current;\r\n\r\n // re-initiate callback on change\r\n React.useEffect(() => {\r\n for (let [, { keyIndex, gesture }] of subscribers.entries()) {\r\n const [, , callback] = handlers[keyIndex];\r\n gesture.applyCallback(callback);\r\n }\r\n }, [handlers]);\r\n\r\n React.useEffect(() => {\r\n handlers.forEach(([key, gesture, callback, config], keyIndex) => {\r\n subscribers.set(key, {\r\n keyIndex,\r\n gesture,\r\n unsubscribe: gesture.applyGesture({\r\n targetElement: ref.current,\r\n targetElements: elementRefs.current,\r\n callback,\r\n config,\r\n }),\r\n });\r\n });\r\n\r\n return () => {\r\n for (let [, { unsubscribe }] of subscribers.entries()) {\r\n unsubscribe && unsubscribe();\r\n }\r\n };\r\n }, []);\r\n\r\n return (index?: number) => {\r\n if (index === null || index === undefined) {\r\n return { ref };\r\n } else {\r\n elementRefs.current[index] =\r\n elementRefs.current[index] || React.createRef();\r\n\r\n return { ref: elementRefs.current[index] };\r\n }\r\n };\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { DragEventType, UseDragConfig } from '../types';\r\nimport { DragGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useDrag(\r\n callback: (event: DragEventType) => void,\r\n config?: UseDragConfig\r\n) {\r\n const gesture = React.useRef(new DragGesture()).current;\r\n\r\n return useRecognizer([['drag', gesture, callback, config]]);\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { MouseMoveEventType } from '../types';\r\nimport { MouseMoveGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useMouseMove(callback: (event: MouseMoveEventType) => void) {\r\n const gesture = React.useRef(new MouseMoveGesture()).current;\r\n\r\n return useRecognizer([['move', gesture, callback]]);\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { ScrollEventType } from '../types';\r\nimport { ScrollGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useScroll(callback: (event: ScrollEventType) => void) {\r\n const gesture = React.useRef(new ScrollGesture()).current;\r\n\r\n return useRecognizer([['scroll', gesture, callback]]);\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { WheelEventType } from '../types';\r\nimport { WheelGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useWheel(callback: (event: WheelEventType) => void) {\r\n const gesture = React.useRef(new WheelGesture()).current;\r\n\r\n return useRecognizer([['wheel', gesture, callback]]);\r\n}\r\n","import * as React from 'react';\r\nimport {\r\n DragGesture,\r\n MouseMoveGesture,\r\n ScrollGesture,\r\n WheelGesture,\r\n} from '../controllers';\r\nimport {\r\n DragEventType,\r\n WheelEventType,\r\n ScrollEventType,\r\n MouseMoveEventType,\r\n} from '../types';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useGesture({\r\n onDrag,\r\n onWheel,\r\n onScroll,\r\n onMouseMove,\r\n}: {\r\n onDrag?: (event: DragEventType) => void;\r\n onWheel?: (event: WheelEventType) => void;\r\n onScroll?: (event: ScrollEventType) => void;\r\n onMouseMove?: (event: MouseMoveEventType) => void;\r\n}) {\r\n const dragGesture = React.useRef(new DragGesture()).current;\r\n const wheelGesture = React.useRef(new WheelGesture()).current;\r\n const scrollGesture = React.useRef(new ScrollGesture()).current;\r\n const mouseMoveGesture = React.useRef(new MouseMoveGesture()).current;\r\n\r\n return useRecognizer([\r\n ['drag', dragGesture, onDrag],\r\n ['wheel', wheelGesture, onWheel],\r\n ['scroll', scrollGesture, onScroll],\r\n ['move', mouseMoveGesture, onMouseMove],\r\n ]);\r\n}\r\n","import * as React from \"react\";\r\n\r\nimport { attachEvents } from \"../gestures/eventAttacher\";\r\n\r\nexport function useOutsideClick(\r\n elementRef: React.RefObject<HTMLElement>,\r\n callback: (event: MouseEvent) => void,\r\n deps?: React.DependencyList\r\n) {\r\n const callbackRef = React.useRef<(event: MouseEvent) => void>();\r\n\r\n if (!callbackRef.current) {\r\n callbackRef.current = callback;\r\n }\r\n\r\n // Reinitiate callback when dependency change\r\n React.useEffect(() => {\r\n callbackRef.current = callback;\r\n\r\n return () => {\r\n callbackRef.current = () => false;\r\n };\r\n }, deps);\r\n\r\n React.useEffect(() => {\r\n const handleOutsideClick = (e: MouseEvent) => {\r\n if (!elementRef?.current?.contains(e.target as Element)) {\r\n callbackRef.current && callbackRef.current(e);\r\n }\r\n };\r\n\r\n const subscribe = attachEvents([document], [[\"click\", handleOutsideClick]]);\r\n\r\n return () => subscribe && subscribe();\r\n }, []);\r\n}\r\n","import * as React from \"react\";\r\n\r\ntype MeasurementValue = number | Array<number>;\r\n\r\ntype 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 callback: (event: MeasurementType) => void,\r\n deps?: React.DependencyList\r\n) {\r\n const ref = React.useRef(null);\r\n const elementRefs = React.useRef([]);\r\n const callbackRef = React.useRef<(event: MeasurementType) => void>(callback);\r\n\r\n // Reinitiate callback when dependency change\r\n React.useEffect(() => {\r\n callbackRef.current = callback;\r\n\r\n return () => {\r\n callbackRef.current = () => false;\r\n };\r\n }, deps);\r\n\r\n React.useEffect(() => {\r\n const _refElement = ref.current || document.documentElement;\r\n const _refElementsMultiple = elementRefs.current;\r\n\r\n const resizeObserver = new ResizeObserver(([entry]) => {\r\n const { left, top, width, height } = entry.target.getBoundingClientRect();\r\n const { pageXOffset, pageYOffset } = window;\r\n\r\n if (callbackRef) {\r\n if (_refElement === document.documentElement) {\r\n return; // no-op for document\r\n } else {\r\n callbackRef.current({\r\n left: left + pageXOffset,\r\n top: top + pageYOffset,\r\n width,\r\n height,\r\n vLeft: left,\r\n vTop: top,\r\n });\r\n }\r\n }\r\n });\r\n\r\n const resizeObserverMultiple = new ResizeObserver((entries) => {\r\n const left: Array<number> = [];\r\n const top: Array<number> = [];\r\n const width: Array<number> = [];\r\n const height: Array<number> = [];\r\n const vLeft: Array<number> = [];\r\n const vTop: Array<number> = [];\r\n\r\n entries.forEach((entry) => {\r\n const {\r\n left: _left,\r\n top: _top,\r\n width: _width,\r\n height: _height,\r\n } = entry.target.getBoundingClientRect();\r\n const { pageXOffset, pageYOffset } = window;\r\n const _pageLeft = _left + pageXOffset;\r\n const _pageTop = _top + pageYOffset;\r\n\r\n left.push(_pageLeft);\r\n top.push(_pageTop);\r\n width.push(_width);\r\n height.push(_height);\r\n vLeft.push(_left);\r\n vTop.push(_top);\r\n });\r\n\r\n if (callbackRef) {\r\n callbackRef.current({\r\n left,\r\n top,\r\n width,\r\n height,\r\n vLeft,\r\n vTop,\r\n });\r\n }\r\n });\r\n\r\n if (_refElement) {\r\n if (\r\n _refElement === document.documentElement &&\r\n _refElementsMultiple.length > 0\r\n ) {\r\n _refElementsMultiple.forEach((element: any) => {\r\n resizeObserverMultiple.observe(element.current);\r\n });\r\n } else {\r\n resizeObserver.observe(_refElement);\r\n }\r\n }\r\n\r\n return () => {\r\n if (_refElement) {\r\n if (\r\n _refElement === document.documentElement &&\r\n _refElementsMultiple.length > 0\r\n ) {\r\n _refElementsMultiple.forEach((element: any) => {\r\n resizeObserverMultiple.unobserve(element.current);\r\n });\r\n } else {\r\n resizeObserver.unobserve(_refElement);\r\n }\r\n }\r\n };\r\n }, []);\r\n\r\n return (index?: number) => {\r\n if (index === null || index === undefined) {\r\n return { ref };\r\n } else {\r\n elementRefs.current[index] =\r\n elementRefs.current[index] || React.createRef();\r\n\r\n return { ref: elementRefs.current[index] };\r\n }\r\n }; // ...bind() or ...bind(index) for multiple\r\n}\r\n","import * as React from \"react\";\r\n\r\ntype WindowDimensionType = {\r\n width: number;\r\n height: number;\r\n innerWidth: number;\r\n innerHeight: number;\r\n};\r\n\r\nexport function useWindowDimension(\r\n callback: (event: WindowDimensionType) => void,\r\n deps?: React.DependencyList\r\n) {\r\n const windowDimensionsRef = React.useRef<WindowDimensionType>({\r\n width: 0,\r\n height: 0,\r\n innerWidth: 0,\r\n innerHeight: 0,\r\n });\r\n const callbackRef =\r\n React.useRef<(event: WindowDimensionType) => void>(callback);\r\n\r\n const handleCallback: () => void = () => {\r\n if (callbackRef) {\r\n callbackRef.current({\r\n ...windowDimensionsRef.current,\r\n });\r\n }\r\n };\r\n\r\n // Reinitiate callback when dependency change\r\n React.useEffect(() => {\r\n callbackRef.current = callback;\r\n\r\n return () => {\r\n callbackRef.current = () => false;\r\n };\r\n }, deps);\r\n\r\n React.useEffect(() => {\r\n const resizeObserver = new ResizeObserver(([entry]) => {\r\n const { clientWidth, clientHeight } = entry.target;\r\n const { innerWidth, innerHeight } = window;\r\n\r\n windowDimensionsRef.current = {\r\n width: clientWidth,\r\n height: clientHeight,\r\n innerWidth,\r\n innerHeight,\r\n };\r\n\r\n handleCallback();\r\n });\r\n\r\n resizeObserver.observe(document.documentElement);\r\n\r\n return () => resizeObserver.unobserve(document.documentElement);\r\n }, []);\r\n}\r\n"],"names":["internalInterpolate","makeAnimatedComponent","React.useRef","React.useState","useTransition","React.useEffect","React.createElement","Easing","React.createRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils/delay.ts","../src/animation/interpolation.ts","../src/animation/modules/AnimatedBlock.ts","../src/animation/modules/AnimatedInline.ts","../src/animation/modules/AnimatedImage.ts","../src/animation/useMountedValue.ts","../src/animation/modules/MountedBlock.tsx","../src/animation/getInitialConfig.ts","../src/animation/animationType.ts","../src/animation/useAnimatedValue.ts","../src/animation/modules/ScrollableBlock.tsx","../src/gestures/math.ts","../src/animation/modules/TransitionBlock.tsx","../src/gestures/eventAttacher.ts","../src/gestures/withDefault.ts","../src/gestures/controllers/Gesture.ts","../src/gestures/controllers/DragGesture.ts","../src/gestures/controllers/MouseMoveGesture.ts","../src/gestures/controllers/ScrollGesture.ts","../src/gestures/controllers/WheelGesture.ts","../src/gestures/hooks/useRecognizer.ts","../src/gestures/hooks/useDrag.ts","../src/gestures/hooks/useMouseMove.ts","../src/gestures/hooks/useScroll.ts","../src/gestures/hooks/useWheel.ts","../src/gestures/hooks/useGesture.ts","../src/hooks/useOutsideClick.ts","../src/hooks/useMeasure.ts","../src/hooks/useWindowDimension.ts"],"sourcesContent":["/**\r\n * @param { number } ms - number of milliseconds to delay code execution\r\n * @returns Promise\r\n */\r\nexport function delay(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(() => resolve(null), ms);\r\n });\r\n}\r\n","import { ExtrapolateConfig, FluidValue } from '@raidipesh78/re-motion';\r\nimport { ValueType } from './useAnimatedValue';\r\nimport { interpolate as internalInterpolate } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * interpolate functions maps input range to given output range\r\n * @param value - number | TransitionValue\r\n * @param inputRange - Array<number>\r\n * @param outputRange - Array<number | string>\r\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\r\n * @returns - number | TransitionValue\r\n */\r\nexport function interpolate(\r\n value: number | FluidValue | ValueType,\r\n inputRange: Array<number>,\r\n outputRange: Array<number | string>,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n return internalInterpolate(\r\n value as any,\r\n inputRange,\r\n outputRange,\r\n extrapolateConfig\r\n );\r\n}\r\n\r\n/**\r\n * bInterpolate functions maps input range [0, 1] to given [minOutput, maxOutput]\r\n * sorthand function to interpolate input range [0, 1]\r\n * @param value - number | TransitionValue\r\n * @param minOutput - number | string\r\n * @param maxOutput - number | string\r\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\r\n * @returns - number | TransitionValue\r\n */\r\nexport function bInterpolate(\r\n value: number | FluidValue | ValueType,\r\n minOutput: number | string,\r\n maxOutput: number | string,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n return internalInterpolate(\r\n value as any,\r\n [0, 1],\r\n [minOutput, maxOutput],\r\n extrapolateConfig\r\n );\r\n}\r\n","import { makeAnimatedComponent } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * AnimatedBlock - A higher order component built upon `div` element\r\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\r\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\r\n */\r\nexport const AnimatedBlock = makeAnimatedComponent('div');\r\n","import { makeAnimatedComponent } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * AnimatedInline - A higher order component built upon `span` element\r\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\r\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\r\n */\r\nexport const AnimatedInline = makeAnimatedComponent('span');\r\n","import { makeAnimatedComponent } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * AnimatedImage - A higher order component built upon `img` element\r\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\r\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\r\n */\r\nexport const AnimatedImage = makeAnimatedComponent('img');\r\n","import * as React from 'react';\r\nimport { useMount, UseMountConfig, FluidValue } from '@raidipesh78/re-motion';\r\n\r\nexport interface UseMountedValueConfig extends UseMountConfig {}\r\n\r\n/**\r\n * `useMountedValue` handles mounting and unmounting of a component which captures current state\r\n * passed as an arugment (`state`) and exposes the shadow state which handles the mount and unmount\r\n * of a component.\r\n *\r\n * @param { boolean } state - Boolean indicating the component should mount or unmount.\r\n * @param { UseMountedValueConfig } config - Animation configuration.\r\n */\r\nexport function useMountedValue(state: boolean, config: UseMountedValueConfig) {\r\n const mv = useMount(state, config);\r\n return (\r\n cb: (value: { value: FluidValue }, mounted: boolean) => React.ReactNode\r\n ) => mv((a, m) => cb({ value: a }, m));\r\n}\r\n","import * as React from 'react';\r\nimport { FluidValue } from '@raidipesh78/re-motion';\r\nimport { useMountedValue, UseMountedValueConfig } from '../useMountedValue';\r\n\r\ninterface MountedBlockProps {\r\n state: boolean;\r\n children: (animation: { value: FluidValue }) => React.ReactNode;\r\n config: UseMountedValueConfig;\r\n}\r\n\r\n/**\r\n * MountedBlock - Higher order component which handles mounting and unmounting of a component.\r\n * @prop { boolean } state - Boolean indicating the component should mount or unmount.\r\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\r\n * @prop { UseMountedValueConfig } config - Animation configuration.\r\n */\r\nexport const MountedBlock = ({\r\n state,\r\n children,\r\n config,\r\n}: MountedBlockProps) => {\r\n const open = useMountedValue(state, config);\r\n\r\n return <>{open((animation, mounted) => mounted && children(animation))}</>;\r\n};\r\n","import { Easing, TransitionValueConfig } from '@raidipesh78/re-motion';\r\nexport type InitialConfigType =\r\n | 'linear'\r\n | 'easein'\r\n | 'easeout'\r\n | 'easeinout'\r\n | 'ease'\r\n | 'power1'\r\n | 'power2'\r\n | 'power3'\r\n | 'power4'\r\n | 'elastic'\r\n | 'stiff'\r\n | 'wooble'\r\n | 'bounce';\r\n\r\nexport const getInitialConfig = (\r\n animationType?: InitialConfigType\r\n): TransitionValueConfig => {\r\n switch (animationType) {\r\n case 'elastic':\r\n return { mass: 1, friction: 18, tension: 250 };\r\n\r\n case 'stiff':\r\n return { mass: 1, friction: 18, tension: 350 };\r\n\r\n case 'wooble':\r\n return { mass: 1, friction: 8, tension: 250 };\r\n\r\n case 'bounce':\r\n return { duration: 500, easing: Easing.bounce };\r\n\r\n case 'power1':\r\n return { duration: 500, easing: Easing.bezier(0.17, 0.42, 0.51, 0.97) };\r\n\r\n case 'power2':\r\n return { duration: 500, easing: Easing.bezier(0.07, 0.11, 0.13, 1) };\r\n\r\n case 'power3':\r\n return { duration: 500, easing: Easing.bezier(0.09, 0.7, 0.16, 1.04) };\r\n\r\n case 'power4':\r\n return { duration: 500, easing: Easing.bezier(0.05, 0.54, 0, 1.03) };\r\n\r\n case 'linear':\r\n return { duration: 500, easing: Easing.linear };\r\n\r\n case 'easein':\r\n return { duration: 500, easing: Easing.in(Easing.ease) };\r\n\r\n case 'easeout':\r\n return { duration: 500, easing: Easing.out(Easing.ease) };\r\n\r\n case 'easeinout':\r\n return { duration: 500, easing: Easing.inOut(Easing.ease) };\r\n\r\n case 'ease':\r\n default:\r\n return { mass: 1, friction: 34, tension: 290 };\r\n }\r\n};\r\n","import { getInitialConfig } from './getInitialConfig';\r\n\r\nexport const AnimationConfigUtils = {\r\n ELASTIC: getInitialConfig('elastic'),\r\n BOUNCE: getInitialConfig('bounce'),\r\n EASE: getInitialConfig('ease'),\r\n STIFF: getInitialConfig('stiff'),\r\n WOOBLE: getInitialConfig('wooble'),\r\n EASE_IN: getInitialConfig('easein'),\r\n EASE_OUT: getInitialConfig('easeout'),\r\n EASE_IN_OUT: getInitialConfig('easeinout'),\r\n POWER1: getInitialConfig('power1'),\r\n POWER2: getInitialConfig('power2'),\r\n POWER3: getInitialConfig('power3'),\r\n POWER4: getInitialConfig('power4'),\r\n LINEAR: getInitialConfig('linear'),\r\n};\r\n","import { useTransition, TransitionValueConfig } from '@raidipesh78/re-motion';\r\nimport { AnimationConfigUtils } from './animationType';\r\n\r\n// useAnimatedValue value type\r\ntype Length = number | string;\r\n\r\nexport interface UseAnimatedValueConfig extends TransitionValueConfig {}\r\n\r\ntype AssignValue = {\r\n toValue: Length;\r\n config?: UseAnimatedValueConfig;\r\n};\r\nexport type ValueType =\r\n | Length\r\n | AssignValue\r\n | ((update: (next: AssignValue) => Promise<any>) => void);\r\n\r\n/**\r\n * `useAnimatedValue` returns an animation value with `.value` and `.currentValue` property which is\r\n * initialized when passed to argument (`initialValue`). The retured value persist until the lifetime of\r\n * a component. It doesnot cast any re-renders which can is very good for performance optimization.\r\n *\r\n * @param { string | number } initialValue - Initial value\r\n * @param { UseAnimatedValueConfig } config - Animation configuration object.\r\n */\r\nexport function useAnimatedValue(\r\n initialValue: Length,\r\n config?: UseAnimatedValueConfig\r\n) {\r\n const [animation, setAnimation] = useTransition(initialValue, {\r\n ...AnimationConfigUtils.EASE,\r\n ...config,\r\n });\r\n\r\n const targetObject: {\r\n value: ValueType;\r\n currentValue: number | string;\r\n } = {\r\n value: animation as any,\r\n currentValue: animation.get(),\r\n };\r\n\r\n return new Proxy(targetObject, {\r\n set: function (_, key, value: ValueType) {\r\n if (key === 'value') {\r\n if (typeof value === 'number' || typeof value === 'string') {\r\n setAnimation({ toValue: value });\r\n } else if (typeof value === 'object' || typeof value === 'function') {\r\n setAnimation(value);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n throw new Error('You cannot set any other property to animation node.');\r\n },\r\n get: function (_, key) {\r\n if (key === 'value') {\r\n return animation;\r\n }\r\n\r\n if (key === 'currentValue') {\r\n return animation.get();\r\n }\r\n\r\n throw new Error(\r\n 'You cannot access any other property from animation node.'\r\n );\r\n },\r\n });\r\n}\r\n","import * as React from 'react';\r\nimport {\r\n useAnimatedValue,\r\n UseAnimatedValueConfig,\r\n ValueType,\r\n} from '../useAnimatedValue';\r\n\r\ninterface ScrollableBlockProps {\r\n children?: (animation: { value: ValueType }) => React.ReactNode;\r\n direction?: 'single' | 'both';\r\n threshold?: number;\r\n animationConfig?: UseAnimatedValueConfig;\r\n}\r\n\r\n/**\r\n * ScrollableBlock - Higher order component to handle the entrance or exit animation\r\n * of a component when it enters or exit the viewport. Accepts child as a function with\r\n * `AnimatedValue` as its first argument which can be interpolated on input range [0, 1]\r\n * @prop { function } children - child as a function with `AnimatedValue` as its first argument.\r\n * @prop { 'single' | 'both' } direction - single applies animation on enter once, both applies on enter and exit.\r\n * @prop { number } threshold - should be in range 0 to 1 which equivalent to `IntersectionObserver` threshold.\r\n * @prop { UseAnimatedValueConfig } animationConfig - Animation config\r\n */\r\nexport const ScrollableBlock = (props: ScrollableBlockProps) => {\r\n const {\r\n children,\r\n direction = 'single',\r\n animationConfig,\r\n threshold = 0.2,\r\n } = props;\r\n const scrollableBlockRef = React.useRef<HTMLDivElement>(null);\r\n const animation = useAnimatedValue(0, animationConfig); // 0: not intersecting | 1: intersecting\r\n\r\n React.useEffect(() => {\r\n const _scrollableBlock = scrollableBlockRef.current;\r\n\r\n const observer = new IntersectionObserver(\r\n function ([entry]) {\r\n const { isIntersecting } = entry;\r\n\r\n if (isIntersecting) {\r\n animation.value = 1;\r\n } else {\r\n if (direction === 'both') animation.value = 0;\r\n }\r\n },\r\n {\r\n root: null, // FOR VIEWPORT ONLY\r\n threshold,\r\n }\r\n );\r\n\r\n if (_scrollableBlock) {\r\n observer.observe(_scrollableBlock);\r\n }\r\n\r\n return () => {\r\n if (_scrollableBlock) {\r\n observer.unobserve(_scrollableBlock);\r\n }\r\n };\r\n }, []);\r\n\r\n return (\r\n <div ref={scrollableBlockRef}>\r\n {children && children({ value: animation.value })}\r\n </div>\r\n );\r\n};\r\n","/**\r\n * bin(booleanValue)\r\n * returns 1 if booleanValue == true and 0 if booleanValue == false\r\n */\r\nexport function bin(bool: boolean) {\r\n return bool ? 1 : 0;\r\n}\r\n\r\n/**\r\n * mix(progress, a, b)\r\n * linear interpolation between a and b\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\n/**\r\n * clamp(value, min, max)\r\n * clamps value for min and max bounds\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\n/**\r\n * rubberClamp(value, min, max, constant?)\r\n * constant is optional : default 0.15\r\n * clamps the value for min and max value and\r\n * extends beyond min and max values with constant\r\n * factor to create elastic rubber band effect\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\n/**\r\n * snapTo(value, velocity, snapPoints[])\r\n * Calculates the final snapPoint according to given current value,\r\n * velocity and snapPoints array\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\n/**\r\n * move(array, moveIndex, toIndex)\r\n * move array item from moveIndex to toIndex without array modification\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","import * as React from 'react';\r\nimport { bin } from '../../gestures/math';\r\nimport {\r\n useAnimatedValue,\r\n UseAnimatedValueConfig,\r\n ValueType,\r\n} from '../useAnimatedValue';\r\n\r\ninterface TransitionBlockProps {\r\n state: boolean;\r\n children: (animation: { value: ValueType }) => React.ReactNode;\r\n config?: UseAnimatedValueConfig;\r\n}\r\n\r\n/**\r\n * TransitionBlock - Higher order component which animates on state change.\r\n * @prop { boolean } state - Boolean indicating the current state of animation, usually `false = 0 and true = 1`.\r\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\r\n * @prop { UseAnimatedValueConfig } config - Animation configuration.\r\n */\r\nexport const TransitionBlock = ({\r\n state,\r\n children,\r\n config,\r\n}: TransitionBlockProps) => {\r\n const amv = useAnimatedValue(bin(state), config);\r\n\r\n return <>{children({ value: amv.value })}</>;\r\n};\r\n","type MouseEventType =\r\n | 'click'\r\n | 'dblclick'\r\n | 'mousedown'\r\n | 'mousemove'\r\n | 'mouseup'\r\n | 'touchstart'\r\n | 'touchmove'\r\n | 'touchend'\r\n | 'mouseenter'\r\n | 'mouseleave'\r\n | 'mouseout'\r\n | 'mouseover'\r\n | 'scroll'\r\n | 'wheel'\r\n | 'contextmenu';\r\n\r\ntype DomTargetTypes = Array<Window | Document | HTMLElement>;\r\n\r\n/**\r\n * Attach single document / window event / HTMLElement\r\n */\r\nfunction attachEvent(\r\n domTargets: DomTargetTypes,\r\n event: MouseEventType,\r\n callback: (e: any) => void,\r\n capture: any = false\r\n) {\r\n domTargets.forEach((target) => {\r\n target.addEventListener(event, callback, capture);\r\n });\r\n\r\n return function () {\r\n domTargets.forEach((target) => {\r\n target.removeEventListener(event, callback, capture);\r\n });\r\n };\r\n}\r\n\r\n/**\r\n * Attach multiple document / window event / HTMLElement\r\n */\r\nexport function attachEvents(\r\n domTargets: DomTargetTypes,\r\n events: Array<\r\n [event: MouseEventType, callback: (e: any) => void, capture?: any]\r\n >\r\n) {\r\n const subscribers = new Map();\r\n\r\n events.forEach(function ([event, callback, capture = false]) {\r\n subscribers.set(event, attachEvent(domTargets, event, callback, capture));\r\n });\r\n\r\n return function (eventKeys?: Array<string>) {\r\n for (const [eventKey, subscriber] of subscribers.entries()) {\r\n if (!eventKeys) {\r\n subscriber();\r\n return;\r\n }\r\n\r\n if (eventKeys.indexOf(eventKey) !== -1) {\r\n subscriber();\r\n }\r\n }\r\n };\r\n}\r\n","export const withDefault = (x: number, y: number) => {\r\n return { x, y };\r\n};\r\n","export class Gesture {\r\n currentIndex?: number;\r\n lastTimeStamp: number = Date.now();\r\n isActive: boolean = false;\r\n targetElement?: HTMLElement; // represents the bounded element\r\n targetElements: Array<HTMLElement> = []; // represents the bounded elements\r\n config?: any;\r\n callback?: <T>(event: T) => void;\r\n _subscribe?: (eventKeys?: Array<string>) => void;\r\n static _VELOCITY_LIMIT: number = 20;\r\n\r\n // it must be overridden by other child classes\r\n _initEvents() {}\r\n\r\n // cancel events\r\n // we only canceled down and move events because mouse up\r\n // will not be triggered\r\n _cancelEvents() {\r\n if (this._subscribe) {\r\n this._subscribe();\r\n }\r\n }\r\n\r\n // re-apply new callback\r\n applyCallback(callback: <T>(event: T) => void) {\r\n this.callback = callback;\r\n }\r\n\r\n // apply gesture\r\n applyGesture({\r\n targetElement,\r\n targetElements,\r\n callback,\r\n config,\r\n }: {\r\n targetElement?: any;\r\n targetElements?: any;\r\n callback: <T>(event: T) => void;\r\n config?: any;\r\n }) {\r\n this.targetElement = targetElement;\r\n this.targetElements = targetElements.map(\r\n (element: { current: any }) => element.current\r\n );\r\n this.callback = callback;\r\n this.config = config;\r\n\r\n // initialize events\r\n this._initEvents();\r\n\r\n // unbind\r\n return () => this._subscribe && this._subscribe();\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport class DragGesture extends Gesture {\r\n movementStart: Vector2 = withDefault(0, 0);\r\n initialMovement: Vector2 = withDefault(0, 0);\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n translation: Vector2 = withDefault(0, 0);\r\n offset: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement || this.targetElements.length > 0) {\r\n this._subscribe = attachEvents(\r\n [window],\r\n [\r\n ['mousedown', this.pointerDown.bind(this)],\r\n ['mousemove', this.pointerMove.bind(this)],\r\n ['mouseup', this.pointerUp.bind(this)],\r\n ['touchstart', this.pointerDown.bind(this), { passive: false }],\r\n ['touchmove', this.pointerMove.bind(this), { passive: false }],\r\n ['touchend', this.pointerUp.bind(this)],\r\n ]\r\n );\r\n }\r\n }\r\n\r\n // @override - cancel events\r\n // we only canceled down and move events because mouse up\r\n // will not be triggered\r\n _cancelEvents() {\r\n if (this._subscribe) {\r\n this._subscribe(['mousedown', 'mousemove', 'touchstart', 'touchmove']);\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n args: [this.currentIndex],\r\n down: this.isActive,\r\n movementX: this.movement.x,\r\n movementY: this.movement.y,\r\n offsetX: this.translation.x,\r\n offsetY: this.translation.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n distanceX: Math.abs(this.movement.x),\r\n distanceY: Math.abs(this.movement.y),\r\n directionX: Math.sign(this.movement.x),\r\n directionY: Math.sign(this.movement.y),\r\n cancel: () => {\r\n this._cancelEvents();\r\n },\r\n });\r\n }\r\n }\r\n\r\n pointerDown(e: any) {\r\n if (e.type === 'touchstart') {\r\n this.movementStart = {\r\n x: e.touches[0].clientX,\r\n y: e.touches[0].clientY,\r\n };\r\n } else {\r\n this.movementStart = { x: e.clientX, y: e.clientY };\r\n }\r\n\r\n this.movement = { x: 0, y: 0 };\r\n this.offset = { x: this.translation.x, y: this.translation.y };\r\n this.previousMovement = { x: 0, y: 0 };\r\n this.velocity = { x: 0, y: 0 };\r\n\r\n // find current selected element\r\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\r\n\r\n if (e.target === this.targetElement || currElem) {\r\n this.isActive = true;\r\n e.preventDefault();\r\n\r\n // set args\r\n if (currElem) {\r\n this.currentIndex = this.targetElements.indexOf(currElem);\r\n }\r\n\r\n // if initial function is defined then call it to get initial movementX and movementY\r\n // if only select to bounded draggable element\r\n const initial = this.config?.initial && this.config.initial();\r\n const initialMovementX = initial?.movementX;\r\n const initialMovementY = initial?.movementY;\r\n\r\n this.initialMovement = {\r\n x: initialMovementX ?? 0,\r\n y: initialMovementY ?? 0,\r\n };\r\n\r\n this.movement = {\r\n x: this.initialMovement.x,\r\n y: this.initialMovement.y,\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.initialMovement.x,\r\n y: this.initialMovement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n }\r\n\r\n pointerMove(e: any) {\r\n if (this.isActive) {\r\n e.preventDefault();\r\n const now = Date.now();\r\n const deltaTime = clamp(now - this.lastTimeStamp, 0.1, 64);\r\n this.lastTimeStamp = now;\r\n\r\n const t = deltaTime / 1000;\r\n\r\n if (e.type === 'touchmove') {\r\n this.movement = {\r\n x:\r\n this.initialMovement.x +\r\n (e.touches[0].clientX - this.movementStart.x),\r\n y:\r\n this.initialMovement.y +\r\n (e.touches[0].clientY - this.movementStart.y),\r\n };\r\n } else {\r\n this.movement = {\r\n x: this.initialMovement.x + (e.clientX - this.movementStart.x),\r\n y: this.initialMovement.y + (e.clientY - this.movementStart.y),\r\n };\r\n }\r\n\r\n this.translation = {\r\n x: this.offset.x + this.movement.x,\r\n y: this.offset.y + this.movement.y,\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n (this.movement.x - this.previousMovement.x) / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n (this.movement.y - this.previousMovement.y) / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.movement.x,\r\n y: this.movement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n }\r\n\r\n pointerUp() {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n this._handleCallback();\r\n this._cancelEvents();\r\n this._initEvents();\r\n }\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport class MouseMoveGesture extends Gesture {\r\n event?: MouseEvent;\r\n isActiveID?: any;\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n direction: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement) {\r\n this._subscribe = attachEvents(\r\n [this.targetElement],\r\n [['mousemove', this.onMouseMove.bind(this)]]\r\n );\r\n } else if (this.targetElements.length > 0) {\r\n this._subscribe = attachEvents(this.targetElements, [\r\n ['mousemove', this.onMouseMove.bind(this)],\r\n ]);\r\n } else {\r\n this._subscribe = attachEvents(\r\n [window],\r\n [['mousemove', this.onMouseMove.bind(this)]]\r\n );\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n args: [this.currentIndex],\r\n event: this.event,\r\n isMoving: this.isActive,\r\n target: this.event?.target,\r\n mouseX: this.movement.x,\r\n mouseY: this.movement.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n directionX: this.direction.x,\r\n directionY: this.direction.y,\r\n });\r\n }\r\n }\r\n\r\n onMouseMove(e: MouseEvent) {\r\n // find current selected element\r\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\r\n\r\n // set args\r\n if (currElem) {\r\n this.currentIndex = this.targetElements.indexOf(currElem);\r\n }\r\n\r\n this.event = e;\r\n\r\n const now: number = Date.now();\r\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\r\n this.lastTimeStamp = now;\r\n const t = deltaTime / 1000; // seconds\r\n\r\n const x = e.clientX;\r\n const y = e.clientY;\r\n\r\n this.movement = { x, y };\r\n\r\n if (this.isActiveID !== -1) {\r\n this.isActive = true;\r\n clearTimeout(this.isActiveID);\r\n }\r\n\r\n this.isActiveID = setTimeout(() => {\r\n this.isActive = false;\r\n this.direction = { x: 0, y: 0 };\r\n this.velocity = { x: 0, y: 0 };\r\n\r\n this._handleCallback();\r\n }, 250); // Debounce 250 milliseconds\r\n\r\n const diffX = this.movement.x - this.previousMovement.x;\r\n const diffY = this.movement.y - this.previousMovement.y;\r\n\r\n this.direction = {\r\n x: Math.sign(diffX),\r\n y: Math.sign(diffY),\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n diffX / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n diffY / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = { x: this.movement.x, y: this.movement.y };\r\n\r\n this._handleCallback();\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport class ScrollGesture extends Gesture {\r\n isActiveID?: any;\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n direction: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement) {\r\n this._subscribe = attachEvents(\r\n [this.targetElement],\r\n [['scroll', this.scrollElementListener.bind(this)]]\r\n );\r\n } else {\r\n this._subscribe = attachEvents(\r\n [window],\r\n [['scroll', this.scrollListener.bind(this)]]\r\n );\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n isScrolling: this.isActive,\r\n scrollX: this.movement.x,\r\n scrollY: this.movement.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n directionX: this.direction.x,\r\n directionY: this.direction.y,\r\n });\r\n }\r\n }\r\n\r\n onScroll({ x, y }: Vector2) {\r\n const now: number = Date.now();\r\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\r\n this.lastTimeStamp = now;\r\n const t = deltaTime / 1000; // seconds\r\n\r\n this.movement = { x, y };\r\n\r\n // Clear if scrolling\r\n if (this.isActiveID !== -1) {\r\n this.isActive = true;\r\n clearTimeout(this.isActiveID);\r\n }\r\n\r\n this.isActiveID = setTimeout(() => {\r\n this.isActive = false;\r\n this.direction = { x: 0, y: 0 };\r\n\r\n // Reset Velocity\r\n this.velocity = { x: 0, y: 0 };\r\n\r\n this._handleCallback(); // Debounce 250milliseconds\r\n }, 250);\r\n\r\n const diffX = this.movement.x - this.previousMovement.x;\r\n const diffY = this.movement.y - this.previousMovement.y;\r\n\r\n this.direction = {\r\n x: Math.sign(diffX),\r\n y: Math.sign(diffY),\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n diffX / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n diffY / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.movement.x,\r\n y: this.movement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n\r\n scrollListener() {\r\n const { pageYOffset: y, pageXOffset: x } = window;\r\n this.onScroll({ x, y });\r\n }\r\n\r\n scrollElementListener() {\r\n const x = this.targetElement?.scrollLeft || 0;\r\n const y = this.targetElement?.scrollTop || 0;\r\n this.onScroll({ x, y });\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nconst LINE_HEIGHT = 40;\r\nconst PAGE_HEIGHT = 800;\r\n\r\nexport class WheelGesture extends Gesture {\r\n isActiveID?: any;\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n direction: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n delta: Vector2 = withDefault(0, 0);\r\n\r\n // Holds offsets\r\n offset: Vector2 = withDefault(0, 0);\r\n translation: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement) {\r\n this._subscribe = attachEvents(\r\n [this.targetElement],\r\n [['wheel', this.onWheel.bind(this)]]\r\n );\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n target: this.targetElement,\r\n isWheeling: this.isActive,\r\n deltaX: this.delta.x,\r\n deltaY: this.delta.y,\r\n directionX: this.direction.x,\r\n directionY: this.direction.y,\r\n movementX: this.movement.x,\r\n movementY: this.movement.y,\r\n offsetX: this.offset.x,\r\n offsetY: this.offset.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n });\r\n }\r\n }\r\n\r\n onWheel(event: WheelEvent) {\r\n let { deltaX, deltaY, deltaMode } = event;\r\n\r\n const now: number = Date.now();\r\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\r\n this.lastTimeStamp = now;\r\n const t = deltaTime / 1000; // seconds\r\n\r\n this.isActive = true;\r\n\r\n if (this.isActiveID !== -1) {\r\n this.isActive = true;\r\n clearTimeout(this.isActiveID);\r\n }\r\n\r\n this.isActiveID = setTimeout(() => {\r\n this.isActive = false;\r\n this.translation = { x: this.offset.x, y: this.offset.y };\r\n this._handleCallback();\r\n\r\n this.velocity = { x: 0, y: 0 }; // Reset Velocity\r\n this.movement = { x: 0, y: 0 };\r\n }, 200);\r\n\r\n // normalize wheel values, especially for Firefox\r\n if (deltaMode === 1) {\r\n deltaX *= LINE_HEIGHT;\r\n deltaY *= LINE_HEIGHT;\r\n } else if (deltaMode === 2) {\r\n deltaX *= PAGE_HEIGHT;\r\n deltaY *= PAGE_HEIGHT;\r\n }\r\n\r\n this.delta = { x: deltaX, y: deltaY };\r\n this.movement = {\r\n x: this.movement.x + deltaX,\r\n y: this.movement.y + deltaY,\r\n };\r\n this.offset = {\r\n x: this.translation.x + this.movement.x,\r\n y: this.translation.y + this.movement.y,\r\n };\r\n\r\n const diffX = this.movement.x - this.previousMovement.x;\r\n const diffY = this.movement.y - this.previousMovement.y;\r\n\r\n this.direction = {\r\n x: Math.sign(diffX),\r\n y: Math.sign(diffY),\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n diffX / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n diffY / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.movement.x,\r\n y: this.movement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport * as React from 'react';\r\n\r\ntype UseRecognizerHandlerType = Array<\r\n [\r\n key: 'drag' | 'wheel' | 'move' | 'scroll',\r\n gesture: any,\r\n callback: any,\r\n config?: any\r\n ]\r\n>;\r\n\r\nexport const useRecognizer = (handlers: UseRecognizerHandlerType) => {\r\n const ref = React.useRef<any>();\r\n const elementRefs = React.useRef<Array<any>>([]);\r\n const subscribers = React.useRef<\r\n Map<string, { keyIndex: number; gesture: any; unsubscribe: any }>\r\n >(new Map()).current;\r\n\r\n // re-initiate callback on change\r\n React.useEffect(() => {\r\n for (let [, { keyIndex, gesture }] of subscribers.entries()) {\r\n const [, , callback] = handlers[keyIndex];\r\n gesture.applyCallback(callback);\r\n }\r\n }, [handlers]);\r\n\r\n React.useEffect(() => {\r\n handlers.forEach(([key, gesture, callback, config], keyIndex) => {\r\n subscribers.set(key, {\r\n keyIndex,\r\n gesture,\r\n unsubscribe: gesture.applyGesture({\r\n targetElement: ref.current,\r\n targetElements: elementRefs.current,\r\n callback,\r\n config,\r\n }),\r\n });\r\n });\r\n\r\n return () => {\r\n for (let [, { unsubscribe }] of subscribers.entries()) {\r\n unsubscribe && unsubscribe();\r\n }\r\n };\r\n }, []);\r\n\r\n return (index?: number) => {\r\n if (index === null || index === undefined) {\r\n return { ref };\r\n } else {\r\n elementRefs.current[index] =\r\n elementRefs.current[index] || React.createRef();\r\n\r\n return { ref: elementRefs.current[index] };\r\n }\r\n };\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { DragEventType, UseDragConfig } from '../types';\r\nimport { DragGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useDrag(\r\n callback: (event: DragEventType) => void,\r\n config?: UseDragConfig\r\n) {\r\n const gesture = React.useRef(new DragGesture()).current;\r\n\r\n return useRecognizer([['drag', gesture, callback, config]]);\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { MouseMoveEventType } from '../types';\r\nimport { MouseMoveGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useMouseMove(callback: (event: MouseMoveEventType) => void) {\r\n const gesture = React.useRef(new MouseMoveGesture()).current;\r\n\r\n return useRecognizer([['move', gesture, callback]]);\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { ScrollEventType } from '../types';\r\nimport { ScrollGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useScroll(callback: (event: ScrollEventType) => void) {\r\n const gesture = React.useRef(new ScrollGesture()).current;\r\n\r\n return useRecognizer([['scroll', gesture, callback]]);\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { WheelEventType } from '../types';\r\nimport { WheelGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useWheel(callback: (event: WheelEventType) => void) {\r\n const gesture = React.useRef(new WheelGesture()).current;\r\n\r\n return useRecognizer([['wheel', gesture, callback]]);\r\n}\r\n","import * as React from 'react';\r\nimport {\r\n DragGesture,\r\n MouseMoveGesture,\r\n ScrollGesture,\r\n WheelGesture,\r\n} from '../controllers';\r\nimport {\r\n DragEventType,\r\n WheelEventType,\r\n ScrollEventType,\r\n MouseMoveEventType,\r\n} from '../types';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useGesture({\r\n onDrag,\r\n onWheel,\r\n onScroll,\r\n onMouseMove,\r\n}: {\r\n onDrag?: (event: DragEventType) => void;\r\n onWheel?: (event: WheelEventType) => void;\r\n onScroll?: (event: ScrollEventType) => void;\r\n onMouseMove?: (event: MouseMoveEventType) => void;\r\n}) {\r\n const dragGesture = React.useRef(new DragGesture()).current;\r\n const wheelGesture = React.useRef(new WheelGesture()).current;\r\n const scrollGesture = React.useRef(new ScrollGesture()).current;\r\n const mouseMoveGesture = React.useRef(new MouseMoveGesture()).current;\r\n\r\n return useRecognizer([\r\n ['drag', dragGesture, onDrag],\r\n ['wheel', wheelGesture, onWheel],\r\n ['scroll', scrollGesture, onScroll],\r\n ['move', mouseMoveGesture, onMouseMove],\r\n ]);\r\n}\r\n","import * as React from \"react\";\r\n\r\nimport { attachEvents } from \"../gestures/eventAttacher\";\r\n\r\nexport function useOutsideClick(\r\n elementRef: React.RefObject<HTMLElement>,\r\n callback: (event: MouseEvent) => void,\r\n deps?: React.DependencyList\r\n) {\r\n const callbackRef = React.useRef<(event: MouseEvent) => void>();\r\n\r\n if (!callbackRef.current) {\r\n callbackRef.current = callback;\r\n }\r\n\r\n // Reinitiate callback when dependency change\r\n React.useEffect(() => {\r\n callbackRef.current = callback;\r\n\r\n return () => {\r\n callbackRef.current = () => false;\r\n };\r\n }, deps);\r\n\r\n React.useEffect(() => {\r\n const handleOutsideClick = (e: MouseEvent) => {\r\n if (!elementRef?.current?.contains(e.target as Element)) {\r\n callbackRef.current && callbackRef.current(e);\r\n }\r\n };\r\n\r\n const subscribe = attachEvents([document], [[\"click\", handleOutsideClick]]);\r\n\r\n return () => subscribe && subscribe();\r\n }, []);\r\n}\r\n","import * as React from \"react\";\r\n\r\ntype MeasurementValue = number | Array<number>;\r\n\r\ntype 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 callback: (event: MeasurementType) => void,\r\n deps?: React.DependencyList\r\n) {\r\n const ref = React.useRef(null);\r\n const elementRefs = React.useRef([]);\r\n const callbackRef = React.useRef<(event: MeasurementType) => void>(callback);\r\n\r\n // Reinitiate callback when dependency change\r\n React.useEffect(() => {\r\n callbackRef.current = callback;\r\n\r\n return () => {\r\n callbackRef.current = () => false;\r\n };\r\n }, deps);\r\n\r\n React.useEffect(() => {\r\n const _refElement = ref.current || document.documentElement;\r\n const _refElementsMultiple = elementRefs.current;\r\n\r\n const resizeObserver = new ResizeObserver(([entry]) => {\r\n const { left, top, width, height } = entry.target.getBoundingClientRect();\r\n const { pageXOffset, pageYOffset } = window;\r\n\r\n if (callbackRef) {\r\n if (_refElement === document.documentElement) {\r\n return; // no-op for document\r\n } else {\r\n callbackRef.current({\r\n left: left + pageXOffset,\r\n top: top + pageYOffset,\r\n width,\r\n height,\r\n vLeft: left,\r\n vTop: top,\r\n });\r\n }\r\n }\r\n });\r\n\r\n const resizeObserverMultiple = new ResizeObserver((entries) => {\r\n const left: Array<number> = [];\r\n const top: Array<number> = [];\r\n const width: Array<number> = [];\r\n const height: Array<number> = [];\r\n const vLeft: Array<number> = [];\r\n const vTop: Array<number> = [];\r\n\r\n entries.forEach((entry) => {\r\n const {\r\n left: _left,\r\n top: _top,\r\n width: _width,\r\n height: _height,\r\n } = entry.target.getBoundingClientRect();\r\n const { pageXOffset, pageYOffset } = window;\r\n const _pageLeft = _left + pageXOffset;\r\n const _pageTop = _top + pageYOffset;\r\n\r\n left.push(_pageLeft);\r\n top.push(_pageTop);\r\n width.push(_width);\r\n height.push(_height);\r\n vLeft.push(_left);\r\n vTop.push(_top);\r\n });\r\n\r\n if (callbackRef) {\r\n callbackRef.current({\r\n left,\r\n top,\r\n width,\r\n height,\r\n vLeft,\r\n vTop,\r\n });\r\n }\r\n });\r\n\r\n if (_refElement) {\r\n if (\r\n _refElement === document.documentElement &&\r\n _refElementsMultiple.length > 0\r\n ) {\r\n _refElementsMultiple.forEach((element: any) => {\r\n resizeObserverMultiple.observe(element.current);\r\n });\r\n } else {\r\n resizeObserver.observe(_refElement);\r\n }\r\n }\r\n\r\n return () => {\r\n if (_refElement) {\r\n if (\r\n _refElement === document.documentElement &&\r\n _refElementsMultiple.length > 0\r\n ) {\r\n _refElementsMultiple.forEach((element: any) => {\r\n resizeObserverMultiple.unobserve(element.current);\r\n });\r\n } else {\r\n resizeObserver.unobserve(_refElement);\r\n }\r\n }\r\n };\r\n }, []);\r\n\r\n return (index?: number) => {\r\n if (index === null || index === undefined) {\r\n return { ref };\r\n } else {\r\n elementRefs.current[index] =\r\n elementRefs.current[index] || React.createRef();\r\n\r\n return { ref: elementRefs.current[index] };\r\n }\r\n }; // ...bind() or ...bind(index) for multiple\r\n}\r\n","import * as React from \"react\";\r\n\r\ntype WindowDimensionType = {\r\n width: number;\r\n height: number;\r\n innerWidth: number;\r\n innerHeight: number;\r\n};\r\n\r\nexport function useWindowDimension(\r\n callback: (event: WindowDimensionType) => void,\r\n deps?: React.DependencyList\r\n) {\r\n const windowDimensionsRef = React.useRef<WindowDimensionType>({\r\n width: 0,\r\n height: 0,\r\n innerWidth: 0,\r\n innerHeight: 0,\r\n });\r\n const callbackRef =\r\n React.useRef<(event: WindowDimensionType) => void>(callback);\r\n\r\n const handleCallback: () => void = () => {\r\n if (callbackRef) {\r\n callbackRef.current({\r\n ...windowDimensionsRef.current,\r\n });\r\n }\r\n };\r\n\r\n // Reinitiate callback when dependency change\r\n React.useEffect(() => {\r\n callbackRef.current = callback;\r\n\r\n return () => {\r\n callbackRef.current = () => false;\r\n };\r\n }, deps);\r\n\r\n React.useEffect(() => {\r\n const resizeObserver = new ResizeObserver(([entry]) => {\r\n const { clientWidth, clientHeight } = entry.target;\r\n const { innerWidth, innerHeight } = window;\r\n\r\n windowDimensionsRef.current = {\r\n width: clientWidth,\r\n height: clientHeight,\r\n innerWidth,\r\n innerHeight,\r\n };\r\n\r\n handleCallback();\r\n });\r\n\r\n resizeObserver.observe(document.documentElement);\r\n\r\n return () => resizeObserver.unobserve(document.documentElement);\r\n }, []);\r\n}\r\n"],"names":["internalInterpolate","makeAnimatedComponent","useMount","React.createElement","Easing","useTransition","React.useRef","React.useEffect","React.createRef"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-ui-animate",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.7",
|
|
4
4
|
"description": "React library for gestures and animation",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@raidipesh78/re-motion": "^2.0.1
|
|
7
|
+
"@raidipesh78/re-motion": "^2.0.1"
|
|
8
8
|
},
|
|
9
9
|
"peerDependencies": {
|
|
10
10
|
"react": "^16.8.0 || >=17.0.0 || >=18.0.0"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Easing,
|
|
1
|
+
import { Easing, TransitionValueConfig } from '@raidipesh78/re-motion';
|
|
2
2
|
export type InitialConfigType =
|
|
3
3
|
| 'linear'
|
|
4
4
|
| 'easein'
|
|
@@ -16,7 +16,7 @@ export type InitialConfigType =
|
|
|
16
16
|
|
|
17
17
|
export const getInitialConfig = (
|
|
18
18
|
animationType?: InitialConfigType
|
|
19
|
-
):
|
|
19
|
+
): TransitionValueConfig => {
|
|
20
20
|
switch (animationType) {
|
|
21
21
|
case 'elastic':
|
|
22
22
|
return { mass: 1, friction: 18, tension: 250 };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExtrapolateConfig,
|
|
1
|
+
import { ExtrapolateConfig, FluidValue } from '@raidipesh78/re-motion';
|
|
2
2
|
import { ValueType } from './useAnimatedValue';
|
|
3
3
|
import { interpolate as internalInterpolate } from '@raidipesh78/re-motion';
|
|
4
4
|
|
|
@@ -11,7 +11,7 @@ import { interpolate as internalInterpolate } from '@raidipesh78/re-motion';
|
|
|
11
11
|
* @returns - number | TransitionValue
|
|
12
12
|
*/
|
|
13
13
|
export function interpolate(
|
|
14
|
-
value: number |
|
|
14
|
+
value: number | FluidValue | ValueType,
|
|
15
15
|
inputRange: Array<number>,
|
|
16
16
|
outputRange: Array<number | string>,
|
|
17
17
|
extrapolateConfig?: ExtrapolateConfig
|
|
@@ -34,7 +34,7 @@ export function interpolate(
|
|
|
34
34
|
* @returns - number | TransitionValue
|
|
35
35
|
*/
|
|
36
36
|
export function bInterpolate(
|
|
37
|
-
value: number |
|
|
37
|
+
value: number | FluidValue | ValueType,
|
|
38
38
|
minOutput: number | string,
|
|
39
39
|
maxOutput: number | string,
|
|
40
40
|
extrapolateConfig?: ExtrapolateConfig
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { FluidValue } from '@raidipesh78/re-motion';
|
|
3
3
|
import { useMountedValue, UseMountedValueConfig } from '../useMountedValue';
|
|
4
4
|
|
|
5
5
|
interface MountedBlockProps {
|
|
6
6
|
state: boolean;
|
|
7
|
-
children: (animation: { value:
|
|
7
|
+
children: (animation: { value: FluidValue }) => React.ReactNode;
|
|
8
8
|
config: UseMountedValueConfig;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { useTransition,
|
|
1
|
+
import { useTransition, TransitionValueConfig } from '@raidipesh78/re-motion';
|
|
2
2
|
import { AnimationConfigUtils } from './animationType';
|
|
3
3
|
|
|
4
4
|
// useAnimatedValue value type
|
|
5
5
|
type Length = number | string;
|
|
6
|
-
type AnimatedValueType = Length;
|
|
7
6
|
|
|
8
|
-
export interface UseAnimatedValueConfig extends
|
|
7
|
+
export interface UseAnimatedValueConfig extends TransitionValueConfig {}
|
|
9
8
|
|
|
10
9
|
type AssignValue = {
|
|
11
10
|
toValue: Length;
|
|
@@ -20,11 +19,12 @@ export type ValueType =
|
|
|
20
19
|
* `useAnimatedValue` returns an animation value with `.value` and `.currentValue` property which is
|
|
21
20
|
* initialized when passed to argument (`initialValue`). The retured value persist until the lifetime of
|
|
22
21
|
* a component. It doesnot cast any re-renders which can is very good for performance optimization.
|
|
22
|
+
*
|
|
23
23
|
* @param { string | number } initialValue - Initial value
|
|
24
24
|
* @param { UseAnimatedValueConfig } config - Animation configuration object.
|
|
25
25
|
*/
|
|
26
26
|
export function useAnimatedValue(
|
|
27
|
-
initialValue:
|
|
27
|
+
initialValue: Length,
|
|
28
28
|
config?: UseAnimatedValueConfig
|
|
29
29
|
) {
|
|
30
30
|
const [animation, setAnimation] = useTransition(initialValue, {
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
useTransition,
|
|
4
|
-
TransitionValue,
|
|
5
|
-
UseMountConfig,
|
|
6
|
-
} from '@raidipesh78/re-motion';
|
|
2
|
+
import { useMount, UseMountConfig, FluidValue } from '@raidipesh78/re-motion';
|
|
7
3
|
|
|
8
4
|
export interface UseMountedValueConfig extends UseMountConfig {}
|
|
9
5
|
|
|
@@ -11,57 +7,13 @@ export interface UseMountedValueConfig extends UseMountConfig {}
|
|
|
11
7
|
* `useMountedValue` handles mounting and unmounting of a component which captures current state
|
|
12
8
|
* passed as an arugment (`state`) and exposes the shadow state which handles the mount and unmount
|
|
13
9
|
* of a component.
|
|
10
|
+
*
|
|
14
11
|
* @param { boolean } state - Boolean indicating the component should mount or unmount.
|
|
15
12
|
* @param { UseMountedValueConfig } config - Animation configuration.
|
|
16
13
|
*/
|
|
17
14
|
export function useMountedValue(state: boolean, config: UseMountedValueConfig) {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
enter,
|
|
23
|
-
exit,
|
|
24
|
-
config: innerConfig,
|
|
25
|
-
enterConfig,
|
|
26
|
-
exitConfig,
|
|
27
|
-
} = React.useRef(config).current;
|
|
28
|
-
const [animation, setAnimation] = useTransition(from, innerConfig);
|
|
29
|
-
|
|
30
|
-
React.useEffect(() => {
|
|
31
|
-
if (state) {
|
|
32
|
-
initial.current = true;
|
|
33
|
-
setMounted(true);
|
|
34
|
-
} else {
|
|
35
|
-
initial.current = false;
|
|
36
|
-
setAnimation(
|
|
37
|
-
{
|
|
38
|
-
toValue: exit,
|
|
39
|
-
config: exitConfig,
|
|
40
|
-
},
|
|
41
|
-
function ({ finished }) {
|
|
42
|
-
if (finished) {
|
|
43
|
-
setMounted(false);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
}, [state]);
|
|
49
|
-
|
|
50
|
-
React.useEffect(() => {
|
|
51
|
-
if (mounted && initial.current) {
|
|
52
|
-
setAnimation({
|
|
53
|
-
toValue: enter,
|
|
54
|
-
config: enterConfig,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}, [mounted, initial.current]);
|
|
58
|
-
|
|
59
|
-
return function (
|
|
60
|
-
callback: (
|
|
61
|
-
{ value: animation }: { value: TransitionValue },
|
|
62
|
-
mounted: boolean
|
|
63
|
-
) => React.ReactNode
|
|
64
|
-
) {
|
|
65
|
-
return callback({ value: animation }, mounted);
|
|
66
|
-
};
|
|
15
|
+
const mv = useMount(state, config);
|
|
16
|
+
return (
|
|
17
|
+
cb: (value: { value: FluidValue }, mounted: boolean) => React.ReactNode
|
|
18
|
+
) => mv((a, m) => cb({ value: a }, m));
|
|
67
19
|
}
|