react-ui-animate 2.0.0 → 3.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/.vscode/settings.json +3 -3
  2. package/LICENSE +21 -21
  3. package/README.md +115 -115
  4. package/dist/animation/animationType.d.ts +15 -15
  5. package/dist/animation/core/animation/Animation.d.ts +16 -0
  6. package/dist/animation/core/animation/FluidValue.d.ts +21 -0
  7. package/dist/animation/core/animation/RequestAnimationFrame.d.ts +8 -0
  8. package/dist/animation/core/animation/SpringAnimation.d.ts +41 -0
  9. package/dist/animation/core/animation/TimingAnimation.d.ts +35 -0
  10. package/dist/animation/core/animation/TransitionValue.d.ts +21 -0
  11. package/dist/animation/core/controllers/Animation.d.ts +16 -0
  12. package/dist/animation/core/controllers/FluidValue.d.ts +32 -0
  13. package/dist/animation/core/controllers/RequestAnimationFrame.d.ts +8 -0
  14. package/dist/animation/core/controllers/SpringAnimation.d.ts +41 -0
  15. package/dist/animation/core/controllers/TimingAnimation.d.ts +35 -0
  16. package/dist/animation/core/easing/Bezier.d.ts +8 -0
  17. package/dist/animation/core/easing/Easing.d.ts +40 -0
  18. package/dist/animation/core/helpers/camelCaseToKebabCase.d.ts +8 -0
  19. package/dist/animation/core/helpers/camelToDash.d.ts +7 -0
  20. package/dist/animation/core/helpers/canInterpolate.d.ts +11 -0
  21. package/dist/animation/core/helpers/getAnimatableObject.d.ts +22 -0
  22. package/dist/animation/core/helpers/getCleanProps.d.ts +10 -0
  23. package/dist/animation/core/helpers/getCssValue.d.ts +8 -0
  24. package/dist/animation/core/helpers/getNonAnimatableStyle.d.ts +6 -0
  25. package/dist/animation/core/helpers/index.d.ts +5 -0
  26. package/dist/animation/core/helpers/isDefined.d.ts +12 -0
  27. package/dist/animation/core/helpers/isFluidValue.d.ts +6 -0
  28. package/dist/animation/core/index.d.ts +11 -0
  29. package/dist/animation/core/interpolation/Colors.d.ts +25 -0
  30. package/dist/animation/core/interpolation/Interpolation.d.ts +80 -0
  31. package/dist/animation/core/interpolation/__tests__/Colors.test.d.ts +1 -0
  32. package/dist/animation/core/react/Tags.d.ts +3 -0
  33. package/dist/animation/core/react/TransformStyles.d.ts +8 -0
  34. package/dist/animation/core/react/animated.d.ts +29 -0
  35. package/dist/animation/core/react/combineRefs.d.ts +2 -0
  36. package/dist/animation/core/react/fluid.d.ts +6 -0
  37. package/dist/animation/core/react/functions/camelToDash.d.ts +7 -0
  38. package/dist/animation/core/react/functions/getAnimatableObject.d.ts +22 -0
  39. package/dist/animation/core/react/functions/getCleanProps.d.ts +4 -0
  40. package/dist/animation/core/react/functions/getCssValue.d.ts +8 -0
  41. package/dist/animation/core/react/functions/getNonAnimatableStyle.d.ts +6 -0
  42. package/dist/animation/core/react/functions/index.d.ts +7 -0
  43. package/dist/animation/core/react/functions/isDefined.d.ts +6 -0
  44. package/dist/animation/core/react/functions/isTransitionValue.d.ts +6 -0
  45. package/dist/animation/core/react/helpers/camelToDash.d.ts +7 -0
  46. package/dist/animation/core/react/helpers/canInterpolate.d.ts +7 -0
  47. package/dist/animation/core/react/helpers/getAnimatableObject.d.ts +22 -0
  48. package/dist/animation/core/react/helpers/getCleanProps.d.ts +4 -0
  49. package/dist/animation/core/react/helpers/getCssValue.d.ts +8 -0
  50. package/dist/animation/core/react/helpers/getNonAnimatableStyle.d.ts +6 -0
  51. package/dist/animation/core/react/helpers/index.d.ts +7 -0
  52. package/dist/animation/core/react/helpers/isDefined.d.ts +6 -0
  53. package/dist/animation/core/react/helpers/isFluidValue.d.ts +6 -0
  54. package/dist/animation/core/react/helpers/isTransitionValue.d.ts +6 -0
  55. package/dist/animation/core/react/makeFluid.d.ts +30 -0
  56. package/dist/animation/core/react/transforms.d.ts +6 -0
  57. package/dist/animation/core/react/useFluidValue.d.ts +9 -0
  58. package/dist/animation/core/react/useMount.d.ts +20 -0
  59. package/dist/animation/core/react/useMounts.d.ts +26 -0
  60. package/dist/animation/core/react/useTransition.d.ts +9 -0
  61. package/dist/animation/core/react/useTransitions.d.ts +11 -0
  62. package/dist/animation/core/types/animation.d.ts +54 -0
  63. package/dist/animation/core/types/common.d.ts +4 -0
  64. package/dist/animation/core/types/fluid.d.ts +19 -0
  65. package/dist/animation/core/types/index.d.ts +2 -0
  66. package/dist/animation/getInitialConfig.d.ts +3 -3
  67. package/dist/animation/index.d.ts +6 -6
  68. package/dist/animation/interpolation.d.ts +21 -21
  69. package/dist/animation/lib/animationType.d.ts +15 -0
  70. package/dist/animation/lib/getInitialConfig.d.ts +3 -0
  71. package/dist/animation/lib/index.d.ts +5 -0
  72. package/dist/animation/lib/interpolation.d.ts +20 -0
  73. package/dist/animation/lib/modules/AnimatedBlock.d.ts +8 -0
  74. package/dist/animation/lib/modules/AnimatedImage.d.ts +8 -0
  75. package/dist/animation/lib/modules/AnimatedInline.d.ts +8 -0
  76. package/dist/animation/lib/modules/MountedBlock.d.ts +29 -0
  77. package/dist/animation/lib/modules/ScrollableBlock.d.ts +22 -0
  78. package/dist/animation/lib/modules/TransitionBlock.d.ts +18 -0
  79. package/dist/animation/lib/modules/index.d.ts +6 -0
  80. package/dist/animation/lib/useAnimatedValue.d.ts +17 -0
  81. package/dist/animation/lib/useMountedValue.d.ts +14 -0
  82. package/dist/animation/modules/AnimatedBlock.d.ts +8 -8
  83. package/dist/animation/modules/AnimatedImage.d.ts +8 -8
  84. package/dist/animation/modules/AnimatedInline.d.ts +8 -8
  85. package/dist/animation/modules/MountedBlock.d.ts +29 -18
  86. package/dist/animation/modules/ScrollableBlock.d.ts +21 -21
  87. package/dist/animation/modules/TransitionBlock.d.ts +17 -17
  88. package/dist/animation/modules/index.d.ts +6 -6
  89. package/dist/animation/useAnimatedValue.d.ts +22 -22
  90. package/dist/animation/useMountedValue.d.ts +15 -15
  91. package/dist/gestures/controllers/DragGesture.d.ts +17 -17
  92. package/dist/gestures/controllers/Gesture.d.ts +20 -20
  93. package/dist/gestures/controllers/MouseMoveGesture.d.ts +13 -13
  94. package/dist/gestures/controllers/ScrollGesture.d.ts +14 -14
  95. package/dist/gestures/controllers/WheelGesture.d.ts +15 -15
  96. package/dist/gestures/controllers/index.d.ts +4 -4
  97. package/dist/gestures/eventAttacher.d.ts +11 -11
  98. package/dist/gestures/helpers/eventAttacher.d.ts +11 -0
  99. package/dist/gestures/helpers/index.d.ts +1 -0
  100. package/dist/gestures/helpers/math.d.ts +34 -0
  101. package/dist/gestures/helpers/withDefault.d.ts +4 -0
  102. package/dist/gestures/hooks/index.d.ts +5 -5
  103. package/dist/gestures/hooks/useDrag.d.ts +4 -4
  104. package/dist/gestures/hooks/useGesture.d.ts +9 -9
  105. package/dist/gestures/hooks/useMouseMove.d.ts +4 -4
  106. package/dist/gestures/hooks/useRecognizer.d.ts +10 -10
  107. package/dist/gestures/hooks/useScroll.d.ts +4 -4
  108. package/dist/gestures/hooks/useWheel.d.ts +4 -4
  109. package/dist/gestures/index.d.ts +2 -2
  110. package/dist/gestures/math.d.ts +34 -34
  111. package/dist/gestures/types.d.ts +51 -51
  112. package/dist/gestures/withDefault.d.ts +4 -4
  113. package/dist/hooks/index.d.ts +3 -3
  114. package/dist/hooks/useMeasure.d.ts +14 -14
  115. package/dist/hooks/useOutsideClick.d.ts +2 -2
  116. package/dist/hooks/useWindowDimension.d.ts +9 -9
  117. package/dist/index.d.ts +9 -5
  118. package/dist/index.js +2758 -1052
  119. package/dist/index.js.map +1 -1
  120. package/dist/utils/delay.d.ts +5 -5
  121. package/dist/utils/index.d.ts +1 -2
  122. package/dist/utils/isDefined.d.ts +1 -1
  123. package/ecosystem.config.js +12 -0
  124. package/example/README.md +46 -0
  125. package/example/package-lock.json +19597 -0
  126. package/example/package.json +45 -0
  127. package/example/public/favicon.ico +0 -0
  128. package/example/public/index.html +20 -0
  129. package/example/public/logo192.png +0 -0
  130. package/example/public/logo512.png +0 -0
  131. package/example/public/manifest.json +25 -0
  132. package/example/public/robots.txt +3 -0
  133. package/example/src/App.tsx +41 -0
  134. package/example/src/components/Draggable.tsx +46 -0
  135. package/example/src/components/Gestures.tsx +151 -0
  136. package/example/src/components/Interpolation.tsx +21 -0
  137. package/example/src/components/Loop.tsx +48 -0
  138. package/example/src/components/MountedBlock.tsx +25 -0
  139. package/example/src/components/MouseMove.tsx +59 -0
  140. package/example/src/components/MultistageTransition.tsx +34 -0
  141. package/example/src/components/Scroll.tsx +39 -0
  142. package/example/src/components/ScrollableBlock.tsx +27 -0
  143. package/example/src/components/SnapTo.tsx +55 -0
  144. package/example/src/components/TransitionBlock.tsx +37 -0
  145. package/example/src/components/Wheel.tsx +39 -0
  146. package/example/src/components/index.ts +18 -0
  147. package/example/src/components/svgLine.tsx +48 -0
  148. package/example/src/components/useAnimatedValue.tsx +57 -0
  149. package/example/src/components/useMountedValue.tsx +62 -0
  150. package/example/src/index.css +8 -0
  151. package/example/src/index.tsx +16 -0
  152. package/example/tsconfig.json +26 -0
  153. package/package.json +48 -48
  154. package/{rollup.config.js → rollup.config.mjs} +18 -18
  155. package/src/animation/core/controllers/Animation.ts +27 -0
  156. package/src/animation/core/controllers/FluidValue.ts +97 -0
  157. package/src/animation/core/controllers/RequestAnimationFrame.ts +13 -0
  158. package/src/animation/core/controllers/SpringAnimation.ts +218 -0
  159. package/src/animation/core/controllers/TimingAnimation.ts +152 -0
  160. package/src/animation/core/easing/Bezier.ts +146 -0
  161. package/src/animation/core/easing/Easing.ts +132 -0
  162. package/src/animation/core/helpers/camelCaseToKebabCase.ts +10 -0
  163. package/src/animation/core/helpers/getCleanProps.ts +16 -0
  164. package/src/animation/core/helpers/getCssValue.ts +60 -0
  165. package/src/animation/core/helpers/index.ts +5 -0
  166. package/src/animation/core/helpers/isDefined.ts +14 -0
  167. package/src/animation/core/helpers/isFluidValue.ts +11 -0
  168. package/src/animation/core/index.ts +16 -0
  169. package/src/animation/core/interpolation/Colors.ts +232 -0
  170. package/src/animation/core/interpolation/Interpolation.ts +395 -0
  171. package/src/animation/core/interpolation/__tests__/Colors.test.tsx +35 -0
  172. package/src/animation/core/react/fluid.ts +197 -0
  173. package/src/animation/core/react/makeFluid.ts +294 -0
  174. package/src/animation/core/react/transforms.ts +90 -0
  175. package/src/animation/core/react/useFluidValue.ts +43 -0
  176. package/src/animation/core/react/useMount.ts +58 -0
  177. package/src/animation/core/types/animation.d.ts +56 -0
  178. package/src/animation/core/types/common.d.ts +4 -0
  179. package/src/animation/core/types/fluid.d.ts +38 -0
  180. package/src/animation/{animationType.ts → lib/animationType.ts} +17 -17
  181. package/src/animation/{getInitialConfig.ts → lib/getInitialConfig.ts} +61 -61
  182. package/src/animation/lib/index.ts +12 -0
  183. package/src/animation/{interpolation.ts → lib/interpolation.ts} +47 -48
  184. package/src/animation/{modules → lib/modules}/AnimatedBlock.ts +8 -8
  185. package/src/animation/{modules → lib/modules}/AnimatedImage.ts +8 -8
  186. package/src/animation/{modules → lib/modules}/AnimatedInline.ts +8 -8
  187. package/src/animation/lib/modules/MountedBlock.tsx +51 -0
  188. package/src/animation/{modules → lib/modules}/ScrollableBlock.tsx +68 -69
  189. package/src/animation/{modules → lib/modules}/TransitionBlock.tsx +28 -29
  190. package/src/animation/{modules → lib/modules}/index.ts +6 -6
  191. package/src/animation/{useAnimatedValue.ts → lib/useAnimatedValue.ts} +60 -71
  192. package/src/animation/{useMountedValue.ts → lib/useMountedValue.ts} +18 -19
  193. package/src/gestures/controllers/DragGesture.ts +178 -177
  194. package/src/gestures/controllers/Gesture.ts +54 -54
  195. package/src/gestures/controllers/MouseMoveGesture.ts +111 -111
  196. package/src/gestures/controllers/ScrollGesture.ts +107 -107
  197. package/src/gestures/controllers/WheelGesture.ts +123 -123
  198. package/src/gestures/controllers/index.ts +4 -4
  199. package/src/gestures/{eventAttacher.ts → helpers/eventAttacher.ts} +67 -67
  200. package/src/gestures/helpers/index.ts +1 -0
  201. package/src/gestures/{math.ts → helpers/math.ts} +120 -120
  202. package/src/gestures/{withDefault.ts → helpers/withDefault.ts} +3 -3
  203. package/src/gestures/hooks/index.ts +5 -5
  204. package/src/gestures/hooks/useDrag.ts +14 -14
  205. package/src/gestures/hooks/useGesture.ts +38 -38
  206. package/src/gestures/hooks/useMouseMove.ts +11 -11
  207. package/src/gestures/hooks/useRecognizer.ts +59 -59
  208. package/src/gestures/hooks/useScroll.ts +11 -11
  209. package/src/gestures/hooks/useWheel.ts +11 -11
  210. package/src/gestures/{types.ts → types/index.d.ts} +49 -49
  211. package/src/hooks/index.ts +3 -3
  212. package/src/hooks/useMeasure.ts +132 -133
  213. package/src/hooks/useOutsideClick.ts +36 -36
  214. package/src/hooks/useWindowDimension.ts +58 -59
  215. package/src/index.ts +42 -5
  216. package/src/utils/delay.ts +9 -9
  217. package/src/utils/index.ts +1 -2
  218. package/tsconfig.json +24 -25
  219. package/src/animation/index.ts +0 -10
  220. package/src/animation/modules/MountedBlock.tsx +0 -25
  221. package/src/gestures/index.ts +0 -2
  222. package/src/utils/isDefined.ts +0 -4
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/delay.ts","../src/animation/interpolation.ts","../src/animation/modules/AnimatedBlock.ts","../src/animation/modules/AnimatedInline.ts","../src/animation/modules/AnimatedImage.ts","../src/animation/useMountedValue.ts","../src/animation/modules/MountedBlock.tsx","../src/animation/getInitialConfig.ts","../src/animation/animationType.ts","../src/animation/useAnimatedValue.ts","../src/animation/modules/ScrollableBlock.tsx","../src/gestures/math.ts","../src/animation/modules/TransitionBlock.tsx","../src/gestures/eventAttacher.ts","../src/gestures/withDefault.ts","../src/gestures/controllers/Gesture.ts","../src/gestures/controllers/DragGesture.ts","../src/gestures/controllers/MouseMoveGesture.ts","../src/gestures/controllers/ScrollGesture.ts","../src/gestures/controllers/WheelGesture.ts","../src/gestures/hooks/useRecognizer.ts","../src/gestures/hooks/useDrag.ts","../src/gestures/hooks/useMouseMove.ts","../src/gestures/hooks/useScroll.ts","../src/gestures/hooks/useWheel.ts","../src/gestures/hooks/useGesture.ts","../src/hooks/useOutsideClick.ts","../src/hooks/useMeasure.ts","../src/hooks/useWindowDimension.ts"],"sourcesContent":["/**\r\n * @param { number } ms - number of milliseconds to delay code execution\r\n * @returns Promise\r\n */\r\nexport function delay(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(() => resolve(null), ms);\r\n });\r\n}\r\n","import { ExtrapolateConfig, FluidValue } from '@raidipesh78/re-motion';\r\nimport { ValueType } from './useAnimatedValue';\r\nimport { interpolate as internalInterpolate } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * interpolate functions maps input range to given output range\r\n * @param value - number | TransitionValue\r\n * @param inputRange - Array<number>\r\n * @param outputRange - Array<number | string>\r\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\r\n * @returns - number | TransitionValue\r\n */\r\nexport function interpolate(\r\n value: number | FluidValue | ValueType,\r\n inputRange: Array<number>,\r\n outputRange: Array<number | string>,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n return internalInterpolate(\r\n value as any,\r\n inputRange,\r\n outputRange,\r\n extrapolateConfig\r\n );\r\n}\r\n\r\n/**\r\n * bInterpolate functions maps input range [0, 1] to given [minOutput, maxOutput]\r\n * sorthand function to interpolate input range [0, 1]\r\n * @param value - number | TransitionValue\r\n * @param minOutput - number | string\r\n * @param maxOutput - number | string\r\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\r\n * @returns - number | TransitionValue\r\n */\r\nexport function bInterpolate(\r\n value: number | FluidValue | ValueType,\r\n minOutput: number | string,\r\n maxOutput: number | string,\r\n extrapolateConfig?: ExtrapolateConfig\r\n) {\r\n return internalInterpolate(\r\n value as any,\r\n [0, 1],\r\n [minOutput, maxOutput],\r\n extrapolateConfig\r\n );\r\n}\r\n","import { makeAnimatedComponent } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * AnimatedBlock - A higher order component built upon `div` element\r\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\r\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\r\n */\r\nexport const AnimatedBlock = makeAnimatedComponent('div');\r\n","import { makeAnimatedComponent } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * AnimatedInline - A higher order component built upon `span` element\r\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\r\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\r\n */\r\nexport const AnimatedInline = makeAnimatedComponent('span');\r\n","import { makeAnimatedComponent } from '@raidipesh78/re-motion';\r\n\r\n/**\r\n * AnimatedImage - A higher order component built upon `img` element\r\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\r\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\r\n */\r\nexport const AnimatedImage = makeAnimatedComponent('img');\r\n","import * as React from 'react';\r\nimport { useMount, UseMountConfig, FluidValue } from '@raidipesh78/re-motion';\r\n\r\nexport interface UseMountedValueConfig extends UseMountConfig {}\r\n\r\n/**\r\n * `useMountedValue` handles mounting and unmounting of a component which captures current state\r\n * passed as an arugment (`state`) and exposes the shadow state which handles the mount and unmount\r\n * of a component.\r\n *\r\n * @param { boolean } state - Boolean indicating the component should mount or unmount.\r\n * @param { UseMountedValueConfig } config - Animation configuration.\r\n */\r\nexport function useMountedValue(state: boolean, config: UseMountedValueConfig) {\r\n const mv = useMount(state, config);\r\n return (\r\n cb: (value: { value: FluidValue }, mounted: boolean) => React.ReactNode\r\n ) => mv((a, m) => cb({ value: a }, m));\r\n}\r\n","import * as React from 'react';\r\nimport { FluidValue } from '@raidipesh78/re-motion';\r\nimport { useMountedValue, UseMountedValueConfig } from '../useMountedValue';\r\n\r\ninterface MountedBlockProps {\r\n state: boolean;\r\n children: (animation: { value: FluidValue }) => React.ReactNode;\r\n config: UseMountedValueConfig;\r\n}\r\n\r\n/**\r\n * MountedBlock - Higher order component which handles mounting and unmounting of a component.\r\n * @prop { boolean } state - Boolean indicating the component should mount or unmount.\r\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\r\n * @prop { UseMountedValueConfig } config - Animation configuration.\r\n */\r\nexport const MountedBlock = ({\r\n state,\r\n children,\r\n config,\r\n}: MountedBlockProps) => {\r\n const open = useMountedValue(state, config);\r\n\r\n return <>{open((animation, mounted) => mounted && children(animation))}</>;\r\n};\r\n","import { Easing, TransitionValueConfig } from '@raidipesh78/re-motion';\r\nexport type InitialConfigType =\r\n | 'linear'\r\n | 'easein'\r\n | 'easeout'\r\n | 'easeinout'\r\n | 'ease'\r\n | 'power1'\r\n | 'power2'\r\n | 'power3'\r\n | 'power4'\r\n | 'elastic'\r\n | 'stiff'\r\n | 'wooble'\r\n | 'bounce';\r\n\r\nexport const getInitialConfig = (\r\n animationType?: InitialConfigType\r\n): TransitionValueConfig => {\r\n switch (animationType) {\r\n case 'elastic':\r\n return { mass: 1, friction: 18, tension: 250 };\r\n\r\n case 'stiff':\r\n return { mass: 1, friction: 18, tension: 350 };\r\n\r\n case 'wooble':\r\n return { mass: 1, friction: 8, tension: 250 };\r\n\r\n case 'bounce':\r\n return { duration: 500, easing: Easing.bounce };\r\n\r\n case 'power1':\r\n return { duration: 500, easing: Easing.bezier(0.17, 0.42, 0.51, 0.97) };\r\n\r\n case 'power2':\r\n return { duration: 500, easing: Easing.bezier(0.07, 0.11, 0.13, 1) };\r\n\r\n case 'power3':\r\n return { duration: 500, easing: Easing.bezier(0.09, 0.7, 0.16, 1.04) };\r\n\r\n case 'power4':\r\n return { duration: 500, easing: Easing.bezier(0.05, 0.54, 0, 1.03) };\r\n\r\n case 'linear':\r\n return { duration: 500, easing: Easing.linear };\r\n\r\n case 'easein':\r\n return { duration: 500, easing: Easing.in(Easing.ease) };\r\n\r\n case 'easeout':\r\n return { duration: 500, easing: Easing.out(Easing.ease) };\r\n\r\n case 'easeinout':\r\n return { duration: 500, easing: Easing.inOut(Easing.ease) };\r\n\r\n case 'ease':\r\n default:\r\n return { mass: 1, friction: 34, tension: 290 };\r\n }\r\n};\r\n","import { getInitialConfig } from './getInitialConfig';\r\n\r\nexport const AnimationConfigUtils = {\r\n ELASTIC: getInitialConfig('elastic'),\r\n BOUNCE: getInitialConfig('bounce'),\r\n EASE: getInitialConfig('ease'),\r\n STIFF: getInitialConfig('stiff'),\r\n WOOBLE: getInitialConfig('wooble'),\r\n EASE_IN: getInitialConfig('easein'),\r\n EASE_OUT: getInitialConfig('easeout'),\r\n EASE_IN_OUT: getInitialConfig('easeinout'),\r\n POWER1: getInitialConfig('power1'),\r\n POWER2: getInitialConfig('power2'),\r\n POWER3: getInitialConfig('power3'),\r\n POWER4: getInitialConfig('power4'),\r\n LINEAR: getInitialConfig('linear'),\r\n};\r\n","import { useTransition, TransitionValueConfig } from '@raidipesh78/re-motion';\r\nimport { AnimationConfigUtils } from './animationType';\r\n\r\n// useAnimatedValue value type\r\ntype Length = number | string;\r\n\r\nexport interface UseAnimatedValueConfig extends TransitionValueConfig {}\r\n\r\ntype AssignValue = {\r\n toValue: Length;\r\n config?: UseAnimatedValueConfig;\r\n};\r\nexport type ValueType =\r\n | Length\r\n | AssignValue\r\n | ((update: (next: AssignValue) => Promise<any>) => void);\r\n\r\n/**\r\n * `useAnimatedValue` returns an animation value with `.value` and `.currentValue` property which is\r\n * initialized when passed to argument (`initialValue`). The retured value persist until the lifetime of\r\n * a component. It doesnot cast any re-renders which can is very good for performance optimization.\r\n *\r\n * @param { string | number } initialValue - Initial value\r\n * @param { UseAnimatedValueConfig } config - Animation configuration object.\r\n */\r\nexport function useAnimatedValue(\r\n initialValue: Length,\r\n config?: UseAnimatedValueConfig\r\n) {\r\n const [animation, setAnimation] = useTransition(initialValue, {\r\n ...AnimationConfigUtils.EASE,\r\n ...config,\r\n });\r\n\r\n const targetObject: {\r\n value: ValueType;\r\n currentValue: number | string;\r\n } = {\r\n value: animation as any,\r\n currentValue: animation.get(),\r\n };\r\n\r\n return new Proxy(targetObject, {\r\n set: function (_, key, value: ValueType) {\r\n if (key === 'value') {\r\n if (typeof value === 'number' || typeof value === 'string') {\r\n setAnimation({ toValue: value });\r\n } else if (typeof value === 'object' || typeof value === 'function') {\r\n setAnimation(value);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n throw new Error('You cannot set any other property to animation node.');\r\n },\r\n get: function (_, key) {\r\n if (key === 'value') {\r\n return animation;\r\n }\r\n\r\n if (key === 'currentValue') {\r\n return animation.get();\r\n }\r\n\r\n throw new Error(\r\n 'You cannot access any other property from animation node.'\r\n );\r\n },\r\n });\r\n}\r\n","import * as React from 'react';\r\nimport {\r\n useAnimatedValue,\r\n UseAnimatedValueConfig,\r\n ValueType,\r\n} from '../useAnimatedValue';\r\n\r\ninterface ScrollableBlockProps {\r\n children?: (animation: { value: ValueType }) => React.ReactNode;\r\n direction?: 'single' | 'both';\r\n threshold?: number;\r\n animationConfig?: UseAnimatedValueConfig;\r\n}\r\n\r\n/**\r\n * ScrollableBlock - Higher order component to handle the entrance or exit animation\r\n * of a component when it enters or exit the viewport. Accepts child as a function with\r\n * `AnimatedValue` as its first argument which can be interpolated on input range [0, 1]\r\n * @prop { function } children - child as a function with `AnimatedValue` as its first argument.\r\n * @prop { 'single' | 'both' } direction - single applies animation on enter once, both applies on enter and exit.\r\n * @prop { number } threshold - should be in range 0 to 1 which equivalent to `IntersectionObserver` threshold.\r\n * @prop { UseAnimatedValueConfig } animationConfig - Animation config\r\n */\r\nexport const ScrollableBlock = (props: ScrollableBlockProps) => {\r\n const {\r\n children,\r\n direction = 'single',\r\n animationConfig,\r\n threshold = 0.2,\r\n } = props;\r\n const scrollableBlockRef = React.useRef<HTMLDivElement>(null);\r\n const animation = useAnimatedValue(0, animationConfig); // 0: not intersecting | 1: intersecting\r\n\r\n React.useEffect(() => {\r\n const _scrollableBlock = scrollableBlockRef.current;\r\n\r\n const observer = new IntersectionObserver(\r\n function ([entry]) {\r\n const { isIntersecting } = entry;\r\n\r\n if (isIntersecting) {\r\n animation.value = 1;\r\n } else {\r\n if (direction === 'both') animation.value = 0;\r\n }\r\n },\r\n {\r\n root: null, // FOR VIEWPORT ONLY\r\n threshold,\r\n }\r\n );\r\n\r\n if (_scrollableBlock) {\r\n observer.observe(_scrollableBlock);\r\n }\r\n\r\n return () => {\r\n if (_scrollableBlock) {\r\n observer.unobserve(_scrollableBlock);\r\n }\r\n };\r\n }, []);\r\n\r\n return (\r\n <div ref={scrollableBlockRef}>\r\n {children && children({ value: animation.value })}\r\n </div>\r\n );\r\n};\r\n","/**\r\n * bin(booleanValue)\r\n * returns 1 if booleanValue == true and 0 if booleanValue == false\r\n */\r\nexport function bin(bool: boolean) {\r\n return bool ? 1 : 0;\r\n}\r\n\r\n/**\r\n * mix(progress, a, b)\r\n * linear interpolation between a and b\r\n */\r\nexport function mix(perc: number, val1: number, val2: number) {\r\n return val1 * (1 - perc) + val2 * perc;\r\n}\r\n\r\n/**\r\n * clamp(value, min, max)\r\n * clamps value for min and max bounds\r\n */\r\nexport function clamp(value: number, lowerbound: number, upperbound: number) {\r\n return Math.min(Math.max(value, lowerbound), upperbound);\r\n}\r\n\r\nfunction rubber2(distanceFromEdge: number, constant: number) {\r\n return Math.pow(distanceFromEdge, constant * 5);\r\n}\r\n\r\nfunction rubber(distanceFromEdge: number, dimension: number, constant: number) {\r\n if (dimension === 0 || Math.abs(dimension) === Infinity)\r\n return rubber2(distanceFromEdge, constant);\r\n return (\r\n (distanceFromEdge * dimension * constant) /\r\n (dimension + constant * distanceFromEdge)\r\n );\r\n}\r\n\r\n/**\r\n * rubberClamp(value, min, max, constant?)\r\n * constant is optional : default 0.15\r\n * clamps the value for min and max value and\r\n * extends beyond min and max values with constant\r\n * factor to create elastic rubber band effect\r\n */\r\nexport function rubberClamp(\r\n value: number,\r\n lowerbound: number,\r\n upperbound: number,\r\n constant: number = 0.15\r\n) {\r\n if (constant === 0) return clamp(value, lowerbound, upperbound);\r\n\r\n if (value < lowerbound) {\r\n return (\r\n -rubber(lowerbound - value, upperbound - lowerbound, constant) +\r\n lowerbound\r\n );\r\n }\r\n\r\n if (value > upperbound) {\r\n return (\r\n +rubber(value - upperbound, upperbound - lowerbound, constant) +\r\n upperbound\r\n );\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/**\r\n * snapTo(value, velocity, snapPoints[])\r\n * Calculates the final snapPoint according to given current value,\r\n * velocity and snapPoints array\r\n */\r\nexport function snapTo(\r\n value: number,\r\n velocity: number,\r\n snapPoints: Array<number>\r\n): number {\r\n const finalValue = value + velocity * 0.2;\r\n const getDiff = (point: number) => Math.abs(point - finalValue);\r\n const deltas = snapPoints.map(getDiff);\r\n const minDelta = Math.min(...deltas);\r\n\r\n return snapPoints.reduce(function (acc, point) {\r\n if (getDiff(point) === minDelta) {\r\n return point;\r\n } else {\r\n return acc;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * move(array, moveIndex, toIndex)\r\n * move array item from moveIndex to toIndex without array modification\r\n */\r\nexport function move(array: Array<any>, moveIndex: number, toIndex: number) {\r\n const item = array[moveIndex];\r\n const length = array.length;\r\n const diff = moveIndex - toIndex;\r\n\r\n if (diff > 0) {\r\n return [\r\n ...array.slice(0, toIndex),\r\n item,\r\n ...array.slice(toIndex, moveIndex),\r\n ...array.slice(moveIndex + 1, length),\r\n ];\r\n } else if (diff < 0) {\r\n const targetIndex = toIndex + 1;\r\n return [\r\n ...array.slice(0, moveIndex),\r\n ...array.slice(moveIndex + 1, targetIndex),\r\n item,\r\n ...array.slice(targetIndex, length),\r\n ];\r\n }\r\n return array;\r\n}\r\n","import * as React from 'react';\r\nimport { bin } from '../../gestures/math';\r\nimport {\r\n useAnimatedValue,\r\n UseAnimatedValueConfig,\r\n ValueType,\r\n} from '../useAnimatedValue';\r\n\r\ninterface TransitionBlockProps {\r\n state: boolean;\r\n children: (animation: { value: ValueType }) => React.ReactNode;\r\n config?: UseAnimatedValueConfig;\r\n}\r\n\r\n/**\r\n * TransitionBlock - Higher order component which animates on state change.\r\n * @prop { boolean } state - Boolean indicating the current state of animation, usually `false = 0 and true = 1`.\r\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\r\n * @prop { UseAnimatedValueConfig } config - Animation configuration.\r\n */\r\nexport const TransitionBlock = ({\r\n state,\r\n children,\r\n config,\r\n}: TransitionBlockProps) => {\r\n const amv = useAnimatedValue(bin(state), config);\r\n\r\n return <>{children({ value: amv.value })}</>;\r\n};\r\n","type MouseEventType =\r\n | 'click'\r\n | 'dblclick'\r\n | 'mousedown'\r\n | 'mousemove'\r\n | 'mouseup'\r\n | 'touchstart'\r\n | 'touchmove'\r\n | 'touchend'\r\n | 'mouseenter'\r\n | 'mouseleave'\r\n | 'mouseout'\r\n | 'mouseover'\r\n | 'scroll'\r\n | 'wheel'\r\n | 'contextmenu';\r\n\r\ntype DomTargetTypes = Array<Window | Document | HTMLElement>;\r\n\r\n/**\r\n * Attach single document / window event / HTMLElement\r\n */\r\nfunction attachEvent(\r\n domTargets: DomTargetTypes,\r\n event: MouseEventType,\r\n callback: (e: any) => void,\r\n capture: any = false\r\n) {\r\n domTargets.forEach((target) => {\r\n target.addEventListener(event, callback, capture);\r\n });\r\n\r\n return function () {\r\n domTargets.forEach((target) => {\r\n target.removeEventListener(event, callback, capture);\r\n });\r\n };\r\n}\r\n\r\n/**\r\n * Attach multiple document / window event / HTMLElement\r\n */\r\nexport function attachEvents(\r\n domTargets: DomTargetTypes,\r\n events: Array<\r\n [event: MouseEventType, callback: (e: any) => void, capture?: any]\r\n >\r\n) {\r\n const subscribers = new Map();\r\n\r\n events.forEach(function ([event, callback, capture = false]) {\r\n subscribers.set(event, attachEvent(domTargets, event, callback, capture));\r\n });\r\n\r\n return function (eventKeys?: Array<string>) {\r\n for (const [eventKey, subscriber] of subscribers.entries()) {\r\n if (!eventKeys) {\r\n subscriber();\r\n return;\r\n }\r\n\r\n if (eventKeys.indexOf(eventKey) !== -1) {\r\n subscriber();\r\n }\r\n }\r\n };\r\n}\r\n","export const withDefault = (x: number, y: number) => {\r\n return { x, y };\r\n};\r\n","export class Gesture {\r\n currentIndex?: number;\r\n lastTimeStamp: number = Date.now();\r\n isActive: boolean = false;\r\n targetElement?: HTMLElement; // represents the bounded element\r\n targetElements: Array<HTMLElement> = []; // represents the bounded elements\r\n config?: any;\r\n callback?: <T>(event: T) => void;\r\n _subscribe?: (eventKeys?: Array<string>) => void;\r\n static _VELOCITY_LIMIT: number = 20;\r\n\r\n // it must be overridden by other child classes\r\n _initEvents() {}\r\n\r\n // cancel events\r\n // we only canceled down and move events because mouse up\r\n // will not be triggered\r\n _cancelEvents() {\r\n if (this._subscribe) {\r\n this._subscribe();\r\n }\r\n }\r\n\r\n // re-apply new callback\r\n applyCallback(callback: <T>(event: T) => void) {\r\n this.callback = callback;\r\n }\r\n\r\n // apply gesture\r\n applyGesture({\r\n targetElement,\r\n targetElements,\r\n callback,\r\n config,\r\n }: {\r\n targetElement?: any;\r\n targetElements?: any;\r\n callback: <T>(event: T) => void;\r\n config?: any;\r\n }) {\r\n this.targetElement = targetElement;\r\n this.targetElements = targetElements.map(\r\n (element: { current: any }) => element.current\r\n );\r\n this.callback = callback;\r\n this.config = config;\r\n\r\n // initialize events\r\n this._initEvents();\r\n\r\n // unbind\r\n return () => this._subscribe && this._subscribe();\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport class DragGesture extends Gesture {\r\n movementStart: Vector2 = withDefault(0, 0);\r\n initialMovement: Vector2 = withDefault(0, 0);\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n translation: Vector2 = withDefault(0, 0);\r\n offset: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement || this.targetElements.length > 0) {\r\n this._subscribe = attachEvents(\r\n [window],\r\n [\r\n ['mousedown', this.pointerDown.bind(this)],\r\n ['mousemove', this.pointerMove.bind(this)],\r\n ['mouseup', this.pointerUp.bind(this)],\r\n ['touchstart', this.pointerDown.bind(this), { passive: false }],\r\n ['touchmove', this.pointerMove.bind(this), { passive: false }],\r\n ['touchend', this.pointerUp.bind(this)],\r\n ]\r\n );\r\n }\r\n }\r\n\r\n // @override - cancel events\r\n // we only canceled down and move events because mouse up\r\n // will not be triggered\r\n _cancelEvents() {\r\n if (this._subscribe) {\r\n this._subscribe(['mousedown', 'mousemove', 'touchstart', 'touchmove']);\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n args: [this.currentIndex],\r\n down: this.isActive,\r\n movementX: this.movement.x,\r\n movementY: this.movement.y,\r\n offsetX: this.translation.x,\r\n offsetY: this.translation.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n distanceX: Math.abs(this.movement.x),\r\n distanceY: Math.abs(this.movement.y),\r\n directionX: Math.sign(this.movement.x),\r\n directionY: Math.sign(this.movement.y),\r\n cancel: () => {\r\n this._cancelEvents();\r\n },\r\n });\r\n }\r\n }\r\n\r\n pointerDown(e: any) {\r\n if (e.type === 'touchstart') {\r\n this.movementStart = {\r\n x: e.touches[0].clientX,\r\n y: e.touches[0].clientY,\r\n };\r\n } else {\r\n this.movementStart = { x: e.clientX, y: e.clientY };\r\n }\r\n\r\n this.movement = { x: 0, y: 0 };\r\n this.offset = { x: this.translation.x, y: this.translation.y };\r\n this.previousMovement = { x: 0, y: 0 };\r\n this.velocity = { x: 0, y: 0 };\r\n\r\n // find current selected element\r\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\r\n\r\n if (e.target === this.targetElement || currElem) {\r\n this.isActive = true;\r\n e.preventDefault();\r\n\r\n // set args\r\n if (currElem) {\r\n this.currentIndex = this.targetElements.indexOf(currElem);\r\n }\r\n\r\n // if initial function is defined then call it to get initial movementX and movementY\r\n // if only select to bounded draggable element\r\n const initial = this.config?.initial && this.config.initial();\r\n const initialMovementX = initial?.movementX;\r\n const initialMovementY = initial?.movementY;\r\n\r\n this.initialMovement = {\r\n x: initialMovementX ?? 0,\r\n y: initialMovementY ?? 0,\r\n };\r\n\r\n this.movement = {\r\n x: this.initialMovement.x,\r\n y: this.initialMovement.y,\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.initialMovement.x,\r\n y: this.initialMovement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n }\r\n\r\n pointerMove(e: any) {\r\n if (this.isActive) {\r\n e.preventDefault();\r\n const now = Date.now();\r\n const deltaTime = clamp(now - this.lastTimeStamp, 0.1, 64);\r\n this.lastTimeStamp = now;\r\n\r\n const t = deltaTime / 1000;\r\n\r\n if (e.type === 'touchmove') {\r\n this.movement = {\r\n x:\r\n this.initialMovement.x +\r\n (e.touches[0].clientX - this.movementStart.x),\r\n y:\r\n this.initialMovement.y +\r\n (e.touches[0].clientY - this.movementStart.y),\r\n };\r\n } else {\r\n this.movement = {\r\n x: this.initialMovement.x + (e.clientX - this.movementStart.x),\r\n y: this.initialMovement.y + (e.clientY - this.movementStart.y),\r\n };\r\n }\r\n\r\n this.translation = {\r\n x: this.offset.x + this.movement.x,\r\n y: this.offset.y + this.movement.y,\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n (this.movement.x - this.previousMovement.x) / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n (this.movement.y - this.previousMovement.y) / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.movement.x,\r\n y: this.movement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n }\r\n\r\n pointerUp() {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n this._handleCallback();\r\n this._cancelEvents();\r\n this._initEvents();\r\n }\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport class MouseMoveGesture extends Gesture {\r\n event?: MouseEvent;\r\n isActiveID?: any;\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n direction: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement) {\r\n this._subscribe = attachEvents(\r\n [this.targetElement],\r\n [['mousemove', this.onMouseMove.bind(this)]]\r\n );\r\n } else if (this.targetElements.length > 0) {\r\n this._subscribe = attachEvents(this.targetElements, [\r\n ['mousemove', this.onMouseMove.bind(this)],\r\n ]);\r\n } else {\r\n this._subscribe = attachEvents(\r\n [window],\r\n [['mousemove', this.onMouseMove.bind(this)]]\r\n );\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n args: [this.currentIndex],\r\n event: this.event,\r\n isMoving: this.isActive,\r\n target: this.event?.target,\r\n mouseX: this.movement.x,\r\n mouseY: this.movement.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n directionX: this.direction.x,\r\n directionY: this.direction.y,\r\n });\r\n }\r\n }\r\n\r\n onMouseMove(e: MouseEvent) {\r\n // find current selected element\r\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\r\n\r\n // set args\r\n if (currElem) {\r\n this.currentIndex = this.targetElements.indexOf(currElem);\r\n }\r\n\r\n this.event = e;\r\n\r\n const now: number = Date.now();\r\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\r\n this.lastTimeStamp = now;\r\n const t = deltaTime / 1000; // seconds\r\n\r\n const x = e.clientX;\r\n const y = e.clientY;\r\n\r\n this.movement = { x, y };\r\n\r\n if (this.isActiveID !== -1) {\r\n this.isActive = true;\r\n clearTimeout(this.isActiveID);\r\n }\r\n\r\n this.isActiveID = setTimeout(() => {\r\n this.isActive = false;\r\n this.direction = { x: 0, y: 0 };\r\n this.velocity = { x: 0, y: 0 };\r\n\r\n this._handleCallback();\r\n }, 250); // Debounce 250 milliseconds\r\n\r\n const diffX = this.movement.x - this.previousMovement.x;\r\n const diffY = this.movement.y - this.previousMovement.y;\r\n\r\n this.direction = {\r\n x: Math.sign(diffX),\r\n y: Math.sign(diffY),\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n diffX / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n diffY / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = { x: this.movement.x, y: this.movement.y };\r\n\r\n this._handleCallback();\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nexport class ScrollGesture extends Gesture {\r\n isActiveID?: any;\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n direction: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement) {\r\n this._subscribe = attachEvents(\r\n [this.targetElement],\r\n [['scroll', this.scrollElementListener.bind(this)]]\r\n );\r\n } else {\r\n this._subscribe = attachEvents(\r\n [window],\r\n [['scroll', this.scrollListener.bind(this)]]\r\n );\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n isScrolling: this.isActive,\r\n scrollX: this.movement.x,\r\n scrollY: this.movement.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n directionX: this.direction.x,\r\n directionY: this.direction.y,\r\n });\r\n }\r\n }\r\n\r\n onScroll({ x, y }: Vector2) {\r\n const now: number = Date.now();\r\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\r\n this.lastTimeStamp = now;\r\n const t = deltaTime / 1000; // seconds\r\n\r\n this.movement = { x, y };\r\n\r\n // Clear if scrolling\r\n if (this.isActiveID !== -1) {\r\n this.isActive = true;\r\n clearTimeout(this.isActiveID);\r\n }\r\n\r\n this.isActiveID = setTimeout(() => {\r\n this.isActive = false;\r\n this.direction = { x: 0, y: 0 };\r\n\r\n // Reset Velocity\r\n this.velocity = { x: 0, y: 0 };\r\n\r\n this._handleCallback(); // Debounce 250milliseconds\r\n }, 250);\r\n\r\n const diffX = this.movement.x - this.previousMovement.x;\r\n const diffY = this.movement.y - this.previousMovement.y;\r\n\r\n this.direction = {\r\n x: Math.sign(diffX),\r\n y: Math.sign(diffY),\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n diffX / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n diffY / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.movement.x,\r\n y: this.movement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n\r\n scrollListener() {\r\n const { pageYOffset: y, pageXOffset: x } = window;\r\n this.onScroll({ x, y });\r\n }\r\n\r\n scrollElementListener() {\r\n const x = this.targetElement?.scrollLeft || 0;\r\n const y = this.targetElement?.scrollTop || 0;\r\n this.onScroll({ x, y });\r\n }\r\n}\r\n","import { attachEvents } from '../eventAttacher';\r\nimport { Vector2 } from '../types';\r\nimport { clamp } from '../math';\r\nimport { withDefault } from '../withDefault';\r\nimport { Gesture } from './Gesture';\r\n\r\nconst LINE_HEIGHT = 40;\r\nconst PAGE_HEIGHT = 800;\r\n\r\nexport class WheelGesture extends Gesture {\r\n isActiveID?: any;\r\n movement: Vector2 = withDefault(0, 0);\r\n previousMovement: Vector2 = withDefault(0, 0);\r\n direction: Vector2 = withDefault(0, 0);\r\n velocity: Vector2 = withDefault(0, 0);\r\n delta: Vector2 = withDefault(0, 0);\r\n\r\n // Holds offsets\r\n offset: Vector2 = withDefault(0, 0);\r\n translation: Vector2 = withDefault(0, 0);\r\n\r\n // @override\r\n // initialize the events\r\n _initEvents() {\r\n if (this.targetElement) {\r\n this._subscribe = attachEvents(\r\n [this.targetElement],\r\n [['wheel', this.onWheel.bind(this)]]\r\n );\r\n }\r\n }\r\n\r\n _handleCallback() {\r\n if (this.callback) {\r\n this.callback({\r\n target: this.targetElement,\r\n isWheeling: this.isActive,\r\n deltaX: this.delta.x,\r\n deltaY: this.delta.y,\r\n directionX: this.direction.x,\r\n directionY: this.direction.y,\r\n movementX: this.movement.x,\r\n movementY: this.movement.y,\r\n offsetX: this.offset.x,\r\n offsetY: this.offset.y,\r\n velocityX: this.velocity.x,\r\n velocityY: this.velocity.y,\r\n });\r\n }\r\n }\r\n\r\n onWheel(event: WheelEvent) {\r\n let { deltaX, deltaY, deltaMode } = event;\r\n\r\n const now: number = Date.now();\r\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\r\n this.lastTimeStamp = now;\r\n const t = deltaTime / 1000; // seconds\r\n\r\n this.isActive = true;\r\n\r\n if (this.isActiveID !== -1) {\r\n this.isActive = true;\r\n clearTimeout(this.isActiveID);\r\n }\r\n\r\n this.isActiveID = setTimeout(() => {\r\n this.isActive = false;\r\n this.translation = { x: this.offset.x, y: this.offset.y };\r\n this._handleCallback();\r\n\r\n this.velocity = { x: 0, y: 0 }; // Reset Velocity\r\n this.movement = { x: 0, y: 0 };\r\n }, 200);\r\n\r\n // normalize wheel values, especially for Firefox\r\n if (deltaMode === 1) {\r\n deltaX *= LINE_HEIGHT;\r\n deltaY *= LINE_HEIGHT;\r\n } else if (deltaMode === 2) {\r\n deltaX *= PAGE_HEIGHT;\r\n deltaY *= PAGE_HEIGHT;\r\n }\r\n\r\n this.delta = { x: deltaX, y: deltaY };\r\n this.movement = {\r\n x: this.movement.x + deltaX,\r\n y: this.movement.y + deltaY,\r\n };\r\n this.offset = {\r\n x: this.translation.x + this.movement.x,\r\n y: this.translation.y + this.movement.y,\r\n };\r\n\r\n const diffX = this.movement.x - this.previousMovement.x;\r\n const diffY = this.movement.y - this.previousMovement.y;\r\n\r\n this.direction = {\r\n x: Math.sign(diffX),\r\n y: Math.sign(diffY),\r\n };\r\n\r\n this.velocity = {\r\n x: clamp(\r\n diffX / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n y: clamp(\r\n diffY / t / 1000,\r\n -1 * Gesture._VELOCITY_LIMIT,\r\n Gesture._VELOCITY_LIMIT\r\n ),\r\n };\r\n\r\n this.previousMovement = {\r\n x: this.movement.x,\r\n y: this.movement.y,\r\n };\r\n\r\n this._handleCallback();\r\n }\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport * as React from 'react';\r\n\r\ntype UseRecognizerHandlerType = Array<\r\n [\r\n key: 'drag' | 'wheel' | 'move' | 'scroll',\r\n gesture: any,\r\n callback: any,\r\n config?: any\r\n ]\r\n>;\r\n\r\nexport const useRecognizer = (handlers: UseRecognizerHandlerType) => {\r\n const ref = React.useRef<any>();\r\n const elementRefs = React.useRef<Array<any>>([]);\r\n const subscribers = React.useRef<\r\n Map<string, { keyIndex: number; gesture: any; unsubscribe: any }>\r\n >(new Map()).current;\r\n\r\n // re-initiate callback on change\r\n React.useEffect(() => {\r\n for (let [, { keyIndex, gesture }] of subscribers.entries()) {\r\n const [, , callback] = handlers[keyIndex];\r\n gesture.applyCallback(callback);\r\n }\r\n }, [handlers]);\r\n\r\n React.useEffect(() => {\r\n handlers.forEach(([key, gesture, callback, config], keyIndex) => {\r\n subscribers.set(key, {\r\n keyIndex,\r\n gesture,\r\n unsubscribe: gesture.applyGesture({\r\n targetElement: ref.current,\r\n targetElements: elementRefs.current,\r\n callback,\r\n config,\r\n }),\r\n });\r\n });\r\n\r\n return () => {\r\n for (let [, { unsubscribe }] of subscribers.entries()) {\r\n unsubscribe && unsubscribe();\r\n }\r\n };\r\n }, []);\r\n\r\n return (index?: number) => {\r\n if (index === null || index === undefined) {\r\n return { ref };\r\n } else {\r\n elementRefs.current[index] =\r\n elementRefs.current[index] || React.createRef();\r\n\r\n return { ref: elementRefs.current[index] };\r\n }\r\n };\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { DragEventType, UseDragConfig } from '../types';\r\nimport { DragGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useDrag(\r\n callback: (event: DragEventType) => void,\r\n config?: UseDragConfig\r\n) {\r\n const gesture = React.useRef(new DragGesture()).current;\r\n\r\n return useRecognizer([['drag', gesture, callback, config]]);\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { MouseMoveEventType } from '../types';\r\nimport { MouseMoveGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useMouseMove(callback: (event: MouseMoveEventType) => void) {\r\n const gesture = React.useRef(new MouseMoveGesture()).current;\r\n\r\n return useRecognizer([['move', gesture, callback]]);\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { ScrollEventType } from '../types';\r\nimport { ScrollGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useScroll(callback: (event: ScrollEventType) => void) {\r\n const gesture = React.useRef(new ScrollGesture()).current;\r\n\r\n return useRecognizer([['scroll', gesture, callback]]);\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { WheelEventType } from '../types';\r\nimport { WheelGesture } from '../controllers';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useWheel(callback: (event: WheelEventType) => void) {\r\n const gesture = React.useRef(new WheelGesture()).current;\r\n\r\n return useRecognizer([['wheel', gesture, callback]]);\r\n}\r\n","import * as React from 'react';\r\nimport {\r\n DragGesture,\r\n MouseMoveGesture,\r\n ScrollGesture,\r\n WheelGesture,\r\n} from '../controllers';\r\nimport {\r\n DragEventType,\r\n WheelEventType,\r\n ScrollEventType,\r\n MouseMoveEventType,\r\n} from '../types';\r\nimport { useRecognizer } from './useRecognizer';\r\n\r\nexport function useGesture({\r\n onDrag,\r\n onWheel,\r\n onScroll,\r\n onMouseMove,\r\n}: {\r\n onDrag?: (event: DragEventType) => void;\r\n onWheel?: (event: WheelEventType) => void;\r\n onScroll?: (event: ScrollEventType) => void;\r\n onMouseMove?: (event: MouseMoveEventType) => void;\r\n}) {\r\n const dragGesture = React.useRef(new DragGesture()).current;\r\n const wheelGesture = React.useRef(new WheelGesture()).current;\r\n const scrollGesture = React.useRef(new ScrollGesture()).current;\r\n const mouseMoveGesture = React.useRef(new MouseMoveGesture()).current;\r\n\r\n return useRecognizer([\r\n ['drag', dragGesture, onDrag],\r\n ['wheel', wheelGesture, onWheel],\r\n ['scroll', scrollGesture, onScroll],\r\n ['move', mouseMoveGesture, onMouseMove],\r\n ]);\r\n}\r\n","import * as React from \"react\";\r\n\r\nimport { attachEvents } from \"../gestures/eventAttacher\";\r\n\r\nexport function useOutsideClick(\r\n elementRef: React.RefObject<HTMLElement>,\r\n callback: (event: MouseEvent) => void,\r\n deps?: React.DependencyList\r\n) {\r\n const callbackRef = React.useRef<(event: MouseEvent) => void>();\r\n\r\n if (!callbackRef.current) {\r\n callbackRef.current = callback;\r\n }\r\n\r\n // Reinitiate callback when dependency change\r\n React.useEffect(() => {\r\n callbackRef.current = callback;\r\n\r\n return () => {\r\n callbackRef.current = () => false;\r\n };\r\n }, deps);\r\n\r\n React.useEffect(() => {\r\n const handleOutsideClick = (e: MouseEvent) => {\r\n if (!elementRef?.current?.contains(e.target as Element)) {\r\n callbackRef.current && callbackRef.current(e);\r\n }\r\n };\r\n\r\n const subscribe = attachEvents([document], [[\"click\", handleOutsideClick]]);\r\n\r\n return () => subscribe && subscribe();\r\n }, []);\r\n}\r\n","import * as React from \"react\";\r\n\r\ntype MeasurementValue = number | Array<number>;\r\n\r\ntype MeasurementType = {\r\n left: MeasurementValue;\r\n top: MeasurementValue;\r\n width: MeasurementValue;\r\n height: MeasurementValue;\r\n vLeft: MeasurementValue;\r\n vTop: MeasurementValue;\r\n};\r\n\r\nexport function useMeasure(\r\n callback: (event: MeasurementType) => void,\r\n deps?: React.DependencyList\r\n) {\r\n const ref = React.useRef(null);\r\n const elementRefs = React.useRef([]);\r\n const callbackRef = React.useRef<(event: MeasurementType) => void>(callback);\r\n\r\n // Reinitiate callback when dependency change\r\n React.useEffect(() => {\r\n callbackRef.current = callback;\r\n\r\n return () => {\r\n callbackRef.current = () => false;\r\n };\r\n }, deps);\r\n\r\n React.useEffect(() => {\r\n const _refElement = ref.current || document.documentElement;\r\n const _refElementsMultiple = elementRefs.current;\r\n\r\n const resizeObserver = new ResizeObserver(([entry]) => {\r\n const { left, top, width, height } = entry.target.getBoundingClientRect();\r\n const { pageXOffset, pageYOffset } = window;\r\n\r\n if (callbackRef) {\r\n if (_refElement === document.documentElement) {\r\n return; // no-op for document\r\n } else {\r\n callbackRef.current({\r\n left: left + pageXOffset,\r\n top: top + pageYOffset,\r\n width,\r\n height,\r\n vLeft: left,\r\n vTop: top,\r\n });\r\n }\r\n }\r\n });\r\n\r\n const resizeObserverMultiple = new ResizeObserver((entries) => {\r\n const left: Array<number> = [];\r\n const top: Array<number> = [];\r\n const width: Array<number> = [];\r\n const height: Array<number> = [];\r\n const vLeft: Array<number> = [];\r\n const vTop: Array<number> = [];\r\n\r\n entries.forEach((entry) => {\r\n const {\r\n left: _left,\r\n top: _top,\r\n width: _width,\r\n height: _height,\r\n } = entry.target.getBoundingClientRect();\r\n const { pageXOffset, pageYOffset } = window;\r\n const _pageLeft = _left + pageXOffset;\r\n const _pageTop = _top + pageYOffset;\r\n\r\n left.push(_pageLeft);\r\n top.push(_pageTop);\r\n width.push(_width);\r\n height.push(_height);\r\n vLeft.push(_left);\r\n vTop.push(_top);\r\n });\r\n\r\n if (callbackRef) {\r\n callbackRef.current({\r\n left,\r\n top,\r\n width,\r\n height,\r\n vLeft,\r\n vTop,\r\n });\r\n }\r\n });\r\n\r\n if (_refElement) {\r\n if (\r\n _refElement === document.documentElement &&\r\n _refElementsMultiple.length > 0\r\n ) {\r\n _refElementsMultiple.forEach((element: any) => {\r\n resizeObserverMultiple.observe(element.current);\r\n });\r\n } else {\r\n resizeObserver.observe(_refElement);\r\n }\r\n }\r\n\r\n return () => {\r\n if (_refElement) {\r\n if (\r\n _refElement === document.documentElement &&\r\n _refElementsMultiple.length > 0\r\n ) {\r\n _refElementsMultiple.forEach((element: any) => {\r\n resizeObserverMultiple.unobserve(element.current);\r\n });\r\n } else {\r\n resizeObserver.unobserve(_refElement);\r\n }\r\n }\r\n };\r\n }, []);\r\n\r\n return (index?: number) => {\r\n if (index === null || index === undefined) {\r\n return { ref };\r\n } else {\r\n elementRefs.current[index] =\r\n elementRefs.current[index] || React.createRef();\r\n\r\n return { ref: elementRefs.current[index] };\r\n }\r\n }; // ...bind() or ...bind(index) for multiple\r\n}\r\n","import * as React from \"react\";\r\n\r\ntype WindowDimensionType = {\r\n width: number;\r\n height: number;\r\n innerWidth: number;\r\n innerHeight: number;\r\n};\r\n\r\nexport function useWindowDimension(\r\n callback: (event: WindowDimensionType) => void,\r\n deps?: React.DependencyList\r\n) {\r\n const windowDimensionsRef = React.useRef<WindowDimensionType>({\r\n width: 0,\r\n height: 0,\r\n innerWidth: 0,\r\n innerHeight: 0,\r\n });\r\n const callbackRef =\r\n React.useRef<(event: WindowDimensionType) => void>(callback);\r\n\r\n const handleCallback: () => void = () => {\r\n if (callbackRef) {\r\n callbackRef.current({\r\n ...windowDimensionsRef.current,\r\n });\r\n }\r\n };\r\n\r\n // Reinitiate callback when dependency change\r\n React.useEffect(() => {\r\n callbackRef.current = callback;\r\n\r\n return () => {\r\n callbackRef.current = () => false;\r\n };\r\n }, deps);\r\n\r\n React.useEffect(() => {\r\n const resizeObserver = new ResizeObserver(([entry]) => {\r\n const { clientWidth, clientHeight } = entry.target;\r\n const { innerWidth, innerHeight } = window;\r\n\r\n windowDimensionsRef.current = {\r\n width: clientWidth,\r\n height: clientHeight,\r\n innerWidth,\r\n innerHeight,\r\n };\r\n\r\n handleCallback();\r\n });\r\n\r\n resizeObserver.observe(document.documentElement);\r\n\r\n return () => resizeObserver.unobserve(document.documentElement);\r\n }, []);\r\n}\r\n"],"names":["internalInterpolate","makeAnimatedComponent","useMount","React.createElement","Easing","useTransition","React.useRef","React.useEffect","React.createRef"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/animation/core/controllers/Animation.ts","../src/animation/core/controllers/RequestAnimationFrame.ts","../src/animation/core/controllers/SpringAnimation.ts","../src/animation/core/easing/Bezier.ts","../src/animation/core/easing/Easing.ts","../src/animation/core/controllers/TimingAnimation.ts","../src/animation/core/interpolation/Colors.ts","../src/animation/core/helpers/isFluidValue.ts","../src/animation/core/helpers/getCleanProps.ts","../src/animation/core/helpers/getCssValue.ts","../src/animation/core/helpers/isDefined.ts","../src/animation/core/helpers/camelCaseToKebabCase.ts","../src/animation/core/interpolation/Interpolation.ts","../src/animation/core/react/transforms.ts","../src/animation/core/react/makeFluid.ts","../src/animation/core/react/fluid.ts","../src/animation/core/controllers/FluidValue.ts","../src/animation/core/react/useFluidValue.ts","../src/animation/core/react/useMount.ts","../src/animation/lib/interpolation.ts","../src/animation/lib/modules/AnimatedBlock.ts","../src/animation/lib/modules/AnimatedInline.ts","../src/animation/lib/modules/AnimatedImage.ts","../src/animation/lib/useMountedValue.ts","../src/animation/lib/modules/MountedBlock.tsx","../src/animation/lib/getInitialConfig.ts","../src/animation/lib/animationType.ts","../src/animation/lib/useAnimatedValue.ts","../src/animation/lib/modules/ScrollableBlock.tsx","../src/gestures/helpers/math.ts","../src/animation/lib/modules/TransitionBlock.tsx","../src/utils/delay.ts","../src/gestures/helpers/eventAttacher.ts","../src/hooks/useOutsideClick.ts","../src/hooks/useMeasure.ts","../src/hooks/useWindowDimension.ts","../src/gestures/helpers/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"],"sourcesContent":["import type { ResultType } from '../types/animation';\n\n/**\n * Base Animation class\n */\nexport class Animation {\n _active: boolean;\n _onEnd: any;\n /**\n * it is necessary to add _onRest function as well\n * because _onEnd is always re-assigned with onUpdate callback\n * so that _onRest function is not fired, so we have to duplicate it\n */\n _onRest?: any;\n\n _debounceOnEnd(result: ResultType) {\n const onEnd = this._onEnd;\n const onRest = this._onRest;\n this._onEnd = null;\n this._onRest = null;\n\n onRest && onRest(result);\n onEnd && onEnd(result);\n }\n\n stop() {}\n}\n","export const RequestAnimationFrame = {\n current: (cb: any) => window.requestAnimationFrame(cb),\n inject(injected: any) {\n RequestAnimationFrame.current = injected;\n },\n};\n\nexport const CancelAnimationFrame = {\n current: (id: any) => window.cancelAnimationFrame(id),\n inject(injected: any) {\n CancelAnimationFrame.current = injected;\n },\n};\n","import { Animation } from './Animation';\nimport {\n RequestAnimationFrame,\n CancelAnimationFrame,\n} from './RequestAnimationFrame';\n\nimport type { FluidValueConfig, ResultType } from '../types/animation';\n\n/**\n * Class implementing spring based animation\n */\nexport class SpringAnimation extends Animation {\n _overshootClamping: boolean;\n _restDisplacementThreshold: number;\n _restSpeedThreshold: number;\n _initialVelocity?: number;\n _lastVelocity: number;\n _startPosition: number;\n _lastPosition: number;\n _position: number;\n _fromValue: number;\n _toValue: any;\n _mass: number;\n _tension: number;\n _friction: number;\n _lastTime: number;\n _onFrame: (value: number) => void;\n _animationFrame: any;\n _timeout: any;\n\n // Modifiers\n _delay: number;\n _onRest?: (value: ResultType) => void;\n _onChange?: (value: number) => void;\n\n constructor({\n initialPosition,\n config,\n }: {\n initialPosition: number;\n config?: Omit<FluidValueConfig, 'duration' | 'easing'>;\n }) {\n super();\n\n this._overshootClamping = false;\n this._initialVelocity = 0;\n this._lastVelocity = 0;\n this._startPosition = initialPosition;\n this._position = this._startPosition;\n\n this._restDisplacementThreshold = config?.restDistance ?? 0.001;\n this._restSpeedThreshold = config?.restDistance ?? 0.001;\n this._mass = config?.mass ?? 1;\n this._tension = config?.tension ?? 170;\n this._friction = config?.friction ?? 26;\n this._delay = config?.delay ?? 0;\n\n this._onRest = config?.onRest;\n this._onChange = config?.onChange;\n }\n\n onChange(value: number) {\n this._onFrame(value);\n\n if (this._lastPosition !== value) {\n if (this._onChange) {\n this._onChange(value);\n }\n }\n\n this._lastPosition = value;\n }\n\n onUpdate() {\n var now = Date.now();\n\n const deltaTime = Math.min(now - this._lastTime, 64);\n this._lastTime = now;\n\n const c = this._friction;\n const m = this._mass;\n const k = this._tension;\n\n const v0 = -this._lastVelocity;\n const x0 = this._toValue - this._position;\n\n const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio\n const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)\n const omega1 = omega0 * Math.sqrt(1 - zeta ** 2); // exponential decay\n\n const t = deltaTime / 1000;\n\n const sin1 = Math.sin(omega1 * t);\n const cos1 = Math.cos(omega1 * t);\n\n // under damped\n const underDampedEnvelope = Math.exp(-zeta * omega0 * t);\n const underDampedFrag1 =\n underDampedEnvelope *\n (sin1 * ((v0 + zeta * omega0 * x0) / omega1) + x0 * cos1);\n\n const underDampedPosition = this._toValue - underDampedFrag1;\n // This looks crazy -- it's actually just the derivative of the oscillation function\n const underDampedVelocity =\n zeta * omega0 * underDampedFrag1 -\n underDampedEnvelope *\n (cos1 * (v0 + zeta * omega0 * x0) - omega1 * x0 * sin1);\n\n // critically damped\n const criticallyDampedEnvelope = Math.exp(-omega0 * t);\n const criticallyDampedPosition =\n this._toValue - criticallyDampedEnvelope * (x0 + (v0 + omega0 * x0) * t);\n\n const criticallyDampedVelocity =\n criticallyDampedEnvelope *\n (v0 * (t * omega0 - 1) + t * x0 * omega0 * omega0);\n\n this.onChange(this._position);\n\n const isOvershooting = () => {\n if (this._overshootClamping && this._tension !== 0) {\n return this._position < this._toValue\n ? this._position > this._toValue\n : this._position < this._toValue;\n } else {\n return false;\n }\n };\n\n const isVelocity = Math.abs(this._lastVelocity) < this._restSpeedThreshold;\n const isDisplacement =\n this._tension === 0 ||\n Math.abs(this._toValue - this._position) <\n this._restDisplacementThreshold;\n\n if (zeta < 1) {\n this._position = underDampedPosition;\n this._lastVelocity = underDampedVelocity;\n } else {\n this._position = criticallyDampedPosition;\n this._lastVelocity = criticallyDampedVelocity;\n }\n\n if (isOvershooting() || (isVelocity && isDisplacement)) {\n if (this._tension !== 0) {\n this._lastVelocity = 0;\n this._position = this._toValue;\n\n this.onChange(this._position);\n }\n // clear lastTimestamp to avoid using stale value by the next spring animation that starts after this one\n this._lastTime = 0;\n\n this._debounceOnEnd({ finished: true, value: this._toValue });\n\n return;\n }\n\n this._animationFrame = RequestAnimationFrame.current(\n this.onUpdate.bind(this)\n );\n }\n\n stop() {\n this._active = false;\n clearTimeout(this._timeout);\n CancelAnimationFrame.current(this._animationFrame);\n this._debounceOnEnd({ finished: false, value: this._position });\n }\n\n // Set value\n set(toValue: number) {\n this.stop();\n this._position = toValue;\n this._lastTime = 0;\n this._lastVelocity = 0;\n this.onChange(toValue);\n }\n\n start({\n toValue,\n onFrame,\n previousAnimation,\n onEnd,\n }: {\n toValue: number;\n onFrame: (value: number) => void;\n previousAnimation?: SpringAnimation;\n onEnd?: (result: ResultType) => void;\n }) {\n const onStart: any = () => {\n this._onFrame = onFrame;\n this._active = true;\n this._toValue = toValue;\n this._onEnd = onEnd;\n\n const now = Date.now();\n\n if (previousAnimation instanceof SpringAnimation) {\n this._lastVelocity =\n previousAnimation._lastVelocity || this._lastVelocity || 0;\n this._lastTime = previousAnimation._lastTime || now;\n } else {\n this._lastTime = now;\n }\n\n this._animationFrame = RequestAnimationFrame.current(\n this.onUpdate.bind(this)\n );\n };\n\n if (this._delay !== 0) {\n this._timeout = setTimeout(() => onStart(), this._delay);\n } else {\n onStart();\n }\n }\n}\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === \"function\";\n\nfunction A(aA1: number, aA2: number) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n}\nfunction B(aA1: number, aA2: number) {\n return 3.0 * aA2 - 6.0 * aA1;\n}\nfunction C(aA1: number) {\n return 3.0 * aA1;\n}\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier(aT: number, aA1: number, aA2: number) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope(aT: number, aA1: number, aA2: number) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n}\n\nfunction binarySubdivide(\n aX: number,\n aA: number,\n aB: number,\n mX1: number,\n mX2: number\n) {\n var currentX,\n currentT,\n i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (\n Math.abs(currentX) > SUBDIVISION_PRECISION &&\n ++i < SUBDIVISION_MAX_ITERATIONS\n );\n return currentT;\n}\n\nfunction newtonRaphsonIterate(\n aX: number,\n aGuessT: number,\n mX1: number,\n mX2: number\n) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing(x: number) {\n return x;\n}\n\nfunction bezier(mX1: number, mY1: number, mX2: number, mY2: number) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error(\"bezier x values must be in [0, 1] range\");\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported\n ? new Float32Array(kSplineTableSize)\n : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX(aX: number) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (\n ;\n currentSample !== lastSample && sampleValues[currentSample] <= aX;\n ++currentSample\n ) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist =\n (aX - sampleValues[currentSample]) /\n (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(\n aX,\n intervalStart,\n intervalStart + kSampleStepSize,\n mX1,\n mX2\n );\n }\n }\n\n return function BezierEasing(x: number) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0 || x === 1) {\n return x;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n}\n\nexport { bezier };\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { bezier as _bezier } from \"./Bezier\";\n\n/**\n * This class implements common easing functions. The math is pretty obscure,\n * but this cool website has nice visual illustrations of what they represent:\n * http://xaedes.de/dev/transitions/\n */\nexport class Easing {\n static step0(n: number) {\n return n > 0 ? 1 : 0;\n }\n\n static step1(n: number) {\n return n >= 1 ? 1 : 0;\n }\n\n static linear(t: number) {\n return t;\n }\n\n static ease(t: number): number {\n return ease(t);\n }\n\n static quad(t: number) {\n return t * t;\n }\n\n static cubic(t: number) {\n return t * t * t;\n }\n\n static poly(n: number) {\n return (t: number) => Math.pow(t, n);\n }\n\n static sin(t: number) {\n return 1 - Math.cos((t * Math.PI) / 2);\n }\n\n static circle(t: number) {\n return 1 - Math.sqrt(1 - t * t);\n }\n\n static exp(t: number) {\n return Math.pow(2, 10 * (t - 1));\n }\n\n /**\n * A simple elastic interaction, similar to a spring. Default bounciness\n * is 1, which overshoots a little bit once. 0 bounciness doesn't overshoot\n * at all, and bounciness of N > 1 will overshoot about N times.\n *\n * Wolfram Plots:\n *\n * http://tiny.cc/elastic_b_1 (default bounciness = 1)\n * http://tiny.cc/elastic_b_3 (bounciness = 3)\n */\n static elastic(bounciness: number = 1): (t: number) => number {\n var p = bounciness * Math.PI;\n return (t) =>\n 1 - Math.pow(Math.cos((t * Math.PI) / 2), 3) * Math.cos(t * p);\n }\n\n static back(s: number): (t: number) => number {\n if (s === undefined) {\n s = 1.70158;\n }\n return (t) => t * t * ((s + 1) * t - s);\n }\n\n static bounce(t: number): number {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n }\n\n if (t < 2 / 2.75) {\n t -= 1.5 / 2.75;\n return 7.5625 * t * t + 0.75;\n }\n\n if (t < 2.5 / 2.75) {\n t -= 2.25 / 2.75;\n return 7.5625 * t * t + 0.9375;\n }\n\n t -= 2.625 / 2.75;\n return 7.5625 * t * t + 0.984375;\n }\n\n static bezier(\n x1: number,\n y1: number,\n x2: number,\n y2: number\n ): (t: number) => number {\n return _bezier(x1, y1, x2, y2);\n }\n\n static in(easing: (t: number) => number): (t: number) => number {\n return easing;\n }\n\n /**\n * Runs an easing function backwards.\n */\n static out(easing: (t: number) => number): (t: number) => number {\n return (t) => 1 - easing(1 - t);\n }\n\n /**\n * Makes any easing function symmetrical.\n */\n static inOut(easing: (t: number) => number): (t: number) => number {\n return (t) => {\n if (t < 0.5) {\n return easing(t * 2) / 2;\n }\n return 1 - easing((1 - t) * 2) / 2;\n };\n }\n}\n\nvar ease = Easing.bezier(0.42, 0, 1, 1);\n","import { Animation } from './Animation';\nimport {\n RequestAnimationFrame,\n CancelAnimationFrame,\n} from './RequestAnimationFrame';\nimport { Easing } from '../easing/Easing';\n\nimport type { FluidValueConfig, ResultType } from '../types/animation';\n\n/**\n * Class implementing timing based animation\n */\nexport class TimingAnimation extends Animation {\n _startTime: number;\n _fromValue: number;\n _toValue: any;\n _duration: number;\n _easing: (value: number) => number;\n _onFrame: (value: number) => void;\n _animationFrame: any;\n _timeout: any;\n _lastPosition: number;\n _position: number;\n\n // Modifiers\n _delay: number;\n _tempDuration: number;\n _onRest?: (value: ResultType) => void;\n _onChange?: (value: number) => void;\n\n constructor({\n initialPosition,\n config,\n }: {\n initialPosition: number;\n config?: Omit<FluidValueConfig, 'mass' | 'friction' | 'tension'>;\n }) {\n super();\n\n this._fromValue = initialPosition;\n this._position = this._fromValue;\n this._easing = config?.easing ?? Easing.linear;\n this._duration = config?.duration ?? 500;\n this._tempDuration = this._duration;\n\n // Modifiers\n // here immediate acts like duration: 0\n if (config?.immediate) {\n this._duration = 0;\n }\n\n this._delay = config?.delay ?? 0;\n this._onRest = config?.onRest;\n this._onChange = config?.onChange;\n }\n\n onChange(value: number) {\n this._onFrame(value);\n\n if (this._lastPosition !== value) {\n if (this._onChange) {\n this._onChange(value);\n }\n }\n\n this._lastPosition = value;\n }\n\n onUpdate() {\n const now = Date.now();\n\n const runTime = now - this._startTime;\n\n if (runTime >= this._duration) {\n this._startTime = 0;\n this._position = this._toValue;\n\n this.onChange(this._position);\n\n this._debounceOnEnd({ finished: true, value: this._position });\n return;\n }\n\n const progress = this._easing(runTime / this._duration);\n\n this._position =\n this._fromValue + (this._toValue - this._fromValue) * progress;\n\n this.onChange(this._position);\n\n this._animationFrame = RequestAnimationFrame.current(\n this.onUpdate.bind(this)\n );\n }\n\n stop() {\n this._active = false;\n clearTimeout(this._timeout);\n CancelAnimationFrame.current(this._animationFrame);\n this._debounceOnEnd({ finished: false, value: this._position });\n }\n\n // Set value\n set(toValue: number) {\n this.stop();\n this._position = toValue;\n this.onChange(toValue);\n }\n\n start({\n toValue,\n onFrame,\n previousAnimation,\n onEnd,\n }: {\n toValue: number;\n onFrame: (value: number) => void;\n previousAnimation?: TimingAnimation;\n onEnd?: (result: ResultType) => void;\n }) {\n const onStart: any = () => {\n this._onFrame = onFrame;\n this._active = true;\n this._onEnd = onEnd;\n this._toValue = toValue;\n\n if (\n previousAnimation &&\n previousAnimation instanceof TimingAnimation &&\n previousAnimation._toValue === toValue &&\n previousAnimation._startTime\n ) {\n this._startTime = previousAnimation._startTime;\n this._fromValue = previousAnimation._fromValue;\n } else {\n const now = Date.now();\n this._startTime = now;\n this._fromValue = this._position;\n }\n\n this._animationFrame = RequestAnimationFrame.current(\n this.onUpdate.bind(this)\n );\n };\n\n if (this._delay !== 0) {\n this._timeout = setTimeout(() => onStart(), this._delay);\n } else {\n onStart();\n }\n }\n}\n","export const COLOR_NUMBER_REGEX =\n /[+-]?\\d+(\\.\\d+)?|[\\s]?\\.\\d+|#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})/gi;\nexport const HEX_NAME_COLOR =\n /#[a-f\\d]{3,}|transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|burntsienna|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen/gi;\n\ninterface classNameType {\n [name: string]: string;\n}\n\n// Named colors\nexport const colorNames: classNameType = {\n transparent: \"#00000000\",\n aliceblue: \"#f0f8ffff\",\n antiquewhite: \"#faebd7ff\",\n aqua: \"#00ffffff\",\n aquamarine: \"#7fffd4ff\",\n azure: \"#f0ffffff\",\n beige: \"#f5f5dcff\",\n bisque: \"#ffe4c4ff\",\n black: \"#000000ff\",\n blanchedalmond: \"#ffebcdff\",\n blue: \"#0000ffff\",\n blueviolet: \"#8a2be2ff\",\n brown: \"#a52a2aff\",\n burlywood: \"#deb887ff\",\n burntsienna: \"#ea7e5dff\",\n cadetblue: \"#5f9ea0ff\",\n chartreuse: \"#7fff00ff\",\n chocolate: \"#d2691eff\",\n coral: \"#ff7f50ff\",\n cornflowerblue: \"#6495edff\",\n cornsilk: \"#fff8dcff\",\n crimson: \"#dc143cff\",\n cyan: \"#00ffffff\",\n darkblue: \"#00008bff\",\n darkcyan: \"#008b8bff\",\n darkgoldenrod: \"#b8860bff\",\n darkgray: \"#a9a9a9ff\",\n darkgreen: \"#006400ff\",\n darkgrey: \"#a9a9a9ff\",\n darkkhaki: \"#bdb76bff\",\n darkmagenta: \"#8b008bff\",\n darkolivegreen: \"#556b2fff\",\n darkorange: \"#ff8c00ff\",\n darkorchid: \"#9932ccff\",\n darkred: \"#8b0000ff\",\n darksalmon: \"#e9967aff\",\n darkseagreen: \"#8fbc8fff\",\n darkslateblue: \"#483d8bff\",\n darkslategray: \"#2f4f4fff\",\n darkslategrey: \"#2f4f4fff\",\n darkturquoise: \"#00ced1ff\",\n darkviolet: \"#9400d3ff\",\n deeppink: \"#ff1493ff\",\n deepskyblue: \"#00bfffff\",\n dimgray: \"#696969ff\",\n dimgrey: \"#696969ff\",\n dodgerblue: \"#1e90ffff\",\n firebrick: \"#b22222ff\",\n floralwhite: \"#fffaf0ff\",\n forestgreen: \"#228b22ff\",\n fuchsia: \"#ff00ffff\",\n gainsboro: \"#dcdcdcff\",\n ghostwhite: \"#f8f8ffff\",\n gold: \"#ffd700ff\",\n goldenrod: \"#daa520ff\",\n gray: \"#808080ff\",\n green: \"#008000ff\",\n greenyellow: \"#adff2fff\",\n grey: \"#808080ff\",\n honeydew: \"#f0fff0ff\",\n hotpink: \"#ff69b4ff\",\n indianred: \"#cd5c5cff\",\n indigo: \"#4b0082ff\",\n ivory: \"#fffff0ff\",\n khaki: \"#f0e68cff\",\n lavender: \"#e6e6faff\",\n lavenderblush: \"#fff0f5ff\",\n lawngreen: \"#7cfc00ff\",\n lemonchiffon: \"#fffacdff\",\n lightblue: \"#add8e6ff\",\n lightcoral: \"#f08080ff\",\n lightcyan: \"#e0ffffff\",\n lightgoldenrodyellow: \"#fafad2ff\",\n lightgray: \"#d3d3d3ff\",\n lightgreen: \"#90ee90ff\",\n lightgrey: \"#d3d3d3ff\",\n lightpink: \"#ffb6c1ff\",\n lightsalmon: \"#ffa07aff\",\n lightseagreen: \"#20b2aaff\",\n lightskyblue: \"#87cefaff\",\n lightslategray: \"#778899ff\",\n lightslategrey: \"#778899ff\",\n lightsteelblue: \"#b0c4deff\",\n lightyellow: \"#ffffe0ff\",\n lime: \"#00ff00ff\",\n limegreen: \"#32cd32ff\",\n linen: \"#faf0e6ff\",\n magenta: \"#ff00ffff\",\n maroon: \"#800000ff\",\n mediumaquamarine: \"#66cdaaff\",\n mediumblue: \"#0000cdff\",\n mediumorchid: \"#ba55d3ff\",\n mediumpurple: \"#9370dbff\",\n mediumseagreen: \"#3cb371ff\",\n mediumslateblue: \"#7b68eeff\",\n mediumspringgreen: \"#00fa9aff\",\n mediumturquoise: \"#48d1ccff\",\n mediumvioletred: \"#c71585ff\",\n midnightblue: \"#191970ff\",\n mintcream: \"#f5fffaff\",\n mistyrose: \"#ffe4e1ff\",\n moccasin: \"#ffe4b5ff\",\n navajowhite: \"#ffdeadff\",\n navy: \"#000080ff\",\n oldlace: \"#fdf5e6ff\",\n olive: \"#808000ff\",\n olivedrab: \"#6b8e23ff\",\n orange: \"#ffa500ff\",\n orangered: \"#ff4500ff\",\n orchid: \"#da70d6ff\",\n palegoldenrod: \"#eee8aaff\",\n palegreen: \"#98fb98ff\",\n paleturquoise: \"#afeeeeff\",\n palevioletred: \"#db7093ff\",\n papayawhip: \"#ffefd5ff\",\n peachpuff: \"#ffdab9ff\",\n peru: \"#cd853fff\",\n pink: \"#ffc0cbff\",\n plum: \"#dda0ddff\",\n powderblue: \"#b0e0e6ff\",\n purple: \"#800080ff\",\n rebeccapurple: \"#663399ff\",\n red: \"#ff0000ff\",\n rosybrown: \"#bc8f8fff\",\n royalblue: \"#4169e1ff\",\n saddlebrown: \"#8b4513ff\",\n salmon: \"#fa8072ff\",\n sandybrown: \"#f4a460ff\",\n seagreen: \"#2e8b57ff\",\n seashell: \"#fff5eeff\",\n sienna: \"#a0522dff\",\n silver: \"#c0c0c0ff\",\n skyblue: \"#87ceebff\",\n slateblue: \"#6a5acdff\",\n slategray: \"#708090ff\",\n slategrey: \"#708090ff\",\n snow: \"#fffafaff\",\n springgreen: \"#00ff7fff\",\n steelblue: \"#4682b4ff\",\n tan: \"#d2b48cff\",\n teal: \"#008080ff\",\n thistle: \"#d8bfd8ff\",\n tomato: \"#ff6347ff\",\n turquoise: \"#40e0d0ff\",\n violet: \"#ee82eeff\",\n wheat: \"#f5deb3ff\",\n white: \"#ffffffff\",\n whitesmoke: \"#f5f5f5ff\",\n yellow: \"#ffff00ff\",\n yellowgreen: \"#9acd32ff\",\n};\n\nfunction conv3to6(hex: string) {\n const regex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n\n return hex.replace(regex, function (_, r, g, b) {\n return \"#\" + r + r + g + g + b + b;\n });\n}\n\nfunction conv6to8(hex: string) {\n if (hex.length === 7) {\n return hex + \"FF\";\n }\n\n return hex;\n}\n\nexport function hexToRgba(hex: string) {\n const hex6: string = conv3to6(hex);\n const hex8: string = conv6to8(hex6);\n const hexRgba: any =\n /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex8);\n\n return {\n r: parseInt(hexRgba[1], 16),\n g: parseInt(hexRgba[2], 16),\n b: parseInt(hexRgba[3], 16),\n a: parseInt(hexRgba[4], 16) / 255,\n };\n}\n\nexport function rgbaToHex(rgba: {\n r: number;\n g: number;\n b: number;\n a: number;\n}) {\n const { r, g, b, a } = rgba;\n\n const hexR = (r | (1 << 8)).toString(16).slice(1);\n const hexG = (g | (1 << 8)).toString(16).slice(1);\n const hexB = (b | (1 << 8)).toString(16).slice(1);\n const hexA = ((a * 255) | (1 << 8)).toString(16).slice(1);\n\n return \"#\" + hexR + hexG + hexB + hexA;\n}\n\nexport function processColor(color: number | string) {\n if (typeof color === \"number\") {\n const alpha = ((color >> 24) & 255) / 255;\n const red = (color >> 16) & 255;\n const green = (color >> 8) & 255;\n const blue = color & 255;\n\n return { r: red, g: green, b: blue, a: alpha };\n } else {\n // If string then check whether it has # in 0 index\n if (color[0] === \"#\") {\n return hexToRgba(color);\n } else {\n // It is string color\n const hexColorName: string = colorNames[color];\n if (hexColorName) {\n return hexToRgba(hexColorName);\n } else {\n throw new Error(\"String cannot be parsed!\");\n }\n }\n }\n}\n","/**\n * isFluidValue to check the value is FluidValue or not\n * @param value - any\n * @returns - boolean\n */\nexport const isFluidValue = (value: any) => {\n return (\n typeof value === 'object' &&\n Object.prototype.hasOwnProperty.call(value, '_subscribe')\n );\n};\n","import { isFluidValue } from './isFluidValue';\n\n/**\n * Filters out properties with fluid values from a given props object.\n * This function removes any properties that are considered fluid values,\n * typically those that subscribe to updates and therefore should not be\n * included in a static props object.\n *\n * @param props - The original props object, which may include fluid values.\n * @returns A new props object with fluid values removed.\n */\nexport const getCleanProps = ({ style, ...props }: any) => {\n return Object.fromEntries(\n Object.entries(props).filter(([_, value]) => !isFluidValue(value))\n ) as any;\n};\n","const unitlessStyleProps = [\n 'borderImageOutset',\n 'borderImageSlice',\n 'borderImageWidth',\n 'fontWeight',\n 'lineHeight',\n 'opacity',\n 'orphans',\n 'tabSize',\n 'widows',\n 'zIndex',\n 'zoom',\n // SVG-related properties\n 'fillOpacity',\n 'floodOpacity',\n 'stopOpacity',\n 'strokeDasharray',\n 'strokeDashoffset',\n 'strokeMiterlimit',\n 'strokeOpacity',\n 'strokeWidth',\n // prefixed\n 'animationIterationCount',\n 'boxFlex',\n 'boxFlexGroup',\n 'boxOrdinalGroup',\n 'columnCount',\n 'flex',\n 'flexGrow',\n 'flexPositive',\n 'flexShrink',\n 'flexNegative',\n 'flexOrder',\n 'gridRow',\n 'gridColumn',\n 'order',\n 'lineClamp',\n];\n\n/**\n * getCssValue() function to get css value with unit or without unit\n * it is only for style property - it cannot be used with transform keys\n * @param property - style property\n * @param value - style value\n * @returns - value with unit or without unit\n */\nexport function getCssValue(property: string, value: number | string) {\n let cssValue;\n if (typeof value === 'number') {\n if (unitlessStyleProps.includes(property)) {\n cssValue = value;\n } else {\n cssValue = value + 'px';\n }\n } else {\n cssValue = value;\n }\n\n return cssValue;\n}\n","/**\n * Checks if a value is defined (not null or undefined).\n *\n * This utility function helps in determining whether a given value is neither `null` nor `undefined`.\n * It can be useful for validation checks to ensure that a value is properly defined before proceeding\n * with further operations.\n *\n * @param {T} value - The value to check.\n * @returns {boolean} - Returns `true` if the value is neither `null` nor `undefined`, otherwise returns `false`.\n *\n */\nexport const isDefined = <T>(value: T) => {\n return value !== null && value !== undefined;\n};\n","/**\n * Converts a camelCase string to kebab-case.\n * e.g. backgroundColor -> background-color\n *\n * @param str - The camelCase string to convert.\n * @returns The converted kebab-case string.\n */\nexport function camelCaseToKebabCase(str: string): string {\n return str.replace(/([A-Z])/g, (match) => '-' + match.toLowerCase());\n}\n","import {\n rgbaToHex,\n hexToRgba,\n COLOR_NUMBER_REGEX,\n HEX_NAME_COLOR,\n colorNames,\n} from './Colors';\nimport { isFluidValue } from '../helpers';\nimport { FluidValue } from '../controllers/FluidValue';\n\ntype ExtrapolateType = 'identity' | 'extend' | 'clamp';\n\nconst _internalInterpolate = (\n val: number,\n arr: any,\n extrapolateLeft: ExtrapolateType,\n extrapolateRight: ExtrapolateType\n) => {\n const [inputMin, inputMax, outputMin, outputMax] = arr;\n let result: number = val;\n\n // EXTRAPOLATE\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') {\n return result;\n } else if (extrapolateLeft === 'clamp') {\n result = inputMin;\n } else if (extrapolateLeft === 'extend') {\n // noop\n }\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') {\n return result;\n } else if (extrapolateRight === 'clamp') {\n result = inputMax;\n } else if (extrapolateRight === 'extend') {\n // noop\n }\n }\n\n if (outputMin === outputMax) {\n return outputMin;\n }\n\n if (inputMin === inputMax) {\n if (val <= inputMin) {\n return outputMin;\n }\n return outputMax;\n }\n\n // Input Range\n if (inputMin === -Infinity) {\n result = -result;\n } else if (inputMax === Infinity) {\n result = result - inputMin;\n } else {\n result = (result - inputMin) / (inputMax - inputMin);\n }\n\n // Output Range\n if (outputMin === -Infinity) {\n result = -result;\n } else if (outputMax === Infinity) {\n result = result + outputMin;\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n\n return result;\n};\n\nconst _getNarrowedInputArray = function (\n x: number,\n input: number[],\n output: Array<number | string>\n): Array<number | string> {\n const length = input.length;\n let narrowedInput: Array<number | string> = [];\n\n // Boundaries\n if (x < input[0]) {\n narrowedInput = [input[0], input[1], output[0], output[1]];\n } else if (x > input[length - 1]) {\n narrowedInput = [\n input[length - 2],\n input[length - 1],\n output[length - 2],\n output[length - 1],\n ];\n }\n\n // Narrow the input and output ranges\n for (let i = 1; i < length; ++i) {\n if (x <= input[i]) {\n narrowedInput = [input[i - 1], input[i], output[i - 1], output[i]];\n break;\n }\n }\n\n return narrowedInput;\n};\n\nconst _getColorInterpolate = (value: number, narrowedInput: Array<string>) => {\n const [inputMin, inputMax, outputMin, outputMax] = narrowedInput;\n\n const outputMinProcessed = hexToRgba(outputMin);\n const outputMaxProcessed = hexToRgba(outputMax);\n\n const red = _internalInterpolate(\n value,\n [inputMin, inputMax, outputMinProcessed.r, outputMaxProcessed.r],\n 'clamp',\n 'clamp'\n );\n\n const green = _internalInterpolate(\n value,\n [inputMin, inputMax, outputMinProcessed.g, outputMaxProcessed.g],\n 'clamp',\n 'clamp'\n );\n\n const blue = _internalInterpolate(\n value,\n [inputMin, inputMax, outputMinProcessed.b, outputMaxProcessed.b],\n 'clamp',\n 'clamp'\n );\n\n const alpha = _internalInterpolate(\n value,\n [inputMin, inputMax, outputMinProcessed.a, outputMaxProcessed.a],\n 'clamp',\n 'clamp'\n );\n\n return rgbaToHex({ r: red, g: green, b: blue, a: alpha });\n};\n\nconst _getArrayInterpolate = (\n value: number,\n narrowedInput: Array<any>,\n _extrapolateLeft: ExtrapolateType,\n _extrapolateRight: ExtrapolateType\n) => {\n const [inputMin, inputMax, outputMin, outputMax] = narrowedInput;\n\n if (outputMin.length === outputMax.length) {\n return outputMin.map((val: any, index: number) => {\n if (typeof val === 'string') {\n // IF IT IS STRING THEN IT MUST BE HEX COLOR\n return _getColorInterpolate(value, [\n inputMin,\n inputMax,\n val,\n outputMax[index],\n ]);\n } else {\n return _internalInterpolate(\n value,\n [inputMin, inputMax, val, outputMax[index]],\n _extrapolateLeft,\n _extrapolateRight\n );\n }\n });\n } else {\n throw new Error(\"Array length doesn't match\");\n }\n};\n\nexport const _getTemplateString = (str: string) => {\n return str.replace(COLOR_NUMBER_REGEX, '$');\n};\n\nconst _getParsedStringArray = (str: any) => {\n return str.match(COLOR_NUMBER_REGEX).map((v: string) => {\n if (v.indexOf('#') !== -1) {\n return v;\n } else {\n return Number(v);\n }\n });\n};\n\n/**\n * Function returns if the template of two strings are matched\n * i.e. they can be interpolated\n * @param str1 - first string\n * @param str2 - second string\n * @returns boolean indicating two strings matched or not\n */\nexport const stringMatched = (str1: string, str2: string) =>\n _getTemplateString(str1).trim().replace(/\\s/g, '') ===\n _getTemplateString(str2).trim().replace(/\\s/g, '');\n\n/**\n * Function which proccess the\n * hexadecimal colors to its proper formats\n * @param str - string\n * @returns hex color string\n */\nexport const getProcessedColor = (str: string) => {\n return str.replace(HEX_NAME_COLOR, function (match: any) {\n if (match.indexOf('#') !== -1) {\n return rgbaToHex(hexToRgba(match));\n } else if (Object.prototype.hasOwnProperty.call(colorNames, match)) {\n return colorNames[match];\n } else {\n throw new Error('String cannot be parsed!');\n }\n });\n};\n\nexport interface ExtrapolateConfig {\n extrapolate?: ExtrapolateType;\n extrapolateRight?: ExtrapolateType;\n extrapolateLeft?: ExtrapolateType;\n}\n\n/**\n * interpolateNumbers to interpolate the numeric value\n * @param value - number\n * @param inputRange\n * @param outputRange\n * @param extrapolateConfig\n * @returns - number | string\n */\nexport function interpolateNumbers(\n value: number,\n inputRange: Array<number>,\n outputRange: Array<number | string>,\n extrapolateConfig?: ExtrapolateConfig\n) {\n const extrapolate = extrapolateConfig?.extrapolate;\n const extrapolateLeft = extrapolateConfig?.extrapolateLeft;\n const extrapolateRight = extrapolateConfig?.extrapolateRight;\n\n const narrowedInput = _getNarrowedInputArray(value, inputRange, outputRange);\n\n let _extrapolateLeft: ExtrapolateType = 'extend';\n if (extrapolateLeft !== undefined) {\n _extrapolateLeft = extrapolateLeft;\n } else if (extrapolate !== undefined) {\n _extrapolateLeft = extrapolate;\n }\n\n let _extrapolateRight: ExtrapolateType = 'extend';\n if (extrapolateRight !== undefined) {\n _extrapolateRight = extrapolateRight;\n } else if (extrapolate !== undefined) {\n _extrapolateRight = extrapolate;\n }\n\n if (outputRange.length) {\n if (typeof outputRange[0] === 'number') {\n return _internalInterpolate(\n value,\n narrowedInput,\n _extrapolateLeft,\n _extrapolateRight\n );\n } else if (Array.isArray(outputRange[0])) {\n return _getArrayInterpolate(\n value,\n narrowedInput,\n _extrapolateLeft,\n _extrapolateRight\n );\n } else {\n const [inputMin, inputMax, outputMin, outputMax] = narrowedInput;\n\n const processedOutputMin = getProcessedColor(outputMin as string);\n const processedOutputMax = getProcessedColor(outputMax as string);\n\n let templateString = _getTemplateString(processedOutputMin);\n\n if (stringMatched(processedOutputMin, processedOutputMax)) {\n const outputMinParsed = _getParsedStringArray(processedOutputMin);\n const outputMaxParsed = _getParsedStringArray(processedOutputMax);\n\n const result = _getArrayInterpolate(\n value,\n [inputMin, inputMax, outputMinParsed, outputMaxParsed],\n _extrapolateLeft,\n _extrapolateRight\n );\n\n for (const v of result) templateString = templateString.replace('$', v);\n return templateString;\n } else {\n throw new Error(\"Output range doesn't match string format!\");\n }\n }\n } else {\n throw new Error('Output range cannot be Empty');\n }\n}\n\n/**\n * interpolateTransitionValue to interpolating TransitionValue type value\n * @param value\n * @param inputRange\n * @param outputRange\n * @param extrapolateConfig\n * @returns TransitionValue\n */\nexport const interpolateTransitionValue = (\n value: FluidValue,\n inputRange: Array<number>,\n outputRange: Array<number | string>,\n extrapolateConfig?: ExtrapolateConfig\n) => {\n return {\n ...value,\n isInterpolation: true,\n interpolationConfig: {\n inputRange,\n outputRange,\n extrapolateConfig,\n },\n };\n};\n\n/**\n * interpolate function to interpolate both transition\n * as well as numerical value\n * @param value\n * @param inputRange\n * @param outputRange\n * @param extrapolateConfig\n */\nexport const interpolate = (\n value: number | FluidValue,\n inputRange: Array<number>,\n outputRange: Array<number | string>,\n extrapolateConfig?: ExtrapolateConfig\n) => {\n if (isFluidValue(value)) {\n return interpolateTransitionValue(\n value as FluidValue,\n inputRange,\n outputRange,\n extrapolateConfig\n );\n } else if (typeof value === 'number') {\n return interpolateNumbers(\n value,\n inputRange,\n outputRange,\n extrapolateConfig\n );\n } else {\n throw new Error(`'${typeof value}' cannot be interpolated!`);\n }\n};\n\n/**\n * Determines if two values can be interpolated.\n * This function checks if two values, either numbers or strings,\n * can be interpolated by ensuring they are of the same type and, in the case of strings,\n * that they are compatible for interpolation based on processed color values.\n *\n * @param previousValue - The previous value to compare. Can be a number or a string.\n * @param newValue - The new value to compare. Can be a number or a string.\n * @returns True if interpolation is possible, false otherwise.\n */\nexport function canInterpolate(\n previousValue: number | string,\n newValue: number | string\n): boolean {\n if (typeof previousValue !== typeof newValue) {\n return false;\n }\n\n if (typeof newValue === 'number') {\n return true;\n }\n\n if (typeof previousValue === 'string') {\n const processedPreviousValue = getProcessedColor(previousValue);\n const processedNewValue = getProcessedColor(newValue);\n\n return (\n processedPreviousValue !== processedNewValue &&\n _getTemplateString(processedPreviousValue) ===\n _getTemplateString(processedNewValue)\n );\n }\n\n return false;\n}\n","export const styleTrasformKeys = [\n 'translate',\n 'translateX',\n 'translateY',\n 'translateZ',\n 'scale',\n 'scaleX',\n 'scaleY',\n 'scaleZ',\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'rotateZ',\n 'skew',\n 'skewX',\n 'skewY',\n] as const;\n\nfunction splitCSSValueAndUnit(value: string) {\n const valueMatch = value.match(/(-)?(\\d+.)?\\d+/g);\n const unitMatch = value.match(\n /px|rem|em|ex|%|cm|mm|in|pt|pc|ch|vh|vw|vmin|vmax/\n );\n\n return {\n value: Number(valueMatch),\n unit: unitMatch && unitMatch[0],\n };\n}\n\n// get unit of transform style property\nfunction getValueUnit(property: string, value: string) {\n let unit;\n\n const splitValue = splitCSSValueAndUnit(String(value)).value;\n const splitUnit = splitCSSValueAndUnit(String(value)).unit;\n\n // if string value is passed with unit then split it\n if (splitUnit) {\n return { value: splitValue, unit: splitUnit };\n }\n\n if (property.includes('translate') || property.includes('perspective')) {\n unit = 'px';\n } else if (property.includes('scale')) {\n unit = '';\n } else if (property.includes('rotate') || property.includes('skew')) {\n unit = 'deg';\n }\n\n return { value, unit };\n}\n\nfunction getTransformValueWithUnits(property: string, value: string) {\n const valueUnit = getValueUnit(property, value);\n\n if (\n property.includes('X') ||\n property.includes('Y') ||\n property.includes('Z') ||\n property.includes('perspective') ||\n property.includes('rotate') ||\n property.includes('skew')\n ) {\n // axis value\n return `${property}(${valueUnit.value}${valueUnit.unit})`;\n } else if (property.includes('translate') || property.indexOf('scale')) {\n // two parameter value\n return `${property}(${valueUnit.value}${valueUnit.unit}, ${valueUnit.value}${valueUnit.unit})`;\n } else {\n throw new Error(`Error! Property '${property}' cannot be transformed`);\n }\n}\n\n/**\n * getTransform function returns transform string from style object\n */\nexport function getTransform(style: Record<string, any>) {\n return Object.entries(style)\n .map(([prop, value]) => getTransformValueWithUnits(prop, value))\n .reduce(\n (transform: string, value: string) => (transform += ` ${value}`),\n ''\n )\n .trim();\n}\n\nexport function isTransformKey(key: string) {\n return (styleTrasformKeys as readonly string[]).includes(key);\n}\n","import {\n useRef,\n useMemo,\n useLayoutEffect,\n createElement,\n forwardRef,\n RefObject,\n} from 'react';\n\nimport { SpringAnimation } from '../controllers/SpringAnimation';\nimport { TimingAnimation } from '../controllers/TimingAnimation';\nimport {\n ExtrapolateConfig,\n canInterpolate,\n interpolateNumbers,\n} from '../interpolation/Interpolation';\nimport { getTransform, isTransformKey } from './transforms';\nimport {\n isDefined,\n getCleanProps,\n getCssValue,\n camelCaseToKebabCase,\n isFluidValue,\n} from '../helpers';\nimport { FluidValue } from '../controllers/FluidValue';\n\nimport type { ResultType, FluidValueConfig, Length } from '../types/animation';\nimport type { FluidProps, WrappedComponentOrTag } from '../types/fluid';\n\n/**\n * Higher-order component to make any component animatable.\n *\n * This function takes a React component or an HTML tag and returns a new component\n * that can smoothly transition between states using fluid animations. It enhances\n * the user experience by adding dynamic and engaging animations to the wrapped component.\n *\n * @param WrapperComponent - The React component or HTML tag to be wrapped with animation functionality.\n * @returns - A new component with added animation capabilities.\n *\n * The returned component uses fluid animations to smoothly transition between different\n * states. It supports both style and prop animations, handling transforms and other\n * properties seamlessly. The component ensures that animations are efficiently applied\n * and updated based on the current state and configuration of fluid values.\n *\n * @example\n * const AnimatedDiv = makeFluid('div');\n *\n * const MyComponent = () => {\n * const opacity = useAnimatedValue(1)\n * return (\n * <AnimatedDiv style={{ opacity: opacity.value }}>\n * Hello, world!\n * </AnimatedDiv>\n * )};\n */\nexport function makeFluid<C extends WrappedComponentOrTag>(\n WrapperComponent: C\n) {\n return forwardRef((givenProps: FluidProps<C>, givenRef: any) => {\n const instanceRef = useRef<any>(null);\n\n const transformStyleRef = useRef<Record<string, Length>>({});\n\n const { fluids, nonFluids } = useMemo(() => {\n const { style, ...props } = givenProps;\n const fluidStyle = getFluids('style', style);\n const fluidProps = getFluids('props', props);\n\n return {\n fluids: [...fluidStyle.fluids, ...fluidProps.fluids],\n nonFluids: [...fluidStyle.nonFluids, ...fluidProps.nonFluids],\n };\n }, [givenProps]);\n\n const applyAnimationValues = ({\n isTransform,\n propertyType,\n property,\n value,\n }: {\n isTransform: boolean;\n propertyType: 'style' | 'props';\n property: string;\n value: Length;\n }) => {\n if (!instanceRef.current) return;\n\n if (propertyType === 'style') {\n if (isTransform) {\n transformStyleRef.current[property] = value;\n instanceRef.current.style.transform = getTransform(\n transformStyleRef.current\n );\n } else {\n instanceRef.current.style[property] = getCssValue(property, value);\n }\n } else if (propertyType === 'props') {\n instanceRef.current.setAttribute(camelCaseToKebabCase(property), value);\n }\n };\n\n useLayoutEffect(() => {\n nonFluids.forEach(({ isTransform, property, propertyType, value }) =>\n applyAnimationValues({\n isTransform,\n property,\n propertyType,\n value: value as number,\n })\n );\n }, [nonFluids]);\n\n useLayoutEffect(() => {\n const subscribers: any = [];\n\n fluids.forEach((f) => {\n const { value: fluidValue, propertyType, property, isTransform } = f;\n const { _subscribe, _value, _currentValue, _config } = fluidValue;\n\n const interpolationOutputRange: string[] = [];\n const generateAnimation = animationObjectGenerator(_config);\n let animation: any = null;\n\n const onFrame = (value: number) => {\n _currentValue.current = value;\n\n const updatedValue: number = fluidValue.isInterpolation\n ? interpolateNumbers(\n value,\n fluidValue.interpolationConfig.inputRange,\n fluidValue.interpolationConfig.outputRange,\n fluidValue.interpolationConfig.extrapolateConfig\n )\n : value;\n\n applyAnimationValues({\n isTransform,\n propertyType,\n property,\n value: updatedValue,\n });\n };\n\n const onUpdate = (\n value: Length,\n config?: FluidValueConfig,\n callback?: (value: ResultType) => void\n ) => {\n if (canInterpolate(_value, value)) {\n const previousAnimation = animation;\n\n if (previousAnimation._value !== value) {\n animation.stop();\n\n animation = generateAnimation(\n previousAnimation._position,\n config\n );\n config?.onStart && config.onStart(previousAnimation._position);\n\n if (typeof value === 'string') {\n if (!interpolationOutputRange.includes(_value as string)) {\n interpolationOutputRange.push(_value as string);\n }\n\n if (!interpolationOutputRange.includes(value)) {\n interpolationOutputRange.push(value);\n }\n\n fluidValue.isInterpolation = true;\n fluidValue.interpolationConfig = {\n inputRange: interpolationOutputRange.map((_, i) => i),\n outputRange: interpolationOutputRange,\n };\n }\n\n animation.start({\n toValue:\n typeof value === 'string'\n ? interpolationOutputRange.indexOf(value)\n : value,\n onFrame,\n previousAnimation,\n onEnd: callback,\n });\n }\n } else {\n if (typeof value !== typeof _value) {\n throw new Error(\n `Cannot assign ${typeof value} to animated ${typeof _value}`\n );\n }\n\n applyAnimationValues({\n isTransform,\n propertyType,\n property,\n value,\n });\n }\n };\n\n animation = generateAnimation(typeof _value === 'string' ? 0 : _value);\n applyAnimationValues({\n isTransform,\n propertyType,\n property,\n value: _value,\n });\n\n const subscribe = _subscribe(onUpdate, property, Date.now());\n subscribers.push(subscribe);\n });\n\n return () => {\n subscribers.forEach((subscriber: () => void) => subscriber());\n };\n }, []);\n\n return createElement(WrapperComponent, {\n ...getCleanProps(givenProps),\n ref: combineRefs(instanceRef, givenRef),\n });\n });\n}\n\nfunction combineRefs(\n ...refs: Array<RefObject<any> | ((element: HTMLElement) => void)>\n) {\n return function applyRef(element: HTMLElement) {\n refs.forEach((ref) => {\n if (!ref) return;\n if (typeof ref === 'function') {\n ref(element);\n return;\n }\n if ('current' in ref) (ref.current as HTMLElement) = element;\n });\n };\n}\n\nfunction animationObjectGenerator(defaultConfig?: FluidValueConfig) {\n return (value: number, config?: FluidValueConfig) => {\n const animationConfig = { ...defaultConfig, ...config };\n\n const Animation =\n isDefined(animationConfig?.duration) || animationConfig?.immediate\n ? TimingAnimation\n : SpringAnimation;\n\n return new Animation({\n initialPosition: value,\n config: animationConfig,\n });\n };\n}\n\ntype InterpolationValue = {\n isInterpolation: boolean;\n interpolationConfig: {\n inputRange: Array<number>;\n outputRange: Array<number | string>;\n extrapolateConfig?: ExtrapolateConfig;\n };\n};\n\ntype Fluid = {\n isTransform: boolean;\n property: string;\n propertyType: 'style' | 'props';\n value: FluidValue & InterpolationValue;\n};\n\ntype NonFluid = Omit<Fluid, 'value'> & { value: unknown };\n\nfunction getFluids(\n propertyType: Fluid['propertyType'],\n props: Record<string, any> = {}\n) {\n return Object.entries(props).reduce(\n (res, [property, value]) => {\n const isTransform = propertyType === 'style' && isTransformKey(property);\n\n if (isFluidValue(value)) {\n res.fluids.push({ isTransform, property, propertyType, value });\n } else {\n res.nonFluids.push({ isTransform, property, propertyType, value });\n }\n\n return res;\n },\n { fluids: [], nonFluids: [] } as { fluids: Fluid[]; nonFluids: NonFluid[] }\n );\n}\n","import { makeFluid } from './makeFluid';\n\nimport type { FluidProps } from '../types/fluid';\n\ntype HTMLTags = keyof JSX.IntrinsicElements;\n\nconst tags: HTMLTags[] = [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdi',\n 'bdo',\n 'big',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'keygen',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'menu',\n 'menuitem',\n 'meta',\n 'meter',\n 'nav',\n 'noindex',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'search',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'template',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n\n // SVG Tags\n 'svg',\n 'animate',\n 'animateMotion',\n 'animateTransform',\n 'circle',\n 'clipPath',\n 'defs',\n 'desc',\n 'ellipse',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'filter',\n 'foreignObject',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'set',\n 'stop',\n 'switch',\n 'symbol',\n 'text',\n 'textPath',\n 'tspan',\n 'use',\n 'view',\n];\n\ntype WithFluid = {\n [k in keyof JSX.IntrinsicElements]: React.ComponentType<\n FluidProps<HTMLElement>\n >;\n};\n\nexport const fluid: WithFluid = {} as WithFluid;\n\ntags.forEach((tag) => {\n (fluid as any)[tag] = makeFluid(tag);\n});\n","import type {\n Length,\n ResultType,\n SubscribeFn,\n FluidValueConfig,\n OnUpdateFn,\n AssignValue,\n} from '../types/animation';\nimport type { Fn } from '../types/common';\n\n/**\n * Represents a fluid value that can animate between states.\n */\nexport class FluidValue {\n public _subscribe: SubscribeFn;\n public _value: Length;\n public _config?: FluidValueConfig;\n public _currentValue: { current: Length };\n public _subscriptions: Map<{ uuid: number; property: string }, OnUpdateFn>;\n\n public get: () => Length;\n\n /**\n * Creates a new FluidValue instance.\n * @param initialValue - The initial value of the fluid value.\n * @param config - Optional configuration for the fluid value.\n */\n constructor(initialValue: Length, config?: FluidValueConfig) {\n this._subscriptions = new Map();\n this._subscribe = (\n onUpdate: OnUpdateFn,\n property: string,\n uuid: number\n ) => {\n for (const key of this._subscriptions.keys()) {\n if (key.property === property) {\n this._subscriptions.set(key, onUpdate);\n return () => this._subscriptions.delete(key);\n }\n }\n\n this._subscriptions.set({ uuid, property }, onUpdate);\n return () => this._subscriptions.delete({ uuid, property });\n };\n this._value = initialValue;\n this._currentValue = { current: initialValue };\n this._config = config;\n this.get = () => this._currentValue.current;\n }\n\n /**\n * Animates from the current value to the updated value.\n * Determines whether to perform a multi-stage or single-stage transition.\n * @param updatedValue - The value to animate to, or a function that defines a multi-stage transition.\n * @param config - Optional configuration for the animation.\n * @param callback - Optional callback to be called after the animation ends.\n */\n setValue(\n updatedValue: AssignValue,\n config?: FluidValueConfig,\n callback?: Fn<ResultType, void>\n ) {\n /** Multistage transition */\n if (typeof updatedValue === 'function') {\n updatedValue((nextValue, nextConfig) => {\n const multiStagePromise = new Promise((resolve) => {\n for (const subscriptionKey of this._subscriptions.keys()) {\n const updater = this._subscriptions.get(subscriptionKey);\n\n if (updater) {\n updater(nextValue, nextConfig ?? config, function (result) {\n if (result.finished) {\n resolve(nextValue);\n }\n\n if (callback) {\n callback(result);\n }\n });\n }\n }\n });\n\n return multiStagePromise;\n });\n\n return;\n }\n\n /** Singlestage transition */\n for (const subscriptionKey of this._subscriptions.keys()) {\n const updater = this._subscriptions.get(subscriptionKey);\n\n updater && updater(updatedValue, config, callback);\n }\n }\n}\n","import { useMemo, useCallback } from 'react';\n\nimport { FluidValue } from '../controllers/FluidValue';\n\nimport type {\n FluidValueConfig,\n Length,\n AssignValue,\n OnUpdateCallback,\n} from '../types/animation';\n\n/**\n * useFluidValue\n *\n * @param value - initial value\n * @param config - the config object for `FluidValue`\n */\nexport const useFluidValue = (\n value: Length,\n config?: FluidValueConfig\n): [\n FluidValue,\n (\n updateValue: AssignValue,\n config?: FluidValueConfig,\n callback?: OnUpdateCallback\n ) => void\n] => {\n const fluid = useMemo(() => new FluidValue(value, config), []);\n\n const setFluid = useCallback(\n (\n updateValue: AssignValue,\n config?: FluidValueConfig,\n callback?: OnUpdateCallback\n ) => {\n fluid.setValue(updateValue, config, callback);\n },\n []\n );\n\n return [fluid, setFluid];\n};\n","import { useState, useRef, useLayoutEffect } from 'react';\n\nimport { useFluidValue } from './useFluidValue';\nimport { FluidValue } from '../controllers/FluidValue';\n\nimport type { AssignValue, FluidValueConfig } from '../types/animation';\n\nexport interface UseMountConfig {\n from: number;\n enter: number | AssignValue;\n exit: number | AssignValue;\n enterConfig?: FluidValueConfig;\n exitConfig?: FluidValueConfig;\n config?: FluidValueConfig;\n}\n\n/**\n * `useMount`\n *\n * applies mounting and unmounting of a component according to state change\n * applying transitions\n *\n * @param state - boolean indicating mount state of a component\n * @param config - the config object `UseMountConfig`\n */\nexport const useMount = (state: boolean, config: UseMountConfig) => {\n const [mounted, setMounted] = useState(false);\n const {\n from,\n enter,\n exit,\n config: innerConfig,\n enterConfig,\n exitConfig,\n } = useRef(config).current;\n const [animation, setAnimation] = useFluidValue(from, innerConfig);\n\n useLayoutEffect(() => {\n if (state) {\n setMounted(true);\n queueMicrotask(() => setAnimation(enter, enterConfig));\n } else {\n setAnimation(\n exit,\n exitConfig,\n function ({ finished }: { finished: boolean }) {\n if (finished) {\n setMounted(false);\n }\n }\n );\n }\n }, [state]);\n\n return (\n callback: (animation: FluidValue, mounted: boolean) => React.ReactNode\n ) => callback(animation, mounted);\n};\n","import { ExtrapolateConfig, FluidValue } from '../core';\nimport { interpolate as internalInterpolate } from '../core';\n\n/**\n * interpolate functions maps input range to given output range\n * @param value - number | TransitionValue\n * @param inputRange - Array<number>\n * @param outputRange - Array<number | string>\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\n * @returns - number | TransitionValue\n */\nexport function interpolate(\n value: number | FluidValue,\n inputRange: Array<number>,\n outputRange: Array<number | string>,\n extrapolateConfig?: ExtrapolateConfig\n) {\n return internalInterpolate(\n value as any,\n inputRange,\n outputRange,\n extrapolateConfig\n );\n}\n\n/**\n * bInterpolate functions maps input range [0, 1] to given [minOutput, maxOutput]\n * sorthand function to interpolate input range [0, 1]\n * @param value - number | TransitionValue\n * @param minOutput - number | string\n * @param maxOutput - number | string\n * @param extrapolateConfig - \"clamp\" | \"identity\" | \"extend\"\n * @returns - number | TransitionValue\n */\nexport function bInterpolate(\n value: number | FluidValue,\n minOutput: number | string,\n maxOutput: number | string,\n extrapolateConfig?: ExtrapolateConfig\n) {\n return internalInterpolate(\n value as any,\n [0, 1],\n [minOutput, maxOutput],\n extrapolateConfig\n );\n}\n","import { makeFluid } from '../../core';\n\n/**\n * AnimatedBlock - A higher order component built upon `div` element\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\n */\nexport const AnimatedBlock = makeFluid('div');\n","import { makeFluid } from '../../core';\n\n/**\n * AnimatedInline - A higher order component built upon `span` element\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\n */\nexport const AnimatedInline = makeFluid('span');\n","import { makeFluid } from '../../core';\n\n/**\n * AnimatedImage - A higher order component built upon `img` element\n * which can accept `AnimatedValue`. It also exposes some extra style properties like\n * translateX, translateY, rotateX, rotateY, scaleX, etc.\n */\nexport const AnimatedImage = makeFluid('img');\n","import { useMount, UseMountConfig, FluidValue } from '../core';\n\nexport interface UseMountedValueConfig extends UseMountConfig {}\n\n/**\n * `useMountedValue` handles mounting and unmounting of a component which captures current state\n * passed as an arugment (`state`) and exposes the shadow state which handles the mount and unmount\n * of a component.\n *\n * @param { boolean } state - Boolean indicating the component should mount or unmount.\n * @param { UseMountedValueConfig } config - Animation configuration.\n */\nexport function useMountedValue(state: boolean, config: UseMountedValueConfig) {\n const mv = useMount(state, config);\n return (\n cb: (value: { value: FluidValue }, mounted: boolean) => React.ReactNode\n ) => mv((a, m) => cb({ value: a }, m));\n}\n","import * as React from 'react';\nimport { FluidValue, FluidValueConfig } from '../../core';\nimport { useMountedValue } from '../useMountedValue';\n\ninterface MountedValueConfig extends FluidValueConfig {}\n\ninterface MountedBlockProps {\n state: boolean;\n children: (animation: { value: FluidValue }) => React.ReactNode;\n from?: number;\n enter?: number;\n exit?: number;\n config?: MountedValueConfig;\n enterConfig?: MountedValueConfig;\n exitConfig?: MountedValueConfig;\n}\n\n/**\n * MountedBlock - Higher order component which handles mounting and unmounting of a component.\n * @prop { boolean } state - Boolean indicating the component should mount or unmount.\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\n * @prop { number } from - Number that dictates the beginning state for animation.\n * @prop { number } enter - Number that dictates the entry state for animation.\n * @prop { number } exit - Number that dictates the exit state for animation.\n * @prop { MountedValueConfig } config - Animation configuration for overall animation.\n * @prop { MountedValueConfig } enterConfig - Animation configuration for the entering state of animation.\n * @prop { MountedValueConfig } exitConfig - Animation configuration for the entering state of animation.\n */\nexport const MountedBlock = ({\n state,\n children,\n from = 0,\n enter = 1,\n exit = 0,\n config,\n enterConfig,\n exitConfig,\n}: MountedBlockProps) => {\n const open = useMountedValue(state, {\n from,\n enter,\n exit,\n config,\n enterConfig,\n exitConfig,\n });\n\n return (\n <>{open((animation, mounted) => mounted && children(animation as any))}</>\n );\n};\n","import { Easing, FluidValueConfig } from '../core';\nexport type InitialConfigType =\n | 'linear'\n | 'easein'\n | 'easeout'\n | 'easeinout'\n | 'ease'\n | 'power1'\n | 'power2'\n | 'power3'\n | 'power4'\n | 'elastic'\n | 'stiff'\n | 'wooble'\n | 'bounce';\n\nexport const getInitialConfig = (\n animationType?: InitialConfigType\n): FluidValueConfig => {\n switch (animationType) {\n case 'elastic':\n return { mass: 1, friction: 18, tension: 250 };\n\n case 'stiff':\n return { mass: 1, friction: 18, tension: 350 };\n\n case 'wooble':\n return { mass: 1, friction: 8, tension: 250 };\n\n case 'bounce':\n return { duration: 500, easing: Easing.bounce };\n\n case 'power1':\n return { duration: 500, easing: Easing.bezier(0.17, 0.42, 0.51, 0.97) };\n\n case 'power2':\n return { duration: 500, easing: Easing.bezier(0.07, 0.11, 0.13, 1) };\n\n case 'power3':\n return { duration: 500, easing: Easing.bezier(0.09, 0.7, 0.16, 1.04) };\n\n case 'power4':\n return { duration: 500, easing: Easing.bezier(0.05, 0.54, 0, 1.03) };\n\n case 'linear':\n return { duration: 500, easing: Easing.linear };\n\n case 'easein':\n return { duration: 500, easing: Easing.in(Easing.ease) };\n\n case 'easeout':\n return { duration: 500, easing: Easing.out(Easing.ease) };\n\n case 'easeinout':\n return { duration: 500, easing: Easing.inOut(Easing.ease) };\n\n case 'ease':\n default:\n return { mass: 1, friction: 34, tension: 290 };\n }\n};\n","import { getInitialConfig } from './getInitialConfig';\n\nexport const AnimationConfigUtils = {\n ELASTIC: getInitialConfig('elastic'),\n BOUNCE: getInitialConfig('bounce'),\n EASE: getInitialConfig('ease'),\n STIFF: getInitialConfig('stiff'),\n WOOBLE: getInitialConfig('wooble'),\n EASE_IN: getInitialConfig('easein'),\n EASE_OUT: getInitialConfig('easeout'),\n EASE_IN_OUT: getInitialConfig('easeinout'),\n POWER1: getInitialConfig('power1'),\n POWER2: getInitialConfig('power2'),\n POWER3: getInitialConfig('power3'),\n POWER4: getInitialConfig('power4'),\n LINEAR: getInitialConfig('linear'),\n};\n","import { useFluidValue, FluidValueConfig, FluidValue } from '../core';\nimport { AnimationConfigUtils } from './animationType';\n\n// useAnimatedValue value type\ntype Length = number | string;\n\nexport interface UseAnimatedValueConfig extends FluidValueConfig {}\n\n/**\n * `useAnimatedValue` returns an animation value with `.value` and `.currentValue` property which is\n * initialized when passed to argument (`initialValue`). The retured value persist until the lifetime of\n * a component. It doesnot cast any re-renders which can is very good for performance optimization.\n *\n * @param { string | number } initialValue - Initial value\n * @param { UseAnimatedValueConfig } config - Animation configuration object.\n */\nexport function useAnimatedValue(\n initialValue: Length,\n config?: UseAnimatedValueConfig\n) {\n const [animation, setAnimation] = useFluidValue(initialValue, {\n ...AnimationConfigUtils.EASE,\n ...config,\n });\n\n const targetObject: {\n value: FluidValue | string | number | undefined;\n currentValue: number | string;\n } = {\n value: animation,\n currentValue: animation.get(),\n };\n\n return new Proxy(targetObject, {\n set: function (_, key, value: any) {\n if (key === 'value') {\n if (typeof value === 'number' || typeof value === 'string') {\n setAnimation(value);\n }\n\n return true;\n }\n\n throw new Error('You cannot set any other property to animation node.');\n },\n get: function (_, key) {\n if (key === 'value') {\n return animation;\n }\n\n if (key === 'currentValue') {\n return animation.get();\n }\n\n throw new Error(\n 'You cannot access any other property from animation node.'\n );\n },\n });\n}\n","import * as React from 'react';\nimport { useAnimatedValue, UseAnimatedValueConfig } from '../useAnimatedValue';\nimport { FluidValue } from '../../core';\n\ninterface ScrollableBlockProps {\n children?: (animation: {\n value?: FluidValue | string | number;\n }) => React.ReactNode;\n direction?: 'single' | 'both';\n threshold?: number;\n animationConfig?: UseAnimatedValueConfig;\n}\n\n/**\n * ScrollableBlock - Higher order component to handle the entrance or exit animation\n * of a component when it enters or exit the viewport. Accepts child as a function with\n * `AnimatedValue` as its first argument which can be interpolated on input range [0, 1]\n * @prop { function } children - child as a function with `AnimatedValue` as its first argument.\n * @prop { 'single' | 'both' } direction - single applies animation on enter once, both applies on enter and exit.\n * @prop { number } threshold - should be in range 0 to 1 which equivalent to `IntersectionObserver` threshold.\n * @prop { UseAnimatedValueConfig } animationConfig - Animation config\n */\nexport const ScrollableBlock = (props: ScrollableBlockProps) => {\n const {\n children,\n direction = 'single',\n animationConfig,\n threshold = 0.2,\n } = props;\n const scrollableBlockRef = React.useRef<HTMLDivElement>(null);\n const animation = useAnimatedValue(0, animationConfig); // 0: not intersecting | 1: intersecting\n\n React.useEffect(() => {\n const _scrollableBlock = scrollableBlockRef.current;\n\n const observer = new IntersectionObserver(\n function ([entry]) {\n const { isIntersecting } = entry;\n\n if (isIntersecting) {\n animation.value = 1;\n } else {\n if (direction === 'both') animation.value = 0;\n }\n },\n {\n root: null, // FOR VIEWPORT ONLY\n threshold,\n }\n );\n\n if (_scrollableBlock) {\n observer.observe(_scrollableBlock);\n }\n\n return () => {\n if (_scrollableBlock) {\n observer.unobserve(_scrollableBlock);\n }\n };\n }, []);\n\n return (\n <div ref={scrollableBlockRef}>\n {children && children({ value: animation.value })}\n </div>\n );\n};\n","/**\n * bin(booleanValue)\n * returns 1 if booleanValue == true and 0 if booleanValue == false\n */\nexport function bin(bool: boolean) {\n return bool ? 1 : 0;\n}\n\n/**\n * mix(progress, a, b)\n * linear interpolation between a and b\n */\nexport function mix(perc: number, val1: number, val2: number) {\n return val1 * (1 - perc) + val2 * perc;\n}\n\n/**\n * clamp(value, min, max)\n * clamps value for min and max bounds\n */\nexport function clamp(value: number, lowerbound: number, upperbound: number) {\n return Math.min(Math.max(value, lowerbound), upperbound);\n}\n\nfunction rubber2(distanceFromEdge: number, constant: number) {\n return Math.pow(distanceFromEdge, constant * 5);\n}\n\nfunction rubber(distanceFromEdge: number, dimension: number, constant: number) {\n if (dimension === 0 || Math.abs(dimension) === Infinity)\n return rubber2(distanceFromEdge, constant);\n return (\n (distanceFromEdge * dimension * constant) /\n (dimension + constant * distanceFromEdge)\n );\n}\n\n/**\n * rubberClamp(value, min, max, constant?)\n * constant is optional : default 0.15\n * clamps the value for min and max value and\n * extends beyond min and max values with constant\n * factor to create elastic rubber band effect\n */\nexport function rubberClamp(\n value: number,\n lowerbound: number,\n upperbound: number,\n constant: number = 0.15\n) {\n if (constant === 0) return clamp(value, lowerbound, upperbound);\n\n if (value < lowerbound) {\n return (\n -rubber(lowerbound - value, upperbound - lowerbound, constant) +\n lowerbound\n );\n }\n\n if (value > upperbound) {\n return (\n +rubber(value - upperbound, upperbound - lowerbound, constant) +\n upperbound\n );\n }\n\n return value;\n}\n\n/**\n * snapTo(value, velocity, snapPoints[])\n * Calculates the final snapPoint according to given current value,\n * velocity and snapPoints array\n */\nexport function snapTo(\n value: number,\n velocity: number,\n snapPoints: Array<number>\n): number {\n const finalValue = value + velocity * 0.2;\n const getDiff = (point: number) => Math.abs(point - finalValue);\n const deltas = snapPoints.map(getDiff);\n const minDelta = Math.min(...deltas);\n\n return snapPoints.reduce(function (acc, point) {\n if (getDiff(point) === minDelta) {\n return point;\n } else {\n return acc;\n }\n });\n}\n\n/**\n * move(array, moveIndex, toIndex)\n * move array item from moveIndex to toIndex without array modification\n */\nexport function move(array: Array<any>, moveIndex: number, toIndex: number) {\n const item = array[moveIndex];\n const length = array.length;\n const diff = moveIndex - toIndex;\n\n if (diff > 0) {\n return [\n ...array.slice(0, toIndex),\n item,\n ...array.slice(toIndex, moveIndex),\n ...array.slice(moveIndex + 1, length),\n ];\n } else if (diff < 0) {\n const targetIndex = toIndex + 1;\n return [\n ...array.slice(0, moveIndex),\n ...array.slice(moveIndex + 1, targetIndex),\n item,\n ...array.slice(targetIndex, length),\n ];\n }\n return array;\n}\n","import * as React from 'react';\nimport { bin } from '../../../gestures/helpers/math';\nimport { useAnimatedValue, UseAnimatedValueConfig } from '../useAnimatedValue';\nimport { FluidValue } from '../../core';\n\ninterface TransitionBlockProps {\n state: boolean;\n children: (animation: {\n value?: FluidValue | string | number;\n }) => React.ReactNode;\n config?: UseAnimatedValueConfig;\n}\n\n/**\n * TransitionBlock - Higher order component which animates on state change.\n * @prop { boolean } state - Boolean indicating the current state of animation, usually `false = 0 and true = 1`.\n * @prop { function } children - Child as a function with `AnimatedValue` on `.value` property.\n * @prop { UseAnimatedValueConfig } config - Animation configuration.\n */\nexport const TransitionBlock = ({\n state,\n children,\n config,\n}: TransitionBlockProps) => {\n const amv = useAnimatedValue(bin(state), config);\n\n return <>{children({ value: amv.value })}</>;\n};\n","/**\n * @param { number } ms - number of milliseconds to delay code execution\n * @returns Promise\n */\nexport function delay(ms: number) {\n return new Promise((resolve) => {\n setTimeout(() => resolve(null), ms);\n });\n}\n","type MouseEventType =\n | 'click'\n | 'dblclick'\n | 'mousedown'\n | 'mousemove'\n | 'mouseup'\n | 'touchstart'\n | 'touchmove'\n | 'touchend'\n | 'mouseenter'\n | 'mouseleave'\n | 'mouseout'\n | 'mouseover'\n | 'scroll'\n | 'wheel'\n | 'contextmenu';\n\ntype DomTargetTypes = Array<Window | Document | HTMLElement>;\n\n/**\n * Attach single document / window event / HTMLElement\n */\nfunction attachEvent(\n domTargets: DomTargetTypes,\n event: MouseEventType,\n callback: (e: any) => void,\n capture: any = false\n) {\n domTargets.forEach((target) => {\n target.addEventListener(event, callback, capture);\n });\n\n return function () {\n domTargets.forEach((target) => {\n target.removeEventListener(event, callback, capture);\n });\n };\n}\n\n/**\n * Attach multiple document / window event / HTMLElement\n */\nexport function attachEvents(\n domTargets: DomTargetTypes,\n events: Array<\n [event: MouseEventType, callback: (e: any) => void, capture?: any]\n >\n) {\n const subscribers = new Map();\n\n events.forEach(function ([event, callback, capture = false]) {\n subscribers.set(event, attachEvent(domTargets, event, callback, capture));\n });\n\n return function (eventKeys?: Array<string>) {\n for (const [eventKey, subscriber] of subscribers.entries()) {\n if (!eventKeys) {\n subscriber();\n return;\n }\n\n if (eventKeys.indexOf(eventKey) !== -1) {\n subscriber();\n }\n }\n };\n}\n","import { useRef, useEffect, RefObject, DependencyList } from 'react';\n\nimport { attachEvents } from '../gestures/helpers/eventAttacher';\n\nexport function useOutsideClick(\n elementRef: RefObject<HTMLElement>,\n callback: (event: MouseEvent) => void,\n deps?: DependencyList\n) {\n const callbackRef = useRef<(event: MouseEvent) => void>();\n\n if (!callbackRef.current) {\n callbackRef.current = callback;\n }\n\n // Reinitiate callback when dependency change\n useEffect(() => {\n callbackRef.current = callback;\n\n return () => {\n callbackRef.current = () => false;\n };\n }, deps);\n\n useEffect(() => {\n const handleOutsideClick = (e: MouseEvent) => {\n if (!elementRef?.current?.contains(e.target as Element)) {\n callbackRef.current && callbackRef.current(e);\n }\n };\n\n const subscribe = attachEvents([document], [['click', handleOutsideClick]]);\n\n return () => subscribe && subscribe();\n }, []);\n}\n","import { useRef, useEffect, DependencyList, createRef } from 'react';\n\ntype MeasurementValue = number | Array<number>;\n\ntype MeasurementType = {\n left: MeasurementValue;\n top: MeasurementValue;\n width: MeasurementValue;\n height: MeasurementValue;\n vLeft: MeasurementValue;\n vTop: MeasurementValue;\n};\n\nexport function useMeasure(\n callback: (event: MeasurementType) => void,\n deps?: DependencyList\n) {\n const ref = useRef(null);\n const elementRefs = useRef([]);\n const callbackRef = useRef<(event: MeasurementType) => void>(callback);\n\n // Reinitiate callback when dependency change\n useEffect(() => {\n callbackRef.current = callback;\n\n return () => {\n callbackRef.current = () => false;\n };\n }, deps);\n\n useEffect(() => {\n const _refElement = ref.current || document.documentElement;\n const _refElementsMultiple = elementRefs.current;\n\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { left, top, width, height } = entry.target.getBoundingClientRect();\n const { pageXOffset, pageYOffset } = window;\n\n if (callbackRef) {\n if (_refElement === document.documentElement) {\n return; // no-op for document\n } else {\n callbackRef.current({\n left: left + pageXOffset,\n top: top + pageYOffset,\n width,\n height,\n vLeft: left,\n vTop: top,\n });\n }\n }\n });\n\n const resizeObserverMultiple = new ResizeObserver((entries) => {\n const left: Array<number> = [];\n const top: Array<number> = [];\n const width: Array<number> = [];\n const height: Array<number> = [];\n const vLeft: Array<number> = [];\n const vTop: Array<number> = [];\n\n entries.forEach((entry) => {\n const {\n left: _left,\n top: _top,\n width: _width,\n height: _height,\n } = entry.target.getBoundingClientRect();\n const { pageXOffset, pageYOffset } = window;\n const _pageLeft = _left + pageXOffset;\n const _pageTop = _top + pageYOffset;\n\n left.push(_pageLeft);\n top.push(_pageTop);\n width.push(_width);\n height.push(_height);\n vLeft.push(_left);\n vTop.push(_top);\n });\n\n if (callbackRef) {\n callbackRef.current({\n left,\n top,\n width,\n height,\n vLeft,\n vTop,\n });\n }\n });\n\n if (_refElement) {\n if (\n _refElement === document.documentElement &&\n _refElementsMultiple.length > 0\n ) {\n _refElementsMultiple.forEach((element: any) => {\n resizeObserverMultiple.observe(element.current);\n });\n } else {\n resizeObserver.observe(_refElement);\n }\n }\n\n return () => {\n if (_refElement) {\n if (\n _refElement === document.documentElement &&\n _refElementsMultiple.length > 0\n ) {\n _refElementsMultiple.forEach((element: any) => {\n resizeObserverMultiple.unobserve(element.current);\n });\n } else {\n resizeObserver.unobserve(_refElement);\n }\n }\n };\n }, []);\n\n return (index?: number) => {\n if (index === null || index === undefined) {\n return { ref };\n } else {\n elementRefs.current[index] = elementRefs.current[index] || createRef();\n\n return { ref: elementRefs.current[index] };\n }\n }; // ...bind() or ...bind(index) for multiple\n}\n","import { useRef, useEffect, DependencyList } from 'react';\n\ntype WindowDimensionType = {\n width: number;\n height: number;\n innerWidth: number;\n innerHeight: number;\n};\n\nexport function useWindowDimension(\n callback: (event: WindowDimensionType) => void,\n deps?: DependencyList\n) {\n const windowDimensionsRef = useRef<WindowDimensionType>({\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n });\n const callbackRef = useRef<(event: WindowDimensionType) => void>(callback);\n\n const handleCallback: () => void = () => {\n if (callbackRef) {\n callbackRef.current({\n ...windowDimensionsRef.current,\n });\n }\n };\n\n // Reinitiate callback when dependency change\n useEffect(() => {\n callbackRef.current = callback;\n\n return () => {\n callbackRef.current = () => false;\n };\n }, deps);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { clientWidth, clientHeight } = entry.target;\n const { innerWidth, innerHeight } = window;\n\n windowDimensionsRef.current = {\n width: clientWidth,\n height: clientHeight,\n innerWidth,\n innerHeight,\n };\n\n handleCallback();\n });\n\n resizeObserver.observe(document.documentElement);\n\n return () => resizeObserver.unobserve(document.documentElement);\n }, []);\n}\n","export const withDefault = (x: number, y: number) => {\n return { x, y };\n};\n","export class Gesture {\n currentIndex?: number;\n lastTimeStamp: number = Date.now();\n isActive: boolean = false;\n targetElement?: HTMLElement; // represents the bounded element\n targetElements: Array<HTMLElement> = []; // represents the bounded elements\n config?: any;\n callback?: <T>(event: T) => void;\n _subscribe?: (eventKeys?: Array<string>) => void;\n static _VELOCITY_LIMIT: number = 20;\n\n // it must be overridden by other child classes\n _initEvents() {}\n\n // cancel events\n // we only canceled down and move events because mouse up\n // will not be triggered\n _cancelEvents() {\n if (this._subscribe) {\n this._subscribe();\n }\n }\n\n // re-apply new callback\n applyCallback(callback: <T>(event: T) => void) {\n this.callback = callback;\n }\n\n // apply gesture\n applyGesture({\n targetElement,\n targetElements,\n callback,\n config,\n }: {\n targetElement?: any;\n targetElements?: any;\n callback: <T>(event: T) => void;\n config?: any;\n }) {\n this.targetElement = targetElement;\n this.targetElements = targetElements.map(\n (element: { current: any }) => element.current\n );\n this.callback = callback;\n this.config = config;\n\n // initialize events\n this._initEvents();\n\n // unbind\n return () => this._subscribe && this._subscribe();\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nimport type { Vector2 } from '../types';\n\nexport class DragGesture extends Gesture {\n movementStart: Vector2 = withDefault(0, 0);\n initialMovement: Vector2 = withDefault(0, 0);\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n translation: Vector2 = withDefault(0, 0);\n offset: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement || this.targetElements.length > 0) {\n this._subscribe = attachEvents(\n [window],\n [\n ['mousedown', this.pointerDown.bind(this)],\n ['mousemove', this.pointerMove.bind(this)],\n ['mouseup', this.pointerUp.bind(this)],\n ['touchstart', this.pointerDown.bind(this), { passive: false }],\n ['touchmove', this.pointerMove.bind(this), { passive: false }],\n ['touchend', this.pointerUp.bind(this)],\n ]\n );\n }\n }\n\n // @override - cancel events\n // we only canceled down and move events because mouse up\n // will not be triggered\n _cancelEvents() {\n if (this._subscribe) {\n this._subscribe(['mousedown', 'mousemove', 'touchstart', 'touchmove']);\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n args: [this.currentIndex],\n down: this.isActive,\n movementX: this.movement.x,\n movementY: this.movement.y,\n offsetX: this.translation.x,\n offsetY: this.translation.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n distanceX: Math.abs(this.movement.x),\n distanceY: Math.abs(this.movement.y),\n directionX: Math.sign(this.movement.x),\n directionY: Math.sign(this.movement.y),\n cancel: () => {\n this._cancelEvents();\n },\n });\n }\n }\n\n pointerDown(e: any) {\n if (e.type === 'touchstart') {\n this.movementStart = {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY,\n };\n } else {\n this.movementStart = { x: e.clientX, y: e.clientY };\n }\n\n this.movement = { x: 0, y: 0 };\n this.offset = { x: this.translation.x, y: this.translation.y };\n this.previousMovement = { x: 0, y: 0 };\n this.velocity = { x: 0, y: 0 };\n\n // find current selected element\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\n\n if (e.target === this.targetElement || currElem) {\n this.isActive = true;\n e.preventDefault();\n\n // set args\n if (currElem) {\n this.currentIndex = this.targetElements.indexOf(currElem);\n }\n\n // if initial function is defined then call it to get initial movementX and movementY\n // if only select to bounded draggable element\n const initial = this.config?.initial && this.config.initial();\n const initialMovementX = initial?.movementX;\n const initialMovementY = initial?.movementY;\n\n this.initialMovement = {\n x: initialMovementX ?? 0,\n y: initialMovementY ?? 0,\n };\n\n this.movement = {\n x: this.initialMovement.x,\n y: this.initialMovement.y,\n };\n\n this.previousMovement = {\n x: this.initialMovement.x,\n y: this.initialMovement.y,\n };\n\n this._handleCallback();\n }\n }\n\n pointerMove(e: any) {\n if (this.isActive) {\n e.preventDefault();\n const now = Date.now();\n const deltaTime = clamp(now - this.lastTimeStamp, 0.1, 64);\n this.lastTimeStamp = now;\n\n const t = deltaTime / 1000;\n\n if (e.type === 'touchmove') {\n this.movement = {\n x:\n this.initialMovement.x +\n (e.touches[0].clientX - this.movementStart.x),\n y:\n this.initialMovement.y +\n (e.touches[0].clientY - this.movementStart.y),\n };\n } else {\n this.movement = {\n x: this.initialMovement.x + (e.clientX - this.movementStart.x),\n y: this.initialMovement.y + (e.clientY - this.movementStart.y),\n };\n }\n\n this.translation = {\n x: this.offset.x + this.movement.x,\n y: this.offset.y + this.movement.y,\n };\n\n this.velocity = {\n x: clamp(\n (this.movement.x - this.previousMovement.x) / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n (this.movement.y - this.previousMovement.y) / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = {\n x: this.movement.x,\n y: this.movement.y,\n };\n\n this._handleCallback();\n }\n }\n\n pointerUp() {\n if (this.isActive) {\n this.isActive = false;\n this._handleCallback();\n this._cancelEvents();\n this._initEvents();\n }\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { Vector2 } from '../types';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nexport class MouseMoveGesture extends Gesture {\n event?: MouseEvent;\n isActiveID?: any;\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n direction: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement) {\n this._subscribe = attachEvents(\n [this.targetElement],\n [['mousemove', this.onMouseMove.bind(this)]]\n );\n } else if (this.targetElements.length > 0) {\n this._subscribe = attachEvents(this.targetElements, [\n ['mousemove', this.onMouseMove.bind(this)],\n ]);\n } else {\n this._subscribe = attachEvents(\n [window],\n [['mousemove', this.onMouseMove.bind(this)]]\n );\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n args: [this.currentIndex],\n event: this.event,\n isMoving: this.isActive,\n target: this.event?.target,\n mouseX: this.movement.x,\n mouseY: this.movement.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n directionX: this.direction.x,\n directionY: this.direction.y,\n });\n }\n }\n\n onMouseMove(e: MouseEvent) {\n // find current selected element\n const currElem = this.targetElements.find((elem: any) => elem === e.target);\n\n // set args\n if (currElem) {\n this.currentIndex = this.targetElements.indexOf(currElem);\n }\n\n this.event = e;\n\n const now: number = Date.now();\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\n this.lastTimeStamp = now;\n const t = deltaTime / 1000; // seconds\n\n const x = e.clientX;\n const y = e.clientY;\n\n this.movement = { x, y };\n\n if (this.isActiveID !== -1) {\n this.isActive = true;\n clearTimeout(this.isActiveID);\n }\n\n this.isActiveID = setTimeout(() => {\n this.isActive = false;\n this.direction = { x: 0, y: 0 };\n this.velocity = { x: 0, y: 0 };\n\n this._handleCallback();\n }, 250); // Debounce 250 milliseconds\n\n const diffX = this.movement.x - this.previousMovement.x;\n const diffY = this.movement.y - this.previousMovement.y;\n\n this.direction = {\n x: Math.sign(diffX),\n y: Math.sign(diffY),\n };\n\n this.velocity = {\n x: clamp(\n diffX / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n diffY / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = { x: this.movement.x, y: this.movement.y };\n\n this._handleCallback();\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { Vector2 } from '../types';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nexport class ScrollGesture extends Gesture {\n isActiveID?: any;\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n direction: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement) {\n this._subscribe = attachEvents(\n [this.targetElement],\n [['scroll', this.scrollElementListener.bind(this)]]\n );\n } else {\n this._subscribe = attachEvents(\n [window],\n [['scroll', this.scrollListener.bind(this)]]\n );\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n isScrolling: this.isActive,\n scrollX: this.movement.x,\n scrollY: this.movement.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n directionX: this.direction.x,\n directionY: this.direction.y,\n });\n }\n }\n\n onScroll({ x, y }: Vector2) {\n const now: number = Date.now();\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\n this.lastTimeStamp = now;\n const t = deltaTime / 1000; // seconds\n\n this.movement = { x, y };\n\n // Clear if scrolling\n if (this.isActiveID !== -1) {\n this.isActive = true;\n clearTimeout(this.isActiveID);\n }\n\n this.isActiveID = setTimeout(() => {\n this.isActive = false;\n this.direction = { x: 0, y: 0 };\n\n // Reset Velocity\n this.velocity = { x: 0, y: 0 };\n\n this._handleCallback(); // Debounce 250milliseconds\n }, 250);\n\n const diffX = this.movement.x - this.previousMovement.x;\n const diffY = this.movement.y - this.previousMovement.y;\n\n this.direction = {\n x: Math.sign(diffX),\n y: Math.sign(diffY),\n };\n\n this.velocity = {\n x: clamp(\n diffX / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n diffY / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = {\n x: this.movement.x,\n y: this.movement.y,\n };\n\n this._handleCallback();\n }\n\n scrollListener() {\n const { pageYOffset: y, pageXOffset: x } = window;\n this.onScroll({ x, y });\n }\n\n scrollElementListener() {\n const x = this.targetElement?.scrollLeft || 0;\n const y = this.targetElement?.scrollTop || 0;\n this.onScroll({ x, y });\n }\n}\n","import { attachEvents } from '../helpers/eventAttacher';\nimport { Vector2 } from '../types';\nimport { clamp } from '../helpers/math';\nimport { withDefault } from '../helpers/withDefault';\nimport { Gesture } from './Gesture';\n\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\n\nexport class WheelGesture extends Gesture {\n isActiveID?: any;\n movement: Vector2 = withDefault(0, 0);\n previousMovement: Vector2 = withDefault(0, 0);\n direction: Vector2 = withDefault(0, 0);\n velocity: Vector2 = withDefault(0, 0);\n delta: Vector2 = withDefault(0, 0);\n\n // Holds offsets\n offset: Vector2 = withDefault(0, 0);\n translation: Vector2 = withDefault(0, 0);\n\n // @override\n // initialize the events\n _initEvents() {\n if (this.targetElement) {\n this._subscribe = attachEvents(\n [this.targetElement],\n [['wheel', this.onWheel.bind(this)]]\n );\n }\n }\n\n _handleCallback() {\n if (this.callback) {\n this.callback({\n target: this.targetElement,\n isWheeling: this.isActive,\n deltaX: this.delta.x,\n deltaY: this.delta.y,\n directionX: this.direction.x,\n directionY: this.direction.y,\n movementX: this.movement.x,\n movementY: this.movement.y,\n offsetX: this.offset.x,\n offsetY: this.offset.y,\n velocityX: this.velocity.x,\n velocityY: this.velocity.y,\n });\n }\n }\n\n onWheel(event: WheelEvent) {\n let { deltaX, deltaY, deltaMode } = event;\n\n const now: number = Date.now();\n const deltaTime = Math.min(now - this.lastTimeStamp, 64);\n this.lastTimeStamp = now;\n const t = deltaTime / 1000; // seconds\n\n this.isActive = true;\n\n if (this.isActiveID !== -1) {\n this.isActive = true;\n clearTimeout(this.isActiveID);\n }\n\n this.isActiveID = setTimeout(() => {\n this.isActive = false;\n this.translation = { x: this.offset.x, y: this.offset.y };\n this._handleCallback();\n\n this.velocity = { x: 0, y: 0 }; // Reset Velocity\n this.movement = { x: 0, y: 0 };\n }, 200);\n\n // normalize wheel values, especially for Firefox\n if (deltaMode === 1) {\n deltaX *= LINE_HEIGHT;\n deltaY *= LINE_HEIGHT;\n } else if (deltaMode === 2) {\n deltaX *= PAGE_HEIGHT;\n deltaY *= PAGE_HEIGHT;\n }\n\n this.delta = { x: deltaX, y: deltaY };\n this.movement = {\n x: this.movement.x + deltaX,\n y: this.movement.y + deltaY,\n };\n this.offset = {\n x: this.translation.x + this.movement.x,\n y: this.translation.y + this.movement.y,\n };\n\n const diffX = this.movement.x - this.previousMovement.x;\n const diffY = this.movement.y - this.previousMovement.y;\n\n this.direction = {\n x: Math.sign(diffX),\n y: Math.sign(diffY),\n };\n\n this.velocity = {\n x: clamp(\n diffX / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n y: clamp(\n diffY / t / 1000,\n -1 * Gesture._VELOCITY_LIMIT,\n Gesture._VELOCITY_LIMIT\n ),\n };\n\n this.previousMovement = {\n x: this.movement.x,\n y: this.movement.y,\n };\n\n this._handleCallback();\n }\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\n\ntype UseRecognizerHandlerType = Array<\n [\n key: 'drag' | 'wheel' | 'move' | 'scroll',\n gesture: any,\n callback: any,\n config?: any\n ]\n>;\n\nexport const useRecognizer = (handlers: UseRecognizerHandlerType) => {\n const ref = React.useRef<any>();\n const elementRefs = React.useRef<Array<any>>([]);\n const subscribers = React.useRef<\n Map<string, { keyIndex: number; gesture: any; unsubscribe: any }>\n >(new Map()).current;\n\n // re-initiate callback on change\n React.useEffect(() => {\n for (let [, { keyIndex, gesture }] of subscribers.entries()) {\n const [, , callback] = handlers[keyIndex];\n gesture.applyCallback(callback);\n }\n }, [handlers]);\n\n React.useEffect(() => {\n handlers.forEach(([key, gesture, callback, config], keyIndex) => {\n subscribers.set(key, {\n keyIndex,\n gesture,\n unsubscribe: gesture.applyGesture({\n targetElement: ref.current,\n targetElements: elementRefs.current,\n callback,\n config,\n }),\n });\n });\n\n return () => {\n for (let [, { unsubscribe }] of subscribers.entries()) {\n unsubscribe && unsubscribe();\n }\n };\n }, []);\n\n return (index?: number) => {\n if (index === null || index === undefined) {\n return { ref };\n } else {\n elementRefs.current[index] =\n elementRefs.current[index] || React.createRef();\n\n return { ref: elementRefs.current[index] };\n }\n };\n};\n","import * as React from 'react';\n\nimport { DragEventType, UseDragConfig } from '../types';\nimport { DragGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useDrag(\n callback: (event: DragEventType) => void,\n config?: UseDragConfig\n) {\n const gesture = React.useRef(new DragGesture()).current;\n\n return useRecognizer([['drag', gesture, callback, config]]);\n}\n","import * as React from 'react';\n\nimport { MouseMoveEventType } from '../types';\nimport { MouseMoveGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useMouseMove(callback: (event: MouseMoveEventType) => void) {\n const gesture = React.useRef(new MouseMoveGesture()).current;\n\n return useRecognizer([['move', gesture, callback]]);\n}\n","import * as React from 'react';\n\nimport { ScrollEventType } from '../types';\nimport { ScrollGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useScroll(callback: (event: ScrollEventType) => void) {\n const gesture = React.useRef(new ScrollGesture()).current;\n\n return useRecognizer([['scroll', gesture, callback]]);\n}\n","import * as React from 'react';\n\nimport { WheelEventType } from '../types';\nimport { WheelGesture } from '../controllers';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useWheel(callback: (event: WheelEventType) => void) {\n const gesture = React.useRef(new WheelGesture()).current;\n\n return useRecognizer([['wheel', gesture, callback]]);\n}\n","import * as React from 'react';\nimport {\n DragGesture,\n MouseMoveGesture,\n ScrollGesture,\n WheelGesture,\n} from '../controllers';\nimport {\n DragEventType,\n WheelEventType,\n ScrollEventType,\n MouseMoveEventType,\n} from '../types';\nimport { useRecognizer } from './useRecognizer';\n\nexport function useGesture({\n onDrag,\n onWheel,\n onScroll,\n onMouseMove,\n}: {\n onDrag?: (event: DragEventType) => void;\n onWheel?: (event: WheelEventType) => void;\n onScroll?: (event: ScrollEventType) => void;\n onMouseMove?: (event: MouseMoveEventType) => void;\n}) {\n const dragGesture = React.useRef(new DragGesture()).current;\n const wheelGesture = React.useRef(new WheelGesture()).current;\n const scrollGesture = React.useRef(new ScrollGesture()).current;\n const mouseMoveGesture = React.useRef(new MouseMoveGesture()).current;\n\n return useRecognizer([\n ['drag', dragGesture, onDrag],\n ['wheel', wheelGesture, onWheel],\n ['scroll', scrollGesture, onScroll],\n ['move', mouseMoveGesture, onMouseMove],\n ]);\n}\n"],"names":["_bezier","interpolate","forwardRef","useRef","useMemo","useLayoutEffect","createElement","useCallback","useState","internalInterpolate","_jsx","React","_Fragment","useEffect","createRef"],"mappings":"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"}