react-ui-animate 1.4.2 → 1.4.5
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/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/animation/useAnimatedValue.ts +4 -1
- package/src/animation/useMountedValue.ts +6 -2
- package/dist/Interpolation.d.ts +0 -20
- package/dist/Math.d.ts +0 -34
- package/dist/Modules.d.ts +0 -32
- package/dist/Types.d.ts +0 -64
- package/dist/animation/modules/AnimatedBlock.d.ts +0 -5
- package/dist/animation/modules/AnimatedImage.d.ts +0 -5
- package/dist/animation/modules/AnimatedInline.d.ts +0 -5
- package/dist/animation/modules/MountedBlock.d.ts +0 -17
- package/dist/animation/modules/ScrollableBlock.d.ts +0 -16
- package/dist/animation/modules/index.d.ts +0 -6
- package/dist/animation/modules/makeAnimatedComponent.d.ts +0 -4
- package/dist/controllers/EventAttacher.d.ts +0 -8
- package/dist/controllers/index.d.ts +0 -1
- package/dist/getInitialConfig.d.ts +0 -3
- package/dist/hooks/useDrag.d.ts +0 -5
- package/dist/hooks/useMouseMove.d.ts +0 -5
- package/dist/hooks/useScroll.d.ts +0 -5
- package/dist/hooks/useWheel.d.ts +0 -5
- package/dist/useAnimatedValue.d.ts +0 -30
- package/dist/useMountedValue.d.ts +0 -22
package/dist/index.js
CHANGED
|
@@ -173,7 +173,10 @@ function useAnimatedValue(initialValue, config) {
|
|
|
173
173
|
setAnimation({ toValue: value });
|
|
174
174
|
}
|
|
175
175
|
else if (typeof value === "object") {
|
|
176
|
-
setAnimation({
|
|
176
|
+
setAnimation({
|
|
177
|
+
toValue: value.toValue,
|
|
178
|
+
config: { immediate: value.immediate },
|
|
179
|
+
});
|
|
177
180
|
}
|
|
178
181
|
return true;
|
|
179
182
|
}
|
|
@@ -214,7 +217,9 @@ function useMountedValue(state, config) {
|
|
|
214
217
|
setInitial(false);
|
|
215
218
|
setAnimation({
|
|
216
219
|
toValue: exit,
|
|
217
|
-
|
|
220
|
+
config: {
|
|
221
|
+
duration: exitDuration,
|
|
222
|
+
},
|
|
218
223
|
}, function (_a) {
|
|
219
224
|
var finished = _a.finished;
|
|
220
225
|
if (finished) {
|
|
@@ -227,7 +232,9 @@ function useMountedValue(state, config) {
|
|
|
227
232
|
if (mounted && initial) {
|
|
228
233
|
setAnimation({
|
|
229
234
|
toValue: enter,
|
|
230
|
-
|
|
235
|
+
config: {
|
|
236
|
+
duration: enterDuration,
|
|
237
|
+
},
|
|
231
238
|
}, function () {
|
|
232
239
|
return;
|
|
233
240
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/animation/interpolation.ts","../src/animation/getInitialConfig.ts","../src/animation/useAnimatedValue.ts","../src/animation/useMountedValue.ts","../src/animation/modules.tsx","../src/gestures/eventAttacher.ts","../src/gestures/math.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":["import {\r\n interpolateNumbers,\r\n interpolateTransitionValue,\r\n ExtrapolateConfig,\r\n isSubscriber,\r\n} from \"@raidipesh78/re-motion\";\r\n\r\n/**\r\n * interpolate function maps input range to output range\r\n * @param value - number | TransitionValue\r\n * @param inputRange - Array<number>\r\n * @param outputRange - Array<string | number>\r\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\r\n * @returns - number | TransitionValue\r\n */\r\nexport function interpolate(\r\n value: any,\r\n inputRange: Array<number>,\r\n outputRange: Array<number | string>,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n if (typeof value === \"object\" && isSubscriber(value)) {\r\n return interpolateTransitionValue(\r\n value,\r\n inputRange,\r\n outputRange,\r\n extrapolateConfig\r\n );\r\n } else if (typeof value === \"number\") {\r\n return interpolateNumbers(\r\n value,\r\n inputRange,\r\n outputRange,\r\n extrapolateConfig\r\n );\r\n } else {\r\n throw new Error(`Error! ${typeof value} cannot be interpolated`);\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: any,\r\n minOutput: number | string,\r\n maxOutput: number | string,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n return interpolate(value, [0, 1], [minOutput, maxOutput], extrapolateConfig);\r\n}\r\n","import { Easing } from \"@raidipesh78/re-motion\";\r\nimport { GenericAnimationConfig } from \"./useAnimatedValue\";\r\nexport type InitialConfigType =\r\n | \"ease\"\r\n | \"elastic\"\r\n | \"stiff\"\r\n | \"wooble\"\r\n | \"bounce\"\r\n | undefined;\r\n\r\nexport const getInitialConfig = (\r\n animationType: InitialConfigType\r\n): GenericAnimationConfig => {\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 \"ease\":\r\n default:\r\n return { mass: 1, friction: 26, tension: 170 };\r\n }\r\n};\r\n","import * as React from \"react\";\r\nimport {\r\n useTransition,\r\n TransitionValue,\r\n ResultType,\r\n} from \"@raidipesh78/re-motion\";\r\nimport { InitialConfigType, getInitialConfig } from \"./getInitialConfig\";\r\n\r\n// useAnimatedValue value type\r\ntype AnimatedValueType = number | string;\r\n\r\n/**\r\n * getValue checks for type of initialValue and throws error\r\n * for type other than AnimatedValueType\r\n */\r\nconst getValue = (value: AnimatedValueType) => {\r\n if (typeof value === \"number\" || typeof value === \"string\") {\r\n return value;\r\n } else {\r\n throw new Error(\r\n \"Invalid Value! Animated value only accepts string or number.\"\r\n );\r\n }\r\n};\r\n\r\n// General config type\r\nexport interface GenericAnimationConfig {\r\n duration?: number;\r\n mass?: number;\r\n friction?: number;\r\n tension?: number;\r\n easing?: (t: number) => number;\r\n delay?: number;\r\n}\r\n\r\nexport interface UseAnimatedValueConfig extends GenericAnimationConfig {\r\n animationType?: InitialConfigType;\r\n onAnimationEnd?: (value: ResultType) => void;\r\n listener?: (value: number) => void;\r\n immediate?: boolean;\r\n}\r\n\r\nexport type ValueReturnType =\r\n | TransitionValue\r\n | number\r\n | string\r\n | { toValue: number | string; immediate?: boolean };\r\n\r\ninterface UseAnimatedValueReturn {\r\n value: ValueReturnType;\r\n currentValue: number | string;\r\n}\r\n\r\n/**\r\n * useAnimatedValue for animated transitions\r\n */\r\nexport function useAnimatedValue(\r\n initialValue: AnimatedValueType,\r\n config?: UseAnimatedValueConfig\r\n): UseAnimatedValueReturn {\r\n const _isInitial = React.useRef(true);\r\n const _initialValue: number | string = getValue(initialValue);\r\n\r\n const animationType = config?.animationType ?? \"ease\"; // Defines default animation\r\n const onAnimationEnd = config?.onAnimationEnd;\r\n const listener = config?.listener;\r\n\r\n const [animation, setAnimation] = useTransition(_initialValue, {\r\n ...getInitialConfig(animationType),\r\n ...config,\r\n onRest: function (result: any) {\r\n if (result.finished) {\r\n onAnimationEnd && onAnimationEnd(result.value);\r\n }\r\n },\r\n onChange: function (value: number) {\r\n listener && listener(value);\r\n },\r\n });\r\n\r\n // doesn't fire on initial render\r\n React.useEffect(() => {\r\n if (!_isInitial.current) {\r\n setAnimation({ toValue: _initialValue });\r\n }\r\n _isInitial.current = false;\r\n }, [_initialValue]);\r\n\r\n const targetObject: {\r\n value: any;\r\n currentValue: string | number;\r\n } = {\r\n value: animation,\r\n currentValue: animation.get(),\r\n };\r\n\r\n return new Proxy(targetObject, {\r\n set: function (\r\n _,\r\n key,\r\n value: number | string | { toValue: number | string; immediate?: boolean }\r\n ) {\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\") {\r\n setAnimation({ toValue: value.toValue, immediate: value?.immediate });\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 useTransition,\r\n TransitionValue,\r\n UseTransitionConfig,\r\n} from \"@raidipesh78/re-motion\";\r\n\r\nexport interface InnerUseMountedValueConfig extends UseTransitionConfig {\r\n enterDuration?: number;\r\n exitDuration?: number;\r\n}\r\n\r\ninterface UseMountedValueConfig {\r\n from: number;\r\n enter: number;\r\n exit: number;\r\n config?: InnerUseMountedValueConfig;\r\n}\r\n\r\n/**\r\n * useMountedValue handles mounting and unmounting of a component\r\n * @param state - boolean\r\n * @param config - useTransitionConfig\r\n * @returns mountedValueFunction with a callback with argument ( animationNode, mounted )\r\n */\r\nexport function useMountedValue(state: boolean, config: UseMountedValueConfig) {\r\n const [initial, setInitial] = React.useState(true);\r\n const [mounted, setMounted] = React.useState(state);\r\n const { from, enter, exit, config: _config } = React.useRef(config).current;\r\n const [animation, setAnimation] = useTransition(from, _config);\r\n\r\n const enterDuration = config.config?.enterDuration ?? config.config?.duration;\r\n const exitDuration =\r\n config.config?.exitDuration ?? config.config?.exitDuration;\r\n\r\n React.useEffect(() => {\r\n if (state) {\r\n setInitial(true);\r\n setMounted(true);\r\n } else {\r\n setInitial(false);\r\n setAnimation(\r\n {\r\n toValue: exit,\r\n duration: exitDuration,\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) {\r\n setAnimation(\r\n {\r\n toValue: enter,\r\n duration: enterDuration,\r\n },\r\n function () {\r\n return;\r\n }\r\n );\r\n }\r\n }, [mounted, initial]);\r\n\r\n return function (\r\n callback: (\r\n { value }: { 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 {\r\n makeAnimatedComponent as animated,\r\n TransitionValue,\r\n} from \"@raidipesh78/re-motion\";\r\nimport { useAnimatedValue, UseAnimatedValueConfig } from \"./useAnimatedValue\";\r\nimport { useMountedValue, InnerUseMountedValueConfig } from \"./useMountedValue\";\r\n\r\n/**\r\n * Make any component animatable\r\n */\r\nexport function makeAnimatedComponent(\r\n WrappedComponent: React.ElementType<any>\r\n) {\r\n return animated(WrappedComponent);\r\n}\r\n\r\n/**\r\n * AnimatedBlock : Animated Div\r\n */\r\nexport const AnimatedBlock = animated(\"div\");\r\n/**\r\n * AnimatedInline : Animated Span\r\n */\r\nexport const AnimatedInline = animated(\"span\");\r\n/**\r\n * AnimatedImage : Animated Image\r\n */\r\nexport const AnimatedImage = animated(\"img\");\r\ninterface ScrollableBlockProps {\r\n children?: (animation: any) => React.ReactNode;\r\n direction?: \"single\" | \"both\";\r\n threshold?: number;\r\n animationConfig?: UseAnimatedValueConfig;\r\n}\r\n\r\n/**\r\n * ScrollableBlock\r\n * Used to animate element when enter into viewport\r\n * Render props pattern with children accepts animation node\r\n * animated value goes from 0 to 1 when appear on viewport & vice versa.\r\n */\r\nexport const ScrollableBlock: React.FC<ScrollableBlockProps> = (props) => {\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 <div ref={scrollableBlockRef}>{children && children(animation)}</div>;\r\n};\r\n\r\ninterface MountedBlockProps {\r\n state: boolean;\r\n children: (animation: { value: TransitionValue }) => React.ReactNode;\r\n config?: InnerUseMountedValueConfig;\r\n}\r\n\r\n/**\r\n * MountedBlock handles mounting and unmounting of a component\r\n * @props - state: boolean, config: InnerUseMountedValueConfig\r\n * @children - (animation: { value: TransitionValue }) => React.ReactNode\r\n */\r\nexport const MountedBlock = ({\r\n state,\r\n children,\r\n config,\r\n}: MountedBlockProps) => {\r\n const open = useMountedValue(state, { from: 0, enter: 1, exit: 0, config });\r\n\r\n return <>{open((animation, mounted) => mounted && children(animation))}</>;\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","/**\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","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 = Math.min(now - this.lastTimeStamp, 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._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":["isSubscriber","interpolateTransitionValue","interpolateNumbers","Easing","React.useRef","useTransition","React.useEffect","React.useState","animated","React.createElement","React.createRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/animation/interpolation.ts","../src/animation/getInitialConfig.ts","../src/animation/useAnimatedValue.ts","../src/animation/useMountedValue.ts","../src/animation/modules.tsx","../src/gestures/eventAttacher.ts","../src/gestures/math.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":["import {\r\n interpolateNumbers,\r\n interpolateTransitionValue,\r\n ExtrapolateConfig,\r\n isSubscriber,\r\n} from \"@raidipesh78/re-motion\";\r\n\r\n/**\r\n * interpolate function maps input range to output range\r\n * @param value - number | TransitionValue\r\n * @param inputRange - Array<number>\r\n * @param outputRange - Array<string | number>\r\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\r\n * @returns - number | TransitionValue\r\n */\r\nexport function interpolate(\r\n value: any,\r\n inputRange: Array<number>,\r\n outputRange: Array<number | string>,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n if (typeof value === \"object\" && isSubscriber(value)) {\r\n return interpolateTransitionValue(\r\n value,\r\n inputRange,\r\n outputRange,\r\n extrapolateConfig\r\n );\r\n } else if (typeof value === \"number\") {\r\n return interpolateNumbers(\r\n value,\r\n inputRange,\r\n outputRange,\r\n extrapolateConfig\r\n );\r\n } else {\r\n throw new Error(`Error! ${typeof value} cannot be interpolated`);\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: any,\r\n minOutput: number | string,\r\n maxOutput: number | string,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n return interpolate(value, [0, 1], [minOutput, maxOutput], extrapolateConfig);\r\n}\r\n","import { Easing } from \"@raidipesh78/re-motion\";\r\nimport { GenericAnimationConfig } from \"./useAnimatedValue\";\r\nexport type InitialConfigType =\r\n | \"ease\"\r\n | \"elastic\"\r\n | \"stiff\"\r\n | \"wooble\"\r\n | \"bounce\"\r\n | undefined;\r\n\r\nexport const getInitialConfig = (\r\n animationType: InitialConfigType\r\n): GenericAnimationConfig => {\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 \"ease\":\r\n default:\r\n return { mass: 1, friction: 26, tension: 170 };\r\n }\r\n};\r\n","import * as React from \"react\";\r\nimport {\r\n useTransition,\r\n TransitionValue,\r\n ResultType,\r\n} from \"@raidipesh78/re-motion\";\r\nimport { InitialConfigType, getInitialConfig } from \"./getInitialConfig\";\r\n\r\n// useAnimatedValue value type\r\ntype AnimatedValueType = number | string;\r\n\r\n/**\r\n * getValue checks for type of initialValue and throws error\r\n * for type other than AnimatedValueType\r\n */\r\nconst getValue = (value: AnimatedValueType) => {\r\n if (typeof value === \"number\" || typeof value === \"string\") {\r\n return value;\r\n } else {\r\n throw new Error(\r\n \"Invalid Value! Animated value only accepts string or number.\"\r\n );\r\n }\r\n};\r\n\r\n// General config type\r\nexport interface GenericAnimationConfig {\r\n duration?: number;\r\n mass?: number;\r\n friction?: number;\r\n tension?: number;\r\n easing?: (t: number) => number;\r\n delay?: number;\r\n}\r\n\r\nexport interface UseAnimatedValueConfig extends GenericAnimationConfig {\r\n animationType?: InitialConfigType;\r\n onAnimationEnd?: (value: ResultType) => void;\r\n listener?: (value: number) => void;\r\n immediate?: boolean;\r\n}\r\n\r\nexport type ValueReturnType =\r\n | TransitionValue\r\n | number\r\n | string\r\n | { toValue: number | string; immediate?: boolean };\r\n\r\ninterface UseAnimatedValueReturn {\r\n value: ValueReturnType;\r\n currentValue: number | string;\r\n}\r\n\r\n/**\r\n * useAnimatedValue for animated transitions\r\n */\r\nexport function useAnimatedValue(\r\n initialValue: AnimatedValueType,\r\n config?: UseAnimatedValueConfig\r\n): UseAnimatedValueReturn {\r\n const _isInitial = React.useRef(true);\r\n const _initialValue: number | string = getValue(initialValue);\r\n\r\n const animationType = config?.animationType ?? \"ease\"; // Defines default animation\r\n const onAnimationEnd = config?.onAnimationEnd;\r\n const listener = config?.listener;\r\n\r\n const [animation, setAnimation] = useTransition(_initialValue, {\r\n ...getInitialConfig(animationType),\r\n ...config,\r\n onRest: function (result: any) {\r\n if (result.finished) {\r\n onAnimationEnd && onAnimationEnd(result.value);\r\n }\r\n },\r\n onChange: function (value: number) {\r\n listener && listener(value);\r\n },\r\n });\r\n\r\n // doesn't fire on initial render\r\n React.useEffect(() => {\r\n if (!_isInitial.current) {\r\n setAnimation({ toValue: _initialValue });\r\n }\r\n _isInitial.current = false;\r\n }, [_initialValue]);\r\n\r\n const targetObject: {\r\n value: any;\r\n currentValue: string | number;\r\n } = {\r\n value: animation,\r\n currentValue: animation.get(),\r\n };\r\n\r\n return new Proxy(targetObject, {\r\n set: function (\r\n _,\r\n key,\r\n value: number | string | { toValue: number | string; immediate?: boolean }\r\n ) {\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\") {\r\n setAnimation({\r\n toValue: value.toValue,\r\n config: { immediate: value.immediate },\r\n });\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 useTransition,\r\n TransitionValue,\r\n UseTransitionConfig,\r\n} from \"@raidipesh78/re-motion\";\r\n\r\nexport interface InnerUseMountedValueConfig extends UseTransitionConfig {\r\n enterDuration?: number;\r\n exitDuration?: number;\r\n}\r\n\r\ninterface UseMountedValueConfig {\r\n from: number;\r\n enter: number;\r\n exit: number;\r\n config?: InnerUseMountedValueConfig;\r\n}\r\n\r\n/**\r\n * useMountedValue handles mounting and unmounting of a component\r\n * @param state - boolean\r\n * @param config - useTransitionConfig\r\n * @returns mountedValueFunction with a callback with argument ( animationNode, mounted )\r\n */\r\nexport function useMountedValue(state: boolean, config: UseMountedValueConfig) {\r\n const [initial, setInitial] = React.useState(true);\r\n const [mounted, setMounted] = React.useState(state);\r\n const { from, enter, exit, config: _config } = React.useRef(config).current;\r\n const [animation, setAnimation] = useTransition(from, _config);\r\n\r\n const enterDuration = config.config?.enterDuration ?? config.config?.duration;\r\n const exitDuration =\r\n config.config?.exitDuration ?? config.config?.exitDuration;\r\n\r\n React.useEffect(() => {\r\n if (state) {\r\n setInitial(true);\r\n setMounted(true);\r\n } else {\r\n setInitial(false);\r\n setAnimation(\r\n {\r\n toValue: exit,\r\n config: {\r\n duration: exitDuration,\r\n },\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) {\r\n setAnimation(\r\n {\r\n toValue: enter,\r\n config: {\r\n duration: enterDuration,\r\n },\r\n },\r\n function () {\r\n return;\r\n }\r\n );\r\n }\r\n }, [mounted, initial]);\r\n\r\n return function (\r\n callback: (\r\n { value }: { 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 {\r\n makeAnimatedComponent as animated,\r\n TransitionValue,\r\n} from \"@raidipesh78/re-motion\";\r\nimport { useAnimatedValue, UseAnimatedValueConfig } from \"./useAnimatedValue\";\r\nimport { useMountedValue, InnerUseMountedValueConfig } from \"./useMountedValue\";\r\n\r\n/**\r\n * Make any component animatable\r\n */\r\nexport function makeAnimatedComponent(\r\n WrappedComponent: React.ElementType<any>\r\n) {\r\n return animated(WrappedComponent);\r\n}\r\n\r\n/**\r\n * AnimatedBlock : Animated Div\r\n */\r\nexport const AnimatedBlock = animated(\"div\");\r\n/**\r\n * AnimatedInline : Animated Span\r\n */\r\nexport const AnimatedInline = animated(\"span\");\r\n/**\r\n * AnimatedImage : Animated Image\r\n */\r\nexport const AnimatedImage = animated(\"img\");\r\ninterface ScrollableBlockProps {\r\n children?: (animation: any) => React.ReactNode;\r\n direction?: \"single\" | \"both\";\r\n threshold?: number;\r\n animationConfig?: UseAnimatedValueConfig;\r\n}\r\n\r\n/**\r\n * ScrollableBlock\r\n * Used to animate element when enter into viewport\r\n * Render props pattern with children accepts animation node\r\n * animated value goes from 0 to 1 when appear on viewport & vice versa.\r\n */\r\nexport const ScrollableBlock: React.FC<ScrollableBlockProps> = (props) => {\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 <div ref={scrollableBlockRef}>{children && children(animation)}</div>;\r\n};\r\n\r\ninterface MountedBlockProps {\r\n state: boolean;\r\n children: (animation: { value: TransitionValue }) => React.ReactNode;\r\n config?: InnerUseMountedValueConfig;\r\n}\r\n\r\n/**\r\n * MountedBlock handles mounting and unmounting of a component\r\n * @props - state: boolean, config: InnerUseMountedValueConfig\r\n * @children - (animation: { value: TransitionValue }) => React.ReactNode\r\n */\r\nexport const MountedBlock = ({\r\n state,\r\n children,\r\n config,\r\n}: MountedBlockProps) => {\r\n const open = useMountedValue(state, { from: 0, enter: 1, exit: 0, config });\r\n\r\n return <>{open((animation, mounted) => mounted && children(animation))}</>;\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","/**\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","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 = Math.min(now - this.lastTimeStamp, 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._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":["isSubscriber","interpolateTransitionValue","interpolateNumbers","Easing","React.useRef","useTransition","React.useEffect","React.useState","animated","React.createElement","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": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "React library for gestures and animation",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@raidipesh78/re-motion": "^1.0
|
|
7
|
+
"@raidipesh78/re-motion": "^1.6.0"
|
|
8
8
|
},
|
|
9
9
|
"peerDependencies": {
|
|
10
10
|
"react": ">=16.13.1",
|
|
@@ -104,7 +104,10 @@ export function useAnimatedValue(
|
|
|
104
104
|
if (typeof value === "number" || typeof value === "string") {
|
|
105
105
|
setAnimation({ toValue: value });
|
|
106
106
|
} else if (typeof value === "object") {
|
|
107
|
-
setAnimation({
|
|
107
|
+
setAnimation({
|
|
108
|
+
toValue: value.toValue,
|
|
109
|
+
config: { immediate: value.immediate },
|
|
110
|
+
});
|
|
108
111
|
}
|
|
109
112
|
|
|
110
113
|
return true;
|
|
@@ -42,7 +42,9 @@ export function useMountedValue(state: boolean, config: UseMountedValueConfig) {
|
|
|
42
42
|
setAnimation(
|
|
43
43
|
{
|
|
44
44
|
toValue: exit,
|
|
45
|
-
|
|
45
|
+
config: {
|
|
46
|
+
duration: exitDuration,
|
|
47
|
+
},
|
|
46
48
|
},
|
|
47
49
|
function ({ finished }) {
|
|
48
50
|
if (finished) {
|
|
@@ -58,7 +60,9 @@ export function useMountedValue(state: boolean, config: UseMountedValueConfig) {
|
|
|
58
60
|
setAnimation(
|
|
59
61
|
{
|
|
60
62
|
toValue: enter,
|
|
61
|
-
|
|
63
|
+
config: {
|
|
64
|
+
duration: enterDuration,
|
|
65
|
+
},
|
|
62
66
|
},
|
|
63
67
|
function () {
|
|
64
68
|
return;
|
package/dist/Interpolation.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ExtrapolateConfig } from "@raidipesh78/re-motion";
|
|
2
|
-
/**
|
|
3
|
-
* interpolate function maps input range to output range
|
|
4
|
-
* @param value - number | TransitionValue
|
|
5
|
-
* @param inputRange - Array<number>
|
|
6
|
-
* @param outputRange - Array<string | number>
|
|
7
|
-
* @param extrapolateConfig - "clamp" | "identity" | "extend"
|
|
8
|
-
* @returns - number | TransitionValue
|
|
9
|
-
*/
|
|
10
|
-
export declare function interpolate(value: any, inputRange: Array<number>, outputRange: Array<number | string>, extrapolateConfig?: ExtrapolateConfig): any;
|
|
11
|
-
/**
|
|
12
|
-
* bInterpolate functions maps input range [0, 1] to given [minOutput, maxOutput]
|
|
13
|
-
* sorthand function to interpolate input range [0, 1]
|
|
14
|
-
* @param value - number | TransitionValue
|
|
15
|
-
* @param minOutput - number | string
|
|
16
|
-
* @param maxOutput - number | string
|
|
17
|
-
* @param extrapolateConfig - "clamp" | "identity" | "extend"
|
|
18
|
-
* @returns - number | TransitionValue
|
|
19
|
-
*/
|
|
20
|
-
export declare function bInterpolate(value: any, minOutput: number | string, maxOutput: number | string, extrapolateConfig?: ExtrapolateConfig): any;
|
package/dist/Math.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* bin(booleanValue)
|
|
3
|
-
* returns 1 if booleanValue == true and 0 if booleanValue == false
|
|
4
|
-
*/
|
|
5
|
-
export declare function bin(bool: boolean): 1 | 0;
|
|
6
|
-
/**
|
|
7
|
-
* mix(progress, a, b)
|
|
8
|
-
* linear interpolation between a and b
|
|
9
|
-
*/
|
|
10
|
-
export declare function mix(perc: number, val1: number, val2: number): number;
|
|
11
|
-
/**
|
|
12
|
-
* clamp(value, min, max)
|
|
13
|
-
* clamps value for min and max bounds
|
|
14
|
-
*/
|
|
15
|
-
export declare function clamp(value: number, lowerbound: number, upperbound: number): number;
|
|
16
|
-
/**
|
|
17
|
-
* rubberClamp(value, min, max, constant?)
|
|
18
|
-
* constant is optional : default 0.15
|
|
19
|
-
* clamps the value for min and max value and
|
|
20
|
-
* extends beyond min and max values with constant
|
|
21
|
-
* factor to create elastic rubber band effect
|
|
22
|
-
*/
|
|
23
|
-
export declare function rubberClamp(value: number, lowerbound: number, upperbound: number, constant?: number): number;
|
|
24
|
-
/**
|
|
25
|
-
* snapTo(value, velocity, snapPoints[])
|
|
26
|
-
* Calculates the final snapPoint according to given current value,
|
|
27
|
-
* velocity and snapPoints array
|
|
28
|
-
*/
|
|
29
|
-
export declare function snapTo(value: number, velocity: number, snapPoints: Array<number>): number;
|
|
30
|
-
/**
|
|
31
|
-
* move(array, moveIndex, toIndex)
|
|
32
|
-
* move array item from moveIndex to toIndex without array modification
|
|
33
|
-
*/
|
|
34
|
-
export declare function move(array: Array<any>, moveIndex: number, toIndex: number): any[];
|
package/dist/Modules.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { UseAnimatedValueConfig } from "./useAnimatedValue";
|
|
3
|
-
/**
|
|
4
|
-
* Make any component animatable
|
|
5
|
-
*/
|
|
6
|
-
export declare function makeAnimatedComponent(WrappedComponent: React.ElementType<any>): React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
|
|
7
|
-
/**
|
|
8
|
-
* AnimatedBlock : Animated Div
|
|
9
|
-
*/
|
|
10
|
-
export declare const AnimatedBlock: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
|
|
11
|
-
/**
|
|
12
|
-
* AnimatedInline : Animated Span
|
|
13
|
-
*/
|
|
14
|
-
export declare const AnimatedInline: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
|
|
15
|
-
/**
|
|
16
|
-
* AnimatedImage : Animated Image
|
|
17
|
-
*/
|
|
18
|
-
export declare const AnimatedImage: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
|
|
19
|
-
interface ScrollableBlockProps {
|
|
20
|
-
children?: (animation: any) => React.ReactNode;
|
|
21
|
-
direction?: "single" | "both";
|
|
22
|
-
threshold?: number;
|
|
23
|
-
animationConfig?: UseAnimatedValueConfig;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* ScrollableBlock
|
|
27
|
-
* Used to animate element when enter into viewport
|
|
28
|
-
* Render props pattern with children accepts animation node
|
|
29
|
-
* animated value goes from 0 to 1 when appear on viewport & vice versa.
|
|
30
|
-
*/
|
|
31
|
-
export declare const ScrollableBlock: React.FC<ScrollableBlockProps>;
|
|
32
|
-
export {};
|
package/dist/Types.d.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
export declare type MeasurementValue = number | Array<number>;
|
|
2
|
-
export declare type MeasurementType = {
|
|
3
|
-
left: MeasurementValue;
|
|
4
|
-
top: MeasurementValue;
|
|
5
|
-
width: MeasurementValue;
|
|
6
|
-
height: MeasurementValue;
|
|
7
|
-
vLeft: MeasurementValue;
|
|
8
|
-
vTop: MeasurementValue;
|
|
9
|
-
};
|
|
10
|
-
export declare type WindowDimensionType = {
|
|
11
|
-
width: number;
|
|
12
|
-
height: number;
|
|
13
|
-
innerWidth: number;
|
|
14
|
-
innerHeight: number;
|
|
15
|
-
};
|
|
16
|
-
declare type GenericEventType = {
|
|
17
|
-
velocityX: number;
|
|
18
|
-
velocityY: number;
|
|
19
|
-
directionX: number;
|
|
20
|
-
directionY: number;
|
|
21
|
-
};
|
|
22
|
-
export declare type ScrollEventType = {
|
|
23
|
-
isScrolling: boolean;
|
|
24
|
-
scrollX: number;
|
|
25
|
-
scrollY: number;
|
|
26
|
-
} & GenericEventType;
|
|
27
|
-
export declare type WheelEventType = {
|
|
28
|
-
target: HTMLElement | undefined | null;
|
|
29
|
-
isWheeling: boolean;
|
|
30
|
-
movementX: number;
|
|
31
|
-
movementY: number;
|
|
32
|
-
offsetX: number;
|
|
33
|
-
offsetY: number;
|
|
34
|
-
deltaX: number;
|
|
35
|
-
deltaY: number;
|
|
36
|
-
} & GenericEventType;
|
|
37
|
-
export declare type DragEventType = {
|
|
38
|
-
args: Array<number | undefined>;
|
|
39
|
-
down: boolean;
|
|
40
|
-
movementX: number;
|
|
41
|
-
movementY: number;
|
|
42
|
-
offsetX: number;
|
|
43
|
-
offsetY: number;
|
|
44
|
-
distanceX: number;
|
|
45
|
-
distanceY: number;
|
|
46
|
-
cancel: () => void;
|
|
47
|
-
} & GenericEventType;
|
|
48
|
-
export declare type MouseMoveEventType = {
|
|
49
|
-
target: EventTarget | undefined | null;
|
|
50
|
-
isMoving: boolean;
|
|
51
|
-
mouseX: number;
|
|
52
|
-
mouseY: number;
|
|
53
|
-
} & GenericEventType;
|
|
54
|
-
export declare type UseDragConfig = {
|
|
55
|
-
initial?: () => {
|
|
56
|
-
movementX: number;
|
|
57
|
-
movementY: number;
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
|
-
export declare type Vector2 = {
|
|
61
|
-
x: number;
|
|
62
|
-
y: number;
|
|
63
|
-
};
|
|
64
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { TransitionValue } from "@raidipesh78/re-motion";
|
|
3
|
-
import { InnerUseMountedValueConfig } from "../useMountedValue";
|
|
4
|
-
interface MountedBlockProps {
|
|
5
|
-
state: boolean;
|
|
6
|
-
children: (animation: {
|
|
7
|
-
value: TransitionValue;
|
|
8
|
-
}) => React.ReactNode;
|
|
9
|
-
config?: InnerUseMountedValueConfig;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* MountedBlock handles mounting and unmounting of a component
|
|
13
|
-
* @props - state: boolean, config: InnerUseMountedValueConfig
|
|
14
|
-
* @children - (animation: { value: TransitionValue }) => React.ReactNode
|
|
15
|
-
*/
|
|
16
|
-
export declare const MountedBlock: ({ state, children, config, }: MountedBlockProps) => JSX.Element;
|
|
17
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { UseAnimatedValueConfig } from "../useAnimatedValue";
|
|
3
|
-
interface ScrollableBlockProps {
|
|
4
|
-
children?: (animation: any) => React.ReactNode;
|
|
5
|
-
direction?: "single" | "both";
|
|
6
|
-
threshold?: number;
|
|
7
|
-
animationConfig?: UseAnimatedValueConfig;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* ScrollableBlock
|
|
11
|
-
* Used to animate element when enter into viewport
|
|
12
|
-
* Render props pattern with children accepts animation node
|
|
13
|
-
* animated value goes from 0 to 1 when appear on viewport & vice versa.
|
|
14
|
-
*/
|
|
15
|
-
export declare const ScrollableBlock: React.FC<ScrollableBlockProps>;
|
|
16
|
-
export {};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Attach single document / window event / HTMLElement
|
|
3
|
-
*/
|
|
4
|
-
export declare function attachEvent(domTarget: Window | Document | HTMLElement, event: string, callback: (e: any) => void, capture?: any): () => void;
|
|
5
|
-
/**
|
|
6
|
-
* Attach multiple document / window event / HTMLElement
|
|
7
|
-
*/
|
|
8
|
-
export declare function attachEvents(domTarget: Window | Document | HTMLElement, events: Array<[event: string, callback: (e: any) => void, capture?: any]>): () => void;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./EventAttacher";
|
package/dist/hooks/useDrag.d.ts
DELETED
package/dist/hooks/useWheel.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { TransitionValue, ResultType } from "@raidipesh78/re-motion";
|
|
2
|
-
import { InitialConfigType } from "./getInitialConfig";
|
|
3
|
-
declare type AnimatedValueType = number | boolean | string;
|
|
4
|
-
export interface GenericAnimationConfig {
|
|
5
|
-
duration?: number;
|
|
6
|
-
mass?: number;
|
|
7
|
-
friction?: number;
|
|
8
|
-
tension?: number;
|
|
9
|
-
easing?: (t: number) => number;
|
|
10
|
-
delay?: number;
|
|
11
|
-
}
|
|
12
|
-
export interface UseAnimatedValueConfig extends GenericAnimationConfig {
|
|
13
|
-
animationType?: InitialConfigType;
|
|
14
|
-
onAnimationEnd?: (value: ResultType) => void;
|
|
15
|
-
listener?: (value: number) => void;
|
|
16
|
-
immediate?: boolean;
|
|
17
|
-
}
|
|
18
|
-
export declare type ValueReturnType = TransitionValue | number | string | {
|
|
19
|
-
toValue: number | string;
|
|
20
|
-
immediate?: boolean;
|
|
21
|
-
};
|
|
22
|
-
interface UseAnimatedValueReturn {
|
|
23
|
-
value: ValueReturnType;
|
|
24
|
-
currentValue: number | string;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* useAnimatedValue for animated transitions
|
|
28
|
-
*/
|
|
29
|
-
export declare const useAnimatedValue: (initialValue: AnimatedValueType, config?: UseAnimatedValueConfig | undefined) => UseAnimatedValueReturn;
|
|
30
|
-
export {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { TransitionValue, UseTransitionConfig } from "@raidipesh78/re-motion";
|
|
3
|
-
interface InternalUseMountedValueConfig extends UseTransitionConfig {
|
|
4
|
-
enterDuration?: number;
|
|
5
|
-
exitDuration?: number;
|
|
6
|
-
}
|
|
7
|
-
interface UseMountedValueConfig {
|
|
8
|
-
from: number;
|
|
9
|
-
enter: number;
|
|
10
|
-
exit: number;
|
|
11
|
-
config?: InternalUseMountedValueConfig;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* useMountedValue handles mounting and unmounting of a component
|
|
15
|
-
* @param state - boolean
|
|
16
|
-
* @param config - useTransitionConfig
|
|
17
|
-
* @returns mountedValueFunction with a callback with argument ( animationNode, mounted )
|
|
18
|
-
*/
|
|
19
|
-
export declare const useMountedValue: (state: boolean, config: UseMountedValueConfig) => (callback: ({ value }: {
|
|
20
|
-
value: TransitionValue;
|
|
21
|
-
}, mounted: boolean) => React.ReactNode) => React.ReactNode;
|
|
22
|
-
export {};
|