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,65 @@
1
+ import { buildTransform } from './build-transform.mjs';
2
+ import { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';
3
+ import { transformProps } from './transform.mjs';
4
+ import { getValueAsType } from '../../dom/value-types/get-as-type.mjs';
5
+ import { numberValueTypes } from '../../dom/value-types/number.mjs';
6
+
7
+ function buildHTMLStyles(state, latestValues, transformTemplate) {
8
+ const { style, vars, transformOrigin } = state;
9
+ // Track whether we encounter any transform or transformOrigin values.
10
+ let hasTransform = false;
11
+ let hasTransformOrigin = false;
12
+ /**
13
+ * Loop over all our latest animated values and decide whether to handle them
14
+ * as a style or CSS variable.
15
+ *
16
+ * Transforms and transform origins are kept separately for further processing.
17
+ */
18
+ for (const key in latestValues) {
19
+ const value = latestValues[key];
20
+ if (transformProps.has(key)) {
21
+ // If this is a transform, flag to enable further transform processing
22
+ hasTransform = true;
23
+ continue;
24
+ }
25
+ else if (isCSSVariableName(key)) {
26
+ vars[key] = value;
27
+ continue;
28
+ }
29
+ else {
30
+ // Convert the value to its default value type, ie 0 -> "0px"
31
+ const valueAsType = getValueAsType(value, numberValueTypes[key]);
32
+ if (key.startsWith("origin")) {
33
+ // If this is a transform origin, flag and enable further transform-origin processing
34
+ hasTransformOrigin = true;
35
+ transformOrigin[key] =
36
+ valueAsType;
37
+ }
38
+ else {
39
+ style[key] = valueAsType;
40
+ }
41
+ }
42
+ }
43
+ if (!latestValues.transform) {
44
+ if (hasTransform || transformTemplate) {
45
+ style.transform = buildTransform(latestValues, state.transform, transformTemplate);
46
+ }
47
+ else if (style.transform) {
48
+ /**
49
+ * If we have previously created a transform but currently don't have any,
50
+ * reset transform style to none.
51
+ */
52
+ style.transform = "none";
53
+ }
54
+ }
55
+ /**
56
+ * Build a transformOrigin style. Uses the same defaults as the browser for
57
+ * undefined origins.
58
+ */
59
+ if (hasTransformOrigin) {
60
+ const { originX = "50%", originY = "50%", originZ = 0, } = transformOrigin;
61
+ style.transformOrigin = `${originX} ${originY} ${originZ}`;
62
+ }
63
+ }
64
+
65
+ export { buildHTMLStyles };
@@ -0,0 +1,62 @@
1
+ import { transformPropOrder } from './transform.mjs';
2
+ import { getValueAsType } from '../../dom/value-types/get-as-type.mjs';
3
+ import { numberValueTypes } from '../../dom/value-types/number.mjs';
4
+
5
+ const translateAlias = {
6
+ x: "translateX",
7
+ y: "translateY",
8
+ z: "translateZ",
9
+ transformPerspective: "perspective",
10
+ };
11
+ const numTransforms = transformPropOrder.length;
12
+ /**
13
+ * Build a CSS transform style from individual x/y/scale etc properties.
14
+ *
15
+ * This outputs with a default order of transforms/scales/rotations, this can be customised by
16
+ * providing a transformTemplate function.
17
+ */
18
+ function buildTransform(latestValues, transform, transformTemplate) {
19
+ // The transform string we're going to build into.
20
+ let transformString = "";
21
+ let transformIsDefault = true;
22
+ /**
23
+ * Loop over all possible transforms in order, adding the ones that
24
+ * are present to the transform string.
25
+ */
26
+ for (let i = 0; i < numTransforms; i++) {
27
+ const key = transformPropOrder[i];
28
+ const value = latestValues[key];
29
+ if (value === undefined)
30
+ continue;
31
+ let valueIsDefault = true;
32
+ if (typeof value === "number") {
33
+ valueIsDefault = value === (key.startsWith("scale") ? 1 : 0);
34
+ }
35
+ else {
36
+ valueIsDefault = parseFloat(value) === 0;
37
+ }
38
+ if (!valueIsDefault || transformTemplate) {
39
+ const valueAsType = getValueAsType(value, numberValueTypes[key]);
40
+ if (!valueIsDefault) {
41
+ transformIsDefault = false;
42
+ const transformName = translateAlias[key] || key;
43
+ transformString += `${transformName}(${valueAsType}) `;
44
+ }
45
+ if (transformTemplate) {
46
+ transform[key] = valueAsType;
47
+ }
48
+ }
49
+ }
50
+ transformString = transformString.trim();
51
+ // If we have a custom `transform` template, pass our transform values and
52
+ // generated transformString to that before returning
53
+ if (transformTemplate) {
54
+ transformString = transformTemplate(transform, transformIsDefault ? "" : transformString);
55
+ }
56
+ else if (transformIsDefault) {
57
+ transformString = "none";
58
+ }
59
+ return transformString;
60
+ }
61
+
62
+ export { buildTransform };
@@ -0,0 +1,8 @@
1
+ const createHtmlRenderState = () => ({
2
+ style: {},
3
+ transform: {},
4
+ transformOrigin: {},
5
+ vars: {},
6
+ });
7
+
8
+ export { createHtmlRenderState };
@@ -0,0 +1,30 @@
1
+ import { analyseComplexValue } from '../../../value/types/complex/index.mjs';
2
+ import { getAnimatableNone } from '../../dom/value-types/animatable-none.mjs';
3
+
4
+ /**
5
+ * If we encounter keyframes like "none" or "0" and we also have keyframes like
6
+ * "#fff" or "200px 200px" we want to find a keyframe to serve as a template for
7
+ * the "none" keyframes. In this case "#fff" or "200px 200px" - then these get turned into
8
+ * zero equivalents, i.e. "#fff0" or "0px 0px".
9
+ */
10
+ const invalidTemplates = new Set(["auto", "none", "0"]);
11
+ function makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {
12
+ let i = 0;
13
+ let animatableTemplate = undefined;
14
+ while (i < unresolvedKeyframes.length && !animatableTemplate) {
15
+ const keyframe = unresolvedKeyframes[i];
16
+ if (typeof keyframe === "string" &&
17
+ !invalidTemplates.has(keyframe) &&
18
+ analyseComplexValue(keyframe).values.length) {
19
+ animatableTemplate = unresolvedKeyframes[i];
20
+ }
21
+ i++;
22
+ }
23
+ if (animatableTemplate && name) {
24
+ for (const noneIndex of noneKeyframeIndexes) {
25
+ unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);
26
+ }
27
+ }
28
+ }
29
+
30
+ export { makeNoneKeyframesAnimatable };
@@ -0,0 +1,9 @@
1
+ function renderHTML(element, { style, vars }, styleProp, projection) {
2
+ Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));
3
+ // Loop over any CSS variables and assign those.
4
+ for (const key in vars) {
5
+ element.style.setProperty(key, vars[key]);
6
+ }
7
+ }
8
+
9
+ export { renderHTML };
@@ -0,0 +1,20 @@
1
+ import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';
2
+ import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';
3
+
4
+ function scrapeMotionValuesFromProps(props, prevProps, visualElement) {
5
+ var _a;
6
+ const { style } = props;
7
+ const newValues = {};
8
+ for (const key in style) {
9
+ if (isMotionValue(style[key]) ||
10
+ (prevProps.style &&
11
+ isMotionValue(prevProps.style[key])) ||
12
+ isForcedMotionValue(key, props) ||
13
+ ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== undefined) {
14
+ newValues[key] = style[key];
15
+ }
16
+ }
17
+ return newValues;
18
+ }
19
+
20
+ export { scrapeMotionValuesFromProps };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Generate a list of every possible transform key.
3
+ */
4
+ const transformPropOrder = [
5
+ "transformPerspective",
6
+ "x",
7
+ "y",
8
+ "z",
9
+ "translateX",
10
+ "translateY",
11
+ "translateZ",
12
+ "scale",
13
+ "scaleX",
14
+ "scaleY",
15
+ "rotate",
16
+ "rotateX",
17
+ "rotateY",
18
+ "rotateZ",
19
+ "skew",
20
+ "skewX",
21
+ "skewY",
22
+ ];
23
+ /**
24
+ * A quick lookup for transform props.
25
+ */
26
+ const transformProps = new Set(transformPropOrder);
27
+
28
+ export { transformPropOrder, transformProps };
@@ -0,0 +1,41 @@
1
+ import { createBox } from '../../projection/geometry/models.mjs';
2
+ import { VisualElement } from '../VisualElement.mjs';
3
+
4
+ function isObjectKey(key, object) {
5
+ return key in object;
6
+ }
7
+ class ObjectVisualElement extends VisualElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.type = "object";
11
+ }
12
+ readValueFromInstance(instance, key) {
13
+ if (isObjectKey(key, instance)) {
14
+ const value = instance[key];
15
+ if (typeof value === "string" || typeof value === "number") {
16
+ return value;
17
+ }
18
+ }
19
+ return undefined;
20
+ }
21
+ getBaseTargetFromProps() {
22
+ return undefined;
23
+ }
24
+ removeValueFromRenderState(key, renderState) {
25
+ delete renderState.output[key];
26
+ }
27
+ measureInstanceViewportBox() {
28
+ return createBox();
29
+ }
30
+ build(renderState, latestValues) {
31
+ Object.assign(renderState.output, latestValues);
32
+ }
33
+ renderInstance(instance, { output }) {
34
+ Object.assign(instance, output);
35
+ }
36
+ sortInstanceNodePosition() {
37
+ return 0;
38
+ }
39
+ }
40
+
41
+ export { ObjectVisualElement };
@@ -0,0 +1,3 @@
1
+ const visualElementStore = new WeakMap();
2
+
3
+ export { visualElementStore };
@@ -0,0 +1,45 @@
1
+ import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';
2
+ import { DOMVisualElement } from '../dom/DOMVisualElement.mjs';
3
+ import { buildSVGAttrs } from './utils/build-attrs.mjs';
4
+ import { camelToDash } from '../dom/utils/camel-to-dash.mjs';
5
+ import { camelCaseAttributes } from './utils/camel-case-attrs.mjs';
6
+ import { transformProps } from '../html/utils/transform.mjs';
7
+ import { renderSVG } from './utils/render.mjs';
8
+ import { getDefaultValueType } from '../dom/value-types/defaults.mjs';
9
+ import { createBox } from '../../projection/geometry/models.mjs';
10
+ import { isSVGTag } from './utils/is-svg-tag.mjs';
11
+
12
+ class SVGVisualElement extends DOMVisualElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.type = "svg";
16
+ this.isSVGTag = false;
17
+ this.measureInstanceViewportBox = createBox;
18
+ }
19
+ getBaseTargetFromProps(props, key) {
20
+ return props[key];
21
+ }
22
+ readValueFromInstance(instance, key) {
23
+ if (transformProps.has(key)) {
24
+ const defaultType = getDefaultValueType(key);
25
+ return defaultType ? defaultType.default || 0 : 0;
26
+ }
27
+ key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;
28
+ return instance.getAttribute(key);
29
+ }
30
+ scrapeMotionValuesFromProps(props, prevProps, visualElement) {
31
+ return scrapeMotionValuesFromProps(props, prevProps, visualElement);
32
+ }
33
+ build(renderState, latestValues, props) {
34
+ buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate);
35
+ }
36
+ renderInstance(instance, renderState, styleProp, projection) {
37
+ renderSVG(instance, renderState, styleProp, projection);
38
+ }
39
+ mount(instance) {
40
+ this.isSVGTag = isSVGTag(instance.tagName);
41
+ super.mount(instance);
42
+ }
43
+ }
44
+
45
+ export { SVGVisualElement };
@@ -0,0 +1,40 @@
1
+ import { renderSVG } from './utils/render.mjs';
2
+ import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';
3
+ import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';
4
+ import { createSvgRenderState } from './utils/create-render-state.mjs';
5
+ import { buildSVGAttrs } from './utils/build-attrs.mjs';
6
+ import { isSVGTag } from './utils/is-svg-tag.mjs';
7
+ import { frame } from '../../frameloop/frame.mjs';
8
+
9
+ const svgMotionConfig = {
10
+ useVisualState: makeUseVisualState({
11
+ scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,
12
+ createRenderState: createSvgRenderState,
13
+ onMount: (props, instance, { renderState, latestValues }) => {
14
+ frame.read(() => {
15
+ try {
16
+ renderState.dimensions =
17
+ typeof instance.getBBox ===
18
+ "function"
19
+ ? instance.getBBox()
20
+ : instance.getBoundingClientRect();
21
+ }
22
+ catch (e) {
23
+ // Most likely trying to measure an unrendered element under Firefox
24
+ renderState.dimensions = {
25
+ x: 0,
26
+ y: 0,
27
+ width: 0,
28
+ height: 0,
29
+ };
30
+ }
31
+ });
32
+ frame.render(() => {
33
+ buildSVGAttrs(renderState, latestValues, isSVGTag(instance.tagName), props.transformTemplate);
34
+ renderSVG(instance, renderState);
35
+ });
36
+ },
37
+ }),
38
+ };
39
+
40
+ export { svgMotionConfig };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * We keep these listed separately as we use the lowercase tag names as part
3
+ * of the runtime bundle to detect SVG components
4
+ */
5
+ const lowercaseSVGElements = [
6
+ "animate",
7
+ "circle",
8
+ "defs",
9
+ "desc",
10
+ "ellipse",
11
+ "g",
12
+ "image",
13
+ "line",
14
+ "filter",
15
+ "marker",
16
+ "mask",
17
+ "metadata",
18
+ "path",
19
+ "pattern",
20
+ "polygon",
21
+ "polyline",
22
+ "rect",
23
+ "stop",
24
+ "switch",
25
+ "symbol",
26
+ "svg",
27
+ "text",
28
+ "tspan",
29
+ "use",
30
+ "view",
31
+ ];
32
+
33
+ export { lowercaseSVGElements };
@@ -0,0 +1,24 @@
1
+ import { useMemo } from 'react';
2
+ import { copyRawValuesOnly } from '../html/use-props.mjs';
3
+ import { buildSVGAttrs } from './utils/build-attrs.mjs';
4
+ import { createSvgRenderState } from './utils/create-render-state.mjs';
5
+ import { isSVGTag } from './utils/is-svg-tag.mjs';
6
+
7
+ function useSVGProps(props, visualState, _isStatic, Component) {
8
+ const visualProps = useMemo(() => {
9
+ const state = createSvgRenderState();
10
+ buildSVGAttrs(state, visualState, isSVGTag(Component), props.transformTemplate);
11
+ return {
12
+ ...state.attrs,
13
+ style: { ...state.style },
14
+ };
15
+ }, [visualState]);
16
+ if (props.style) {
17
+ const rawStyles = {};
18
+ copyRawValuesOnly(rawStyles, props.style, props);
19
+ visualProps.style = { ...rawStyles, ...visualProps.style };
20
+ }
21
+ return visualProps;
22
+ }
23
+
24
+ export { useSVGProps };
@@ -0,0 +1,52 @@
1
+ import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';
2
+ import { calcSVGTransformOrigin } from './transform-origin.mjs';
3
+ import { buildSVGPath } from './path.mjs';
4
+
5
+ /**
6
+ * Build SVG visual attrbutes, like cx and style.transform
7
+ */
8
+ function buildSVGAttrs(state, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0,
9
+ // This is object creation, which we try to avoid per-frame.
10
+ ...latest }, isSVGTag, transformTemplate) {
11
+ buildHTMLStyles(state, latest, transformTemplate);
12
+ /**
13
+ * For svg tags we just want to make sure viewBox is animatable and treat all the styles
14
+ * as normal HTML tags.
15
+ */
16
+ if (isSVGTag) {
17
+ if (state.style.viewBox) {
18
+ state.attrs.viewBox = state.style.viewBox;
19
+ }
20
+ return;
21
+ }
22
+ state.attrs = state.style;
23
+ state.style = {};
24
+ const { attrs, style, dimensions } = state;
25
+ /**
26
+ * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs
27
+ * and copy it into style.
28
+ */
29
+ if (attrs.transform) {
30
+ if (dimensions)
31
+ style.transform = attrs.transform;
32
+ delete attrs.transform;
33
+ }
34
+ // Parse transformOrigin
35
+ if (dimensions &&
36
+ (originX !== undefined || originY !== undefined || style.transform)) {
37
+ style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);
38
+ }
39
+ // Render attrX/attrY/attrScale as attributes
40
+ if (attrX !== undefined)
41
+ attrs.x = attrX;
42
+ if (attrY !== undefined)
43
+ attrs.y = attrY;
44
+ if (attrScale !== undefined)
45
+ attrs.scale = attrScale;
46
+ // Build SVG path if one has been defined
47
+ if (pathLength !== undefined) {
48
+ buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);
49
+ }
50
+ }
51
+
52
+ export { buildSVGAttrs };
@@ -0,0 +1,30 @@
1
+ /**
2
+ * A set of attribute names that are always read/written as camel case.
3
+ */
4
+ const camelCaseAttributes = new Set([
5
+ "baseFrequency",
6
+ "diffuseConstant",
7
+ "kernelMatrix",
8
+ "kernelUnitLength",
9
+ "keySplines",
10
+ "keyTimes",
11
+ "limitingConeAngle",
12
+ "markerHeight",
13
+ "markerWidth",
14
+ "numOctaves",
15
+ "targetX",
16
+ "targetY",
17
+ "surfaceScale",
18
+ "specularConstant",
19
+ "specularExponent",
20
+ "stdDeviation",
21
+ "tableValues",
22
+ "viewBox",
23
+ "gradientTransform",
24
+ "pathLength",
25
+ "startOffset",
26
+ "textLength",
27
+ "lengthAdjust",
28
+ ]);
29
+
30
+ export { camelCaseAttributes };
@@ -0,0 +1,8 @@
1
+ import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';
2
+
3
+ const createSvgRenderState = () => ({
4
+ ...createHtmlRenderState(),
5
+ attrs: {},
6
+ });
7
+
8
+ export { createSvgRenderState };
@@ -0,0 +1,3 @@
1
+ const isSVGTag = (tag) => typeof tag === "string" && tag.toLowerCase() === "svg";
2
+
3
+ export { isSVGTag };
@@ -0,0 +1,32 @@
1
+ import { px } from '../../../value/types/numbers/units.mjs';
2
+
3
+ const dashKeys = {
4
+ offset: "stroke-dashoffset",
5
+ array: "stroke-dasharray",
6
+ };
7
+ const camelKeys = {
8
+ offset: "strokeDashoffset",
9
+ array: "strokeDasharray",
10
+ };
11
+ /**
12
+ * Build SVG path properties. Uses the path's measured length to convert
13
+ * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset
14
+ * and stroke-dasharray attributes.
15
+ *
16
+ * This function is mutative to reduce per-frame GC.
17
+ */
18
+ function buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {
19
+ // Normalise path length by setting SVG attribute pathLength to 1
20
+ attrs.pathLength = 1;
21
+ // We use dash case when setting attributes directly to the DOM node and camel case
22
+ // when defining props on a React component.
23
+ const keys = useDashCase ? dashKeys : camelKeys;
24
+ // Build the dash offset
25
+ attrs[keys.offset] = px.transform(-offset);
26
+ // Build the dash array
27
+ const pathLength = px.transform(length);
28
+ const pathSpacing = px.transform(spacing);
29
+ attrs[keys.array] = `${pathLength} ${pathSpacing}`;
30
+ }
31
+
32
+ export { buildSVGPath };
@@ -0,0 +1,12 @@
1
+ import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';
2
+ import { renderHTML } from '../../html/utils/render.mjs';
3
+ import { camelCaseAttributes } from './camel-case-attrs.mjs';
4
+
5
+ function renderSVG(element, renderState, _styleProp, projection) {
6
+ renderHTML(element, renderState, undefined, projection);
7
+ for (const key in renderState.attrs) {
8
+ element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);
9
+ }
10
+ }
11
+
12
+ export { renderSVG };
@@ -0,0 +1,19 @@
1
+ import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';
2
+ import { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';
3
+ import { transformPropOrder } from '../../html/utils/transform.mjs';
4
+
5
+ function scrapeMotionValuesFromProps(props, prevProps, visualElement) {
6
+ const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);
7
+ for (const key in props) {
8
+ if (isMotionValue(props[key]) ||
9
+ isMotionValue(prevProps[key])) {
10
+ const targetKey = transformPropOrder.indexOf(key) !== -1
11
+ ? "attr" + key.charAt(0).toUpperCase() + key.substring(1)
12
+ : key;
13
+ newValues[targetKey] = props[key];
14
+ }
15
+ }
16
+ return newValues;
17
+ }
18
+
19
+ export { scrapeMotionValuesFromProps };
@@ -0,0 +1,18 @@
1
+ import { px } from '../../../value/types/numbers/units.mjs';
2
+
3
+ function calcOrigin(origin, offset, size) {
4
+ return typeof origin === "string"
5
+ ? origin
6
+ : px.transform(offset + size * origin);
7
+ }
8
+ /**
9
+ * The SVG transform origin defaults are different to CSS and is less intuitive,
10
+ * so we use the measured dimensions of the SVG to reconcile these.
11
+ */
12
+ function calcSVGTransformOrigin(dimensions, originX, originY) {
13
+ const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);
14
+ const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);
15
+ return `${pxOriginX} ${pxOriginY}`;
16
+ }
17
+
18
+ export { calcSVGTransformOrigin };