motion 10.17.1 → 11.11.12

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 (320) hide show
  1. package/.turbo/turbo-build.log +29 -0
  2. package/{LICENSE → LICENSE.md} +2 -2
  3. package/README.md +99 -7
  4. package/dist/cjs/index.js +6117 -0
  5. package/dist/cjs/react-client.js +10003 -0
  6. package/dist/cjs/react-m.js +1852 -0
  7. package/dist/es/framer-motion/dist/es/animation/GroupPlaybackControls.mjs +78 -0
  8. package/dist/es/framer-motion/dist/es/animation/animate/index.mjs +34 -0
  9. package/dist/es/framer-motion/dist/es/animation/animate/resolve-subjects.mjs +19 -0
  10. package/dist/es/framer-motion/dist/es/animation/animate/sequence.mjs +14 -0
  11. package/dist/es/framer-motion/dist/es/animation/animate/single-value.mjs +11 -0
  12. package/dist/es/framer-motion/dist/es/animation/animate/subject.mjs +52 -0
  13. package/dist/es/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs +318 -0
  14. package/dist/es/framer-motion/dist/es/animation/animators/BaseAnimation.mjs +112 -0
  15. package/dist/es/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs +380 -0
  16. package/dist/es/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs +17 -0
  17. package/dist/es/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs +14 -0
  18. package/dist/es/framer-motion/dist/es/animation/animators/utils/can-animate.mjs +42 -0
  19. package/dist/es/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs +169 -0
  20. package/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs +36 -0
  21. package/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs +12 -0
  22. package/dist/es/framer-motion/dist/es/animation/animators/waapi/easing.mjs +44 -0
  23. package/dist/es/framer-motion/dist/es/animation/animators/waapi/index.mjs +23 -0
  24. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/attach-timeline.mjs +6 -0
  25. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs +12 -0
  26. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/linear.mjs +15 -0
  27. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/memo-supports.mjs +9 -0
  28. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/style.mjs +8 -0
  29. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-flags.mjs +9 -0
  30. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-linear-easing.mjs +15 -0
  31. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-partial-keyframes.mjs +13 -0
  32. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs +5 -0
  33. package/dist/es/framer-motion/dist/es/animation/generators/inertia.mjs +87 -0
  34. package/dist/es/framer-motion/dist/es/animation/generators/keyframes.mjs +51 -0
  35. package/dist/es/framer-motion/dist/es/animation/generators/spring/find.mjs +89 -0
  36. package/dist/es/framer-motion/dist/es/animation/generators/spring/index.mjs +129 -0
  37. package/dist/es/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs +17 -0
  38. package/dist/es/framer-motion/dist/es/animation/generators/utils/is-generator.mjs +5 -0
  39. package/dist/es/framer-motion/dist/es/animation/generators/utils/velocity.mjs +9 -0
  40. package/dist/es/framer-motion/dist/es/animation/interfaces/motion-value.mjs +105 -0
  41. package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +75 -0
  42. package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs +66 -0
  43. package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element.mjs +26 -0
  44. package/dist/es/framer-motion/dist/es/animation/optimized-appear/data-id.mjs +6 -0
  45. package/dist/es/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs +7 -0
  46. package/dist/es/framer-motion/dist/es/animation/sequence/create.mjs +230 -0
  47. package/dist/es/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs +21 -0
  48. package/dist/es/framer-motion/dist/es/animation/sequence/utils/edit.mjs +31 -0
  49. package/dist/es/framer-motion/dist/es/animation/sequence/utils/sort.mjs +14 -0
  50. package/dist/es/framer-motion/dist/es/animation/utils/create-visual-element.mjs +44 -0
  51. package/dist/es/framer-motion/dist/es/animation/utils/default-transitions.mjs +40 -0
  52. package/dist/es/framer-motion/dist/es/animation/utils/get-value-transition.mjs +9 -0
  53. package/dist/es/framer-motion/dist/es/animation/utils/is-animatable.mjs +30 -0
  54. package/dist/es/framer-motion/dist/es/animation/utils/is-animation-controls.mjs +7 -0
  55. package/dist/es/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs +5 -0
  56. package/dist/es/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs +5 -0
  57. package/dist/es/framer-motion/dist/es/animation/utils/is-none.mjs +15 -0
  58. package/dist/es/framer-motion/dist/es/animation/utils/is-transition-defined.mjs +10 -0
  59. package/dist/es/framer-motion/dist/es/animation/utils/stagger.mjs +26 -0
  60. package/dist/es/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs +40 -0
  61. package/dist/es/framer-motion/dist/es/context/LayoutGroupContext.mjs +6 -0
  62. package/dist/es/framer-motion/dist/es/context/LazyContext.mjs +6 -0
  63. package/dist/es/framer-motion/dist/es/context/MotionConfigContext.mjs +13 -0
  64. package/dist/es/framer-motion/dist/es/context/MotionContext/create.mjs +13 -0
  65. package/dist/es/framer-motion/dist/es/context/MotionContext/index.mjs +6 -0
  66. package/dist/es/framer-motion/dist/es/context/MotionContext/utils.mjs +17 -0
  67. package/dist/es/framer-motion/dist/es/context/PresenceContext.mjs +9 -0
  68. package/dist/es/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs +9 -0
  69. package/dist/es/framer-motion/dist/es/easing/anticipate.mjs +5 -0
  70. package/dist/es/framer-motion/dist/es/easing/back.mjs +9 -0
  71. package/dist/es/framer-motion/dist/es/easing/circ.mjs +8 -0
  72. package/dist/es/framer-motion/dist/es/easing/cubic-bezier.mjs +51 -0
  73. package/dist/es/framer-motion/dist/es/easing/ease.mjs +7 -0
  74. package/dist/es/framer-motion/dist/es/easing/modifiers/mirror.mjs +5 -0
  75. package/dist/es/framer-motion/dist/es/easing/modifiers/reverse.mjs +5 -0
  76. package/dist/es/framer-motion/dist/es/easing/steps.mjs +15 -0
  77. package/dist/es/framer-motion/dist/es/easing/utils/create-generator-easing.mjs +17 -0
  78. package/dist/es/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs +8 -0
  79. package/dist/es/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs +3 -0
  80. package/dist/es/framer-motion/dist/es/easing/utils/is-easing-array.mjs +5 -0
  81. package/dist/es/framer-motion/dist/es/easing/utils/map.mjs +38 -0
  82. package/dist/es/framer-motion/dist/es/events/add-dom-event.mjs +6 -0
  83. package/dist/es/framer-motion/dist/es/events/add-pointer-event.mjs +8 -0
  84. package/dist/es/framer-motion/dist/es/events/event-info.mjs +15 -0
  85. package/dist/es/framer-motion/dist/es/events/utils/is-primary-pointer.mjs +18 -0
  86. package/dist/es/framer-motion/dist/es/frameloop/batcher.mjs +71 -0
  87. package/dist/es/framer-motion/dist/es/frameloop/frame.mjs +6 -0
  88. package/dist/es/framer-motion/dist/es/frameloop/index-legacy.mjs +20 -0
  89. package/dist/es/framer-motion/dist/es/frameloop/microtask.mjs +5 -0
  90. package/dist/es/framer-motion/dist/es/frameloop/render-step.mjs +80 -0
  91. package/dist/es/framer-motion/dist/es/frameloop/sync-time.mjs +31 -0
  92. package/dist/es/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs +487 -0
  93. package/dist/es/framer-motion/dist/es/gestures/drag/index.mjs +27 -0
  94. package/dist/es/framer-motion/dist/es/gestures/drag/utils/constraints.mjs +129 -0
  95. package/dist/es/framer-motion/dist/es/gestures/drag/utils/lock.mjs +53 -0
  96. package/dist/es/framer-motion/dist/es/gestures/focus.mjs +41 -0
  97. package/dist/es/framer-motion/dist/es/gestures/hover.mjs +33 -0
  98. package/dist/es/framer-motion/dist/es/gestures/pan/PanSession.mjs +156 -0
  99. package/dist/es/framer-motion/dist/es/gestures/pan/index.mjs +50 -0
  100. package/dist/es/framer-motion/dist/es/gestures/press.mjs +130 -0
  101. package/dist/es/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs +20 -0
  102. package/dist/es/framer-motion/dist/es/motion/features/Feature.mjs +9 -0
  103. package/dist/es/framer-motion/dist/es/motion/features/animation/exit.mjs +31 -0
  104. package/dist/es/framer-motion/dist/es/motion/features/animation/index.mjs +41 -0
  105. package/dist/es/framer-motion/dist/es/motion/features/animations.mjs +13 -0
  106. package/dist/es/framer-motion/dist/es/motion/features/definitions.mjs +28 -0
  107. package/dist/es/framer-motion/dist/es/motion/features/drag.mjs +17 -0
  108. package/dist/es/framer-motion/dist/es/motion/features/gestures.mjs +21 -0
  109. package/dist/es/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs +134 -0
  110. package/dist/es/framer-motion/dist/es/motion/features/layout.mjs +11 -0
  111. package/dist/es/framer-motion/dist/es/motion/features/load-features.mjs +12 -0
  112. package/dist/es/framer-motion/dist/es/motion/features/viewport/index.mjs +72 -0
  113. package/dist/es/framer-motion/dist/es/motion/features/viewport/observers.mjs +49 -0
  114. package/dist/es/framer-motion/dist/es/motion/index.mjs +98 -0
  115. package/dist/es/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs +11 -0
  116. package/dist/es/framer-motion/dist/es/motion/utils/symbol.mjs +3 -0
  117. package/dist/es/framer-motion/dist/es/motion/utils/use-motion-ref.mjs +36 -0
  118. package/dist/es/framer-motion/dist/es/motion/utils/use-visual-element.mjs +134 -0
  119. package/dist/es/framer-motion/dist/es/motion/utils/use-visual-state.mjs +82 -0
  120. package/dist/es/framer-motion/dist/es/motion/utils/valid-prop.mjs +57 -0
  121. package/dist/es/framer-motion/dist/es/projection/animation/mix-values.mjs +93 -0
  122. package/dist/es/framer-motion/dist/es/projection/geometry/conversion.mjs +33 -0
  123. package/dist/es/framer-motion/dist/es/projection/geometry/copy.mjs +31 -0
  124. package/dist/es/framer-motion/dist/es/projection/geometry/delta-apply.mjs +119 -0
  125. package/dist/es/framer-motion/dist/es/projection/geometry/delta-calc.mjs +52 -0
  126. package/dist/es/framer-motion/dist/es/projection/geometry/delta-remove.mjs +54 -0
  127. package/dist/es/framer-motion/dist/es/projection/geometry/models.mjs +17 -0
  128. package/dist/es/framer-motion/dist/es/projection/geometry/utils.mjs +31 -0
  129. package/dist/es/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs +13 -0
  130. package/dist/es/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs +27 -0
  131. package/dist/es/framer-motion/dist/es/projection/node/create-projection-node.mjs +1583 -0
  132. package/dist/es/framer-motion/dist/es/projection/node/state.mjs +19 -0
  133. package/dist/es/framer-motion/dist/es/projection/shared/stack.mjs +112 -0
  134. package/dist/es/framer-motion/dist/es/projection/styles/scale-border-radius.mjs +41 -0
  135. package/dist/es/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs +35 -0
  136. package/dist/es/framer-motion/dist/es/projection/styles/scale-correction.mjs +6 -0
  137. package/dist/es/framer-motion/dist/es/projection/styles/transform.mjs +49 -0
  138. package/dist/es/framer-motion/dist/es/projection/utils/each-axis.mjs +5 -0
  139. package/dist/es/framer-motion/dist/es/projection/utils/has-transform.mjs +26 -0
  140. package/dist/es/framer-motion/dist/es/projection/utils/measure.mjs +17 -0
  141. package/dist/es/framer-motion/dist/es/render/VisualElement.mjs +477 -0
  142. package/dist/es/framer-motion/dist/es/render/components/create-factory.mjs +23 -0
  143. package/dist/es/framer-motion/dist/es/render/components/m/create.mjs +6 -0
  144. package/dist/es/framer-motion/dist/es/render/components/m/elements.mjs +227 -0
  145. package/dist/es/framer-motion/dist/es/render/components/motion/create.mjs +15 -0
  146. package/dist/es/framer-motion/dist/es/render/components/motion/elements.mjs +194 -0
  147. package/dist/es/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs +130 -0
  148. package/dist/es/framer-motion/dist/es/render/dom/DOMVisualElement.mjs +28 -0
  149. package/dist/es/framer-motion/dist/es/render/dom/create-visual-element.mjs +14 -0
  150. package/dist/es/framer-motion/dist/es/render/dom/resize/handle-element.mjs +64 -0
  151. package/dist/es/framer-motion/dist/es/render/dom/resize/handle-window.mjs +30 -0
  152. package/dist/es/framer-motion/dist/es/render/dom/resize/index.mjs +8 -0
  153. package/dist/es/framer-motion/dist/es/render/dom/scroll/index.mjs +80 -0
  154. package/dist/es/framer-motion/dist/es/render/dom/scroll/info.mjs +56 -0
  155. package/dist/es/framer-motion/dist/es/render/dom/scroll/observe.mjs +18 -0
  156. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs +45 -0
  157. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs +59 -0
  158. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs +45 -0
  159. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs +35 -0
  160. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs +20 -0
  161. package/dist/es/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs +48 -0
  162. package/dist/es/framer-motion/dist/es/render/dom/scroll/supports.mjs +5 -0
  163. package/dist/es/framer-motion/dist/es/render/dom/scroll/track.mjs +84 -0
  164. package/dist/es/framer-motion/dist/es/render/dom/use-render.mjs +33 -0
  165. package/dist/es/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs +6 -0
  166. package/dist/es/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs +42 -0
  167. package/dist/es/framer-motion/dist/es/render/dom/utils/filter-props.mjs +59 -0
  168. package/dist/es/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs +15 -0
  169. package/dist/es/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs +30 -0
  170. package/dist/es/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs +5 -0
  171. package/dist/es/framer-motion/dist/es/render/dom/utils/resolve-element.mjs +28 -0
  172. package/dist/es/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs +65 -0
  173. package/dist/es/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs +15 -0
  174. package/dist/es/framer-motion/dist/es/render/dom/value-types/defaults.mjs +30 -0
  175. package/dist/es/framer-motion/dist/es/render/dom/value-types/dimensions.mjs +15 -0
  176. package/dist/es/framer-motion/dist/es/render/dom/value-types/find.mjs +15 -0
  177. package/dist/es/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs +10 -0
  178. package/dist/es/framer-motion/dist/es/render/dom/value-types/number-browser.mjs +41 -0
  179. package/dist/es/framer-motion/dist/es/render/dom/value-types/number.mjs +18 -0
  180. package/dist/es/framer-motion/dist/es/render/dom/value-types/test.mjs +6 -0
  181. package/dist/es/framer-motion/dist/es/render/dom/value-types/transform.mjs +31 -0
  182. package/dist/es/framer-motion/dist/es/render/dom/value-types/type-auto.mjs +9 -0
  183. package/dist/es/framer-motion/dist/es/render/dom/value-types/type-int.mjs +8 -0
  184. package/dist/es/framer-motion/dist/es/render/dom/viewport/index.mjs +43 -0
  185. package/dist/es/framer-motion/dist/es/render/html/HTMLVisualElement.mjs +57 -0
  186. package/dist/es/framer-motion/dist/es/render/html/config-motion.mjs +12 -0
  187. package/dist/es/framer-motion/dist/es/render/html/use-props.mjs +57 -0
  188. package/dist/es/framer-motion/dist/es/render/html/utils/build-styles.mjs +65 -0
  189. package/dist/es/framer-motion/dist/es/render/html/utils/build-transform.mjs +62 -0
  190. package/dist/es/framer-motion/dist/es/render/html/utils/create-render-state.mjs +8 -0
  191. package/dist/es/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs +30 -0
  192. package/dist/es/framer-motion/dist/es/render/html/utils/render.mjs +9 -0
  193. package/dist/es/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs +20 -0
  194. package/dist/es/framer-motion/dist/es/render/html/utils/transform.mjs +28 -0
  195. package/dist/es/framer-motion/dist/es/render/object/ObjectVisualElement.mjs +41 -0
  196. package/dist/es/framer-motion/dist/es/render/store.mjs +3 -0
  197. package/dist/es/framer-motion/dist/es/render/svg/SVGVisualElement.mjs +45 -0
  198. package/dist/es/framer-motion/dist/es/render/svg/config-motion.mjs +40 -0
  199. package/dist/es/framer-motion/dist/es/render/svg/lowercase-elements.mjs +33 -0
  200. package/dist/es/framer-motion/dist/es/render/svg/use-props.mjs +24 -0
  201. package/dist/es/framer-motion/dist/es/render/svg/utils/build-attrs.mjs +52 -0
  202. package/dist/es/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs +30 -0
  203. package/dist/es/framer-motion/dist/es/render/svg/utils/create-render-state.mjs +8 -0
  204. package/dist/es/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs +3 -0
  205. package/dist/es/framer-motion/dist/es/render/svg/utils/path.mjs +32 -0
  206. package/dist/es/framer-motion/dist/es/render/svg/utils/render.mjs +12 -0
  207. package/dist/es/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs +19 -0
  208. package/dist/es/framer-motion/dist/es/render/svg/utils/transform-origin.mjs +18 -0
  209. package/dist/es/framer-motion/dist/es/render/utils/KeyframesResolver.mjs +164 -0
  210. package/dist/es/framer-motion/dist/es/render/utils/animation-state.mjs +332 -0
  211. package/dist/es/framer-motion/dist/es/render/utils/compare-by-depth.mjs +3 -0
  212. package/dist/es/framer-motion/dist/es/render/utils/flat-tree.mjs +24 -0
  213. package/dist/es/framer-motion/dist/es/render/utils/get-variant-context.mjs +28 -0
  214. package/dist/es/framer-motion/dist/es/render/utils/is-controlling-variants.mjs +13 -0
  215. package/dist/es/framer-motion/dist/es/render/utils/is-variant-label.mjs +8 -0
  216. package/dist/es/framer-motion/dist/es/render/utils/motion-values.mjs +59 -0
  217. package/dist/es/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs +8 -0
  218. package/dist/es/framer-motion/dist/es/render/utils/resolve-variants.mjs +36 -0
  219. package/dist/es/framer-motion/dist/es/render/utils/setters.mjs +27 -0
  220. package/dist/es/framer-motion/dist/es/render/utils/variant-props.mjs +12 -0
  221. package/dist/es/framer-motion/dist/es/utils/GlobalConfig.mjs +6 -0
  222. package/dist/es/framer-motion/dist/es/utils/array.mjs +11 -0
  223. package/dist/es/framer-motion/dist/es/utils/clamp.mjs +9 -0
  224. package/dist/es/framer-motion/dist/es/utils/delay.mjs +24 -0
  225. package/dist/es/framer-motion/dist/es/utils/distance.mjs +9 -0
  226. package/dist/es/framer-motion/dist/es/utils/errors.mjs +18 -0
  227. package/dist/es/framer-motion/dist/es/utils/get-context-window.mjs +6 -0
  228. package/dist/es/framer-motion/dist/es/utils/hsla-to-rgba.mjs +42 -0
  229. package/dist/es/framer-motion/dist/es/utils/interpolate.mjs +75 -0
  230. package/dist/es/framer-motion/dist/es/utils/is-browser.mjs +3 -0
  231. package/dist/es/framer-motion/dist/es/utils/is-numerical-string.mjs +6 -0
  232. package/dist/es/framer-motion/dist/es/utils/is-ref-object.mjs +7 -0
  233. package/dist/es/framer-motion/dist/es/utils/is-zero-value-string.mjs +6 -0
  234. package/dist/es/framer-motion/dist/es/utils/memo.mjs +10 -0
  235. package/dist/es/framer-motion/dist/es/utils/mix/color.mjs +47 -0
  236. package/dist/es/framer-motion/dist/es/utils/mix/complex.mjs +94 -0
  237. package/dist/es/framer-motion/dist/es/utils/mix/immediate.mjs +5 -0
  238. package/dist/es/framer-motion/dist/es/utils/mix/index.mjs +14 -0
  239. package/dist/es/framer-motion/dist/es/utils/mix/number.mjs +26 -0
  240. package/dist/es/framer-motion/dist/es/utils/mix/visibility.mjs +16 -0
  241. package/dist/es/framer-motion/dist/es/utils/noop.mjs +3 -0
  242. package/dist/es/framer-motion/dist/es/utils/offsets/default.mjs +9 -0
  243. package/dist/es/framer-motion/dist/es/utils/offsets/fill.mjs +12 -0
  244. package/dist/es/framer-motion/dist/es/utils/offsets/time.mjs +5 -0
  245. package/dist/es/framer-motion/dist/es/utils/pipe.mjs +11 -0
  246. package/dist/es/framer-motion/dist/es/utils/progress.mjs +18 -0
  247. package/dist/es/framer-motion/dist/es/utils/reduced-motion/index.mjs +19 -0
  248. package/dist/es/framer-motion/dist/es/utils/reduced-motion/state.mjs +5 -0
  249. package/dist/es/framer-motion/dist/es/utils/resolve-value.mjs +11 -0
  250. package/dist/es/framer-motion/dist/es/utils/shallow-compare.mjs +14 -0
  251. package/dist/es/framer-motion/dist/es/utils/subscription-manager.mjs +40 -0
  252. package/dist/es/framer-motion/dist/es/utils/time-conversion.mjs +10 -0
  253. package/dist/es/framer-motion/dist/es/utils/transform.mjs +21 -0
  254. package/dist/es/framer-motion/dist/es/utils/use-constant.mjs +18 -0
  255. package/dist/es/framer-motion/dist/es/utils/use-isomorphic-effect.mjs +6 -0
  256. package/dist/es/framer-motion/dist/es/utils/velocity-per-second.mjs +11 -0
  257. package/dist/es/framer-motion/dist/es/utils/warn-once.mjs +11 -0
  258. package/dist/es/framer-motion/dist/es/utils/wrap.mjs +6 -0
  259. package/dist/es/framer-motion/dist/es/value/index.mjs +313 -0
  260. package/dist/es/framer-motion/dist/es/value/types/color/hex.mjs +40 -0
  261. package/dist/es/framer-motion/dist/es/value/types/color/hsla.mjs +22 -0
  262. package/dist/es/framer-motion/dist/es/value/types/color/index.mjs +27 -0
  263. package/dist/es/framer-motion/dist/es/value/types/color/rgba.mjs +25 -0
  264. package/dist/es/framer-motion/dist/es/value/types/color/utils.mjs +29 -0
  265. package/dist/es/framer-motion/dist/es/value/types/complex/filter.mjs +30 -0
  266. package/dist/es/framer-motion/dist/es/value/types/complex/index.mjs +92 -0
  267. package/dist/es/framer-motion/dist/es/value/types/numbers/index.mjs +17 -0
  268. package/dist/es/framer-motion/dist/es/value/types/numbers/units.mjs +17 -0
  269. package/dist/es/framer-motion/dist/es/value/types/utils/color-regex.mjs +3 -0
  270. package/dist/es/framer-motion/dist/es/value/types/utils/float-regex.mjs +3 -0
  271. package/dist/es/framer-motion/dist/es/value/types/utils/is-nullish.mjs +5 -0
  272. package/dist/es/framer-motion/dist/es/value/types/utils/sanitize.mjs +5 -0
  273. package/dist/es/framer-motion/dist/es/value/types/utils/single-color-regex.mjs +3 -0
  274. package/dist/es/framer-motion/dist/es/value/use-will-change/add-will-change.mjs +14 -0
  275. package/dist/es/framer-motion/dist/es/value/use-will-change/is.mjs +7 -0
  276. package/dist/es/framer-motion/dist/es/value/utils/is-motion-value.mjs +3 -0
  277. package/dist/es/framer-motion/dist/es/value/utils/resolve-motion-value.mjs +16 -0
  278. package/dist/es/motion/lib/index.mjs +30 -0
  279. package/dist/es/motion/lib/react-client.mjs +3 -0
  280. package/dist/es/motion/lib/react-m.mjs +3 -0
  281. package/dist/index.d.ts +1 -0
  282. package/dist/motion.dev.js +6121 -0
  283. package/dist/motion.js +1 -0
  284. package/dist/react-client.d.ts +1 -0
  285. package/dist/react-m.d.ts +1 -0
  286. package/lib/index.js +1 -3
  287. package/lib/index.js.map +1 -1
  288. package/lib/react-client.js +3 -0
  289. package/lib/react-client.js.map +1 -0
  290. package/lib/react-m.js +3 -0
  291. package/lib/react-m.js.map +1 -0
  292. package/lib/react.js +3 -0
  293. package/lib/react.js.map +1 -0
  294. package/package.json +79 -29
  295. package/react/package.json +6 -0
  296. package/react-client/package.json +6 -0
  297. package/react-m/package.json +6 -0
  298. package/rollup.config.mjs +174 -0
  299. package/src/index.ts +1 -0
  300. package/src/react-client.ts +3 -0
  301. package/src/react-m.ts +3 -0
  302. package/src/react.ts +3 -0
  303. package/tsconfig.json +25 -0
  304. package/types/index.d.ts +1 -4
  305. package/types/react-client.d.ts +1 -0
  306. package/types/react-m.d.ts +1 -0
  307. package/types/react.d.ts +1 -0
  308. package/CHANGELOG.md +0 -372
  309. package/dist/animate.cjs.js +0 -22
  310. package/dist/animate.es.js +0 -19
  311. package/dist/main.cjs.js +0 -21
  312. package/dist/main.es.js +0 -3
  313. package/dist/motion.min.js +0 -1
  314. package/dist/motion.umd.js +0 -2359
  315. package/dist/size-index.js +0 -1
  316. package/lib/animate.js +0 -17
  317. package/lib/animate.js.map +0 -1
  318. package/types/animate.d.ts +0 -6
  319. package/types/animate.d.ts.map +0 -1
  320. package/types/index.d.ts.map +0 -1
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Converts seconds to milliseconds
3
+ *
4
+ * @param seconds - Time in seconds.
5
+ * @return milliseconds - Converted time in milliseconds.
6
+ */
7
+ const secondsToMilliseconds = (seconds) => seconds * 1000;
8
+ const millisecondsToSeconds = (milliseconds) => milliseconds / 1000;
9
+
10
+ export { millisecondsToSeconds, secondsToMilliseconds };
@@ -0,0 +1,21 @@
1
+ import { interpolate } from './interpolate.mjs';
2
+
3
+ const isCustomValueType = (v) => {
4
+ return v && typeof v === "object" && v.mix;
5
+ };
6
+ const getMixer = (v) => (isCustomValueType(v) ? v.mix : undefined);
7
+ function transform(...args) {
8
+ const useImmediate = !Array.isArray(args[0]);
9
+ const argOffset = useImmediate ? 0 : -1;
10
+ const inputValue = args[0 + argOffset];
11
+ const inputRange = args[1 + argOffset];
12
+ const outputRange = args[2 + argOffset];
13
+ const options = args[3 + argOffset];
14
+ const interpolator = interpolate(inputRange, outputRange, {
15
+ mixer: getMixer(outputRange[0]),
16
+ ...options,
17
+ });
18
+ return useImmediate ? interpolator(inputValue) : interpolator;
19
+ }
20
+
21
+ export { transform };
@@ -0,0 +1,18 @@
1
+ import { useRef } from 'react';
2
+
3
+ /**
4
+ * Creates a constant value over the lifecycle of a component.
5
+ *
6
+ * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer
7
+ * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`
8
+ * you can ensure that initialisers don't execute twice or more.
9
+ */
10
+ function useConstant(init) {
11
+ const ref = useRef(null);
12
+ if (ref.current === null) {
13
+ ref.current = init();
14
+ }
15
+ return ref.current;
16
+ }
17
+
18
+ export { useConstant };
@@ -0,0 +1,6 @@
1
+ import { useLayoutEffect, useEffect } from 'react';
2
+ import { isBrowser } from './is-browser.mjs';
3
+
4
+ const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
5
+
6
+ export { useIsomorphicLayoutEffect };
@@ -0,0 +1,11 @@
1
+ /*
2
+ Convert velocity into velocity per second
3
+
4
+ @param [number]: Unit per frame
5
+ @param [number]: Frame duration in ms
6
+ */
7
+ function velocityPerSecond(velocity, frameDuration) {
8
+ return frameDuration ? velocity * (1000 / frameDuration) : 0;
9
+ }
10
+
11
+ export { velocityPerSecond };
@@ -0,0 +1,11 @@
1
+ const warned = new Set();
2
+ function warnOnce(condition, message, element) {
3
+ if (condition || warned.has(message))
4
+ return;
5
+ console.warn(message);
6
+ if (element)
7
+ console.warn(element);
8
+ warned.add(message);
9
+ }
10
+
11
+ export { warnOnce };
@@ -0,0 +1,6 @@
1
+ const wrap = (min, max, v) => {
2
+ const rangeSize = max - min;
3
+ return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min;
4
+ };
5
+
6
+ export { wrap };
@@ -0,0 +1,313 @@
1
+ import { SubscriptionManager } from '../utils/subscription-manager.mjs';
2
+ import { velocityPerSecond } from '../utils/velocity-per-second.mjs';
3
+ import { warnOnce } from '../utils/warn-once.mjs';
4
+ import { time } from '../frameloop/sync-time.mjs';
5
+ import { frame } from '../frameloop/frame.mjs';
6
+
7
+ /**
8
+ * Maximum time between the value of two frames, beyond which we
9
+ * assume the velocity has since been 0.
10
+ */
11
+ const MAX_VELOCITY_DELTA = 30;
12
+ const isFloat = (value) => {
13
+ return !isNaN(parseFloat(value));
14
+ };
15
+ /**
16
+ * `MotionValue` is used to track the state and velocity of motion values.
17
+ *
18
+ * @public
19
+ */
20
+ class MotionValue {
21
+ /**
22
+ * @param init - The initiating value
23
+ * @param config - Optional configuration options
24
+ *
25
+ * - `transformer`: A function to transform incoming values with.
26
+ *
27
+ * @internal
28
+ */
29
+ constructor(init, options = {}) {
30
+ /**
31
+ * This will be replaced by the build step with the latest version number.
32
+ * When MotionValues are provided to motion components, warn if versions are mixed.
33
+ */
34
+ this.version = "11.11.12";
35
+ /**
36
+ * Tracks whether this value can output a velocity. Currently this is only true
37
+ * if the value is numerical, but we might be able to widen the scope here and support
38
+ * other value types.
39
+ *
40
+ * @internal
41
+ */
42
+ this.canTrackVelocity = null;
43
+ /**
44
+ * An object containing a SubscriptionManager for each active event.
45
+ */
46
+ this.events = {};
47
+ this.updateAndNotify = (v, render = true) => {
48
+ const currentTime = time.now();
49
+ /**
50
+ * If we're updating the value during another frame or eventloop
51
+ * than the previous frame, then the we set the previous frame value
52
+ * to current.
53
+ */
54
+ if (this.updatedAt !== currentTime) {
55
+ this.setPrevFrameValue();
56
+ }
57
+ this.prev = this.current;
58
+ this.setCurrent(v);
59
+ // Update update subscribers
60
+ if (this.current !== this.prev && this.events.change) {
61
+ this.events.change.notify(this.current);
62
+ }
63
+ // Update render subscribers
64
+ if (render && this.events.renderRequest) {
65
+ this.events.renderRequest.notify(this.current);
66
+ }
67
+ };
68
+ this.hasAnimated = false;
69
+ this.setCurrent(init);
70
+ this.owner = options.owner;
71
+ }
72
+ setCurrent(current) {
73
+ this.current = current;
74
+ this.updatedAt = time.now();
75
+ if (this.canTrackVelocity === null && current !== undefined) {
76
+ this.canTrackVelocity = isFloat(this.current);
77
+ }
78
+ }
79
+ setPrevFrameValue(prevFrameValue = this.current) {
80
+ this.prevFrameValue = prevFrameValue;
81
+ this.prevUpdatedAt = this.updatedAt;
82
+ }
83
+ /**
84
+ * Adds a function that will be notified when the `MotionValue` is updated.
85
+ *
86
+ * It returns a function that, when called, will cancel the subscription.
87
+ *
88
+ * When calling `onChange` inside a React component, it should be wrapped with the
89
+ * `useEffect` hook. As it returns an unsubscribe function, this should be returned
90
+ * from the `useEffect` function to ensure you don't add duplicate subscribers..
91
+ *
92
+ * ```jsx
93
+ * export const MyComponent = () => {
94
+ * const x = useMotionValue(0)
95
+ * const y = useMotionValue(0)
96
+ * const opacity = useMotionValue(1)
97
+ *
98
+ * useEffect(() => {
99
+ * function updateOpacity() {
100
+ * const maxXY = Math.max(x.get(), y.get())
101
+ * const newOpacity = transform(maxXY, [0, 100], [1, 0])
102
+ * opacity.set(newOpacity)
103
+ * }
104
+ *
105
+ * const unsubscribeX = x.on("change", updateOpacity)
106
+ * const unsubscribeY = y.on("change", updateOpacity)
107
+ *
108
+ * return () => {
109
+ * unsubscribeX()
110
+ * unsubscribeY()
111
+ * }
112
+ * }, [])
113
+ *
114
+ * return <motion.div style={{ x }} />
115
+ * }
116
+ * ```
117
+ *
118
+ * @param subscriber - A function that receives the latest value.
119
+ * @returns A function that, when called, will cancel this subscription.
120
+ *
121
+ * @deprecated
122
+ */
123
+ onChange(subscription) {
124
+ if (process.env.NODE_ENV !== "production") {
125
+ warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on("change", callback).`);
126
+ }
127
+ return this.on("change", subscription);
128
+ }
129
+ on(eventName, callback) {
130
+ if (!this.events[eventName]) {
131
+ this.events[eventName] = new SubscriptionManager();
132
+ }
133
+ const unsubscribe = this.events[eventName].add(callback);
134
+ if (eventName === "change") {
135
+ return () => {
136
+ unsubscribe();
137
+ /**
138
+ * If we have no more change listeners by the start
139
+ * of the next frame, stop active animations.
140
+ */
141
+ frame.read(() => {
142
+ if (!this.events.change.getSize()) {
143
+ this.stop();
144
+ }
145
+ });
146
+ };
147
+ }
148
+ return unsubscribe;
149
+ }
150
+ clearListeners() {
151
+ for (const eventManagers in this.events) {
152
+ this.events[eventManagers].clear();
153
+ }
154
+ }
155
+ /**
156
+ * Attaches a passive effect to the `MotionValue`.
157
+ *
158
+ * @internal
159
+ */
160
+ attach(passiveEffect, stopPassiveEffect) {
161
+ this.passiveEffect = passiveEffect;
162
+ this.stopPassiveEffect = stopPassiveEffect;
163
+ }
164
+ /**
165
+ * Sets the state of the `MotionValue`.
166
+ *
167
+ * @remarks
168
+ *
169
+ * ```jsx
170
+ * const x = useMotionValue(0)
171
+ * x.set(10)
172
+ * ```
173
+ *
174
+ * @param latest - Latest value to set.
175
+ * @param render - Whether to notify render subscribers. Defaults to `true`
176
+ *
177
+ * @public
178
+ */
179
+ set(v, render = true) {
180
+ if (!render || !this.passiveEffect) {
181
+ this.updateAndNotify(v, render);
182
+ }
183
+ else {
184
+ this.passiveEffect(v, this.updateAndNotify);
185
+ }
186
+ }
187
+ setWithVelocity(prev, current, delta) {
188
+ this.set(current);
189
+ this.prev = undefined;
190
+ this.prevFrameValue = prev;
191
+ this.prevUpdatedAt = this.updatedAt - delta;
192
+ }
193
+ /**
194
+ * Set the state of the `MotionValue`, stopping any active animations,
195
+ * effects, and resets velocity to `0`.
196
+ */
197
+ jump(v, endAnimation = true) {
198
+ this.updateAndNotify(v);
199
+ this.prev = v;
200
+ this.prevUpdatedAt = this.prevFrameValue = undefined;
201
+ endAnimation && this.stop();
202
+ if (this.stopPassiveEffect)
203
+ this.stopPassiveEffect();
204
+ }
205
+ /**
206
+ * Returns the latest state of `MotionValue`
207
+ *
208
+ * @returns - The latest state of `MotionValue`
209
+ *
210
+ * @public
211
+ */
212
+ get() {
213
+ return this.current;
214
+ }
215
+ /**
216
+ * @public
217
+ */
218
+ getPrevious() {
219
+ return this.prev;
220
+ }
221
+ /**
222
+ * Returns the latest velocity of `MotionValue`
223
+ *
224
+ * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.
225
+ *
226
+ * @public
227
+ */
228
+ getVelocity() {
229
+ const currentTime = time.now();
230
+ if (!this.canTrackVelocity ||
231
+ this.prevFrameValue === undefined ||
232
+ currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {
233
+ return 0;
234
+ }
235
+ const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);
236
+ // Casts because of parseFloat's poor typing
237
+ return velocityPerSecond(parseFloat(this.current) -
238
+ parseFloat(this.prevFrameValue), delta);
239
+ }
240
+ /**
241
+ * Registers a new animation to control this `MotionValue`. Only one
242
+ * animation can drive a `MotionValue` at one time.
243
+ *
244
+ * ```jsx
245
+ * value.start()
246
+ * ```
247
+ *
248
+ * @param animation - A function that starts the provided animation
249
+ *
250
+ * @internal
251
+ */
252
+ start(startAnimation) {
253
+ this.stop();
254
+ return new Promise((resolve) => {
255
+ this.hasAnimated = true;
256
+ this.animation = startAnimation(resolve);
257
+ if (this.events.animationStart) {
258
+ this.events.animationStart.notify();
259
+ }
260
+ }).then(() => {
261
+ if (this.events.animationComplete) {
262
+ this.events.animationComplete.notify();
263
+ }
264
+ this.clearAnimation();
265
+ });
266
+ }
267
+ /**
268
+ * Stop the currently active animation.
269
+ *
270
+ * @public
271
+ */
272
+ stop() {
273
+ if (this.animation) {
274
+ this.animation.stop();
275
+ if (this.events.animationCancel) {
276
+ this.events.animationCancel.notify();
277
+ }
278
+ }
279
+ this.clearAnimation();
280
+ }
281
+ /**
282
+ * Returns `true` if this value is currently animating.
283
+ *
284
+ * @public
285
+ */
286
+ isAnimating() {
287
+ return !!this.animation;
288
+ }
289
+ clearAnimation() {
290
+ delete this.animation;
291
+ }
292
+ /**
293
+ * Destroy and clean up subscribers to this `MotionValue`.
294
+ *
295
+ * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically
296
+ * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually
297
+ * created a `MotionValue` via the `motionValue` function.
298
+ *
299
+ * @public
300
+ */
301
+ destroy() {
302
+ this.clearListeners();
303
+ this.stop();
304
+ if (this.stopPassiveEffect) {
305
+ this.stopPassiveEffect();
306
+ }
307
+ }
308
+ }
309
+ function motionValue(init, options) {
310
+ return new MotionValue(init, options);
311
+ }
312
+
313
+ export { MotionValue, motionValue };
@@ -0,0 +1,40 @@
1
+ import { rgba } from './rgba.mjs';
2
+ import { isColorString } from './utils.mjs';
3
+
4
+ function parseHex(v) {
5
+ let r = "";
6
+ let g = "";
7
+ let b = "";
8
+ let a = "";
9
+ // If we have 6 characters, ie #FF0000
10
+ if (v.length > 5) {
11
+ r = v.substring(1, 3);
12
+ g = v.substring(3, 5);
13
+ b = v.substring(5, 7);
14
+ a = v.substring(7, 9);
15
+ // Or we have 3 characters, ie #F00
16
+ }
17
+ else {
18
+ r = v.substring(1, 2);
19
+ g = v.substring(2, 3);
20
+ b = v.substring(3, 4);
21
+ a = v.substring(4, 5);
22
+ r += r;
23
+ g += g;
24
+ b += b;
25
+ a += a;
26
+ }
27
+ return {
28
+ red: parseInt(r, 16),
29
+ green: parseInt(g, 16),
30
+ blue: parseInt(b, 16),
31
+ alpha: a ? parseInt(a, 16) / 255 : 1,
32
+ };
33
+ }
34
+ const hex = {
35
+ test: /*@__PURE__*/ isColorString("#"),
36
+ parse: parseHex,
37
+ transform: rgba.transform,
38
+ };
39
+
40
+ export { hex };
@@ -0,0 +1,22 @@
1
+ import { alpha } from '../numbers/index.mjs';
2
+ import { percent } from '../numbers/units.mjs';
3
+ import { sanitize } from '../utils/sanitize.mjs';
4
+ import { isColorString, splitColor } from './utils.mjs';
5
+
6
+ const hsla = {
7
+ test: /*@__PURE__*/ isColorString("hsl", "hue"),
8
+ parse: /*@__PURE__*/ splitColor("hue", "saturation", "lightness"),
9
+ transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {
10
+ return ("hsla(" +
11
+ Math.round(hue) +
12
+ ", " +
13
+ percent.transform(sanitize(saturation)) +
14
+ ", " +
15
+ percent.transform(sanitize(lightness)) +
16
+ ", " +
17
+ sanitize(alpha.transform(alpha$1)) +
18
+ ")");
19
+ },
20
+ };
21
+
22
+ export { hsla };
@@ -0,0 +1,27 @@
1
+ import { hex } from './hex.mjs';
2
+ import { hsla } from './hsla.mjs';
3
+ import { rgba } from './rgba.mjs';
4
+
5
+ const color = {
6
+ test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),
7
+ parse: (v) => {
8
+ if (rgba.test(v)) {
9
+ return rgba.parse(v);
10
+ }
11
+ else if (hsla.test(v)) {
12
+ return hsla.parse(v);
13
+ }
14
+ else {
15
+ return hex.parse(v);
16
+ }
17
+ },
18
+ transform: (v) => {
19
+ return typeof v === "string"
20
+ ? v
21
+ : v.hasOwnProperty("red")
22
+ ? rgba.transform(v)
23
+ : hsla.transform(v);
24
+ },
25
+ };
26
+
27
+ export { color };
@@ -0,0 +1,25 @@
1
+ import { clamp } from '../../../utils/clamp.mjs';
2
+ import { number, alpha } from '../numbers/index.mjs';
3
+ import { sanitize } from '../utils/sanitize.mjs';
4
+ import { isColorString, splitColor } from './utils.mjs';
5
+
6
+ const clampRgbUnit = (v) => clamp(0, 255, v);
7
+ const rgbUnit = {
8
+ ...number,
9
+ transform: (v) => Math.round(clampRgbUnit(v)),
10
+ };
11
+ const rgba = {
12
+ test: /*@__PURE__*/ isColorString("rgb", "red"),
13
+ parse: /*@__PURE__*/ splitColor("red", "green", "blue"),
14
+ transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => "rgba(" +
15
+ rgbUnit.transform(red) +
16
+ ", " +
17
+ rgbUnit.transform(green) +
18
+ ", " +
19
+ rgbUnit.transform(blue) +
20
+ ", " +
21
+ sanitize(alpha.transform(alpha$1)) +
22
+ ")",
23
+ };
24
+
25
+ export { rgbUnit, rgba };
@@ -0,0 +1,29 @@
1
+ import { floatRegex } from '../utils/float-regex.mjs';
2
+ import { isNullish } from '../utils/is-nullish.mjs';
3
+ import { singleColorRegex } from '../utils/single-color-regex.mjs';
4
+
5
+ /**
6
+ * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,
7
+ * but false if a number or multiple colors
8
+ */
9
+ const isColorString = (type, testProp) => (v) => {
10
+ return Boolean((typeof v === "string" &&
11
+ singleColorRegex.test(v) &&
12
+ v.startsWith(type)) ||
13
+ (testProp &&
14
+ !isNullish(v) &&
15
+ Object.prototype.hasOwnProperty.call(v, testProp)));
16
+ };
17
+ const splitColor = (aName, bName, cName) => (v) => {
18
+ if (typeof v !== "string")
19
+ return v;
20
+ const [a, b, c, alpha] = v.match(floatRegex);
21
+ return {
22
+ [aName]: parseFloat(a),
23
+ [bName]: parseFloat(b),
24
+ [cName]: parseFloat(c),
25
+ alpha: alpha !== undefined ? parseFloat(alpha) : 1,
26
+ };
27
+ };
28
+
29
+ export { isColorString, splitColor };
@@ -0,0 +1,30 @@
1
+ import { complex } from './index.mjs';
2
+ import { floatRegex } from '../utils/float-regex.mjs';
3
+
4
+ /**
5
+ * Properties that should default to 1 or 100%
6
+ */
7
+ const maxDefaults = new Set(["brightness", "contrast", "saturate", "opacity"]);
8
+ function applyDefaultFilter(v) {
9
+ const [name, value] = v.slice(0, -1).split("(");
10
+ if (name === "drop-shadow")
11
+ return v;
12
+ const [number] = value.match(floatRegex) || [];
13
+ if (!number)
14
+ return v;
15
+ const unit = value.replace(number, "");
16
+ let defaultValue = maxDefaults.has(name) ? 1 : 0;
17
+ if (number !== value)
18
+ defaultValue *= 100;
19
+ return name + "(" + defaultValue + unit + ")";
20
+ }
21
+ const functionRegex = /\b([a-z-]*)\(.*?\)/gu;
22
+ const filter = {
23
+ ...complex,
24
+ getAnimatableNone: (v) => {
25
+ const functions = v.match(functionRegex);
26
+ return functions ? functions.map(applyDefaultFilter).join(" ") : v;
27
+ },
28
+ };
29
+
30
+ export { filter };
@@ -0,0 +1,92 @@
1
+ import { color } from '../color/index.mjs';
2
+ import { colorRegex } from '../utils/color-regex.mjs';
3
+ import { floatRegex } from '../utils/float-regex.mjs';
4
+ import { sanitize } from '../utils/sanitize.mjs';
5
+
6
+ function test(v) {
7
+ var _a, _b;
8
+ return (isNaN(v) &&
9
+ typeof v === "string" &&
10
+ (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) +
11
+ (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) >
12
+ 0);
13
+ }
14
+ const NUMBER_TOKEN = "number";
15
+ const COLOR_TOKEN = "color";
16
+ const VAR_TOKEN = "var";
17
+ const VAR_FUNCTION_TOKEN = "var(";
18
+ const SPLIT_TOKEN = "${}";
19
+ // this regex consists of the `singleCssVariableRegex|rgbHSLValueRegex|digitRegex`
20
+ const complexRegex = /var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;
21
+ function analyseComplexValue(value) {
22
+ const originalValue = value.toString();
23
+ const values = [];
24
+ const indexes = {
25
+ color: [],
26
+ number: [],
27
+ var: [],
28
+ };
29
+ const types = [];
30
+ let i = 0;
31
+ const tokenised = originalValue.replace(complexRegex, (parsedValue) => {
32
+ if (color.test(parsedValue)) {
33
+ indexes.color.push(i);
34
+ types.push(COLOR_TOKEN);
35
+ values.push(color.parse(parsedValue));
36
+ }
37
+ else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {
38
+ indexes.var.push(i);
39
+ types.push(VAR_TOKEN);
40
+ values.push(parsedValue);
41
+ }
42
+ else {
43
+ indexes.number.push(i);
44
+ types.push(NUMBER_TOKEN);
45
+ values.push(parseFloat(parsedValue));
46
+ }
47
+ ++i;
48
+ return SPLIT_TOKEN;
49
+ });
50
+ const split = tokenised.split(SPLIT_TOKEN);
51
+ return { values, split, indexes, types };
52
+ }
53
+ function parseComplexValue(v) {
54
+ return analyseComplexValue(v).values;
55
+ }
56
+ function createTransformer(source) {
57
+ const { split, types } = analyseComplexValue(source);
58
+ const numSections = split.length;
59
+ return (v) => {
60
+ let output = "";
61
+ for (let i = 0; i < numSections; i++) {
62
+ output += split[i];
63
+ if (v[i] !== undefined) {
64
+ const type = types[i];
65
+ if (type === NUMBER_TOKEN) {
66
+ output += sanitize(v[i]);
67
+ }
68
+ else if (type === COLOR_TOKEN) {
69
+ output += color.transform(v[i]);
70
+ }
71
+ else {
72
+ output += v[i];
73
+ }
74
+ }
75
+ }
76
+ return output;
77
+ };
78
+ }
79
+ const convertNumbersToZero = (v) => typeof v === "number" ? 0 : v;
80
+ function getAnimatableNone(v) {
81
+ const parsed = parseComplexValue(v);
82
+ const transformer = createTransformer(v);
83
+ return transformer(parsed.map(convertNumbersToZero));
84
+ }
85
+ const complex = {
86
+ test,
87
+ parse: parseComplexValue,
88
+ createTransformer,
89
+ getAnimatableNone,
90
+ };
91
+
92
+ export { analyseComplexValue, complex };