motion-v 0.3.1-beta.1 → 0.4.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 (259) hide show
  1. package/dist/cjs/index.js +1826 -47
  2. package/dist/es/animation/use-animate.mjs +1 -1
  3. package/dist/es/components/LayoutGroup.vue.mjs +39 -0
  4. package/dist/es/components/LayoutGroup.vue2.mjs +4 -0
  5. package/dist/es/components/Motion.vue.mjs +22 -10
  6. package/dist/es/components/context.mjs +12 -1
  7. package/dist/es/components/group.mjs +30 -0
  8. package/dist/es/components/use-force-update.mjs +11 -0
  9. package/dist/es/constants/index.mjs +8 -2
  10. package/dist/es/features/events.mjs +2 -2
  11. package/dist/es/features/feature-manager.mjs +3 -1
  12. package/dist/es/features/gestures/hover.mjs +1 -1
  13. package/dist/es/features/gestures/in-view.mjs +2 -2
  14. package/dist/es/features/gestures/press.mjs +1 -1
  15. package/dist/es/features/layout/config.mjs +21 -0
  16. package/dist/es/features/layout/layout.mjs +74 -0
  17. package/dist/es/features/layout/utils.mjs +8 -0
  18. package/dist/es/features/svg.mjs +2 -2
  19. package/dist/es/index.mjs +47 -30
  20. package/dist/es/node_modules/.pnpm/@vueuse_shared@12.0.0_typescript@5.5.4/node_modules/@vueuse/shared/index.mjs +6 -0
  21. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/events/add-dom-event.mjs +7 -0
  22. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/microtask.mjs +6 -0
  23. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs +60 -0
  24. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/copy.mjs +19 -0
  25. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs +81 -0
  26. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs +55 -0
  27. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs +40 -0
  28. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/models.mjs +21 -0
  29. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/utils.mjs +34 -0
  30. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs +13 -0
  31. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs +28 -0
  32. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs +1086 -0
  33. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/state.mjs +15 -0
  34. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/shared/stack.mjs +94 -0
  35. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs +26 -0
  36. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs +25 -0
  37. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs +8 -0
  38. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/transform.mjs +36 -0
  39. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs +6 -0
  40. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs +20 -0
  41. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs +4 -0
  42. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs +24 -0
  43. package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/resolve-value.mjs +4 -0
  44. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs +9 -0
  45. package/dist/es/state/create-visual-element.mjs +9 -0
  46. package/dist/es/state/motion-state.mjs +27 -14
  47. package/dist/es/state/style.mjs +2 -2
  48. package/dist/es/state/transform.mjs +0 -1
  49. package/dist/es/utils/use-animation-frame.mjs +1 -1
  50. package/dist/es/utils/use-in-view.mjs +1 -1
  51. package/dist/es/value/use-combine-values.mjs +2 -2
  52. package/dist/es/value/use-computed.mjs +1 -1
  53. package/dist/es/value/use-motion-value-event.mjs +11 -0
  54. package/dist/es/value/use-scroll.mjs +3 -3
  55. package/dist/es/value/use-spring.mjs +3 -3
  56. package/dist/es/value/use-time.mjs +1 -1
  57. package/dist/es/value/use-transform.mjs +1 -1
  58. package/dist/es/value/use-velocity.mjs +20 -0
  59. package/dist/src/components/LayoutGroup.d.ts +30 -0
  60. package/dist/src/components/context.d.ts +17 -0
  61. package/dist/src/components/group.d.ts +7 -0
  62. package/dist/src/components/use-force-update.d.ts +2 -0
  63. package/dist/src/features/index.d.ts +1 -0
  64. package/dist/src/features/layout/config.d.ts +8 -0
  65. package/dist/src/features/layout/layout.d.ts +10 -0
  66. package/dist/src/features/layout/types.d.ts +7 -0
  67. package/dist/src/features/layout/utils.d.ts +4 -0
  68. package/dist/src/index.d.ts +2 -0
  69. package/dist/src/state/create-visual-element.d.ts +1 -0
  70. package/dist/src/state/motion-state.d.ts +1 -2
  71. package/dist/src/types/state.d.ts +2 -1
  72. package/dist/src/value/index.d.ts +4 -0
  73. package/package.json +1 -1
  74. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/projection/geometry/models.mjs +0 -9
  75. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/projection/styles/scale-correction.mjs +0 -4
  76. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/GroupPlaybackControls.mjs +0 -0
  77. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animate/index.mjs +0 -0
  78. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animate/resolve-subjects.mjs +0 -0
  79. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animate/sequence.mjs +0 -0
  80. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animate/single-value.mjs +0 -0
  81. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animate/subject.mjs +0 -0
  82. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs +0 -0
  83. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/BaseAnimation.mjs +0 -0
  84. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs +0 -0
  85. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs +0 -0
  86. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs +0 -0
  87. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/utils/can-animate.mjs +0 -0
  88. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs +0 -0
  89. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs +0 -0
  90. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs +0 -0
  91. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/easing.mjs +0 -0
  92. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/index.mjs +0 -0
  93. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/utils/attach-timeline.mjs +0 -0
  94. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs +0 -0
  95. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/utils/linear.mjs +0 -0
  96. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/utils/memo-supports.mjs +0 -0
  97. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/utils/style.mjs +0 -0
  98. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/utils/supports-flags.mjs +0 -0
  99. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/utils/supports-linear-easing.mjs +0 -0
  100. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/utils/supports-partial-keyframes.mjs +0 -0
  101. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs +0 -0
  102. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/generators/inertia.mjs +0 -0
  103. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/generators/keyframes.mjs +0 -0
  104. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/generators/spring/find.mjs +0 -0
  105. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/generators/spring/index.mjs +0 -0
  106. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs +0 -0
  107. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/generators/utils/is-generator.mjs +0 -0
  108. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/generators/utils/velocity.mjs +0 -0
  109. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/interfaces/motion-value.mjs +0 -0
  110. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +0 -0
  111. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/optimized-appear/data-id.mjs +0 -0
  112. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs +0 -0
  113. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/sequence/create.mjs +0 -0
  114. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs +0 -0
  115. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/sequence/utils/edit.mjs +0 -0
  116. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/sequence/utils/sort.mjs +0 -0
  117. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/create-visual-element.mjs +0 -0
  118. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/default-transitions.mjs +0 -0
  119. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/get-value-transition.mjs +0 -0
  120. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/is-animatable.mjs +0 -0
  121. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/is-animation-controls.mjs +0 -0
  122. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs +0 -0
  123. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs +0 -0
  124. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/is-none.mjs +0 -0
  125. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/is-transition-defined.mjs +0 -0
  126. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/animation/utils/stagger.mjs +0 -0
  127. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/anticipate.mjs +0 -0
  128. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/back.mjs +0 -0
  129. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/circ.mjs +0 -0
  130. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/cubic-bezier.mjs +0 -0
  131. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/ease.mjs +0 -0
  132. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/modifiers/mirror.mjs +0 -0
  133. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/modifiers/reverse.mjs +0 -0
  134. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/steps.mjs +0 -0
  135. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/utils/create-generator-easing.mjs +0 -0
  136. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs +0 -0
  137. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs +0 -0
  138. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/utils/is-easing-array.mjs +0 -0
  139. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/easing/utils/map.mjs +0 -0
  140. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/frameloop/batcher.mjs +0 -0
  141. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/frameloop/frame.mjs +0 -0
  142. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/frameloop/index-legacy.mjs +0 -0
  143. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/frameloop/render-step.mjs +0 -0
  144. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/frameloop/sync-time.mjs +0 -0
  145. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/motion/features/definitions.mjs +0 -0
  146. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs +0 -0
  147. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/projection/geometry/conversion.mjs +0 -0
  148. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/projection/utils/measure.mjs +0 -0
  149. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/VisualElement.mjs +0 -0
  150. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs +0 -0
  151. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/DOMVisualElement.mjs +0 -0
  152. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/resize/handle-element.mjs +0 -0
  153. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/resize/handle-window.mjs +0 -0
  154. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/resize/index.mjs +0 -0
  155. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/index.mjs +0 -0
  156. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/info.mjs +0 -0
  157. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/observe.mjs +0 -0
  158. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs +0 -0
  159. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs +0 -0
  160. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs +0 -0
  161. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs +0 -0
  162. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs +0 -0
  163. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs +0 -0
  164. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/supports.mjs +0 -0
  165. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/scroll/track.mjs +0 -0
  166. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs +0 -0
  167. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs +0 -0
  168. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs +0 -0
  169. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs +0 -0
  170. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/utils/resolve-element.mjs +0 -0
  171. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs +0 -0
  172. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs +0 -0
  173. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/defaults.mjs +0 -0
  174. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/dimensions.mjs +0 -0
  175. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/find.mjs +0 -0
  176. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs +0 -0
  177. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/number-browser.mjs +0 -0
  178. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/number.mjs +0 -0
  179. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/test.mjs +0 -0
  180. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/transform.mjs +0 -0
  181. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/type-auto.mjs +0 -0
  182. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/value-types/type-int.mjs +0 -0
  183. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/dom/viewport/index.mjs +0 -0
  184. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/html/HTMLVisualElement.mjs +0 -0
  185. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/html/utils/build-styles.mjs +0 -0
  186. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/html/utils/build-transform.mjs +0 -0
  187. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs +0 -0
  188. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/html/utils/render.mjs +0 -0
  189. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs +0 -0
  190. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/html/utils/transform.mjs +0 -0
  191. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/object/ObjectVisualElement.mjs +0 -0
  192. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/store.mjs +0 -0
  193. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/svg/SVGVisualElement.mjs +0 -0
  194. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/svg/utils/build-attrs.mjs +0 -0
  195. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs +0 -0
  196. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs +0 -0
  197. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/svg/utils/path.mjs +0 -0
  198. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/svg/utils/render.mjs +0 -0
  199. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs +0 -0
  200. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/svg/utils/transform-origin.mjs +0 -0
  201. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/utils/KeyframesResolver.mjs +0 -0
  202. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/utils/is-controlling-variants.mjs +0 -0
  203. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/utils/is-variant-label.mjs +0 -0
  204. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/utils/motion-values.mjs +0 -0
  205. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs +0 -0
  206. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/utils/resolve-variants.mjs +0 -0
  207. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/utils/setters.mjs +0 -0
  208. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/render/utils/variant-props.mjs +0 -0
  209. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/GlobalConfig.mjs +0 -0
  210. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/array.mjs +0 -0
  211. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/clamp.mjs +0 -0
  212. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/delay.mjs +0 -0
  213. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/distance.mjs +0 -0
  214. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/errors.mjs +0 -0
  215. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/hsla-to-rgba.mjs +0 -0
  216. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/interpolate.mjs +0 -0
  217. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/is-browser.mjs +0 -0
  218. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/is-numerical-string.mjs +0 -0
  219. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/is-zero-value-string.mjs +0 -0
  220. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/memo.mjs +0 -0
  221. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/mix/color.mjs +0 -0
  222. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/mix/complex.mjs +0 -0
  223. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/mix/immediate.mjs +0 -0
  224. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/mix/index.mjs +0 -0
  225. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/mix/number.mjs +0 -0
  226. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/mix/visibility.mjs +0 -0
  227. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/noop.mjs +0 -0
  228. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/offsets/default.mjs +0 -0
  229. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/offsets/fill.mjs +0 -0
  230. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/offsets/time.mjs +0 -0
  231. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/pipe.mjs +0 -0
  232. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/progress.mjs +0 -0
  233. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/reduced-motion/index.mjs +0 -0
  234. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/reduced-motion/state.mjs +0 -0
  235. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/subscription-manager.mjs +0 -0
  236. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/time-conversion.mjs +0 -0
  237. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/transform.mjs +0 -0
  238. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/velocity-per-second.mjs +0 -0
  239. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/warn-once.mjs +0 -0
  240. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/utils/wrap.mjs +0 -0
  241. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/index.mjs +0 -0
  242. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/color/hex.mjs +0 -0
  243. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/color/hsla.mjs +0 -0
  244. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/color/index.mjs +0 -0
  245. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/color/rgba.mjs +0 -0
  246. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/color/utils.mjs +0 -0
  247. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/complex/filter.mjs +0 -0
  248. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/complex/index.mjs +0 -0
  249. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/numbers/index.mjs +0 -0
  250. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/numbers/units.mjs +0 -0
  251. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/utils/color-regex.mjs +0 -0
  252. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/utils/float-regex.mjs +0 -0
  253. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/utils/is-nullish.mjs +0 -0
  254. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/utils/sanitize.mjs +0 -0
  255. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/types/utils/single-color-regex.mjs +0 -0
  256. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/use-will-change/add-will-change.mjs +0 -0
  257. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/use-will-change/is.mjs +0 -0
  258. /package/dist/es/{external/.pnpm/framer-motion@11.11.11/external → node_modules/.pnpm/framer-motion@11.11.11/node_modules}/framer-motion/dist/es/value/utils/is-motion-value.mjs +0 -0
  259. /package/dist/es/{external/.pnpm/hey-listen@1.0.8/external → node_modules/.pnpm/hey-listen@1.0.8/node_modules}/hey-listen/dist/hey-listen.es.mjs +0 -0
package/dist/cjs/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const core = require("@vueuse/core");
5
4
  function addUniqueItem$1(arr, item) {
6
5
  if (arr.indexOf(item) === -1)
7
6
  arr.push(item);
@@ -2832,6 +2831,9 @@ const animateMotionValue = (name, value, target, transition = {}, element, isHan
2832
2831
  const isKeyframesTarget = (v) => {
2833
2832
  return Array.isArray(v);
2834
2833
  };
2834
+ const isCustomValue = (v) => {
2835
+ return Boolean(v && typeof v === "object" && v.mix && v.toValue);
2836
+ };
2835
2837
  const resolveFinalValueInKeyframes = (v) => {
2836
2838
  return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;
2837
2839
  };
@@ -2945,6 +2947,9 @@ function isSVGElement$2(element) {
2945
2947
  return element instanceof SVGElement && element.tagName !== "svg";
2946
2948
  }
2947
2949
  const scaleCorrectors = {};
2950
+ function addScaleCorrector(correctors) {
2951
+ Object.assign(scaleCorrectors, correctors);
2952
+ }
2948
2953
  function isForcedMotionValue(key, { layout, layoutId }) {
2949
2954
  return transformProps.has(key) || key.startsWith("origin") || (layout || layoutId !== void 0) && (!!scaleCorrectors[key] || key === "opacity");
2950
2955
  }
@@ -3066,6 +3071,16 @@ for (const key in featureProps) {
3066
3071
  }
3067
3072
  const valueTypes = [...dimensionValueTypes, color, complex];
3068
3073
  const findValueType = (v) => valueTypes.find(testValueType(v));
3074
+ const createAxisDelta = () => ({
3075
+ translate: 0,
3076
+ scale: 1,
3077
+ origin: 0,
3078
+ originPoint: 0
3079
+ });
3080
+ const createDelta = () => ({
3081
+ x: createAxisDelta(),
3082
+ y: createAxisDelta()
3083
+ });
3069
3084
  const createAxis = () => ({ min: 0, max: 0 });
3070
3085
  const createBox = () => ({
3071
3086
  x: createAxis(),
@@ -3481,12 +3496,12 @@ function buildTransform(latestValues, transform2, transformTemplate) {
3481
3496
  }
3482
3497
  function buildHTMLStyles(state2, latestValues, transformTemplate) {
3483
3498
  const { style: style2, vars, transformOrigin } = state2;
3484
- let hasTransform = false;
3499
+ let hasTransform2 = false;
3485
3500
  let hasTransformOrigin = false;
3486
3501
  for (const key in latestValues) {
3487
3502
  const value = latestValues[key];
3488
3503
  if (transformProps.has(key)) {
3489
- hasTransform = true;
3504
+ hasTransform2 = true;
3490
3505
  continue;
3491
3506
  } else if (isCSSVariableName(key)) {
3492
3507
  vars[key] = value;
@@ -3502,7 +3517,7 @@ function buildHTMLStyles(state2, latestValues, transformTemplate) {
3502
3517
  }
3503
3518
  }
3504
3519
  if (!latestValues.transform) {
3505
- if (hasTransform || transformTemplate) {
3520
+ if (hasTransform2 || transformTemplate) {
3506
3521
  style2.transform = buildTransform(latestValues, state2.transform, transformTemplate);
3507
3522
  } else if (style2.transform) {
3508
3523
  style2.transform = "none";
@@ -3665,6 +3680,90 @@ function transformBoxPoints(point2, transformPoint) {
3665
3680
  right: bottomRight.x
3666
3681
  };
3667
3682
  }
3683
+ function isIdentityScale(scale2) {
3684
+ return scale2 === void 0 || scale2 === 1;
3685
+ }
3686
+ function hasScale({ scale: scale2, scaleX, scaleY }) {
3687
+ return !isIdentityScale(scale2) || !isIdentityScale(scaleX) || !isIdentityScale(scaleY);
3688
+ }
3689
+ function hasTransform(values) {
3690
+ return hasScale(values) || has2DTranslate(values) || values.z || values.rotate || values.rotateX || values.rotateY || values.skewX || values.skewY;
3691
+ }
3692
+ function has2DTranslate(values) {
3693
+ return is2DTranslate(values.x) || is2DTranslate(values.y);
3694
+ }
3695
+ function is2DTranslate(value) {
3696
+ return value && value !== "0%";
3697
+ }
3698
+ function scalePoint(point2, scale2, originPoint) {
3699
+ const distanceFromOrigin = point2 - originPoint;
3700
+ const scaled = scale2 * distanceFromOrigin;
3701
+ return originPoint + scaled;
3702
+ }
3703
+ function applyPointDelta(point2, translate, scale2, originPoint, boxScale) {
3704
+ if (boxScale !== void 0) {
3705
+ point2 = scalePoint(point2, boxScale, originPoint);
3706
+ }
3707
+ return scalePoint(point2, scale2, originPoint) + translate;
3708
+ }
3709
+ function applyAxisDelta(axis, translate = 0, scale2 = 1, originPoint, boxScale) {
3710
+ axis.min = applyPointDelta(axis.min, translate, scale2, originPoint, boxScale);
3711
+ axis.max = applyPointDelta(axis.max, translate, scale2, originPoint, boxScale);
3712
+ }
3713
+ function applyBoxDelta(box, { x, y }) {
3714
+ applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);
3715
+ applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);
3716
+ }
3717
+ const TREE_SCALE_SNAP_MIN = 0.999999999999;
3718
+ const TREE_SCALE_SNAP_MAX = 1.0000000000001;
3719
+ function applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {
3720
+ const treeLength = treePath.length;
3721
+ if (!treeLength)
3722
+ return;
3723
+ treeScale.x = treeScale.y = 1;
3724
+ let node;
3725
+ let delta;
3726
+ for (let i = 0; i < treeLength; i++) {
3727
+ node = treePath[i];
3728
+ delta = node.projectionDelta;
3729
+ const { visualElement } = node.options;
3730
+ if (visualElement && visualElement.props.style && visualElement.props.style.display === "contents") {
3731
+ continue;
3732
+ }
3733
+ if (isSharedTransition && node.options.layoutScroll && node.scroll && node !== node.root) {
3734
+ transformBox(box, {
3735
+ x: -node.scroll.offset.x,
3736
+ y: -node.scroll.offset.y
3737
+ });
3738
+ }
3739
+ if (delta) {
3740
+ treeScale.x *= delta.x.scale;
3741
+ treeScale.y *= delta.y.scale;
3742
+ applyBoxDelta(box, delta);
3743
+ }
3744
+ if (isSharedTransition && hasTransform(node.latestValues)) {
3745
+ transformBox(box, node.latestValues);
3746
+ }
3747
+ }
3748
+ if (treeScale.x < TREE_SCALE_SNAP_MAX && treeScale.x > TREE_SCALE_SNAP_MIN) {
3749
+ treeScale.x = 1;
3750
+ }
3751
+ if (treeScale.y < TREE_SCALE_SNAP_MAX && treeScale.y > TREE_SCALE_SNAP_MIN) {
3752
+ treeScale.y = 1;
3753
+ }
3754
+ }
3755
+ function translateAxis(axis, distance2) {
3756
+ axis.min = axis.min + distance2;
3757
+ axis.max = axis.max + distance2;
3758
+ }
3759
+ function transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {
3760
+ const originPoint = mixNumber$1(axis.min, axis.max, axisOrigin);
3761
+ applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);
3762
+ }
3763
+ function transformBox(box, transform2) {
3764
+ transformAxis(box.x, transform2.x, transform2.scaleX, transform2.scale, transform2.originX);
3765
+ transformAxis(box.y, transform2.y, transform2.scaleY, transform2.scale, transform2.originY);
3766
+ }
3668
3767
  function measureViewportBox(instance, transformPoint) {
3669
3768
  return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));
3670
3769
  }
@@ -3798,9 +3897,9 @@ function animateSubject(subject, keyframes2, options, scope) {
3798
3897
  exports.invariant(Boolean(numSubjects), "No valid elements provided.");
3799
3898
  for (let i = 0; i < numSubjects; i++) {
3800
3899
  const thisSubject = subjects[i];
3801
- const createVisualElement = thisSubject instanceof Element ? createDOMVisualElement : createObjectVisualElement;
3900
+ const createVisualElement2 = thisSubject instanceof Element ? createDOMVisualElement : createObjectVisualElement;
3802
3901
  if (!visualElementStore.has(thisSubject)) {
3803
- createVisualElement(thisSubject);
3902
+ createVisualElement2(thisSubject);
3804
3903
  }
3805
3904
  const visualElement = visualElementStore.get(thisSubject);
3806
3905
  const transition = { ...options };
@@ -4226,17 +4325,17 @@ function resolveEdge(edge, length, inset = 0) {
4226
4325
  edge = namedEdges[edge];
4227
4326
  }
4228
4327
  if (typeof edge === "string") {
4229
- const asNumber = parseFloat(edge);
4328
+ const asNumber2 = parseFloat(edge);
4230
4329
  if (edge.endsWith("px")) {
4231
- delta = asNumber;
4330
+ delta = asNumber2;
4232
4331
  } else if (edge.endsWith("%")) {
4233
- edge = asNumber / 100;
4332
+ edge = asNumber2 / 100;
4234
4333
  } else if (edge.endsWith("vw")) {
4235
- delta = asNumber / 100 * document.documentElement.clientWidth;
4334
+ delta = asNumber2 / 100 * document.documentElement.clientWidth;
4236
4335
  } else if (edge.endsWith("vh")) {
4237
- delta = asNumber / 100 * document.documentElement.clientHeight;
4336
+ delta = asNumber2 / 100 * document.documentElement.clientHeight;
4238
4337
  } else {
4239
- edge = asNumber;
4338
+ edge = asNumber2;
4240
4339
  }
4241
4340
  }
4242
4341
  if (typeof edge === "number") {
@@ -4622,6 +4721,13 @@ function useAnimationFrame(callback) {
4622
4721
  frame.update(provideTimeSinceStart, true);
4623
4722
  }
4624
4723
  const [injectMotion, provideMotion] = createContext("Motion");
4724
+ const [injectLayoutGroup, provideLayoutGroup] = createContext("LayoutGroup");
4725
+ function shouldInheritGroup(inherit) {
4726
+ return inherit === true;
4727
+ }
4728
+ function shouldInheritId(inherit) {
4729
+ return shouldInheritGroup(inherit === true) || inherit === "id";
4730
+ }
4625
4731
  function resolveVariant(definition, variants, custom) {
4626
4732
  if (typeof definition === "object") {
4627
4733
  return definition;
@@ -4727,6 +4833,8 @@ const svgElementSet = new Set(svgElements);
4727
4833
  function isSVGElement$1(as) {
4728
4834
  return svgElementSet.has(as);
4729
4835
  }
4836
+ typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
4837
+ const isDef = (val) => typeof val !== "undefined";
4730
4838
  const rotation = {
4731
4839
  syntax: "<angle>",
4732
4840
  initialValue: "0deg",
@@ -4986,7 +5094,7 @@ class EventFeature extends Feature {
4986
5094
  this.handlers = {};
4987
5095
  }
4988
5096
  mount() {
4989
- const element = this.state.getElement();
5097
+ const element = this.state.element;
4990
5098
  if (!element)
4991
5099
  return;
4992
5100
  this.handlers.motionstart = (event) => {
@@ -5034,7 +5142,7 @@ class EventFeature extends Feature {
5034
5142
  });
5035
5143
  }
5036
5144
  unmount() {
5037
- const element = this.state.getElement();
5145
+ const element = this.state.element;
5038
5146
  if (!element)
5039
5147
  return;
5040
5148
  Object.entries(this.handlers).forEach(([event, handler]) => {
@@ -5080,7 +5188,7 @@ class HoverGesture extends BaseGesture {
5080
5188
  constructor(state2) {
5081
5189
  super(state2);
5082
5190
  this.subscribeEvents = () => {
5083
- const element = this.state.getElement();
5191
+ const element = this.state.element;
5084
5192
  const onEnter = mouseEvent(element, "hoverstart", () => {
5085
5193
  this.state.setActive("hover", true);
5086
5194
  });
@@ -5109,7 +5217,7 @@ class PressGesture extends BaseGesture {
5109
5217
  constructor(state2) {
5110
5218
  super(state2);
5111
5219
  this.subscribeEvents = () => {
5112
- const element = this.state.getElement();
5220
+ const element = this.state.element;
5113
5221
  const onPointerUp = (event) => {
5114
5222
  this.state.setActive("press", false);
5115
5223
  dispatchPointerEvent(element, "pressend", event);
@@ -5142,7 +5250,7 @@ class InViewGesture extends BaseGesture {
5142
5250
  super(state2);
5143
5251
  this.subscribeEvents = () => {
5144
5252
  var _a;
5145
- const element = this.state.getElement();
5253
+ const element = this.state.element;
5146
5254
  const { once, ...viewOptions } = ((_a = this.state.getOptions()) == null ? void 0 : _a.inViewOptions) || {};
5147
5255
  return inView(element, (enterEntry) => {
5148
5256
  this.state.setActive("inView", true);
@@ -5168,7 +5276,7 @@ function isSVGElement(element) {
5168
5276
  }
5169
5277
  class SVGFeature extends Feature {
5170
5278
  mount() {
5171
- const instance = this.state.getElement();
5279
+ const instance = this.state.element;
5172
5280
  if (!isSVGElement(instance)) {
5173
5281
  return;
5174
5282
  }
@@ -5189,6 +5297,1544 @@ class SVGFeature extends Feature {
5189
5297
  unmount() {
5190
5298
  }
5191
5299
  }
5300
+ const borders = ["TopLeft", "TopRight", "BottomLeft", "BottomRight"];
5301
+ const numBorders = borders.length;
5302
+ const asNumber = (value) => typeof value === "string" ? parseFloat(value) : value;
5303
+ const isPx = (value) => typeof value === "number" || px.test(value);
5304
+ function mixValues(target, follow, lead, progress2, shouldCrossfadeOpacity, isOnlyMember) {
5305
+ if (shouldCrossfadeOpacity) {
5306
+ target.opacity = mixNumber$1(
5307
+ 0,
5308
+ // TODO Reinstate this if only child
5309
+ lead.opacity !== void 0 ? lead.opacity : 1,
5310
+ easeCrossfadeIn(progress2)
5311
+ );
5312
+ target.opacityExit = mixNumber$1(follow.opacity !== void 0 ? follow.opacity : 1, 0, easeCrossfadeOut(progress2));
5313
+ } else if (isOnlyMember) {
5314
+ target.opacity = mixNumber$1(follow.opacity !== void 0 ? follow.opacity : 1, lead.opacity !== void 0 ? lead.opacity : 1, progress2);
5315
+ }
5316
+ for (let i = 0; i < numBorders; i++) {
5317
+ const borderLabel = `border${borders[i]}Radius`;
5318
+ let followRadius = getRadius(follow, borderLabel);
5319
+ let leadRadius = getRadius(lead, borderLabel);
5320
+ if (followRadius === void 0 && leadRadius === void 0)
5321
+ continue;
5322
+ followRadius || (followRadius = 0);
5323
+ leadRadius || (leadRadius = 0);
5324
+ const canMix = followRadius === 0 || leadRadius === 0 || isPx(followRadius) === isPx(leadRadius);
5325
+ if (canMix) {
5326
+ target[borderLabel] = Math.max(mixNumber$1(asNumber(followRadius), asNumber(leadRadius), progress2), 0);
5327
+ if (percent.test(leadRadius) || percent.test(followRadius)) {
5328
+ target[borderLabel] += "%";
5329
+ }
5330
+ } else {
5331
+ target[borderLabel] = leadRadius;
5332
+ }
5333
+ }
5334
+ if (follow.rotate || lead.rotate) {
5335
+ target.rotate = mixNumber$1(follow.rotate || 0, lead.rotate || 0, progress2);
5336
+ }
5337
+ }
5338
+ function getRadius(values, radiusName) {
5339
+ return values[radiusName] !== void 0 ? values[radiusName] : values.borderRadius;
5340
+ }
5341
+ const easeCrossfadeIn = /* @__PURE__ */ compress(0, 0.5, circOut);
5342
+ const easeCrossfadeOut = /* @__PURE__ */ compress(0.5, 0.95, noop$1);
5343
+ function compress(min, max, easing) {
5344
+ return (p) => {
5345
+ if (p < min)
5346
+ return 0;
5347
+ if (p > max)
5348
+ return 1;
5349
+ return easing(progress(min, max, p));
5350
+ };
5351
+ }
5352
+ function copyAxisInto(axis, originAxis) {
5353
+ axis.min = originAxis.min;
5354
+ axis.max = originAxis.max;
5355
+ }
5356
+ function copyBoxInto(box, originBox) {
5357
+ copyAxisInto(box.x, originBox.x);
5358
+ copyAxisInto(box.y, originBox.y);
5359
+ }
5360
+ function copyAxisDeltaInto(delta, originDelta) {
5361
+ delta.translate = originDelta.translate;
5362
+ delta.scale = originDelta.scale;
5363
+ delta.originPoint = originDelta.originPoint;
5364
+ delta.origin = originDelta.origin;
5365
+ }
5366
+ const SCALE_PRECISION = 1e-4;
5367
+ const SCALE_MIN = 1 - SCALE_PRECISION;
5368
+ const SCALE_MAX = 1 + SCALE_PRECISION;
5369
+ const TRANSLATE_PRECISION = 0.01;
5370
+ const TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;
5371
+ const TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;
5372
+ function calcLength(axis) {
5373
+ return axis.max - axis.min;
5374
+ }
5375
+ function isNear(value, target, maxDistance) {
5376
+ return Math.abs(value - target) <= maxDistance;
5377
+ }
5378
+ function calcAxisDelta(delta, source, target, origin = 0.5) {
5379
+ delta.origin = origin;
5380
+ delta.originPoint = mixNumber$1(source.min, source.max, delta.origin);
5381
+ delta.scale = calcLength(target) / calcLength(source);
5382
+ delta.translate = mixNumber$1(target.min, target.max, delta.origin) - delta.originPoint;
5383
+ if (delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX || isNaN(delta.scale)) {
5384
+ delta.scale = 1;
5385
+ }
5386
+ if (delta.translate >= TRANSLATE_MIN && delta.translate <= TRANSLATE_MAX || isNaN(delta.translate)) {
5387
+ delta.translate = 0;
5388
+ }
5389
+ }
5390
+ function calcBoxDelta(delta, source, target, origin) {
5391
+ calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : void 0);
5392
+ calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : void 0);
5393
+ }
5394
+ function calcRelativeAxis(target, relative, parent) {
5395
+ target.min = parent.min + relative.min;
5396
+ target.max = target.min + calcLength(relative);
5397
+ }
5398
+ function calcRelativeBox(target, relative, parent) {
5399
+ calcRelativeAxis(target.x, relative.x, parent.x);
5400
+ calcRelativeAxis(target.y, relative.y, parent.y);
5401
+ }
5402
+ function calcRelativeAxisPosition(target, layout, parent) {
5403
+ target.min = layout.min - parent.min;
5404
+ target.max = target.min + calcLength(layout);
5405
+ }
5406
+ function calcRelativePosition(target, layout, parent) {
5407
+ calcRelativeAxisPosition(target.x, layout.x, parent.x);
5408
+ calcRelativeAxisPosition(target.y, layout.y, parent.y);
5409
+ }
5410
+ function removePointDelta(point2, translate, scale2, originPoint, boxScale) {
5411
+ point2 -= translate;
5412
+ point2 = scalePoint(point2, 1 / scale2, originPoint);
5413
+ if (boxScale !== void 0) {
5414
+ point2 = scalePoint(point2, 1 / boxScale, originPoint);
5415
+ }
5416
+ return point2;
5417
+ }
5418
+ function removeAxisDelta(axis, translate = 0, scale2 = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {
5419
+ if (percent.test(translate)) {
5420
+ translate = parseFloat(translate);
5421
+ const relativeProgress = mixNumber$1(sourceAxis.min, sourceAxis.max, translate / 100);
5422
+ translate = relativeProgress - sourceAxis.min;
5423
+ }
5424
+ if (typeof translate !== "number")
5425
+ return;
5426
+ let originPoint = mixNumber$1(originAxis.min, originAxis.max, origin);
5427
+ if (axis === originAxis)
5428
+ originPoint -= translate;
5429
+ axis.min = removePointDelta(axis.min, translate, scale2, originPoint, boxScale);
5430
+ axis.max = removePointDelta(axis.max, translate, scale2, originPoint, boxScale);
5431
+ }
5432
+ function removeAxisTransforms(axis, transforms2, [key, scaleKey, originKey], origin, sourceAxis) {
5433
+ removeAxisDelta(axis, transforms2[key], transforms2[scaleKey], transforms2[originKey], transforms2.scale, origin, sourceAxis);
5434
+ }
5435
+ const xKeys = ["x", "scaleX", "originX"];
5436
+ const yKeys = ["y", "scaleY", "originY"];
5437
+ function removeBoxTransforms(box, transforms2, originBox, sourceBox) {
5438
+ removeAxisTransforms(box.x, transforms2, xKeys, originBox ? originBox.x : void 0, sourceBox ? sourceBox.x : void 0);
5439
+ removeAxisTransforms(box.y, transforms2, yKeys, originBox ? originBox.y : void 0, sourceBox ? sourceBox.y : void 0);
5440
+ }
5441
+ function isAxisDeltaZero(delta) {
5442
+ return delta.translate === 0 && delta.scale === 1;
5443
+ }
5444
+ function isDeltaZero(delta) {
5445
+ return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);
5446
+ }
5447
+ function axisEquals(a, b) {
5448
+ return a.min === b.min && a.max === b.max;
5449
+ }
5450
+ function boxEquals(a, b) {
5451
+ return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);
5452
+ }
5453
+ function axisEqualsRounded(a, b) {
5454
+ return Math.round(a.min) === Math.round(b.min) && Math.round(a.max) === Math.round(b.max);
5455
+ }
5456
+ function boxEqualsRounded(a, b) {
5457
+ return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);
5458
+ }
5459
+ function aspectRatio(box) {
5460
+ return calcLength(box.x) / calcLength(box.y);
5461
+ }
5462
+ function axisDeltaEquals(a, b) {
5463
+ return a.translate === b.translate && a.scale === b.scale && a.originPoint === b.originPoint;
5464
+ }
5465
+ class NodeStack {
5466
+ constructor() {
5467
+ this.members = [];
5468
+ }
5469
+ add(node) {
5470
+ addUniqueItem$1(this.members, node);
5471
+ node.scheduleRender();
5472
+ }
5473
+ remove(node) {
5474
+ removeItem$1(this.members, node);
5475
+ if (node === this.prevLead) {
5476
+ this.prevLead = void 0;
5477
+ }
5478
+ if (node === this.lead) {
5479
+ const prevLead = this.members[this.members.length - 1];
5480
+ if (prevLead) {
5481
+ this.promote(prevLead);
5482
+ }
5483
+ }
5484
+ }
5485
+ relegate(node) {
5486
+ const indexOfNode = this.members.findIndex((member) => node === member);
5487
+ if (indexOfNode === 0)
5488
+ return false;
5489
+ let prevLead;
5490
+ for (let i = indexOfNode; i >= 0; i--) {
5491
+ const member = this.members[i];
5492
+ if (member.isPresent !== false) {
5493
+ prevLead = member;
5494
+ break;
5495
+ }
5496
+ }
5497
+ if (prevLead) {
5498
+ this.promote(prevLead);
5499
+ return true;
5500
+ } else {
5501
+ return false;
5502
+ }
5503
+ }
5504
+ promote(node, preserveFollowOpacity) {
5505
+ const prevLead = this.lead;
5506
+ if (node === prevLead)
5507
+ return;
5508
+ this.prevLead = prevLead;
5509
+ this.lead = node;
5510
+ node.show();
5511
+ if (prevLead) {
5512
+ prevLead.instance && prevLead.scheduleRender();
5513
+ node.scheduleRender();
5514
+ node.resumeFrom = prevLead;
5515
+ if (preserveFollowOpacity) {
5516
+ node.resumeFrom.preserveOpacity = true;
5517
+ }
5518
+ if (prevLead.snapshot) {
5519
+ node.snapshot = prevLead.snapshot;
5520
+ node.snapshot.latestValues = prevLead.animationValues || prevLead.latestValues;
5521
+ }
5522
+ if (node.root && node.root.isUpdating) {
5523
+ node.isLayoutDirty = true;
5524
+ }
5525
+ const { crossfade } = node.options;
5526
+ if (crossfade === false) {
5527
+ prevLead.hide();
5528
+ }
5529
+ }
5530
+ }
5531
+ exitAnimationComplete() {
5532
+ this.members.forEach((node) => {
5533
+ const { options, resumingFrom } = node;
5534
+ options.onExitComplete && options.onExitComplete();
5535
+ if (resumingFrom) {
5536
+ resumingFrom.options.onExitComplete && resumingFrom.options.onExitComplete();
5537
+ }
5538
+ });
5539
+ }
5540
+ scheduleRender() {
5541
+ this.members.forEach((node) => {
5542
+ node.instance && node.scheduleRender(false);
5543
+ });
5544
+ }
5545
+ /**
5546
+ * Clear any leads that have been removed this render to prevent them from being
5547
+ * used in future animations and to prevent memory leaks
5548
+ */
5549
+ removeLeadSnapshot() {
5550
+ if (this.lead && this.lead.snapshot) {
5551
+ this.lead.snapshot = void 0;
5552
+ }
5553
+ }
5554
+ }
5555
+ function buildProjectionTransform(delta, treeScale, latestTransform) {
5556
+ let transform2 = "";
5557
+ const xTranslate = delta.x.translate / treeScale.x;
5558
+ const yTranslate = delta.y.translate / treeScale.y;
5559
+ const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;
5560
+ if (xTranslate || yTranslate || zTranslate) {
5561
+ transform2 = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;
5562
+ }
5563
+ if (treeScale.x !== 1 || treeScale.y !== 1) {
5564
+ transform2 += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;
5565
+ }
5566
+ if (latestTransform) {
5567
+ const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;
5568
+ if (transformPerspective)
5569
+ transform2 = `perspective(${transformPerspective}px) ${transform2}`;
5570
+ if (rotate)
5571
+ transform2 += `rotate(${rotate}deg) `;
5572
+ if (rotateX)
5573
+ transform2 += `rotateX(${rotateX}deg) `;
5574
+ if (rotateY)
5575
+ transform2 += `rotateY(${rotateY}deg) `;
5576
+ if (skewX)
5577
+ transform2 += `skewX(${skewX}deg) `;
5578
+ if (skewY)
5579
+ transform2 += `skewY(${skewY}deg) `;
5580
+ }
5581
+ const elementScaleX = delta.x.scale * treeScale.x;
5582
+ const elementScaleY = delta.y.scale * treeScale.y;
5583
+ if (elementScaleX !== 1 || elementScaleY !== 1) {
5584
+ transform2 += `scale(${elementScaleX}, ${elementScaleY})`;
5585
+ }
5586
+ return transform2 || "none";
5587
+ }
5588
+ function eachAxis(callback) {
5589
+ return [callback("x"), callback("y")];
5590
+ }
5591
+ const compareByDepth$1 = (a, b) => a.depth - b.depth;
5592
+ class FlatTree {
5593
+ constructor() {
5594
+ this.children = [];
5595
+ this.isDirty = false;
5596
+ }
5597
+ add(child) {
5598
+ addUniqueItem$1(this.children, child);
5599
+ this.isDirty = true;
5600
+ }
5601
+ remove(child) {
5602
+ removeItem$1(this.children, child);
5603
+ this.isDirty = true;
5604
+ }
5605
+ forEach(callback) {
5606
+ this.isDirty && this.children.sort(compareByDepth$1);
5607
+ this.isDirty = false;
5608
+ this.children.forEach(callback);
5609
+ }
5610
+ }
5611
+ function resolveMotionValue(value) {
5612
+ const unwrappedValue = isMotionValue$1(value) ? value.get() : value;
5613
+ return isCustomValue(unwrappedValue) ? unwrappedValue.toValue() : unwrappedValue;
5614
+ }
5615
+ const globalProjectionState = {
5616
+ /**
5617
+ * Global flag as to whether the tree has animated since the last time
5618
+ * we resized the window
5619
+ */
5620
+ hasAnimatedSinceResize: true,
5621
+ /**
5622
+ * We set this to true once, on the first update. Any nodes added to the tree beyond that
5623
+ * update will be given a `data-projection-id` attribute.
5624
+ */
5625
+ hasEverUpdated: false
5626
+ };
5627
+ const { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);
5628
+ const metrics = {
5629
+ type: "projectionFrame",
5630
+ totalNodes: 0,
5631
+ resolvedTargetDeltas: 0,
5632
+ recalculatedProjection: 0
5633
+ };
5634
+ const isDebug = typeof window !== "undefined" && window.MotionDebug !== void 0;
5635
+ const transformAxes = ["", "X", "Y", "Z"];
5636
+ const hiddenVisibility = { visibility: "hidden" };
5637
+ const animationTarget = 1e3;
5638
+ let id = 0;
5639
+ function resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {
5640
+ const { latestValues } = visualElement;
5641
+ if (latestValues[key]) {
5642
+ values[key] = latestValues[key];
5643
+ visualElement.setStaticValue(key, 0);
5644
+ if (sharedAnimationValues) {
5645
+ sharedAnimationValues[key] = 0;
5646
+ }
5647
+ }
5648
+ }
5649
+ function cancelTreeOptimisedTransformAnimations(projectionNode) {
5650
+ projectionNode.hasCheckedOptimisedAppear = true;
5651
+ if (projectionNode.root === projectionNode)
5652
+ return;
5653
+ const { visualElement } = projectionNode.options;
5654
+ if (!visualElement)
5655
+ return;
5656
+ const appearId = getOptimisedAppearId(visualElement);
5657
+ if (window.MotionHasOptimisedAnimation(appearId, "transform")) {
5658
+ const { layout, layoutId } = projectionNode.options;
5659
+ window.MotionCancelOptimisedAnimation(appearId, "transform", frame, !(layout || layoutId));
5660
+ }
5661
+ const { parent } = projectionNode;
5662
+ if (parent && !parent.hasCheckedOptimisedAppear) {
5663
+ cancelTreeOptimisedTransformAnimations(parent);
5664
+ }
5665
+ }
5666
+ function createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform }) {
5667
+ return class ProjectionNode {
5668
+ constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {
5669
+ this.id = id++;
5670
+ this.animationId = 0;
5671
+ this.children = /* @__PURE__ */ new Set();
5672
+ this.options = {};
5673
+ this.isTreeAnimating = false;
5674
+ this.isAnimationBlocked = false;
5675
+ this.isLayoutDirty = false;
5676
+ this.isProjectionDirty = false;
5677
+ this.isSharedProjectionDirty = false;
5678
+ this.isTransformDirty = false;
5679
+ this.updateManuallyBlocked = false;
5680
+ this.updateBlockedByResize = false;
5681
+ this.isUpdating = false;
5682
+ this.isSVG = false;
5683
+ this.needsReset = false;
5684
+ this.shouldResetTransform = false;
5685
+ this.hasCheckedOptimisedAppear = false;
5686
+ this.treeScale = { x: 1, y: 1 };
5687
+ this.eventHandlers = /* @__PURE__ */ new Map();
5688
+ this.hasTreeAnimated = false;
5689
+ this.updateScheduled = false;
5690
+ this.scheduleUpdate = () => this.update();
5691
+ this.projectionUpdateScheduled = false;
5692
+ this.checkUpdateFailed = () => {
5693
+ if (this.isUpdating) {
5694
+ this.isUpdating = false;
5695
+ this.clearAllSnapshots();
5696
+ }
5697
+ };
5698
+ this.updateProjection = () => {
5699
+ this.projectionUpdateScheduled = false;
5700
+ if (isDebug) {
5701
+ metrics.totalNodes = metrics.resolvedTargetDeltas = metrics.recalculatedProjection = 0;
5702
+ }
5703
+ this.nodes.forEach(propagateDirtyNodes);
5704
+ this.nodes.forEach(resolveTargetDelta);
5705
+ this.nodes.forEach(calcProjection);
5706
+ this.nodes.forEach(cleanDirtyNodes);
5707
+ if (isDebug) {
5708
+ window.MotionDebug.record(metrics);
5709
+ }
5710
+ };
5711
+ this.resolvedRelativeTargetAt = 0;
5712
+ this.hasProjected = false;
5713
+ this.isVisible = true;
5714
+ this.animationProgress = 0;
5715
+ this.sharedNodes = /* @__PURE__ */ new Map();
5716
+ this.latestValues = latestValues;
5717
+ this.root = parent ? parent.root || parent : this;
5718
+ this.path = parent ? [...parent.path, parent] : [];
5719
+ this.parent = parent;
5720
+ this.depth = parent ? parent.depth + 1 : 0;
5721
+ for (let i = 0; i < this.path.length; i++) {
5722
+ this.path[i].shouldResetTransform = true;
5723
+ }
5724
+ if (this.root === this)
5725
+ this.nodes = new FlatTree();
5726
+ }
5727
+ addEventListener(name, handler) {
5728
+ if (!this.eventHandlers.has(name)) {
5729
+ this.eventHandlers.set(name, new SubscriptionManager());
5730
+ }
5731
+ return this.eventHandlers.get(name).add(handler);
5732
+ }
5733
+ notifyListeners(name, ...args) {
5734
+ const subscriptionManager = this.eventHandlers.get(name);
5735
+ subscriptionManager && subscriptionManager.notify(...args);
5736
+ }
5737
+ hasListeners(name) {
5738
+ return this.eventHandlers.has(name);
5739
+ }
5740
+ /**
5741
+ * Lifecycles
5742
+ */
5743
+ mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {
5744
+ if (this.instance)
5745
+ return;
5746
+ this.isSVG = isSVGElement$2(instance);
5747
+ this.instance = instance;
5748
+ const { layoutId, layout, visualElement } = this.options;
5749
+ if (visualElement && !visualElement.current) {
5750
+ visualElement.mount(instance);
5751
+ }
5752
+ this.root.nodes.add(this);
5753
+ this.parent && this.parent.children.add(this);
5754
+ if (isLayoutDirty && (layout || layoutId)) {
5755
+ this.isLayoutDirty = true;
5756
+ }
5757
+ if (attachResizeListener) {
5758
+ let cancelDelay;
5759
+ const resizeUnblockUpdate = () => this.root.updateBlockedByResize = false;
5760
+ attachResizeListener(instance, () => {
5761
+ this.root.updateBlockedByResize = true;
5762
+ cancelDelay && cancelDelay();
5763
+ cancelDelay = delay(resizeUnblockUpdate, 250);
5764
+ if (globalProjectionState.hasAnimatedSinceResize) {
5765
+ globalProjectionState.hasAnimatedSinceResize = false;
5766
+ this.nodes.forEach(finishAnimation);
5767
+ }
5768
+ });
5769
+ }
5770
+ if (layoutId) {
5771
+ this.root.registerSharedNode(layoutId, this);
5772
+ }
5773
+ if (this.options.animate !== false && visualElement && (layoutId || layout)) {
5774
+ this.addEventListener("didUpdate", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout }) => {
5775
+ if (this.isTreeAnimationBlocked()) {
5776
+ this.target = void 0;
5777
+ this.relativeTarget = void 0;
5778
+ return;
5779
+ }
5780
+ const layoutTransition = this.options.transition || visualElement.getDefaultTransition() || defaultLayoutTransition;
5781
+ const { onLayoutAnimationStart, onLayoutAnimationComplete } = visualElement.getProps();
5782
+ const targetChanged = !this.targetLayout || !boxEqualsRounded(this.targetLayout, newLayout) || hasRelativeTargetChanged;
5783
+ const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;
5784
+ if (this.options.layoutRoot || this.resumeFrom && this.resumeFrom.instance || hasOnlyRelativeTargetChanged || hasLayoutChanged && (targetChanged || !this.currentAnimation)) {
5785
+ if (this.resumeFrom) {
5786
+ this.resumingFrom = this.resumeFrom;
5787
+ this.resumingFrom.resumingFrom = void 0;
5788
+ }
5789
+ this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);
5790
+ const animationOptions = {
5791
+ ...getValueTransition(layoutTransition, "layout"),
5792
+ onPlay: onLayoutAnimationStart,
5793
+ onComplete: onLayoutAnimationComplete
5794
+ };
5795
+ if (visualElement.shouldReduceMotion || this.options.layoutRoot) {
5796
+ animationOptions.delay = 0;
5797
+ animationOptions.type = false;
5798
+ }
5799
+ this.startAnimation(animationOptions);
5800
+ } else {
5801
+ if (!hasLayoutChanged) {
5802
+ finishAnimation(this);
5803
+ }
5804
+ if (this.isLead() && this.options.onExitComplete) {
5805
+ this.options.onExitComplete();
5806
+ }
5807
+ }
5808
+ this.targetLayout = newLayout;
5809
+ });
5810
+ }
5811
+ }
5812
+ unmount() {
5813
+ this.options.layoutId && this.willUpdate();
5814
+ this.root.nodes.remove(this);
5815
+ const stack = this.getStack();
5816
+ stack && stack.remove(this);
5817
+ this.parent && this.parent.children.delete(this);
5818
+ this.instance = void 0;
5819
+ cancelFrame(this.updateProjection);
5820
+ }
5821
+ // only on the root
5822
+ blockUpdate() {
5823
+ this.updateManuallyBlocked = true;
5824
+ }
5825
+ unblockUpdate() {
5826
+ this.updateManuallyBlocked = false;
5827
+ }
5828
+ isUpdateBlocked() {
5829
+ return this.updateManuallyBlocked || this.updateBlockedByResize;
5830
+ }
5831
+ isTreeAnimationBlocked() {
5832
+ return this.isAnimationBlocked || this.parent && this.parent.isTreeAnimationBlocked() || false;
5833
+ }
5834
+ // Note: currently only running on root node
5835
+ startUpdate() {
5836
+ if (this.isUpdateBlocked())
5837
+ return;
5838
+ this.isUpdating = true;
5839
+ this.nodes && this.nodes.forEach(resetSkewAndRotation);
5840
+ this.animationId++;
5841
+ }
5842
+ getTransformTemplate() {
5843
+ const { visualElement } = this.options;
5844
+ return visualElement && visualElement.getProps().transformTemplate;
5845
+ }
5846
+ willUpdate(shouldNotifyListeners = true) {
5847
+ this.root.hasTreeAnimated = true;
5848
+ if (this.root.isUpdateBlocked()) {
5849
+ this.options.onExitComplete && this.options.onExitComplete();
5850
+ return;
5851
+ }
5852
+ if (window.MotionCancelOptimisedAnimation && !this.hasCheckedOptimisedAppear) {
5853
+ cancelTreeOptimisedTransformAnimations(this);
5854
+ }
5855
+ !this.root.isUpdating && this.root.startUpdate();
5856
+ if (this.isLayoutDirty)
5857
+ return;
5858
+ this.isLayoutDirty = true;
5859
+ for (let i = 0; i < this.path.length; i++) {
5860
+ const node = this.path[i];
5861
+ node.shouldResetTransform = true;
5862
+ node.updateScroll("snapshot");
5863
+ if (node.options.layoutRoot) {
5864
+ node.willUpdate(false);
5865
+ }
5866
+ }
5867
+ const { layoutId, layout } = this.options;
5868
+ if (layoutId === void 0 && !layout)
5869
+ return;
5870
+ const transformTemplate = this.getTransformTemplate();
5871
+ this.prevTransformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, "") : void 0;
5872
+ this.updateSnapshot();
5873
+ shouldNotifyListeners && this.notifyListeners("willUpdate");
5874
+ }
5875
+ update() {
5876
+ this.updateScheduled = false;
5877
+ const updateWasBlocked = this.isUpdateBlocked();
5878
+ if (updateWasBlocked) {
5879
+ this.unblockUpdate();
5880
+ this.clearAllSnapshots();
5881
+ this.nodes.forEach(clearMeasurements);
5882
+ return;
5883
+ }
5884
+ if (!this.isUpdating) {
5885
+ this.nodes.forEach(clearIsLayoutDirty);
5886
+ }
5887
+ this.isUpdating = false;
5888
+ this.nodes.forEach(resetTransformStyle);
5889
+ this.nodes.forEach(updateLayout);
5890
+ this.nodes.forEach(notifyLayoutUpdate);
5891
+ this.clearAllSnapshots();
5892
+ const now2 = time.now();
5893
+ frameData.delta = clamp(0, 1e3 / 60, now2 - frameData.timestamp);
5894
+ frameData.timestamp = now2;
5895
+ frameData.isProcessing = true;
5896
+ frameSteps.update.process(frameData);
5897
+ frameSteps.preRender.process(frameData);
5898
+ frameSteps.render.process(frameData);
5899
+ frameData.isProcessing = false;
5900
+ }
5901
+ didUpdate() {
5902
+ if (!this.updateScheduled) {
5903
+ this.updateScheduled = true;
5904
+ microtask.read(this.scheduleUpdate);
5905
+ }
5906
+ }
5907
+ clearAllSnapshots() {
5908
+ this.nodes.forEach(clearSnapshot);
5909
+ this.sharedNodes.forEach(removeLeadSnapshots);
5910
+ }
5911
+ scheduleUpdateProjection() {
5912
+ if (!this.projectionUpdateScheduled) {
5913
+ this.projectionUpdateScheduled = true;
5914
+ frame.preRender(this.updateProjection, false, true);
5915
+ }
5916
+ }
5917
+ scheduleCheckAfterUnmount() {
5918
+ frame.postRender(() => {
5919
+ if (this.isLayoutDirty) {
5920
+ this.root.didUpdate();
5921
+ } else {
5922
+ this.root.checkUpdateFailed();
5923
+ }
5924
+ });
5925
+ }
5926
+ /**
5927
+ * Update measurements
5928
+ */
5929
+ updateSnapshot() {
5930
+ if (this.snapshot || !this.instance)
5931
+ return;
5932
+ this.snapshot = this.measure();
5933
+ }
5934
+ updateLayout() {
5935
+ if (!this.instance)
5936
+ return;
5937
+ this.updateScroll();
5938
+ if (!(this.options.alwaysMeasureLayout && this.isLead()) && !this.isLayoutDirty) {
5939
+ return;
5940
+ }
5941
+ if (this.resumeFrom && !this.resumeFrom.instance) {
5942
+ for (let i = 0; i < this.path.length; i++) {
5943
+ const node = this.path[i];
5944
+ node.updateScroll();
5945
+ }
5946
+ }
5947
+ const prevLayout = this.layout;
5948
+ this.layout = this.measure(false);
5949
+ this.layoutCorrected = createBox();
5950
+ this.isLayoutDirty = false;
5951
+ this.projectionDelta = void 0;
5952
+ this.notifyListeners("measure", this.layout.layoutBox);
5953
+ const { visualElement } = this.options;
5954
+ visualElement && visualElement.notify("LayoutMeasure", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : void 0);
5955
+ }
5956
+ updateScroll(phase = "measure") {
5957
+ let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);
5958
+ if (this.scroll && this.scroll.animationId === this.root.animationId && this.scroll.phase === phase) {
5959
+ needsMeasurement = false;
5960
+ }
5961
+ if (needsMeasurement) {
5962
+ const isRoot = checkIsScrollRoot(this.instance);
5963
+ this.scroll = {
5964
+ animationId: this.root.animationId,
5965
+ phase,
5966
+ isRoot,
5967
+ offset: measureScroll(this.instance),
5968
+ wasRoot: this.scroll ? this.scroll.isRoot : isRoot
5969
+ };
5970
+ }
5971
+ }
5972
+ resetTransform() {
5973
+ if (!resetTransform)
5974
+ return;
5975
+ const isResetRequested = this.isLayoutDirty || this.shouldResetTransform || this.options.alwaysMeasureLayout;
5976
+ const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);
5977
+ const transformTemplate = this.getTransformTemplate();
5978
+ const transformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, "") : void 0;
5979
+ const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;
5980
+ if (isResetRequested && (hasProjection || hasTransform(this.latestValues) || transformTemplateHasChanged)) {
5981
+ resetTransform(this.instance, transformTemplateValue);
5982
+ this.shouldResetTransform = false;
5983
+ this.scheduleRender();
5984
+ }
5985
+ }
5986
+ measure(removeTransform = true) {
5987
+ const pageBox = this.measurePageBox();
5988
+ let layoutBox = this.removeElementScroll(pageBox);
5989
+ if (removeTransform) {
5990
+ layoutBox = this.removeTransform(layoutBox);
5991
+ }
5992
+ roundBox(layoutBox);
5993
+ return {
5994
+ animationId: this.root.animationId,
5995
+ measuredBox: pageBox,
5996
+ layoutBox,
5997
+ latestValues: {},
5998
+ source: this.id
5999
+ };
6000
+ }
6001
+ measurePageBox() {
6002
+ var _a;
6003
+ const { visualElement } = this.options;
6004
+ if (!visualElement)
6005
+ return createBox();
6006
+ const box = visualElement.measureViewportBox();
6007
+ const wasInScrollRoot = ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);
6008
+ if (!wasInScrollRoot) {
6009
+ const { scroll: scroll2 } = this.root;
6010
+ if (scroll2) {
6011
+ translateAxis(box.x, scroll2.offset.x);
6012
+ translateAxis(box.y, scroll2.offset.y);
6013
+ }
6014
+ }
6015
+ return box;
6016
+ }
6017
+ removeElementScroll(box) {
6018
+ var _a;
6019
+ const boxWithoutScroll = createBox();
6020
+ copyBoxInto(boxWithoutScroll, box);
6021
+ if ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) {
6022
+ return boxWithoutScroll;
6023
+ }
6024
+ for (let i = 0; i < this.path.length; i++) {
6025
+ const node = this.path[i];
6026
+ const { scroll: scroll2, options } = node;
6027
+ if (node !== this.root && scroll2 && options.layoutScroll) {
6028
+ if (scroll2.wasRoot) {
6029
+ copyBoxInto(boxWithoutScroll, box);
6030
+ }
6031
+ translateAxis(boxWithoutScroll.x, scroll2.offset.x);
6032
+ translateAxis(boxWithoutScroll.y, scroll2.offset.y);
6033
+ }
6034
+ }
6035
+ return boxWithoutScroll;
6036
+ }
6037
+ applyTransform(box, transformOnly = false) {
6038
+ const withTransforms = createBox();
6039
+ copyBoxInto(withTransforms, box);
6040
+ for (let i = 0; i < this.path.length; i++) {
6041
+ const node = this.path[i];
6042
+ if (!transformOnly && node.options.layoutScroll && node.scroll && node !== node.root) {
6043
+ transformBox(withTransforms, {
6044
+ x: -node.scroll.offset.x,
6045
+ y: -node.scroll.offset.y
6046
+ });
6047
+ }
6048
+ if (!hasTransform(node.latestValues))
6049
+ continue;
6050
+ transformBox(withTransforms, node.latestValues);
6051
+ }
6052
+ if (hasTransform(this.latestValues)) {
6053
+ transformBox(withTransforms, this.latestValues);
6054
+ }
6055
+ return withTransforms;
6056
+ }
6057
+ removeTransform(box) {
6058
+ const boxWithoutTransform = createBox();
6059
+ copyBoxInto(boxWithoutTransform, box);
6060
+ for (let i = 0; i < this.path.length; i++) {
6061
+ const node = this.path[i];
6062
+ if (!node.instance)
6063
+ continue;
6064
+ if (!hasTransform(node.latestValues))
6065
+ continue;
6066
+ hasScale(node.latestValues) && node.updateSnapshot();
6067
+ const sourceBox = createBox();
6068
+ const nodeBox = node.measurePageBox();
6069
+ copyBoxInto(sourceBox, nodeBox);
6070
+ removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : void 0, sourceBox);
6071
+ }
6072
+ if (hasTransform(this.latestValues)) {
6073
+ removeBoxTransforms(boxWithoutTransform, this.latestValues);
6074
+ }
6075
+ return boxWithoutTransform;
6076
+ }
6077
+ setTargetDelta(delta) {
6078
+ this.targetDelta = delta;
6079
+ this.root.scheduleUpdateProjection();
6080
+ this.isProjectionDirty = true;
6081
+ }
6082
+ setOptions(options) {
6083
+ this.options = {
6084
+ ...this.options,
6085
+ ...options,
6086
+ crossfade: options.crossfade !== void 0 ? options.crossfade : true
6087
+ };
6088
+ }
6089
+ clearMeasurements() {
6090
+ this.scroll = void 0;
6091
+ this.layout = void 0;
6092
+ this.snapshot = void 0;
6093
+ this.prevTransformTemplateValue = void 0;
6094
+ this.targetDelta = void 0;
6095
+ this.target = void 0;
6096
+ this.isLayoutDirty = false;
6097
+ }
6098
+ forceRelativeParentToResolveTarget() {
6099
+ if (!this.relativeParent)
6100
+ return;
6101
+ if (this.relativeParent.resolvedRelativeTargetAt !== frameData.timestamp) {
6102
+ this.relativeParent.resolveTargetDelta(true);
6103
+ }
6104
+ }
6105
+ resolveTargetDelta(forceRecalculation = false) {
6106
+ var _a;
6107
+ const lead = this.getLead();
6108
+ this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);
6109
+ this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);
6110
+ this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);
6111
+ const isShared = Boolean(this.resumingFrom) || this !== lead;
6112
+ const canSkip = !(forceRecalculation || isShared && this.isSharedProjectionDirty || this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) || this.attemptToResolveRelativeTarget || this.root.updateBlockedByResize);
6113
+ if (canSkip)
6114
+ return;
6115
+ const { layout, layoutId } = this.options;
6116
+ if (!this.layout || !(layout || layoutId))
6117
+ return;
6118
+ this.resolvedRelativeTargetAt = frameData.timestamp;
6119
+ if (!this.targetDelta && !this.relativeTarget) {
6120
+ const relativeParent = this.getClosestProjectingParent();
6121
+ if (relativeParent && relativeParent.layout && this.animationProgress !== 1) {
6122
+ this.relativeParent = relativeParent;
6123
+ this.forceRelativeParentToResolveTarget();
6124
+ this.relativeTarget = createBox();
6125
+ this.relativeTargetOrigin = createBox();
6126
+ calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);
6127
+ copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);
6128
+ } else {
6129
+ this.relativeParent = this.relativeTarget = void 0;
6130
+ }
6131
+ }
6132
+ if (!this.relativeTarget && !this.targetDelta)
6133
+ return;
6134
+ if (!this.target) {
6135
+ this.target = createBox();
6136
+ this.targetWithTransforms = createBox();
6137
+ }
6138
+ if (this.relativeTarget && this.relativeTargetOrigin && this.relativeParent && this.relativeParent.target) {
6139
+ this.forceRelativeParentToResolveTarget();
6140
+ calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);
6141
+ } else if (this.targetDelta) {
6142
+ if (Boolean(this.resumingFrom)) {
6143
+ this.target = this.applyTransform(this.layout.layoutBox);
6144
+ } else {
6145
+ copyBoxInto(this.target, this.layout.layoutBox);
6146
+ }
6147
+ applyBoxDelta(this.target, this.targetDelta);
6148
+ } else {
6149
+ copyBoxInto(this.target, this.layout.layoutBox);
6150
+ }
6151
+ if (this.attemptToResolveRelativeTarget) {
6152
+ this.attemptToResolveRelativeTarget = false;
6153
+ const relativeParent = this.getClosestProjectingParent();
6154
+ if (relativeParent && Boolean(relativeParent.resumingFrom) === Boolean(this.resumingFrom) && !relativeParent.options.layoutScroll && relativeParent.target && this.animationProgress !== 1) {
6155
+ this.relativeParent = relativeParent;
6156
+ this.forceRelativeParentToResolveTarget();
6157
+ this.relativeTarget = createBox();
6158
+ this.relativeTargetOrigin = createBox();
6159
+ calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);
6160
+ copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);
6161
+ } else {
6162
+ this.relativeParent = this.relativeTarget = void 0;
6163
+ }
6164
+ }
6165
+ if (isDebug) {
6166
+ metrics.resolvedTargetDeltas++;
6167
+ }
6168
+ }
6169
+ getClosestProjectingParent() {
6170
+ if (!this.parent || hasScale(this.parent.latestValues) || has2DTranslate(this.parent.latestValues)) {
6171
+ return void 0;
6172
+ }
6173
+ if (this.parent.isProjecting()) {
6174
+ return this.parent;
6175
+ } else {
6176
+ return this.parent.getClosestProjectingParent();
6177
+ }
6178
+ }
6179
+ isProjecting() {
6180
+ return Boolean((this.relativeTarget || this.targetDelta || this.options.layoutRoot) && this.layout);
6181
+ }
6182
+ calcProjection() {
6183
+ var _a;
6184
+ const lead = this.getLead();
6185
+ const isShared = Boolean(this.resumingFrom) || this !== lead;
6186
+ let canSkip = true;
6187
+ if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {
6188
+ canSkip = false;
6189
+ }
6190
+ if (isShared && (this.isSharedProjectionDirty || this.isTransformDirty)) {
6191
+ canSkip = false;
6192
+ }
6193
+ if (this.resolvedRelativeTargetAt === frameData.timestamp) {
6194
+ canSkip = false;
6195
+ }
6196
+ if (canSkip)
6197
+ return;
6198
+ const { layout, layoutId } = this.options;
6199
+ this.isTreeAnimating = Boolean(this.parent && this.parent.isTreeAnimating || this.currentAnimation || this.pendingAnimation);
6200
+ if (!this.isTreeAnimating) {
6201
+ this.targetDelta = this.relativeTarget = void 0;
6202
+ }
6203
+ if (!this.layout || !(layout || layoutId))
6204
+ return;
6205
+ copyBoxInto(this.layoutCorrected, this.layout.layoutBox);
6206
+ const prevTreeScaleX = this.treeScale.x;
6207
+ const prevTreeScaleY = this.treeScale.y;
6208
+ applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);
6209
+ if (lead.layout && !lead.target && (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {
6210
+ lead.target = lead.layout.layoutBox;
6211
+ lead.targetWithTransforms = createBox();
6212
+ }
6213
+ const { target } = lead;
6214
+ if (!target) {
6215
+ if (this.prevProjectionDelta) {
6216
+ this.createProjectionDeltas();
6217
+ this.scheduleRender();
6218
+ }
6219
+ return;
6220
+ }
6221
+ if (!this.projectionDelta || !this.prevProjectionDelta) {
6222
+ this.createProjectionDeltas();
6223
+ } else {
6224
+ copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);
6225
+ copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);
6226
+ }
6227
+ calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);
6228
+ if (this.treeScale.x !== prevTreeScaleX || this.treeScale.y !== prevTreeScaleY || !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) || !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {
6229
+ this.hasProjected = true;
6230
+ this.scheduleRender();
6231
+ this.notifyListeners("projectionUpdate", target);
6232
+ }
6233
+ if (isDebug) {
6234
+ metrics.recalculatedProjection++;
6235
+ }
6236
+ }
6237
+ hide() {
6238
+ this.isVisible = false;
6239
+ }
6240
+ show() {
6241
+ this.isVisible = true;
6242
+ }
6243
+ scheduleRender(notifyAll2 = true) {
6244
+ var _a;
6245
+ (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.scheduleRender();
6246
+ if (notifyAll2) {
6247
+ const stack = this.getStack();
6248
+ stack && stack.scheduleRender();
6249
+ }
6250
+ if (this.resumingFrom && !this.resumingFrom.instance) {
6251
+ this.resumingFrom = void 0;
6252
+ }
6253
+ }
6254
+ createProjectionDeltas() {
6255
+ this.prevProjectionDelta = createDelta();
6256
+ this.projectionDelta = createDelta();
6257
+ this.projectionDeltaWithTransform = createDelta();
6258
+ }
6259
+ setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {
6260
+ const snapshot = this.snapshot;
6261
+ const snapshotLatestValues = snapshot ? snapshot.latestValues : {};
6262
+ const mixedValues = { ...this.latestValues };
6263
+ const targetDelta = createDelta();
6264
+ if (!this.relativeParent || !this.relativeParent.options.layoutRoot) {
6265
+ this.relativeTarget = this.relativeTargetOrigin = void 0;
6266
+ }
6267
+ this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;
6268
+ const relativeLayout = createBox();
6269
+ const snapshotSource = snapshot ? snapshot.source : void 0;
6270
+ const layoutSource = this.layout ? this.layout.source : void 0;
6271
+ const isSharedLayoutAnimation = snapshotSource !== layoutSource;
6272
+ const stack = this.getStack();
6273
+ const isOnlyMember = !stack || stack.members.length <= 1;
6274
+ const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation && !isOnlyMember && this.options.crossfade === true && !this.path.some(hasOpacityCrossfade));
6275
+ this.animationProgress = 0;
6276
+ let prevRelativeTarget;
6277
+ this.mixTargetDelta = (latest) => {
6278
+ const progress2 = latest / 1e3;
6279
+ mixAxisDelta(targetDelta.x, delta.x, progress2);
6280
+ mixAxisDelta(targetDelta.y, delta.y, progress2);
6281
+ this.setTargetDelta(targetDelta);
6282
+ if (this.relativeTarget && this.relativeTargetOrigin && this.layout && this.relativeParent && this.relativeParent.layout) {
6283
+ calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);
6284
+ mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress2);
6285
+ if (prevRelativeTarget && boxEquals(this.relativeTarget, prevRelativeTarget)) {
6286
+ this.isProjectionDirty = false;
6287
+ }
6288
+ if (!prevRelativeTarget)
6289
+ prevRelativeTarget = createBox();
6290
+ copyBoxInto(prevRelativeTarget, this.relativeTarget);
6291
+ }
6292
+ if (isSharedLayoutAnimation) {
6293
+ this.animationValues = mixedValues;
6294
+ mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress2, shouldCrossfadeOpacity, isOnlyMember);
6295
+ }
6296
+ this.root.scheduleUpdateProjection();
6297
+ this.scheduleRender();
6298
+ this.animationProgress = progress2;
6299
+ };
6300
+ this.mixTargetDelta(this.options.layoutRoot ? 1e3 : 0);
6301
+ }
6302
+ startAnimation(options) {
6303
+ this.notifyListeners("animationStart");
6304
+ this.currentAnimation && this.currentAnimation.stop();
6305
+ if (this.resumingFrom && this.resumingFrom.currentAnimation) {
6306
+ this.resumingFrom.currentAnimation.stop();
6307
+ }
6308
+ if (this.pendingAnimation) {
6309
+ cancelFrame(this.pendingAnimation);
6310
+ this.pendingAnimation = void 0;
6311
+ }
6312
+ this.pendingAnimation = frame.update(() => {
6313
+ globalProjectionState.hasAnimatedSinceResize = true;
6314
+ this.currentAnimation = animateSingleValue(0, animationTarget, {
6315
+ ...options,
6316
+ onUpdate: (latest) => {
6317
+ this.mixTargetDelta(latest);
6318
+ options.onUpdate && options.onUpdate(latest);
6319
+ },
6320
+ onComplete: () => {
6321
+ options.onComplete && options.onComplete();
6322
+ this.completeAnimation();
6323
+ }
6324
+ });
6325
+ if (this.resumingFrom) {
6326
+ this.resumingFrom.currentAnimation = this.currentAnimation;
6327
+ }
6328
+ this.pendingAnimation = void 0;
6329
+ });
6330
+ }
6331
+ completeAnimation() {
6332
+ if (this.resumingFrom) {
6333
+ this.resumingFrom.currentAnimation = void 0;
6334
+ this.resumingFrom.preserveOpacity = void 0;
6335
+ }
6336
+ const stack = this.getStack();
6337
+ stack && stack.exitAnimationComplete();
6338
+ this.resumingFrom = this.currentAnimation = this.animationValues = void 0;
6339
+ this.notifyListeners("animationComplete");
6340
+ }
6341
+ finishAnimation() {
6342
+ if (this.currentAnimation) {
6343
+ this.mixTargetDelta && this.mixTargetDelta(animationTarget);
6344
+ this.currentAnimation.stop();
6345
+ }
6346
+ this.completeAnimation();
6347
+ }
6348
+ applyTransformsToTarget() {
6349
+ const lead = this.getLead();
6350
+ let { targetWithTransforms, target, layout, latestValues } = lead;
6351
+ if (!targetWithTransforms || !target || !layout)
6352
+ return;
6353
+ if (this !== lead && this.layout && layout && shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {
6354
+ target = this.target || createBox();
6355
+ const xLength = calcLength(this.layout.layoutBox.x);
6356
+ target.x.min = lead.target.x.min;
6357
+ target.x.max = target.x.min + xLength;
6358
+ const yLength = calcLength(this.layout.layoutBox.y);
6359
+ target.y.min = lead.target.y.min;
6360
+ target.y.max = target.y.min + yLength;
6361
+ }
6362
+ copyBoxInto(targetWithTransforms, target);
6363
+ transformBox(targetWithTransforms, latestValues);
6364
+ calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);
6365
+ }
6366
+ registerSharedNode(layoutId, node) {
6367
+ if (!this.sharedNodes.has(layoutId)) {
6368
+ this.sharedNodes.set(layoutId, new NodeStack());
6369
+ }
6370
+ const stack = this.sharedNodes.get(layoutId);
6371
+ stack.add(node);
6372
+ const config = node.options.initialPromotionConfig;
6373
+ node.promote({
6374
+ transition: config ? config.transition : void 0,
6375
+ preserveFollowOpacity: config && config.shouldPreserveFollowOpacity ? config.shouldPreserveFollowOpacity(node) : void 0
6376
+ });
6377
+ }
6378
+ isLead() {
6379
+ const stack = this.getStack();
6380
+ return stack ? stack.lead === this : true;
6381
+ }
6382
+ getLead() {
6383
+ var _a;
6384
+ const { layoutId } = this.options;
6385
+ return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;
6386
+ }
6387
+ getPrevLead() {
6388
+ var _a;
6389
+ const { layoutId } = this.options;
6390
+ return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : void 0;
6391
+ }
6392
+ getStack() {
6393
+ const { layoutId } = this.options;
6394
+ if (layoutId)
6395
+ return this.root.sharedNodes.get(layoutId);
6396
+ }
6397
+ promote({ needsReset, transition, preserveFollowOpacity } = {}) {
6398
+ const stack = this.getStack();
6399
+ if (stack)
6400
+ stack.promote(this, preserveFollowOpacity);
6401
+ if (needsReset) {
6402
+ this.projectionDelta = void 0;
6403
+ this.needsReset = true;
6404
+ }
6405
+ if (transition)
6406
+ this.setOptions({ transition });
6407
+ }
6408
+ relegate() {
6409
+ const stack = this.getStack();
6410
+ if (stack) {
6411
+ return stack.relegate(this);
6412
+ } else {
6413
+ return false;
6414
+ }
6415
+ }
6416
+ resetSkewAndRotation() {
6417
+ const { visualElement } = this.options;
6418
+ if (!visualElement)
6419
+ return;
6420
+ let hasDistortingTransform = false;
6421
+ const { latestValues } = visualElement;
6422
+ if (latestValues.z || latestValues.rotate || latestValues.rotateX || latestValues.rotateY || latestValues.rotateZ || latestValues.skewX || latestValues.skewY) {
6423
+ hasDistortingTransform = true;
6424
+ }
6425
+ if (!hasDistortingTransform)
6426
+ return;
6427
+ const resetValues = {};
6428
+ if (latestValues.z) {
6429
+ resetDistortingTransform("z", visualElement, resetValues, this.animationValues);
6430
+ }
6431
+ for (let i = 0; i < transformAxes.length; i++) {
6432
+ resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);
6433
+ resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);
6434
+ }
6435
+ visualElement.render();
6436
+ for (const key in resetValues) {
6437
+ visualElement.setStaticValue(key, resetValues[key]);
6438
+ if (this.animationValues) {
6439
+ this.animationValues[key] = resetValues[key];
6440
+ }
6441
+ }
6442
+ visualElement.scheduleRender();
6443
+ }
6444
+ getProjectionStyles(styleProp) {
6445
+ var _a, _b;
6446
+ if (!this.instance || this.isSVG)
6447
+ return void 0;
6448
+ if (!this.isVisible) {
6449
+ return hiddenVisibility;
6450
+ }
6451
+ const styles = {
6452
+ visibility: ""
6453
+ };
6454
+ const transformTemplate = this.getTransformTemplate();
6455
+ if (this.needsReset) {
6456
+ this.needsReset = false;
6457
+ styles.opacity = "";
6458
+ styles.pointerEvents = resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || "";
6459
+ styles.transform = transformTemplate ? transformTemplate(this.latestValues, "") : "none";
6460
+ return styles;
6461
+ }
6462
+ const lead = this.getLead();
6463
+ if (!this.projectionDelta || !this.layout || !lead.target) {
6464
+ const emptyStyles = {};
6465
+ if (this.options.layoutId) {
6466
+ emptyStyles.opacity = this.latestValues.opacity !== void 0 ? this.latestValues.opacity : 1;
6467
+ emptyStyles.pointerEvents = resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || "";
6468
+ }
6469
+ if (this.hasProjected && !hasTransform(this.latestValues)) {
6470
+ emptyStyles.transform = transformTemplate ? transformTemplate({}, "") : "none";
6471
+ this.hasProjected = false;
6472
+ }
6473
+ return emptyStyles;
6474
+ }
6475
+ const valuesToRender = lead.animationValues || lead.latestValues;
6476
+ this.applyTransformsToTarget();
6477
+ styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);
6478
+ if (transformTemplate) {
6479
+ styles.transform = transformTemplate(valuesToRender, styles.transform);
6480
+ }
6481
+ const { x, y } = this.projectionDelta;
6482
+ styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;
6483
+ if (lead.animationValues) {
6484
+ styles.opacity = lead === this ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1 : this.preserveOpacity ? this.latestValues.opacity : valuesToRender.opacityExit;
6485
+ } else {
6486
+ styles.opacity = lead === this ? valuesToRender.opacity !== void 0 ? valuesToRender.opacity : "" : valuesToRender.opacityExit !== void 0 ? valuesToRender.opacityExit : 0;
6487
+ }
6488
+ for (const key in scaleCorrectors) {
6489
+ if (valuesToRender[key] === void 0)
6490
+ continue;
6491
+ const { correct, applyTo } = scaleCorrectors[key];
6492
+ const corrected = styles.transform === "none" ? valuesToRender[key] : correct(valuesToRender[key], lead);
6493
+ if (applyTo) {
6494
+ const num = applyTo.length;
6495
+ for (let i = 0; i < num; i++) {
6496
+ styles[applyTo[i]] = corrected;
6497
+ }
6498
+ } else {
6499
+ styles[key] = corrected;
6500
+ }
6501
+ }
6502
+ if (this.options.layoutId) {
6503
+ styles.pointerEvents = lead === this ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || "" : "none";
6504
+ }
6505
+ return styles;
6506
+ }
6507
+ clearSnapshot() {
6508
+ this.resumeFrom = this.snapshot = void 0;
6509
+ }
6510
+ // Only run on root
6511
+ resetTree() {
6512
+ this.root.nodes.forEach((node) => {
6513
+ var _a;
6514
+ return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();
6515
+ });
6516
+ this.root.nodes.forEach(clearMeasurements);
6517
+ this.root.sharedNodes.clear();
6518
+ }
6519
+ };
6520
+ }
6521
+ function updateLayout(node) {
6522
+ node.updateLayout();
6523
+ }
6524
+ function notifyLayoutUpdate(node) {
6525
+ var _a;
6526
+ const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;
6527
+ if (node.isLead() && node.layout && snapshot && node.hasListeners("didUpdate")) {
6528
+ const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;
6529
+ const { animationType } = node.options;
6530
+ const isShared = snapshot.source !== node.layout.source;
6531
+ if (animationType === "size") {
6532
+ eachAxis((axis) => {
6533
+ const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];
6534
+ const length = calcLength(axisSnapshot);
6535
+ axisSnapshot.min = layout[axis].min;
6536
+ axisSnapshot.max = axisSnapshot.min + length;
6537
+ });
6538
+ } else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {
6539
+ eachAxis((axis) => {
6540
+ const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];
6541
+ const length = calcLength(layout[axis]);
6542
+ axisSnapshot.max = axisSnapshot.min + length;
6543
+ if (node.relativeTarget && !node.currentAnimation) {
6544
+ node.isProjectionDirty = true;
6545
+ node.relativeTarget[axis].max = node.relativeTarget[axis].min + length;
6546
+ }
6547
+ });
6548
+ }
6549
+ const layoutDelta = createDelta();
6550
+ calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);
6551
+ const visualDelta = createDelta();
6552
+ if (isShared) {
6553
+ calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);
6554
+ } else {
6555
+ calcBoxDelta(visualDelta, layout, snapshot.layoutBox);
6556
+ }
6557
+ const hasLayoutChanged = !isDeltaZero(layoutDelta);
6558
+ let hasRelativeTargetChanged = false;
6559
+ if (!node.resumeFrom) {
6560
+ const relativeParent = node.getClosestProjectingParent();
6561
+ if (relativeParent && !relativeParent.resumeFrom) {
6562
+ const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;
6563
+ if (parentSnapshot && parentLayout) {
6564
+ const relativeSnapshot = createBox();
6565
+ calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);
6566
+ const relativeLayout = createBox();
6567
+ calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);
6568
+ if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {
6569
+ hasRelativeTargetChanged = true;
6570
+ }
6571
+ if (relativeParent.options.layoutRoot) {
6572
+ node.relativeTarget = relativeLayout;
6573
+ node.relativeTargetOrigin = relativeSnapshot;
6574
+ node.relativeParent = relativeParent;
6575
+ }
6576
+ }
6577
+ }
6578
+ }
6579
+ node.notifyListeners("didUpdate", {
6580
+ layout,
6581
+ snapshot,
6582
+ delta: visualDelta,
6583
+ layoutDelta,
6584
+ hasLayoutChanged,
6585
+ hasRelativeTargetChanged
6586
+ });
6587
+ } else if (node.isLead()) {
6588
+ const { onExitComplete } = node.options;
6589
+ onExitComplete && onExitComplete();
6590
+ }
6591
+ node.options.transition = void 0;
6592
+ }
6593
+ function propagateDirtyNodes(node) {
6594
+ if (isDebug) {
6595
+ metrics.totalNodes++;
6596
+ }
6597
+ if (!node.parent)
6598
+ return;
6599
+ if (!node.isProjecting()) {
6600
+ node.isProjectionDirty = node.parent.isProjectionDirty;
6601
+ }
6602
+ node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty || node.parent.isProjectionDirty || node.parent.isSharedProjectionDirty));
6603
+ node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);
6604
+ }
6605
+ function cleanDirtyNodes(node) {
6606
+ node.isProjectionDirty = node.isSharedProjectionDirty = node.isTransformDirty = false;
6607
+ }
6608
+ function clearSnapshot(node) {
6609
+ node.clearSnapshot();
6610
+ }
6611
+ function clearMeasurements(node) {
6612
+ node.clearMeasurements();
6613
+ }
6614
+ function clearIsLayoutDirty(node) {
6615
+ node.isLayoutDirty = false;
6616
+ }
6617
+ function resetTransformStyle(node) {
6618
+ const { visualElement } = node.options;
6619
+ if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {
6620
+ visualElement.notify("BeforeLayoutMeasure");
6621
+ }
6622
+ node.resetTransform();
6623
+ }
6624
+ function finishAnimation(node) {
6625
+ node.finishAnimation();
6626
+ node.targetDelta = node.relativeTarget = node.target = void 0;
6627
+ node.isProjectionDirty = true;
6628
+ }
6629
+ function resolveTargetDelta(node) {
6630
+ node.resolveTargetDelta();
6631
+ }
6632
+ function calcProjection(node) {
6633
+ node.calcProjection();
6634
+ }
6635
+ function resetSkewAndRotation(node) {
6636
+ node.resetSkewAndRotation();
6637
+ }
6638
+ function removeLeadSnapshots(stack) {
6639
+ stack.removeLeadSnapshot();
6640
+ }
6641
+ function mixAxisDelta(output, delta, p) {
6642
+ output.translate = mixNumber$1(delta.translate, 0, p);
6643
+ output.scale = mixNumber$1(delta.scale, 1, p);
6644
+ output.origin = delta.origin;
6645
+ output.originPoint = delta.originPoint;
6646
+ }
6647
+ function mixAxis(output, from, to, p) {
6648
+ output.min = mixNumber$1(from.min, to.min, p);
6649
+ output.max = mixNumber$1(from.max, to.max, p);
6650
+ }
6651
+ function mixBox(output, from, to, p) {
6652
+ mixAxis(output.x, from.x, to.x, p);
6653
+ mixAxis(output.y, from.y, to.y, p);
6654
+ }
6655
+ function hasOpacityCrossfade(node) {
6656
+ return node.animationValues && node.animationValues.opacityExit !== void 0;
6657
+ }
6658
+ const defaultLayoutTransition = {
6659
+ duration: 0.45,
6660
+ ease: [0.4, 0, 0.1, 1]
6661
+ };
6662
+ const userAgentContains = (string) => typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().includes(string);
6663
+ const roundPoint = userAgentContains("applewebkit/") && !userAgentContains("chrome/") ? Math.round : noop$1;
6664
+ function roundAxis(axis) {
6665
+ axis.min = roundPoint(axis.min);
6666
+ axis.max = roundPoint(axis.max);
6667
+ }
6668
+ function roundBox(box) {
6669
+ roundAxis(box.x);
6670
+ roundAxis(box.y);
6671
+ }
6672
+ function shouldAnimatePositionOnly(animationType, snapshot, layout) {
6673
+ return animationType === "position" || animationType === "preserve-aspect" && !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2);
6674
+ }
6675
+ function checkNodeWasScrollRoot(node) {
6676
+ var _a;
6677
+ return node !== node.root && ((_a = node.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);
6678
+ }
6679
+ function addDomEvent(target, eventName, handler, options = { passive: true }) {
6680
+ target.addEventListener(eventName, handler, options);
6681
+ return () => target.removeEventListener(eventName, handler);
6682
+ }
6683
+ const DocumentProjectionNode = createProjectionNode({
6684
+ attachResizeListener: (ref, notify2) => addDomEvent(ref, "resize", notify2),
6685
+ measureScroll: () => ({
6686
+ x: document.documentElement.scrollLeft || document.body.scrollLeft,
6687
+ y: document.documentElement.scrollTop || document.body.scrollTop
6688
+ }),
6689
+ checkIsScrollRoot: () => true
6690
+ });
6691
+ const rootProjectionNode = {
6692
+ current: void 0
6693
+ };
6694
+ const HTMLProjectionNode = createProjectionNode({
6695
+ measureScroll: (instance) => ({
6696
+ x: instance.scrollLeft,
6697
+ y: instance.scrollTop
6698
+ }),
6699
+ defaultParent: () => {
6700
+ if (!rootProjectionNode.current) {
6701
+ const documentNode = new DocumentProjectionNode({});
6702
+ documentNode.mount(window);
6703
+ documentNode.setOptions({ layoutScroll: true });
6704
+ rootProjectionNode.current = documentNode;
6705
+ }
6706
+ return rootProjectionNode.current;
6707
+ },
6708
+ resetTransform: (instance, value) => {
6709
+ instance.style.transform = value !== void 0 ? value : "none";
6710
+ },
6711
+ checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === "fixed")
6712
+ });
6713
+ function getClosestProjectingNode(visualElement) {
6714
+ if (!visualElement)
6715
+ return void 0;
6716
+ return visualElement.options.allowProjection !== false ? visualElement.projection : getClosestProjectingNode(visualElement.parent);
6717
+ }
6718
+ function pixelsToPercent(pixels, axis) {
6719
+ if (axis.max === axis.min)
6720
+ return 0;
6721
+ return pixels / (axis.max - axis.min) * 100;
6722
+ }
6723
+ const correctBorderRadius = {
6724
+ correct: (latest, node) => {
6725
+ if (!node.target)
6726
+ return latest;
6727
+ if (typeof latest === "string") {
6728
+ if (px.test(latest)) {
6729
+ latest = parseFloat(latest);
6730
+ } else {
6731
+ return latest;
6732
+ }
6733
+ }
6734
+ const x = pixelsToPercent(latest, node.target.x);
6735
+ const y = pixelsToPercent(latest, node.target.y);
6736
+ return `${x}% ${y}%`;
6737
+ }
6738
+ };
6739
+ const correctBoxShadow = {
6740
+ correct: (latest, { treeScale, projectionDelta }) => {
6741
+ const original = latest;
6742
+ const shadow = complex.parse(latest);
6743
+ if (shadow.length > 5)
6744
+ return original;
6745
+ const template = complex.createTransformer(latest);
6746
+ const offset = typeof shadow[0] !== "number" ? 1 : 0;
6747
+ const xScale = projectionDelta.x.scale * treeScale.x;
6748
+ const yScale = projectionDelta.y.scale * treeScale.y;
6749
+ shadow[0 + offset] /= xScale;
6750
+ shadow[1 + offset] /= yScale;
6751
+ const averageScale = mixNumber$1(xScale, yScale, 0.5);
6752
+ if (typeof shadow[2 + offset] === "number")
6753
+ shadow[2 + offset] /= averageScale;
6754
+ if (typeof shadow[3 + offset] === "number")
6755
+ shadow[3 + offset] /= averageScale;
6756
+ return template(shadow);
6757
+ }
6758
+ };
6759
+ const defaultScaleCorrector = {
6760
+ borderRadius: {
6761
+ ...correctBorderRadius,
6762
+ applyTo: [
6763
+ "borderTopLeftRadius",
6764
+ "borderTopRightRadius",
6765
+ "borderBottomLeftRadius",
6766
+ "borderBottomRightRadius"
6767
+ ]
6768
+ },
6769
+ borderTopLeftRadius: correctBorderRadius,
6770
+ borderTopRightRadius: correctBorderRadius,
6771
+ borderBottomLeftRadius: correctBorderRadius,
6772
+ borderBottomRightRadius: correctBorderRadius,
6773
+ boxShadow: correctBoxShadow
6774
+ };
6775
+ class LayoutFeature extends Feature {
6776
+ constructor(state2) {
6777
+ super(state2);
6778
+ const options = this.state.getOptions();
6779
+ const visualElement = this.state.visualElement;
6780
+ if (options.layout || options.layoutId) {
6781
+ addScaleCorrector(defaultScaleCorrector);
6782
+ this.layoutGroup = injectLayoutGroup({});
6783
+ vue.onBeforeMount(() => {
6784
+ visualElement.projection = new HTMLProjectionNode(
6785
+ visualElement.latestValues,
6786
+ options["data-framer-portal-id"] ? void 0 : getClosestProjectingNode(visualElement.parent)
6787
+ );
6788
+ visualElement.projection.setOptions({
6789
+ layout: options.layout,
6790
+ layoutId: options.layoutId,
6791
+ // TODO: drag
6792
+ alwaysMeasureLayout: false,
6793
+ visualElement,
6794
+ animationType: typeof options.layout === "string" ? options.layout : "both",
6795
+ // initialPromotionConfig
6796
+ layoutRoot: options.layoutRoot,
6797
+ layoutScroll: options.layoutScroll
6798
+ });
6799
+ });
6800
+ vue.onBeforeUpdate(() => {
6801
+ var _a;
6802
+ (_a = visualElement.projection) == null ? void 0 : _a.willUpdate();
6803
+ });
6804
+ vue.onUpdated(() => {
6805
+ var _a;
6806
+ (_a = visualElement.projection) == null ? void 0 : _a.root.didUpdate();
6807
+ });
6808
+ vue.onBeforeUnmount(() => {
6809
+ var _a;
6810
+ if (visualElement.projection) {
6811
+ visualElement.projection.unmount();
6812
+ if ((_a = this.layoutGroup) == null ? void 0 : _a.group)
6813
+ this.layoutGroup.group.remove(visualElement.projection);
6814
+ }
6815
+ });
6816
+ }
6817
+ }
6818
+ update() {
6819
+ var _a;
6820
+ (_a = this.state.visualElement.projection) == null ? void 0 : _a.setOptions(this.state.getOptions());
6821
+ }
6822
+ mount() {
6823
+ var _a, _b;
6824
+ const options = this.state.getOptions();
6825
+ if (options.layout || options.layoutId) {
6826
+ const projection = this.state.visualElement.projection;
6827
+ if (projection) {
6828
+ (_b = (_a = this.layoutGroup) == null ? void 0 : _a.group) == null ? void 0 : _b.add(projection);
6829
+ }
6830
+ globalProjectionState.hasEverUpdated = true;
6831
+ projection == null ? void 0 : projection.mount(this.state.element);
6832
+ projection == null ? void 0 : projection.root.didUpdate();
6833
+ }
6834
+ }
6835
+ unmount() {
6836
+ }
6837
+ }
5192
6838
  class FeatureManager {
5193
6839
  constructor(state2) {
5194
6840
  this.features = [];
@@ -5197,7 +6843,8 @@ class FeatureManager {
5197
6843
  new PressGesture(state2),
5198
6844
  new InViewGesture(state2),
5199
6845
  new SVGFeature(state2),
5200
- new EventFeature(state2)
6846
+ new EventFeature(state2),
6847
+ new LayoutFeature(state2)
5201
6848
  ];
5202
6849
  }
5203
6850
  mount() {
@@ -5238,6 +6885,9 @@ function compareByDepth(a, b) {
5238
6885
  function motionEvent(name, target, isExit) {
5239
6886
  return new CustomEvent(name, { detail: { target, isExit } });
5240
6887
  }
6888
+ function createVisualElement(Component, options) {
6889
+ return isSVGElement$1(Component) ? new SVGVisualElement(options) : new HTMLVisualElement(options);
6890
+ }
5241
6891
  const STATE_TYPES = ["initial", "animate", "inView", "hover", "press", "exit", "drag"];
5242
6892
  const mountedStates = /* @__PURE__ */ new WeakMap();
5243
6893
  class MotionState {
@@ -5251,6 +6901,23 @@ class MotionState {
5251
6901
  this.options = options;
5252
6902
  this.parent = parent;
5253
6903
  this.depth = (parent == null ? void 0 : parent.depth) + 1 || 0;
6904
+ this.visualElement = createVisualElement(this.options.as, {
6905
+ presenceContext: null,
6906
+ parent: parent == null ? void 0 : parent.visualElement,
6907
+ props: {
6908
+ ...this.options
6909
+ },
6910
+ visualState: {
6911
+ renderState: {
6912
+ transform: {},
6913
+ transformOrigin: {},
6914
+ style: {},
6915
+ vars: {},
6916
+ attrs: {}
6917
+ },
6918
+ latestValues: {}
6919
+ }
6920
+ });
5254
6921
  const initialVariantSource = options.initial === false ? "animate" : "initial";
5255
6922
  this.featureManager = new FeatureManager(this);
5256
6923
  this.initTarget(initialVariantSource);
@@ -5272,7 +6939,7 @@ class MotionState {
5272
6939
  this.target = { ...this.baseTarget };
5273
6940
  }
5274
6941
  get initial() {
5275
- return core.isDef(this.options.initial) ? this.options.initial : this.context.initial;
6942
+ return isDef(this.options.initial) ? this.options.initial : this.context.initial;
5276
6943
  }
5277
6944
  mount(element) {
5278
6945
  var _a;
@@ -5283,18 +6950,17 @@ class MotionState {
5283
6950
  this.element = element;
5284
6951
  mountedStates.set(element, this);
5285
6952
  if (!visualElementStore.get(element)) {
5286
- createDOMVisualElement(element);
6953
+ this.visualElement.mount(element);
6954
+ visualElementStore.set(element, this.visualElement);
5287
6955
  }
5288
- const visualElement = visualElementStore.get(element);
5289
- this.visualElement = visualElement;
5290
- visualElement.update(this.options, (_a = this.parent) == null ? void 0 : _a.context);
6956
+ this.visualElement.update(this.options, (_a = this.parent) == null ? void 0 : _a.context);
5291
6957
  if (typeof this.initial === "object") {
5292
6958
  for (const key in this.initial) {
5293
- visualElement.setStaticValue(key, this.initial[key]);
6959
+ this.visualElement.setStaticValue(key, this.initial[key]);
5294
6960
  }
5295
6961
  } else if (typeof this.initial === "string" && this.options.variants) {
5296
6962
  for (const key in this.options.variants[this.initial]) {
5297
- visualElement.setStaticValue(key, this.options.variants[this.initial][key]);
6963
+ this.visualElement.setStaticValue(key, this.options.variants[this.initial][key]);
5298
6964
  }
5299
6965
  }
5300
6966
  this.featureManager.mount();
@@ -5327,7 +6993,7 @@ class MotionState {
5327
6993
  if (!this.activeStates[name])
5328
6994
  continue;
5329
6995
  const variant = resolveVariant(
5330
- core.isDef(this.options[name]) ? this.options[name] : this.context[name],
6996
+ isDef(this.options[name]) ? this.options[name] : this.context[name],
5331
6997
  this.options.variants,
5332
6998
  this.options.custom
5333
6999
  );
@@ -5373,12 +7039,12 @@ class MotionState {
5373
7039
  const animations = animationFactories.map((factory) => factory()).filter(Boolean);
5374
7040
  if (!animations.length)
5375
7041
  return;
5376
- const animationTarget = this.target;
5377
- this.element.dispatchEvent(motionEvent("motionstart", animationTarget));
7042
+ const animationTarget2 = this.target;
7043
+ this.element.dispatchEvent(motionEvent("motionstart", animationTarget2));
5378
7044
  const isExit = this.activeStates.exit;
5379
7045
  Promise.all(animations).then(() => {
5380
7046
  this.element.dispatchEvent(motionEvent("motioncomplete", {
5381
- ...animationTarget
7047
+ ...animationTarget2
5382
7048
  }, isExit));
5383
7049
  }).catch(noop);
5384
7050
  }
@@ -5391,9 +7057,6 @@ class MotionState {
5391
7057
  getOptions() {
5392
7058
  return this.options;
5393
7059
  }
5394
- getElement() {
5395
- return this.element;
5396
- }
5397
7060
  getTarget() {
5398
7061
  return this.target;
5399
7062
  }
@@ -5407,7 +7070,7 @@ function removeDoneCallback(element) {
5407
7070
  doneCallbacks.delete(element);
5408
7071
  }
5409
7072
  const [injectAnimatePresence, provideAnimatePresence] = createContext("AnimatePresenceContext");
5410
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
7073
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
5411
7074
  ...{
5412
7075
  name: "Motion",
5413
7076
  inheritAttrs: false
@@ -5435,20 +7098,30 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
5435
7098
  onPressStart: { type: Function },
5436
7099
  onPressEnd: { type: Function },
5437
7100
  onViewEnter: { type: Function },
5438
- onViewLeave: { type: Function }
7101
+ onViewLeave: { type: Function },
7102
+ layout: { type: Boolean },
7103
+ layoutId: {},
7104
+ layoutScroll: { type: Boolean },
7105
+ layoutRoot: { type: Boolean },
7106
+ "data-framer-portal-id": {}
5439
7107
  }, {
5440
7108
  as: "div",
5441
7109
  asChild: false,
5442
7110
  initial: void 0,
5443
7111
  animate: void 0,
5444
7112
  hover: void 0,
5445
- inView: void 0
7113
+ inView: void 0,
7114
+ layout: false,
7115
+ layoutId: void 0,
7116
+ layoutScroll: false,
7117
+ layoutRoot: false
5446
7118
  }),
5447
7119
  setup(__props) {
5448
7120
  const props = __props;
5449
7121
  const { initial: presenceInitial, safeUnmount } = injectAnimatePresence({ initial: vue.ref(void 0), safeUnmount: () => true });
5450
7122
  const parentState = injectMotion(null);
5451
7123
  const attrs = vue.useAttrs();
7124
+ const layoutGroup = injectLayoutGroup({});
5452
7125
  const state2 = new MotionState(
5453
7126
  {
5454
7127
  ...attrs,
@@ -5462,8 +7135,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
5462
7135
  state2.mount(instance == null ? void 0 : instance.vnode.el);
5463
7136
  state2.update({
5464
7137
  ...attrs,
5465
- ...props,
5466
- style: { ...createStyles(state2.getTarget()), ...props.style }
7138
+ ...props
5467
7139
  });
5468
7140
  });
5469
7141
  vue.onUnmounted(() => {
@@ -5492,27 +7164,30 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
5492
7164
  Object.assign(attrsProps, attributes);
5493
7165
  Object.assign(styleProps, style2, props.style);
5494
7166
  } else {
5495
- Object.assign(styleProps, props.style, state2.getTarget());
7167
+ Object.assign(styleProps, state2.getTarget(), props.style);
5496
7168
  }
5497
7169
  }
5498
7170
  styleProps = createStyles(styleProps);
5499
- attrsProps.style = createStyles(styleProps);
7171
+ attrsProps.style = styleProps;
5500
7172
  return attrsProps;
5501
7173
  }
5502
7174
  return (_ctx, _cache) => {
7175
+ var _a, _b;
5503
7176
  return vue.openBlock(), vue.createBlock(vue.unref(Primitive), vue.mergeProps({
5504
7177
  as: _ctx.as,
5505
7178
  "as-child": _ctx.asChild
5506
- }, getProps()), {
7179
+ }, getProps(), {
7180
+ "data-layout-group-key": (_b = (_a = vue.unref(layoutGroup)) == null ? void 0 : _a.key) == null ? void 0 : _b.value
7181
+ }), {
5507
7182
  default: vue.withCtx(() => [
5508
7183
  vue.renderSlot(_ctx.$slots, "default")
5509
7184
  ]),
5510
7185
  _: 3
5511
- }, 16, ["as", "as-child"]);
7186
+ }, 16, ["as", "as-child", "data-layout-group-key"]);
5512
7187
  };
5513
7188
  }
5514
7189
  });
5515
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
7190
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
5516
7191
  ...{
5517
7192
  name: "AnimatePresence",
5518
7193
  inheritAttrs: true
@@ -5577,6 +7252,72 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
5577
7252
  };
5578
7253
  }
5579
7254
  });
7255
+ function notify(node) {
7256
+ return !node.isLayoutDirty && node.willUpdate(false);
7257
+ }
7258
+ function nodeGroup() {
7259
+ const nodes = /* @__PURE__ */ new Set();
7260
+ const subscriptions = /* @__PURE__ */ new WeakMap();
7261
+ const dirtyAll = () => nodes.forEach(notify);
7262
+ return {
7263
+ add: (node) => {
7264
+ nodes.add(node);
7265
+ subscriptions.set(
7266
+ node,
7267
+ node.addEventListener("willUpdate", dirtyAll)
7268
+ );
7269
+ },
7270
+ remove: (node) => {
7271
+ nodes.delete(node);
7272
+ const unsubscribe = subscriptions.get(node);
7273
+ if (unsubscribe) {
7274
+ unsubscribe();
7275
+ subscriptions.delete(node);
7276
+ }
7277
+ dirtyAll();
7278
+ },
7279
+ dirty: dirtyAll
7280
+ };
7281
+ }
7282
+ function useForceUpdate() {
7283
+ const key = vue.ref(0);
7284
+ function forceUpdate() {
7285
+ key.value++;
7286
+ }
7287
+ return [forceUpdate, key];
7288
+ }
7289
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
7290
+ __name: "LayoutGroup",
7291
+ props: {
7292
+ id: {},
7293
+ inherit: { type: [Boolean, String] }
7294
+ },
7295
+ setup(__props) {
7296
+ const props = __props;
7297
+ const layoutGroup = injectLayoutGroup(null);
7298
+ const [forceRender, key] = useForceUpdate();
7299
+ function generateId() {
7300
+ const upstreamId = layoutGroup == null ? void 0 : layoutGroup.id;
7301
+ return shouldInheritId(props.inherit) && upstreamId ? props.id ? `${upstreamId}-${props.id}` : upstreamId : props.id;
7302
+ }
7303
+ function generateGroup() {
7304
+ return shouldInheritGroup(props.inherit) ? (layoutGroup == null ? void 0 : layoutGroup.group) || nodeGroup() : nodeGroup();
7305
+ }
7306
+ const memoizedContext = {
7307
+ id: generateId(),
7308
+ group: generateGroup(),
7309
+ forceRender,
7310
+ key
7311
+ };
7312
+ vue.watch(key, () => {
7313
+ memoizedContext.id = generateId();
7314
+ });
7315
+ provideLayoutGroup(memoizedContext);
7316
+ return (_ctx, _cache) => {
7317
+ return vue.renderSlot(_ctx.$slots, "default");
7318
+ };
7319
+ }
7320
+ });
5580
7321
  function useCombineMotionValues(combineValues) {
5581
7322
  const value = motionValue(combineValues());
5582
7323
  const updateValue = () => value.set(combineValues());
@@ -5657,6 +7398,13 @@ function useMotionTemplate(fragments, ...values) {
5657
7398
  subscribe(values.filter(isMotionValue));
5658
7399
  return value;
5659
7400
  }
7401
+ function useMotionValueEvent(value, event, callback) {
7402
+ const unlisten = value.on(event, callback);
7403
+ vue.onUnmounted(() => {
7404
+ unlisten();
7405
+ });
7406
+ return unlisten;
7407
+ }
5660
7408
  function toNumber(v) {
5661
7409
  if (typeof v === "number")
5662
7410
  return v;
@@ -5757,10 +7505,25 @@ function useScroll({
5757
7505
  );
5758
7506
  return values;
5759
7507
  }
7508
+ function useVelocity(value) {
7509
+ const velocity = motionValue(value.getVelocity());
7510
+ const updateVelocity = () => {
7511
+ const latest = value.getVelocity();
7512
+ velocity.set(latest);
7513
+ if (latest) {
7514
+ frame.update(updateVelocity);
7515
+ }
7516
+ };
7517
+ useMotionValueEvent(value, "change", () => {
7518
+ frame.update(updateVelocity, false, true);
7519
+ });
7520
+ return velocity;
7521
+ }
5760
7522
  const components = {
5761
7523
  motion: [
5762
7524
  "Motion",
5763
- "MotionPresence"
7525
+ "MotionPresence",
7526
+ "LayoutGroup"
5764
7527
  ]
5765
7528
  };
5766
7529
  const utilities = {
@@ -5770,7 +7533,12 @@ const utilities = {
5770
7533
  "useMotionTemplate",
5771
7534
  "useSpring",
5772
7535
  "useScroll",
5773
- "useMotionValue"
7536
+ "useMotionValue",
7537
+ "useVelocity",
7538
+ "useAnimate",
7539
+ "useInView",
7540
+ "useAnimationFrame",
7541
+ "useMotionValueEvent"
5774
7542
  ]
5775
7543
  };
5776
7544
  function useAnimate() {
@@ -5799,8 +7567,9 @@ function useAnimate() {
5799
7567
  });
5800
7568
  return [domProxy, animate2];
5801
7569
  }
5802
- exports.AnimatePresence = _sfc_main;
5803
- exports.Motion = _sfc_main$1;
7570
+ exports.AnimatePresence = _sfc_main$1;
7571
+ exports.LayoutGroup = _sfc_main;
7572
+ exports.Motion = _sfc_main$2;
5804
7573
  exports.MotionValue = MotionValue;
5805
7574
  exports.animate = animate;
5806
7575
  exports.animateMini = animateMini;
@@ -5829,6 +7598,8 @@ exports.frameData = frameData;
5829
7598
  exports.frameSteps = frameSteps;
5830
7599
  exports.inView = inView;
5831
7600
  exports.inertia = inertia;
7601
+ exports.injectLayoutGroup = injectLayoutGroup;
7602
+ exports.injectMotion = injectMotion;
5832
7603
  exports.interpolate = interpolate;
5833
7604
  exports.isMotionValue = isMotionValue;
5834
7605
  exports.keyframes = keyframes;
@@ -5837,9 +7608,13 @@ exports.mix = mix;
5837
7608
  exports.motionValue = motionValue;
5838
7609
  exports.pipe = pipe;
5839
7610
  exports.progress = progress;
7611
+ exports.provideLayoutGroup = provideLayoutGroup;
7612
+ exports.provideMotion = provideMotion;
5840
7613
  exports.reverseEasing = reverseEasing;
5841
7614
  exports.scroll = scroll;
5842
7615
  exports.scrollInfo = scrollInfo;
7616
+ exports.shouldInheritGroup = shouldInheritGroup;
7617
+ exports.shouldInheritId = shouldInheritId;
5843
7618
  exports.spring = spring;
5844
7619
  exports.stagger = stagger;
5845
7620
  exports.steps = steps;
@@ -5847,12 +7622,16 @@ exports.sync = sync;
5847
7622
  exports.transform = transform;
5848
7623
  exports.useAnimate = useAnimate;
5849
7624
  exports.useAnimationFrame = useAnimationFrame;
7625
+ exports.useCombineMotionValues = useCombineMotionValues;
7626
+ exports.useComputed = useComputed;
5850
7627
  exports.useInView = useInView;
5851
7628
  exports.useMotionTemplate = useMotionTemplate;
5852
7629
  exports.useMotionValue = motionValue;
7630
+ exports.useMotionValueEvent = useMotionValueEvent;
5853
7631
  exports.useScroll = useScroll;
5854
7632
  exports.useSpring = useSpring;
5855
7633
  exports.useTime = useTime;
5856
7634
  exports.useTransform = useTransform;
7635
+ exports.useVelocity = useVelocity;
5857
7636
  exports.utilities = utilities;
5858
7637
  exports.wrap = wrap;