@1agh/maude 0.28.0 → 0.29.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 (361) hide show
  1. package/README.md +2 -2
  2. package/{plugins/design/dev-server → apps/studio}/ai-banner.tsx +1 -1
  3. package/{plugins/design/dev-server → apps/studio}/annotations-context-toolbar.tsx +286 -6
  4. package/{plugins/design/dev-server → apps/studio}/annotations-layer.tsx +1209 -122
  5. package/{plugins/design/dev-server → apps/studio}/api.ts +486 -32
  6. package/{plugins/design/dev-server → apps/studio}/artboard-activity-overlay.tsx +1 -1
  7. package/{plugins/design/dev-server → apps/studio}/artboard-marquee.tsx +1 -1
  8. package/apps/studio/bin/_motion-sample-playwright.mjs +129 -0
  9. package/{plugins/design/dev-server → apps/studio}/bin/canvas-edit.sh +1 -1
  10. package/{plugins/design/dev-server → apps/studio}/bin/draw-proof.sh +37 -2
  11. package/{plugins/design/dev-server → apps/studio}/bin/preflight.sh +1 -1
  12. package/apps/studio/bin/read-annotations.mjs +438 -0
  13. package/apps/studio/bin/read-annotations.sh +11 -0
  14. package/{plugins/design/dev-server → apps/studio}/bin/runtime-health.sh +1 -1
  15. package/{plugins/design/dev-server → apps/studio}/bin/scenario-report.mjs +1 -1
  16. package/{plugins/design/dev-server → apps/studio}/bin/screenshot.sh +62 -2
  17. package/apps/studio/bin/server-up.sh +234 -0
  18. package/apps/studio/bin/to-lottie-verify.html +68 -0
  19. package/apps/studio/bin/to-lottie.sh +128 -0
  20. package/{plugins/design/dev-server → apps/studio}/bin/visual-sanity.sh +19 -3
  21. package/{plugins/design/dev-server → apps/studio}/build.ts +5 -3
  22. package/{plugins/design/dev-server → apps/studio}/canvas-arrowheads.ts +1 -1
  23. package/{plugins/design/dev-server → apps/studio}/canvas-comment-mount.tsx +2 -2
  24. package/apps/studio/canvas-create.ts +104 -0
  25. package/{plugins/design/dev-server → apps/studio}/canvas-cursors.ts +47 -13
  26. package/{plugins/design/dev-server → apps/studio}/canvas-icons.tsx +60 -1
  27. package/{plugins/design/dev-server → apps/studio}/canvas-lib-inline.ts +1 -1
  28. package/{plugins/design/dev-server → apps/studio}/canvas-lib-resolver.ts +1 -1
  29. package/{plugins/design/dev-server → apps/studio}/canvas-lib.tsx +41 -33
  30. package/{plugins/design/dev-server → apps/studio}/canvas-shell.tsx +57 -42
  31. package/{plugins/design/dev-server → apps/studio}/client/app.jsx +1713 -530
  32. package/apps/studio/client/canvas-url.js +81 -0
  33. package/{plugins/design/dev-server → apps/studio}/client/comments-overlay.css +41 -27
  34. package/{plugins/design/dev-server → apps/studio}/client/index.html +2 -1
  35. package/apps/studio/client/styles/1-tokens-maude.css +296 -0
  36. package/apps/studio/client/styles/3-shell-maude.css +459 -0
  37. package/{plugins/design/dev-server → apps/studio}/client/styles/3-shell.css +129 -0
  38. package/apps/studio/client/styles/4-components-maude.css +74 -0
  39. package/{plugins/design/dev-server → apps/studio}/client/styles/4-components.css +357 -34
  40. package/apps/studio/client/styles/5-maude-overrides.css +123 -0
  41. package/{plugins/design/dev-server → apps/studio}/client/styles/_index.css +9 -0
  42. package/{plugins/design/dev-server → apps/studio}/client/styles.css +1 -1
  43. package/apps/studio/client/tour/overlay.jsx +191 -0
  44. package/apps/studio/client/tour/usage-tour.js +35 -0
  45. package/apps/studio/client/whats-new-seen.js +52 -0
  46. package/apps/studio/client/whats-new.jsx +250 -0
  47. package/{plugins/design/dev-server → apps/studio}/collab/index.ts +4 -4
  48. package/{plugins/design/dev-server → apps/studio}/collab/persistence.ts +1 -1
  49. package/{plugins/design/dev-server → apps/studio}/commands/annotation-strokes-command.ts +1 -1
  50. package/{plugins/design/dev-server → apps/studio}/commands/equal-spacing-command.ts +1 -1
  51. package/{plugins/design/dev-server → apps/studio}/commands/move-artboards-command.ts +1 -1
  52. package/{plugins/design/dev-server → apps/studio}/comments-overlay.tsx +25 -6
  53. package/{plugins/design/dev-server → apps/studio}/context-menu.tsx +2 -2
  54. package/{plugins/design/dev-server → apps/studio}/contextual-toolbar.tsx +4 -7
  55. package/{plugins/design/dev-server → apps/studio}/cursors-overlay.tsx +1 -1
  56. package/apps/studio/dist/client.bundle.js +22825 -0
  57. package/apps/studio/dist/comment-mount.js +1960 -0
  58. package/apps/studio/dist/runtime/lib0_decoding.js +1 -0
  59. package/apps/studio/dist/runtime/lib0_encoding.js +1 -0
  60. package/apps/studio/dist/runtime/motion.js +4 -0
  61. package/apps/studio/dist/runtime/motion_react.js +12 -0
  62. package/apps/studio/dist/runtime/pixi-js.js +3397 -0
  63. package/apps/studio/dist/runtime/react-dom.js +1 -0
  64. package/apps/studio/dist/runtime/react-dom_client.js +9 -0
  65. package/apps/studio/dist/runtime/react.js +1 -0
  66. package/apps/studio/dist/runtime/react_jsx-dev-runtime.js +1 -0
  67. package/apps/studio/dist/runtime/react_jsx-runtime.js +1 -0
  68. package/apps/studio/dist/runtime/y-protocols_awareness.js +1 -0
  69. package/apps/studio/dist/runtime/y-protocols_sync.js +1 -0
  70. package/apps/studio/dist/runtime/yjs.js +5 -0
  71. package/apps/studio/dist/styles.css +5695 -0
  72. package/{plugins/design/dev-server → apps/studio}/dom-selection.ts +75 -4
  73. package/apps/studio/draw/animate.ts +333 -0
  74. package/{plugins/design/dev-server → apps/studio}/draw/brush.ts +4 -4
  75. package/{plugins/design/dev-server → apps/studio}/draw/composition.ts +1 -1
  76. package/{plugins/design/dev-server → apps/studio}/draw/geometry.ts +1 -1
  77. package/{plugins/design/dev-server → apps/studio}/draw/index.ts +9 -6
  78. package/{plugins/design/dev-server → apps/studio}/draw/layout.ts +2 -2
  79. package/apps/studio/draw/morph.ts +204 -0
  80. package/{plugins/design/dev-server → apps/studio}/draw/optimize.ts +1 -1
  81. package/{plugins/design/dev-server → apps/studio}/draw/palette.ts +1 -1
  82. package/{plugins/design/dev-server → apps/studio}/draw/primitives.ts +1 -1
  83. package/apps/studio/draw/serialize-animate.ts +324 -0
  84. package/{plugins/design/dev-server → apps/studio}/draw/serialize.ts +9 -3
  85. package/apps/studio/draw/test/animate.test.ts +172 -0
  86. package/{plugins/design/dev-server → apps/studio}/draw/test/layout.test.ts +1 -1
  87. package/apps/studio/draw/test/morph.test.ts +107 -0
  88. package/apps/studio/draw/test/serialize-animate.test.ts +142 -0
  89. package/{plugins/design/dev-server → apps/studio}/draw/test/serialize.test.ts +1 -1
  90. package/{plugins/design/dev-server → apps/studio}/equal-spacing-detector.ts +1 -1
  91. package/{plugins/design/dev-server → apps/studio}/equal-spacing-handles.tsx +7 -29
  92. package/{plugins/design/dev-server → apps/studio}/examples/perf-100-artboards.tsx +1 -2
  93. package/{plugins/design/dev-server → apps/studio}/export-dialog.tsx +14 -2
  94. package/{plugins/design/dev-server → apps/studio}/exporters/index.ts +2 -2
  95. package/{plugins/design/dev-server → apps/studio}/http.ts +103 -2
  96. package/{plugins/design/dev-server → apps/studio}/input-router.tsx +8 -1
  97. package/{plugins/design/dev-server → apps/studio}/inspect.ts +20 -3
  98. package/{plugins/design/dev-server → apps/studio}/marquee-overlay.tsx +6 -3
  99. package/{plugins/design/dev-server → apps/studio}/participants-chrome.tsx +1 -1
  100. package/{plugins/design/dev-server → apps/studio}/paths.ts +15 -11
  101. package/{plugins/design/dev-server → apps/studio}/server.ts +19 -1
  102. package/{plugins/design/dev-server → apps/studio}/sync/index.ts +6 -6
  103. package/{plugins/design/dev-server → apps/studio}/sync/materialize.ts +2 -2
  104. package/{plugins/design/dev-server → apps/studio}/test/ai-activity.test.ts +1 -1
  105. package/{plugins/design/dev-server → apps/studio}/test/annotations-api.test.ts +1 -2
  106. package/{plugins/design/dev-server → apps/studio}/test/annotations-layer.test.ts +69 -6
  107. package/{plugins/design/dev-server → apps/studio}/test/annotations-roundtrip.test.ts +98 -1
  108. package/apps/studio/test/annotations-text-format.test.ts +396 -0
  109. package/apps/studio/test/asset-api.test.ts +149 -0
  110. package/{plugins/design/dev-server → apps/studio}/test/boot-self-heal.test.ts +1 -1
  111. package/apps/studio/test/canvas-create-api.test.ts +361 -0
  112. package/{plugins/design/dev-server → apps/studio}/test/canvas-cursors.test.ts +3 -1
  113. package/{plugins/design/dev-server → apps/studio}/test/canvas-edit.test.ts +1 -1
  114. package/{plugins/design/dev-server → apps/studio}/test/canvas-hmr-runtime.test.tsx +1 -1
  115. package/{plugins/design/dev-server → apps/studio}/test/canvas-lib-inline.test.ts +1 -1
  116. package/{plugins/design/dev-server → apps/studio}/test/canvas-lib-resolver.test.ts +2 -3
  117. package/apps/studio/test/canvas-media-drop.test.ts +158 -0
  118. package/{plugins/design/dev-server → apps/studio}/test/canvas-meta-api.test.ts +1 -2
  119. package/{plugins/design/dev-server → apps/studio}/test/canvas-origin-gate.test.ts +18 -3
  120. package/apps/studio/test/canvas-url.test.ts +99 -0
  121. package/{plugins/design/dev-server → apps/studio}/test/collab-annotations-bridge.test.ts +1 -1
  122. package/{plugins/design/dev-server → apps/studio}/test/collab-bridge.test.ts +1 -1
  123. package/{plugins/design/dev-server → apps/studio}/test/collab-room.test.ts +1 -1
  124. package/{plugins/design/dev-server → apps/studio}/test/collab-stress.test.ts +1 -1
  125. package/{plugins/design/dev-server → apps/studio}/test/comments-api.test.ts +1 -2
  126. package/{plugins/design/dev-server → apps/studio}/test/compile-entry.test.ts +1 -2
  127. package/{plugins/design/dev-server → apps/studio}/test/exporters/canva.test.ts +1 -2
  128. package/{plugins/design/dev-server → apps/studio}/test/exporters/history.test.ts +1 -2
  129. package/{plugins/design/dev-server → apps/studio}/test/exporters/pw-launch.test.ts +1 -1
  130. package/{plugins/design/dev-server → apps/studio}/test/exporters/scope.test.ts +1 -2
  131. package/{plugins/design/dev-server → apps/studio}/test/exporters/zip.test.ts +1 -2
  132. package/{plugins/design/dev-server → apps/studio}/test/git-lifecycle.test.ts +1 -2
  133. package/{plugins/design/dev-server → apps/studio}/test/handoff-static-frames.test.ts +1 -1
  134. package/{plugins/design/dev-server → apps/studio}/test/hmr-broadcast.test.ts +1 -1
  135. package/apps/studio/test/index-data-canvas-ds.test.ts +97 -0
  136. package/apps/studio/test/motion-sample.test.ts +35 -0
  137. package/{plugins/design/dev-server → apps/studio}/test/perf-harness.ts +1 -1
  138. package/{plugins/design/dev-server → apps/studio}/test/phase-3.6-smoke.test.ts +3 -1
  139. package/apps/studio/test/read-annotations.test.ts +409 -0
  140. package/{plugins/design/dev-server → apps/studio}/test/runtime-bundle.test.ts +1 -1
  141. package/{plugins/design/dev-server → apps/studio}/test/sanitize-annotation-svg.test.ts +108 -2
  142. package/{plugins/design/dev-server → apps/studio}/test/shared-doc-convergence.test.ts +2 -2
  143. package/{plugins/design/dev-server → apps/studio}/test/shared-doc-migrate.test.ts +2 -3
  144. package/{plugins/design/dev-server → apps/studio}/test/shared-doc-projection.test.ts +1 -1
  145. package/{plugins/design/dev-server → apps/studio}/test/snap-distance-pill.test.ts +1 -1
  146. package/{plugins/design/dev-server → apps/studio}/test/sync-agent.test.ts +2 -3
  147. package/{plugins/design/dev-server → apps/studio}/test/sync-atomic-write.test.ts +2 -3
  148. package/{plugins/design/dev-server → apps/studio}/test/sync-connection-state.test.ts +1 -1
  149. package/{plugins/design/dev-server → apps/studio}/test/sync-echo-guard.test.ts +1 -1
  150. package/{plugins/design/dev-server → apps/studio}/test/sync-fs-mirror.test.ts +1 -2
  151. package/{plugins/design/dev-server → apps/studio}/test/sync-hardening.test.ts +4 -5
  152. package/{plugins/design/dev-server → apps/studio}/test/sync-hubs-config.test.ts +1 -2
  153. package/{plugins/design/dev-server → apps/studio}/test/sync-runtime.test.ts +3 -8
  154. package/{plugins/design/dev-server → apps/studio}/test/sync-status.test.ts +1 -1
  155. package/{plugins/design/dev-server → apps/studio}/test/sync-untrusted.test.ts +1 -2
  156. package/apps/studio/test/tour-overlay.test.tsx +56 -0
  157. package/{plugins/design/dev-server → apps/studio}/test/use-agent-presence.test.tsx +4 -1
  158. package/{plugins/design/dev-server → apps/studio}/test/use-annotation-resize.test.ts +43 -0
  159. package/{plugins/design/dev-server → apps/studio}/test/use-snap-guides.test.ts +1 -1
  160. package/{plugins/design/dev-server → apps/studio}/test/use-tool-mode.test.tsx +4 -1
  161. package/apps/studio/test/whats-new.test.ts +101 -0
  162. package/apps/studio/text-imports.d.ts +9 -0
  163. package/{plugins/design/dev-server → apps/studio}/tool-palette.tsx +4 -69
  164. package/{plugins/design/dev-server → apps/studio}/undo-hud.tsx +1 -1
  165. package/{plugins/design/dev-server → apps/studio}/undo-stack.ts +1 -1
  166. package/{plugins/design/dev-server → apps/studio}/use-agent-presence.tsx +2 -2
  167. package/{plugins/design/dev-server → apps/studio}/use-annotation-resize.tsx +41 -12
  168. package/{plugins/design/dev-server → apps/studio}/use-annotation-selection.tsx +3 -7
  169. package/{plugins/design/dev-server → apps/studio}/use-annotations-visibility.tsx +2 -2
  170. package/{plugins/design/dev-server → apps/studio}/use-artboard-drag.tsx +2 -2
  171. package/{plugins/design/dev-server → apps/studio}/use-canvas-activity.tsx +2 -2
  172. package/apps/studio/use-canvas-media-drop.tsx +343 -0
  173. package/{plugins/design/dev-server → apps/studio}/use-collab.tsx +4 -5
  174. package/{plugins/design/dev-server → apps/studio}/use-cursor-modifiers.tsx +1 -1
  175. package/{plugins/design/dev-server → apps/studio}/use-keyboard-discipline.tsx +5 -2
  176. package/{plugins/design/dev-server → apps/studio}/use-selection-set.tsx +10 -2
  177. package/{plugins/design/dev-server → apps/studio}/use-snap-guides.tsx +1 -1
  178. package/{plugins/design/dev-server → apps/studio}/use-tool-mode.tsx +4 -2
  179. package/{plugins/design/dev-server → apps/studio}/use-undo-stack.tsx +5 -6
  180. package/apps/studio/whats-new.json +139 -0
  181. package/apps/studio/whats-new.schema.json +70 -0
  182. package/apps/studio/whats-new.ts +87 -0
  183. package/cli/bin/maude.mjs +10 -0
  184. package/cli/commands/design.mjs +84 -10
  185. package/cli/commands/design.test.mjs +133 -1
  186. package/cli/commands/help.mjs +8 -2
  187. package/cli/commands/hub.mjs +3 -3
  188. package/cli/commands/hub.test.mjs +1 -1
  189. package/cli/commands/scenario-report.mjs +2 -9
  190. package/cli/lib/cache.mjs +1 -1
  191. package/cli/lib/config-lint.mjs +1 -1
  192. package/cli/lib/copy-tree.mjs +1 -1
  193. package/cli/lib/design-link.mjs +1 -1
  194. package/cli/lib/flow-design-integration.test.mjs +2 -2
  195. package/cli/lib/gitignore-block.mjs +1 -0
  196. package/cli/lib/gitignore-block.test.mjs +2 -2
  197. package/cli/lib/plugin-cli-reachability.test.mjs +8 -7
  198. package/cli/lib/preflight.mjs +1 -1
  199. package/cli/lib/stack-detect.mjs +1 -1
  200. package/package.json +16 -16
  201. package/plugins/design/templates/_shell.html +3 -3
  202. package/plugins/design/templates/brief-board.tsx.template +61 -0
  203. package/plugins/design/templates/canvas.tsx.template +1 -1
  204. package/plugins/design/templates/design-system-inspiration/SUB-AGENT-PROMPTS.md +18 -3
  205. package/plugins/design/templates/design-system-inspiration/core/config.json.tpl +1 -1
  206. package/plugins/design/templates/design-system-inspiration/core/preview/_motion-readme.md.tpl +1 -1
  207. package/plugins/flow/.claude-plugin/config.schema.json +16 -0
  208. package/plugins/design/dev-server/bin/server-up.sh +0 -135
  209. package/plugins/design/dev-server/dist/client.bundle.js +0 -20692
  210. package/plugins/design/dev-server/dist/comment-mount.js +0 -1924
  211. package/plugins/design/dev-server/dist/runtime/lib0_decoding.js +0 -620
  212. package/plugins/design/dev-server/dist/runtime/lib0_encoding.js +0 -604
  213. package/plugins/design/dev-server/dist/runtime/motion.js +0 -4944
  214. package/plugins/design/dev-server/dist/runtime/motion_react.js +0 -10056
  215. package/plugins/design/dev-server/dist/runtime/pixi-js.js +0 -53104
  216. package/plugins/design/dev-server/dist/runtime/react-dom.js +0 -231
  217. package/plugins/design/dev-server/dist/runtime/react-dom_client.js +0 -10357
  218. package/plugins/design/dev-server/dist/runtime/react.js +0 -535
  219. package/plugins/design/dev-server/dist/runtime/react_jsx-dev-runtime.js +0 -60
  220. package/plugins/design/dev-server/dist/runtime/react_jsx-runtime.js +0 -85
  221. package/plugins/design/dev-server/dist/runtime/y-protocols_awareness.js +0 -376
  222. package/plugins/design/dev-server/dist/runtime/y-protocols_sync.js +0 -100
  223. package/plugins/design/dev-server/dist/runtime/yjs.js +0 -6687
  224. package/plugins/design/dev-server/dist/styles.css +0 -2710
  225. package/{plugins/design/dev-server → apps/studio}/activity.ts +0 -0
  226. package/{plugins/design/dev-server → apps/studio}/bin/_enumerate-artboards-playwright.mjs +0 -0
  227. package/{plugins/design/dev-server → apps/studio}/bin/_html-playwright.mjs +0 -0
  228. package/{plugins/design/dev-server → apps/studio}/bin/_pdf-playwright.mjs +0 -0
  229. package/{plugins/design/dev-server → apps/studio}/bin/_png-playwright.mjs +0 -0
  230. package/{plugins/design/dev-server → apps/studio}/bin/_pptx-playwright.mjs +0 -0
  231. package/{plugins/design/dev-server → apps/studio}/bin/_pw-launch.mjs +0 -0
  232. package/{plugins/design/dev-server → apps/studio}/bin/_screenshot-playwright.mjs +0 -0
  233. package/{plugins/design/dev-server → apps/studio}/bin/_svg-optimize.mjs +0 -0
  234. package/{plugins/design/dev-server → apps/studio}/bin/_svg-playwright.mjs +0 -0
  235. package/{plugins/design/dev-server → apps/studio}/bin/asset-sweep.sh +0 -0
  236. package/{plugins/design/dev-server → apps/studio}/bin/bootstrap-check.sh +0 -0
  237. package/{plugins/design/dev-server → apps/studio}/bin/check-runtime-bundles.sh +0 -0
  238. package/{plugins/design/dev-server → apps/studio}/bin/draw-build.sh +0 -0
  239. package/{plugins/design/dev-server → apps/studio}/bin/handoff.sh +0 -0
  240. package/{plugins/design/dev-server → apps/studio}/bin/prep.sh +0 -0
  241. package/{plugins/design/dev-server → apps/studio}/bin/slug.sh +0 -0
  242. package/{plugins/design/dev-server → apps/studio}/bin/smoke.sh +0 -0
  243. package/{plugins/design/dev-server → apps/studio}/bin/svg-optimize.sh +0 -0
  244. package/{plugins/design/dev-server → apps/studio}/boot-self-heal.ts +0 -0
  245. package/{plugins/design/dev-server → apps/studio}/canvas-build.ts +0 -0
  246. package/{plugins/design/dev-server → apps/studio}/canvas-edit.ts +0 -0
  247. package/{plugins/design/dev-server → apps/studio}/canvas-header.ts +0 -0
  248. package/{plugins/design/dev-server → apps/studio}/canvas-meta.schema.json +0 -0
  249. package/{plugins/design/dev-server → apps/studio}/canvas-pipeline.ts +0 -0
  250. package/{plugins/design/dev-server → apps/studio}/client/hmr.mjs +0 -0
  251. package/{plugins/design/dev-server → apps/studio}/client/iframe-lazy.mjs +0 -0
  252. package/{plugins/design/dev-server → apps/studio}/client/styles/0-reset.css +0 -0
  253. package/{plugins/design/dev-server → apps/studio}/client/styles/1-tokens.css +0 -0
  254. package/{plugins/design/dev-server → apps/studio}/client/styles/2-layout.css +0 -0
  255. package/{plugins/design/dev-server → apps/studio}/client/styles/5-utilities.css +0 -0
  256. package/{plugins/design/dev-server → apps/studio}/collab/ai-activity.ts +0 -0
  257. package/{plugins/design/dev-server → apps/studio}/collab/awareness-bridge.ts +1 -1
  258. package/{plugins/design/dev-server → apps/studio}/collab/git-lifecycle.ts +0 -0
  259. package/{plugins/design/dev-server → apps/studio}/collab/protocol.ts +0 -0
  260. package/{plugins/design/dev-server → apps/studio}/collab/registry.ts +0 -0
  261. package/{plugins/design/dev-server → apps/studio}/collab/room.ts +0 -0
  262. package/{plugins/design/dev-server → apps/studio}/config.schema.json +0 -0
  263. package/{plugins/design/dev-server → apps/studio}/context.ts +0 -0
  264. package/{plugins/design/dev-server → apps/studio}/dist/runtime/.min-sizes.json +0 -0
  265. package/{plugins/design/dev-server → apps/studio}/draw/test/brush.test.ts +0 -0
  266. package/{plugins/design/dev-server → apps/studio}/draw/test/composition.test.ts +0 -0
  267. package/{plugins/design/dev-server → apps/studio}/draw/test/geometry.test.ts +1 -1
  268. package/{plugins/design/dev-server → apps/studio}/draw/test/gradient.test.ts +0 -0
  269. package/{plugins/design/dev-server → apps/studio}/draw/test/optimize.test.ts +0 -0
  270. package/{plugins/design/dev-server → apps/studio}/draw/test/palette.test.ts +0 -0
  271. package/{plugins/design/dev-server → apps/studio}/draw/test/primitives.test.ts +1 -1
  272. package/{plugins/design/dev-server → apps/studio}/examples/README.md +0 -0
  273. package/{plugins/design/dev-server → apps/studio}/exporters/_browser-bundles.ts +0 -0
  274. package/{plugins/design/dev-server → apps/studio}/exporters/canva-handoff-prompt.ts +0 -0
  275. package/{plugins/design/dev-server → apps/studio}/exporters/canva.ts +0 -0
  276. package/{plugins/design/dev-server → apps/studio}/exporters/html.ts +1 -1
  277. package/{plugins/design/dev-server → apps/studio}/exporters/pdf.ts +1 -1
  278. package/{plugins/design/dev-server → apps/studio}/exporters/png.ts +1 -1
  279. package/{plugins/design/dev-server → apps/studio}/exporters/pptx.ts +1 -1
  280. package/{plugins/design/dev-server → apps/studio}/exporters/scope.ts +0 -0
  281. package/{plugins/design/dev-server → apps/studio}/exporters/svg.ts +1 -1
  282. package/{plugins/design/dev-server → apps/studio}/exporters/zip.ts +0 -0
  283. package/{plugins/design/dev-server → apps/studio}/fs-watch.ts +0 -0
  284. package/{plugins/design/dev-server → apps/studio}/handoff.ts +0 -0
  285. package/{plugins/design/dev-server → apps/studio}/history.ts +0 -0
  286. package/{plugins/design/dev-server → apps/studio}/hmr-broadcast.ts +0 -0
  287. package/{plugins/design/dev-server → apps/studio}/locator.ts +0 -0
  288. package/{plugins/design/dev-server → apps/studio}/mem.ts +0 -0
  289. package/{plugins/design/dev-server → apps/studio}/runtime-bundle.ts +0 -0
  290. package/{plugins/design/dev-server → apps/studio}/server.mjs +0 -0
  291. package/{plugins/design/dev-server → apps/studio}/sync/agent.ts +1 -1
  292. package/{plugins/design/dev-server → apps/studio}/sync/atomic-write.ts +0 -0
  293. package/{plugins/design/dev-server → apps/studio}/sync/codec.ts +0 -0
  294. package/{plugins/design/dev-server → apps/studio}/sync/connection-state.ts +0 -0
  295. package/{plugins/design/dev-server → apps/studio}/sync/echo-guard.ts +0 -0
  296. package/{plugins/design/dev-server → apps/studio}/sync/fs-mirror.ts +0 -0
  297. package/{plugins/design/dev-server → apps/studio}/sync/hubs-config.ts +0 -0
  298. package/{plugins/design/dev-server → apps/studio}/sync/migrate-seed.ts +1 -1
  299. package/{plugins/design/dev-server → apps/studio}/sync/origins.ts +0 -0
  300. package/{plugins/design/dev-server → apps/studio}/sync/projection.ts +3 -3
  301. package/{plugins/design/dev-server → apps/studio}/sync/status.ts +0 -0
  302. package/{plugins/design/dev-server → apps/studio}/sync/untrusted.ts +0 -0
  303. package/{plugins/design/dev-server → apps/studio}/test/_helpers.ts +0 -0
  304. package/{plugins/design/dev-server → apps/studio}/test/active-state.test.ts +0 -0
  305. package/{plugins/design/dev-server → apps/studio}/test/activity.test.ts +0 -0
  306. package/{plugins/design/dev-server → apps/studio}/test/annotation-strokes-command.test.ts +0 -0
  307. package/{plugins/design/dev-server → apps/studio}/test/annotations-draw-modifiers.test.ts +2 -2
  308. package/{plugins/design/dev-server → apps/studio}/test/artboard-activity-overlay.test.tsx +0 -0
  309. package/{plugins/design/dev-server → apps/studio}/test/binary-smoke.test.ts +0 -0
  310. package/{plugins/design/dev-server → apps/studio}/test/bundle-smoke.test.ts +0 -0
  311. package/{plugins/design/dev-server → apps/studio}/test/canvas-build.test.ts +0 -0
  312. package/{plugins/design/dev-server → apps/studio}/test/canvas-header.test.ts +1 -1
  313. package/{plugins/design/dev-server → apps/studio}/test/canvas-lib-motion.test.ts +0 -0
  314. package/{plugins/design/dev-server → apps/studio}/test/canvas-pipeline.test.ts +0 -0
  315. package/{plugins/design/dev-server → apps/studio}/test/canvas-route.test.ts +0 -0
  316. package/{plugins/design/dev-server → apps/studio}/test/collab-awareness-bridge.test.ts +0 -0
  317. package/{plugins/design/dev-server → apps/studio}/test/collab-loopback.test.ts +0 -0
  318. package/{plugins/design/dev-server → apps/studio}/test/collab-protocol.test.ts +2 -2
  319. package/{plugins/design/dev-server → apps/studio}/test/collab-reseed-guard.test.ts +0 -0
  320. package/{plugins/design/dev-server → apps/studio}/test/comment-mount.test.ts +0 -0
  321. package/{plugins/design/dev-server → apps/studio}/test/context-resolve-tokens.test.ts +0 -0
  322. package/{plugins/design/dev-server → apps/studio}/test/csp-canvas-shell.test.ts +0 -0
  323. package/{plugins/design/dev-server → apps/studio}/test/equal-spacing-detector.test.ts +0 -0
  324. package/{plugins/design/dev-server → apps/studio}/test/exporters/endpoint.test.ts +0 -0
  325. package/{plugins/design/dev-server → apps/studio}/test/exporters/html.test.ts +0 -0
  326. package/{plugins/design/dev-server → apps/studio}/test/exporters/pdf.test.ts +0 -0
  327. package/{plugins/design/dev-server → apps/studio}/test/exporters/png.test.ts +0 -0
  328. package/{plugins/design/dev-server → apps/studio}/test/exporters/pptx-deck.test.ts +0 -0
  329. package/{plugins/design/dev-server → apps/studio}/test/exporters/pptx.test.ts +0 -0
  330. package/{plugins/design/dev-server → apps/studio}/test/exporters/svg.test.ts +0 -0
  331. package/{plugins/design/dev-server → apps/studio}/test/fixtures/phase-20-annotations.svg +0 -0
  332. package/{plugins/design/dev-server → apps/studio}/test/fixtures/phase-21-annotations.svg +0 -0
  333. package/{plugins/design/dev-server → apps/studio}/test/fs-watch.test.ts +0 -0
  334. package/{plugins/design/dev-server → apps/studio}/test/handoff.test.ts +1 -1
  335. package/{plugins/design/dev-server → apps/studio}/test/history-rollback.test.ts +0 -0
  336. package/{plugins/design/dev-server → apps/studio}/test/hmr-classify.test.ts +0 -0
  337. package/{plugins/design/dev-server → apps/studio}/test/input-router.test.ts +2 -2
  338. package/{plugins/design/dev-server → apps/studio}/test/locator.test.ts +1 -1
  339. package/{plugins/design/dev-server → apps/studio}/test/marquee-overlay.test.ts +0 -0
  340. package/{plugins/design/dev-server → apps/studio}/test/move-artboards-command.test.ts +0 -0
  341. package/{plugins/design/dev-server → apps/studio}/test/participants-chrome.test.ts +0 -0
  342. package/{plugins/design/dev-server → apps/studio}/test/paths.test.ts +0 -0
  343. package/{plugins/design/dev-server → apps/studio}/test/runtime-bundle-error-mapping.test.ts +0 -0
  344. package/{plugins/design/dev-server → apps/studio}/test/server-lifecycle.test.ts +0 -0
  345. package/{plugins/design/dev-server → apps/studio}/test/shared-doc-foundation.test.ts +0 -0
  346. package/{plugins/design/dev-server → apps/studio}/test/sync-codec.test.ts +1 -1
  347. package/{plugins/design/dev-server → apps/studio}/test/sync-meta-codec.test.ts +1 -1
  348. package/{plugins/design/dev-server → apps/studio}/test/system-endpoint.test.ts +0 -0
  349. package/{plugins/design/dev-server → apps/studio}/test/tool-palette.test.tsx +0 -0
  350. package/{plugins/design/dev-server → apps/studio}/test/undo-stack.test.ts +2 -2
  351. package/{plugins/design/dev-server → apps/studio}/test/use-annotation-selection.test.tsx +0 -0
  352. package/{plugins/design/dev-server → apps/studio}/test/use-artboard-drag.test.ts +3 -3
  353. package/{plugins/design/dev-server → apps/studio}/test/use-canvas-activity.test.tsx +2 -2
  354. package/{plugins/design/dev-server → apps/studio}/test/use-collab.test.ts +0 -0
  355. package/{plugins/design/dev-server → apps/studio}/test/use-cursor-modifiers.test.ts +0 -0
  356. package/{plugins/design/dev-server → apps/studio}/test/use-keyboard-discipline.test.ts +0 -0
  357. package/{plugins/design/dev-server → apps/studio}/test/use-selection-set.test.tsx +1 -1
  358. package/{plugins/design/dev-server → apps/studio}/test/use-undo-stack.test.tsx +2 -2
  359. /package/{plugins/design/dev-server → apps/studio}/test/ws-handshake.test.ts +0 -0
  360. /package/{plugins/design/dev-server → apps/studio}/tsconfig.json +0 -0
  361. /package/{plugins/design/dev-server → apps/studio}/ws.ts +0 -0
@@ -1,4944 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, {
5
- get: all[name],
6
- enumerable: true,
7
- configurable: true,
8
- set: (newValue) => all[name] = () => newValue
9
- });
10
- };
11
-
12
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion/lib/index.mjs
13
- var exports_lib = {};
14
- __export(exports_lib, {
15
- wrap: () => wrap,
16
- transform: () => transform,
17
- time: () => time,
18
- sync: () => sync,
19
- steps: () => steps,
20
- stagger: () => stagger,
21
- spring: () => spring,
22
- scrollInfo: () => scrollInfo,
23
- scroll: () => scroll,
24
- reverseEasing: () => reverseEasing,
25
- progress: () => progress,
26
- pipe: () => pipe,
27
- noop: () => noop,
28
- motionValue: () => motionValue,
29
- mix: () => mix,
30
- mirrorEasing: () => mirrorEasing,
31
- keyframes: () => keyframes,
32
- isDragActive: () => isDragActive,
33
- invariant: () => invariant,
34
- interpolate: () => interpolate,
35
- inertia: () => inertia,
36
- inView: () => inView,
37
- frameSteps: () => frameSteps,
38
- frameData: () => frameData,
39
- frame: () => frame,
40
- easeOut: () => easeOut,
41
- easeInOut: () => easeInOut,
42
- easeIn: () => easeIn,
43
- distance2D: () => distance2D,
44
- distance: () => distance,
45
- delay: () => delayInSeconds,
46
- cubicBezier: () => cubicBezier,
47
- createScopedAnimate: () => createScopedAnimate,
48
- clamp: () => clamp,
49
- circOut: () => circOut,
50
- circInOut: () => circInOut,
51
- circIn: () => circIn,
52
- cancelSync: () => cancelSync,
53
- cancelFrame: () => cancelFrame,
54
- backOut: () => backOut,
55
- backInOut: () => backInOut,
56
- backIn: () => backIn,
57
- anticipate: () => anticipate,
58
- animateMini: () => animateMini,
59
- animate: () => animate,
60
- MotionValue: () => MotionValue
61
- });
62
-
63
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/gestures/drag/state/is-active.mjs
64
- var isDragging = {
65
- x: false,
66
- y: false
67
- };
68
- function isDragActive() {
69
- return isDragging.x || isDragging.y;
70
- }
71
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/noop.mjs
72
- var noop = (any) => any;
73
-
74
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/errors.mjs
75
- var warning = noop;
76
- var invariant = noop;
77
- if (false) {}
78
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/progress.mjs
79
- var progress = (from, to, value) => {
80
- const toFromDifference = to - from;
81
- return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;
82
- };
83
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/memo.mjs
84
- function memo(callback) {
85
- let result;
86
- return () => {
87
- if (result === undefined)
88
- result = callback();
89
- return result;
90
- };
91
- }
92
-
93
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/supports/scroll-timeline.mjs
94
- var supportsScrollTimeline = memo(() => window.ScrollTimeline !== undefined);
95
-
96
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/controls/BaseGroup.mjs
97
- class BaseGroupPlaybackControls {
98
- constructor(animations) {
99
- this.stop = () => this.runAll("stop");
100
- this.animations = animations.filter(Boolean);
101
- }
102
- get finished() {
103
- return Promise.all(this.animations.map((animation) => ("finished" in animation) ? animation.finished : animation));
104
- }
105
- getAll(propName) {
106
- return this.animations[0][propName];
107
- }
108
- setAll(propName, newValue) {
109
- for (let i = 0;i < this.animations.length; i++) {
110
- this.animations[i][propName] = newValue;
111
- }
112
- }
113
- attachTimeline(timeline, fallback) {
114
- const subscriptions = this.animations.map((animation) => {
115
- if (supportsScrollTimeline() && animation.attachTimeline) {
116
- return animation.attachTimeline(timeline);
117
- } else if (typeof fallback === "function") {
118
- return fallback(animation);
119
- }
120
- });
121
- return () => {
122
- subscriptions.forEach((cancel, i) => {
123
- cancel && cancel();
124
- this.animations[i].stop();
125
- });
126
- };
127
- }
128
- get time() {
129
- return this.getAll("time");
130
- }
131
- set time(time) {
132
- this.setAll("time", time);
133
- }
134
- get speed() {
135
- return this.getAll("speed");
136
- }
137
- set speed(speed) {
138
- this.setAll("speed", speed);
139
- }
140
- get startTime() {
141
- return this.getAll("startTime");
142
- }
143
- get duration() {
144
- let max = 0;
145
- for (let i = 0;i < this.animations.length; i++) {
146
- max = Math.max(max, this.animations[i].duration);
147
- }
148
- return max;
149
- }
150
- runAll(methodName) {
151
- this.animations.forEach((controls) => controls[methodName]());
152
- }
153
- flatten() {
154
- this.runAll("flatten");
155
- }
156
- play() {
157
- this.runAll("play");
158
- }
159
- pause() {
160
- this.runAll("pause");
161
- }
162
- cancel() {
163
- this.runAll("cancel");
164
- }
165
- complete() {
166
- this.runAll("complete");
167
- }
168
- }
169
-
170
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/controls/Group.mjs
171
- class GroupPlaybackControls extends BaseGroupPlaybackControls {
172
- then(onResolve, onReject) {
173
- return Promise.all(this.animations).then(onResolve).catch(onReject);
174
- }
175
- }
176
-
177
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-utils/dist/es/time-conversion.mjs
178
- var secondsToMilliseconds = (seconds) => seconds * 1000;
179
- var millisecondsToSeconds = (milliseconds) => milliseconds / 1000;
180
-
181
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs
182
- var maxGeneratorDuration = 20000;
183
- function calcGeneratorDuration(generator) {
184
- let duration = 0;
185
- const timeStep = 50;
186
- let state = generator.next(duration);
187
- while (!state.done && duration < maxGeneratorDuration) {
188
- duration += timeStep;
189
- state = generator.next(duration);
190
- }
191
- return duration >= maxGeneratorDuration ? Infinity : duration;
192
- }
193
-
194
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/waapi/utils/linear.mjs
195
- var generateLinearEasing = (easing, duration, resolution = 10) => {
196
- let points = "";
197
- const numPoints = Math.max(Math.round(duration / resolution), 2);
198
- for (let i = 0;i < numPoints; i++) {
199
- points += easing(progress(0, numPoints - 1, i)) + ", ";
200
- }
201
- return `linear(${points.substring(0, points.length - 2)})`;
202
- };
203
-
204
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/clamp.mjs
205
- var clamp = (min, max, v) => {
206
- if (v > max)
207
- return max;
208
- if (v < min)
209
- return min;
210
- return v;
211
- };
212
-
213
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/velocity-per-second.mjs
214
- function velocityPerSecond(velocity, frameDuration) {
215
- return frameDuration ? velocity * (1000 / frameDuration) : 0;
216
- }
217
-
218
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/utils/velocity.mjs
219
- var velocitySampleDuration = 5;
220
- function calcGeneratorVelocity(resolveValue, t, current) {
221
- const prevT = Math.max(t - velocitySampleDuration, 0);
222
- return velocityPerSecond(current - resolveValue(prevT), t - prevT);
223
- }
224
-
225
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/spring/defaults.mjs
226
- var springDefaults = {
227
- stiffness: 100,
228
- damping: 10,
229
- mass: 1,
230
- velocity: 0,
231
- duration: 800,
232
- bounce: 0.3,
233
- visualDuration: 0.3,
234
- restSpeed: {
235
- granular: 0.01,
236
- default: 2
237
- },
238
- restDelta: {
239
- granular: 0.005,
240
- default: 0.5
241
- },
242
- minDuration: 0.01,
243
- maxDuration: 10,
244
- minDamping: 0.05,
245
- maxDamping: 1
246
- };
247
-
248
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/spring/find.mjs
249
- var safeMin = 0.001;
250
- function findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, velocity = springDefaults.velocity, mass = springDefaults.mass }) {
251
- let envelope;
252
- let derivative;
253
- warning(duration <= secondsToMilliseconds(springDefaults.maxDuration), "Spring duration must be 10 seconds or less");
254
- let dampingRatio = 1 - bounce;
255
- dampingRatio = clamp(springDefaults.minDamping, springDefaults.maxDamping, dampingRatio);
256
- duration = clamp(springDefaults.minDuration, springDefaults.maxDuration, millisecondsToSeconds(duration));
257
- if (dampingRatio < 1) {
258
- envelope = (undampedFreq2) => {
259
- const exponentialDecay = undampedFreq2 * dampingRatio;
260
- const delta = exponentialDecay * duration;
261
- const a = exponentialDecay - velocity;
262
- const b = calcAngularFreq(undampedFreq2, dampingRatio);
263
- const c = Math.exp(-delta);
264
- return safeMin - a / b * c;
265
- };
266
- derivative = (undampedFreq2) => {
267
- const exponentialDecay = undampedFreq2 * dampingRatio;
268
- const delta = exponentialDecay * duration;
269
- const d = delta * velocity + velocity;
270
- const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;
271
- const f = Math.exp(-delta);
272
- const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);
273
- const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;
274
- return factor * ((d - e) * f) / g;
275
- };
276
- } else {
277
- envelope = (undampedFreq2) => {
278
- const a = Math.exp(-undampedFreq2 * duration);
279
- const b = (undampedFreq2 - velocity) * duration + 1;
280
- return -safeMin + a * b;
281
- };
282
- derivative = (undampedFreq2) => {
283
- const a = Math.exp(-undampedFreq2 * duration);
284
- const b = (velocity - undampedFreq2) * (duration * duration);
285
- return a * b;
286
- };
287
- }
288
- const initialGuess = 5 / duration;
289
- const undampedFreq = approximateRoot(envelope, derivative, initialGuess);
290
- duration = secondsToMilliseconds(duration);
291
- if (isNaN(undampedFreq)) {
292
- return {
293
- stiffness: springDefaults.stiffness,
294
- damping: springDefaults.damping,
295
- duration
296
- };
297
- } else {
298
- const stiffness = Math.pow(undampedFreq, 2) * mass;
299
- return {
300
- stiffness,
301
- damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),
302
- duration
303
- };
304
- }
305
- }
306
- var rootIterations = 12;
307
- function approximateRoot(envelope, derivative, initialGuess) {
308
- let result = initialGuess;
309
- for (let i = 1;i < rootIterations; i++) {
310
- result = result - envelope(result) / derivative(result);
311
- }
312
- return result;
313
- }
314
- function calcAngularFreq(undampedFreq, dampingRatio) {
315
- return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);
316
- }
317
-
318
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/spring/index.mjs
319
- var durationKeys = ["duration", "bounce"];
320
- var physicsKeys = ["stiffness", "damping", "mass"];
321
- function isSpringType(options, keys) {
322
- return keys.some((key) => options[key] !== undefined);
323
- }
324
- function getSpringOptions(options) {
325
- let springOptions = {
326
- velocity: springDefaults.velocity,
327
- stiffness: springDefaults.stiffness,
328
- damping: springDefaults.damping,
329
- mass: springDefaults.mass,
330
- isResolvedFromDuration: false,
331
- ...options
332
- };
333
- if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {
334
- if (options.visualDuration) {
335
- const visualDuration = options.visualDuration;
336
- const root = 2 * Math.PI / (visualDuration * 1.2);
337
- const stiffness = root * root;
338
- const damping = 2 * clamp(0.05, 1, 1 - (options.bounce || 0)) * Math.sqrt(stiffness);
339
- springOptions = {
340
- ...springOptions,
341
- mass: springDefaults.mass,
342
- stiffness,
343
- damping
344
- };
345
- } else {
346
- const derived = findSpring(options);
347
- springOptions = {
348
- ...springOptions,
349
- ...derived,
350
- mass: springDefaults.mass
351
- };
352
- springOptions.isResolvedFromDuration = true;
353
- }
354
- }
355
- return springOptions;
356
- }
357
- function spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) {
358
- const options = typeof optionsOrVisualDuration !== "object" ? {
359
- visualDuration: optionsOrVisualDuration,
360
- keyframes: [0, 1],
361
- bounce
362
- } : optionsOrVisualDuration;
363
- let { restSpeed, restDelta } = options;
364
- const origin = options.keyframes[0];
365
- const target = options.keyframes[options.keyframes.length - 1];
366
- const state = { done: false, value: origin };
367
- const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration } = getSpringOptions({
368
- ...options,
369
- velocity: -millisecondsToSeconds(options.velocity || 0)
370
- });
371
- const initialVelocity = velocity || 0;
372
- const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));
373
- const initialDelta = target - origin;
374
- const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));
375
- const isGranularScale = Math.abs(initialDelta) < 5;
376
- restSpeed || (restSpeed = isGranularScale ? springDefaults.restSpeed.granular : springDefaults.restSpeed.default);
377
- restDelta || (restDelta = isGranularScale ? springDefaults.restDelta.granular : springDefaults.restDelta.default);
378
- let resolveSpring;
379
- if (dampingRatio < 1) {
380
- const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);
381
- resolveSpring = (t) => {
382
- const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);
383
- return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));
384
- };
385
- } else if (dampingRatio === 1) {
386
- resolveSpring = (t) => target - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);
387
- } else {
388
- const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);
389
- resolveSpring = (t) => {
390
- const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);
391
- const freqForT = Math.min(dampedAngularFreq * t, 300);
392
- return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;
393
- };
394
- }
395
- const generator = {
396
- calculatedDuration: isResolvedFromDuration ? duration || null : null,
397
- next: (t) => {
398
- const current = resolveSpring(t);
399
- if (!isResolvedFromDuration) {
400
- let currentVelocity = 0;
401
- if (dampingRatio < 1) {
402
- currentVelocity = t === 0 ? secondsToMilliseconds(initialVelocity) : calcGeneratorVelocity(resolveSpring, t, current);
403
- }
404
- const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;
405
- const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;
406
- state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;
407
- } else {
408
- state.done = t >= duration;
409
- }
410
- state.value = state.done ? target : current;
411
- return state;
412
- },
413
- toString: () => {
414
- const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);
415
- const easing = generateLinearEasing((progress2) => generator.next(calculatedDuration * progress2).value, calculatedDuration, 30);
416
- return calculatedDuration + "ms " + easing;
417
- }
418
- };
419
- return generator;
420
- }
421
-
422
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs
423
- function createGeneratorEasing(options, scale = 100, createGenerator) {
424
- const generator = createGenerator({ ...options, keyframes: [0, scale] });
425
- const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);
426
- return {
427
- type: "keyframes",
428
- ease: (progress2) => {
429
- return generator.next(duration * progress2).value / scale;
430
- },
431
- duration: millisecondsToSeconds(duration)
432
- };
433
- }
434
-
435
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/generators/utils/is-generator.mjs
436
- function isGenerator(type) {
437
- return typeof type === "function";
438
- }
439
-
440
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/wrap.mjs
441
- var wrap = (min, max, v) => {
442
- const rangeSize = max - min;
443
- return ((v - min) % rangeSize + rangeSize) % rangeSize + min;
444
- };
445
-
446
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/utils/is-easing-array.mjs
447
- var isEasingArray = (ease) => {
448
- return Array.isArray(ease) && typeof ease[0] !== "number";
449
- };
450
-
451
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs
452
- function getEasingForSegment(easing, i) {
453
- return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;
454
- }
455
-
456
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/number.mjs
457
- var mixNumber = (from, to, progress2) => {
458
- return from + (to - from) * progress2;
459
- };
460
-
461
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/offsets/fill.mjs
462
- function fillOffset(offset, remaining) {
463
- const min = offset[offset.length - 1];
464
- for (let i = 1;i <= remaining; i++) {
465
- const offsetProgress = progress(0, remaining, i);
466
- offset.push(mixNumber(min, 1, offsetProgress));
467
- }
468
- }
469
-
470
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/offsets/default.mjs
471
- function defaultOffset(arr) {
472
- const offset = [0];
473
- fillOffset(offset, arr.length - 1);
474
- return offset;
475
- }
476
-
477
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/utils/is-motion-value.mjs
478
- var isMotionValue = (value) => Boolean(value && value.getVelocity);
479
-
480
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/resolve-elements.mjs
481
- function resolveElements(elementOrSelector, scope, selectorCache) {
482
- var _a;
483
- if (elementOrSelector instanceof Element) {
484
- return [elementOrSelector];
485
- } else if (typeof elementOrSelector === "string") {
486
- let root = document;
487
- if (scope) {
488
- root = scope.current;
489
- }
490
- const elements = (_a = selectorCache === null || selectorCache === undefined ? undefined : selectorCache[elementOrSelector]) !== null && _a !== undefined ? _a : root.querySelectorAll(elementOrSelector);
491
- return elements ? Array.from(elements) : [];
492
- }
493
- return Array.from(elementOrSelector);
494
- }
495
-
496
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs
497
- function isDOMKeyframes(keyframes) {
498
- return typeof keyframes === "object" && !Array.isArray(keyframes);
499
- }
500
-
501
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/resolve-subjects.mjs
502
- function resolveSubjects(subject, keyframes, scope, selectorCache) {
503
- if (typeof subject === "string" && isDOMKeyframes(keyframes)) {
504
- return resolveElements(subject, scope, selectorCache);
505
- } else if (subject instanceof NodeList) {
506
- return Array.from(subject);
507
- } else if (Array.isArray(subject)) {
508
- return subject;
509
- } else {
510
- return [subject];
511
- }
512
- }
513
-
514
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/calc-repeat-duration.mjs
515
- function calculateRepeatDuration(duration, repeat, _repeatDelay) {
516
- return duration * (repeat + 1);
517
- }
518
-
519
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs
520
- function calcNextTime(current, next, prev, labels) {
521
- var _a;
522
- if (typeof next === "number") {
523
- return next;
524
- } else if (next.startsWith("-") || next.startsWith("+")) {
525
- return Math.max(0, current + parseFloat(next));
526
- } else if (next === "<") {
527
- return prev;
528
- } else {
529
- return (_a = labels.get(next)) !== null && _a !== undefined ? _a : current;
530
- }
531
- }
532
-
533
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/array.mjs
534
- function addUniqueItem(arr, item) {
535
- if (arr.indexOf(item) === -1)
536
- arr.push(item);
537
- }
538
- function removeItem(arr, item) {
539
- const index = arr.indexOf(item);
540
- if (index > -1)
541
- arr.splice(index, 1);
542
- }
543
-
544
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/edit.mjs
545
- function eraseKeyframes(sequence, startTime, endTime) {
546
- for (let i = 0;i < sequence.length; i++) {
547
- const keyframe = sequence[i];
548
- if (keyframe.at > startTime && keyframe.at < endTime) {
549
- removeItem(sequence, keyframe);
550
- i--;
551
- }
552
- }
553
- }
554
- function addKeyframes(sequence, keyframes, easing, offset, startTime, endTime) {
555
- eraseKeyframes(sequence, startTime, endTime);
556
- for (let i = 0;i < keyframes.length; i++) {
557
- sequence.push({
558
- value: keyframes[i],
559
- at: mixNumber(startTime, endTime, offset[i]),
560
- easing: getEasingForSegment(easing, i)
561
- });
562
- }
563
- }
564
-
565
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/normalize-times.mjs
566
- function normalizeTimes(times, repeat) {
567
- for (let i = 0;i < times.length; i++) {
568
- times[i] = times[i] / (repeat + 1);
569
- }
570
- }
571
-
572
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/utils/sort.mjs
573
- function compareByTime(a, b) {
574
- if (a.at === b.at) {
575
- if (a.value === null)
576
- return 1;
577
- if (b.value === null)
578
- return -1;
579
- return 0;
580
- } else {
581
- return a.at - b.at;
582
- }
583
- }
584
-
585
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/sequence/create.mjs
586
- var defaultSegmentEasing = "easeInOut";
587
- var MAX_REPEAT = 20;
588
- function createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope, generators) {
589
- const defaultDuration = defaultTransition.duration || 0.3;
590
- const animationDefinitions = new Map;
591
- const sequences = new Map;
592
- const elementCache = {};
593
- const timeLabels = new Map;
594
- let prevTime = 0;
595
- let currentTime = 0;
596
- let totalDuration = 0;
597
- for (let i = 0;i < sequence.length; i++) {
598
- const segment = sequence[i];
599
- if (typeof segment === "string") {
600
- timeLabels.set(segment, currentTime);
601
- continue;
602
- } else if (!Array.isArray(segment)) {
603
- timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));
604
- continue;
605
- }
606
- let [subject, keyframes, transition = {}] = segment;
607
- if (transition.at !== undefined) {
608
- currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);
609
- }
610
- let maxDuration = 0;
611
- const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numSubjects = 0) => {
612
- const valueKeyframesAsList = keyframesAsList(valueKeyframes);
613
- const { delay = 0, times = defaultOffset(valueKeyframesAsList), type = "keyframes", repeat, repeatType, repeatDelay = 0, ...remainingTransition } = valueTransition;
614
- let { ease = defaultTransition.ease || "easeOut", duration } = valueTransition;
615
- const calculatedDelay = typeof delay === "function" ? delay(elementIndex, numSubjects) : delay;
616
- const numKeyframes = valueKeyframesAsList.length;
617
- const createGenerator = isGenerator(type) ? type : generators === null || generators === undefined ? undefined : generators[type];
618
- if (numKeyframes <= 2 && createGenerator) {
619
- let absoluteDelta = 100;
620
- if (numKeyframes === 2 && isNumberKeyframesArray(valueKeyframesAsList)) {
621
- const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];
622
- absoluteDelta = Math.abs(delta);
623
- }
624
- const springTransition = { ...remainingTransition };
625
- if (duration !== undefined) {
626
- springTransition.duration = secondsToMilliseconds(duration);
627
- }
628
- const springEasing = createGeneratorEasing(springTransition, absoluteDelta, createGenerator);
629
- ease = springEasing.ease;
630
- duration = springEasing.duration;
631
- }
632
- duration !== null && duration !== undefined || (duration = defaultDuration);
633
- const startTime = currentTime + calculatedDelay;
634
- if (times.length === 1 && times[0] === 0) {
635
- times[1] = 1;
636
- }
637
- const remainder = times.length - valueKeyframesAsList.length;
638
- remainder > 0 && fillOffset(times, remainder);
639
- valueKeyframesAsList.length === 1 && valueKeyframesAsList.unshift(null);
640
- if (repeat) {
641
- invariant(repeat < MAX_REPEAT, "Repeat count too high, must be less than 20");
642
- duration = calculateRepeatDuration(duration, repeat);
643
- const originalKeyframes = [...valueKeyframesAsList];
644
- const originalTimes = [...times];
645
- ease = Array.isArray(ease) ? [...ease] : [ease];
646
- const originalEase = [...ease];
647
- for (let repeatIndex = 0;repeatIndex < repeat; repeatIndex++) {
648
- valueKeyframesAsList.push(...originalKeyframes);
649
- for (let keyframeIndex = 0;keyframeIndex < originalKeyframes.length; keyframeIndex++) {
650
- times.push(originalTimes[keyframeIndex] + (repeatIndex + 1));
651
- ease.push(keyframeIndex === 0 ? "linear" : getEasingForSegment(originalEase, keyframeIndex - 1));
652
- }
653
- }
654
- normalizeTimes(times, repeat);
655
- }
656
- const targetTime = startTime + duration;
657
- addKeyframes(valueSequence, valueKeyframesAsList, ease, times, startTime, targetTime);
658
- maxDuration = Math.max(calculatedDelay + duration, maxDuration);
659
- totalDuration = Math.max(targetTime, totalDuration);
660
- };
661
- if (isMotionValue(subject)) {
662
- const subjectSequence = getSubjectSequence(subject, sequences);
663
- resolveValueSequence(keyframes, transition, getValueSequence("default", subjectSequence));
664
- } else {
665
- const subjects = resolveSubjects(subject, keyframes, scope, elementCache);
666
- const numSubjects = subjects.length;
667
- for (let subjectIndex = 0;subjectIndex < numSubjects; subjectIndex++) {
668
- keyframes = keyframes;
669
- transition = transition;
670
- const thisSubject = subjects[subjectIndex];
671
- const subjectSequence = getSubjectSequence(thisSubject, sequences);
672
- for (const key in keyframes) {
673
- resolveValueSequence(keyframes[key], getValueTransition(transition, key), getValueSequence(key, subjectSequence), subjectIndex, numSubjects);
674
- }
675
- }
676
- }
677
- prevTime = currentTime;
678
- currentTime += maxDuration;
679
- }
680
- sequences.forEach((valueSequences, element) => {
681
- for (const key in valueSequences) {
682
- const valueSequence = valueSequences[key];
683
- valueSequence.sort(compareByTime);
684
- const keyframes = [];
685
- const valueOffset = [];
686
- const valueEasing = [];
687
- for (let i = 0;i < valueSequence.length; i++) {
688
- const { at, value, easing } = valueSequence[i];
689
- keyframes.push(value);
690
- valueOffset.push(progress(0, totalDuration, at));
691
- valueEasing.push(easing || "easeOut");
692
- }
693
- if (valueOffset[0] !== 0) {
694
- valueOffset.unshift(0);
695
- keyframes.unshift(keyframes[0]);
696
- valueEasing.unshift(defaultSegmentEasing);
697
- }
698
- if (valueOffset[valueOffset.length - 1] !== 1) {
699
- valueOffset.push(1);
700
- keyframes.push(null);
701
- }
702
- if (!animationDefinitions.has(element)) {
703
- animationDefinitions.set(element, {
704
- keyframes: {},
705
- transition: {}
706
- });
707
- }
708
- const definition = animationDefinitions.get(element);
709
- definition.keyframes[key] = keyframes;
710
- definition.transition[key] = {
711
- ...defaultTransition,
712
- duration: totalDuration,
713
- ease: valueEasing,
714
- times: valueOffset,
715
- ...sequenceTransition
716
- };
717
- }
718
- });
719
- return animationDefinitions;
720
- }
721
- function getSubjectSequence(subject, sequences) {
722
- !sequences.has(subject) && sequences.set(subject, {});
723
- return sequences.get(subject);
724
- }
725
- function getValueSequence(name, sequences) {
726
- if (!sequences[name])
727
- sequences[name] = [];
728
- return sequences[name];
729
- }
730
- function keyframesAsList(keyframes) {
731
- return Array.isArray(keyframes) ? keyframes : [keyframes];
732
- }
733
- function getValueTransition(transition, key) {
734
- return transition && transition[key] ? {
735
- ...transition,
736
- ...transition[key]
737
- } : { ...transition };
738
- }
739
- var isNumber = (keyframe) => typeof keyframe === "number";
740
- var isNumberKeyframesArray = (keyframes) => keyframes.every(isNumber);
741
-
742
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/store.mjs
743
- var visualElementStore = new WeakMap;
744
-
745
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/utils/get-value-transition.mjs
746
- function getValueTransition2(transition, key) {
747
- return transition ? transition[key] || transition["default"] || transition : undefined;
748
- }
749
-
750
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/keys-transform.mjs
751
- var transformPropOrder = [
752
- "transformPerspective",
753
- "x",
754
- "y",
755
- "z",
756
- "translateX",
757
- "translateY",
758
- "translateZ",
759
- "scale",
760
- "scaleX",
761
- "scaleY",
762
- "rotate",
763
- "rotateX",
764
- "rotateY",
765
- "rotateZ",
766
- "skew",
767
- "skewX",
768
- "skewY"
769
- ];
770
- var transformProps = new Set(transformPropOrder);
771
-
772
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/keys-position.mjs
773
- var positionalKeys = new Set([
774
- "width",
775
- "height",
776
- "top",
777
- "left",
778
- "right",
779
- "bottom",
780
- ...transformPropOrder
781
- ]);
782
-
783
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs
784
- var isKeyframesTarget = (v) => {
785
- return Array.isArray(v);
786
- };
787
-
788
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/resolve-value.mjs
789
- var resolveFinalValueInKeyframes = (v) => {
790
- return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;
791
- };
792
-
793
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/GlobalConfig.mjs
794
- var MotionGlobalConfig = {
795
- skipAnimations: false,
796
- useManualTiming: false
797
- };
798
-
799
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/render-step.mjs
800
- function createRenderStep(runNextFrame) {
801
- let thisFrame = new Set;
802
- let nextFrame = new Set;
803
- let isProcessing = false;
804
- let flushNextFrame = false;
805
- const toKeepAlive = new WeakSet;
806
- let latestFrameData = {
807
- delta: 0,
808
- timestamp: 0,
809
- isProcessing: false
810
- };
811
- function triggerCallback(callback) {
812
- if (toKeepAlive.has(callback)) {
813
- step.schedule(callback);
814
- runNextFrame();
815
- }
816
- callback(latestFrameData);
817
- }
818
- const step = {
819
- schedule: (callback, keepAlive = false, immediate = false) => {
820
- const addToCurrentFrame = immediate && isProcessing;
821
- const queue = addToCurrentFrame ? thisFrame : nextFrame;
822
- if (keepAlive)
823
- toKeepAlive.add(callback);
824
- if (!queue.has(callback))
825
- queue.add(callback);
826
- return callback;
827
- },
828
- cancel: (callback) => {
829
- nextFrame.delete(callback);
830
- toKeepAlive.delete(callback);
831
- },
832
- process: (frameData) => {
833
- latestFrameData = frameData;
834
- if (isProcessing) {
835
- flushNextFrame = true;
836
- return;
837
- }
838
- isProcessing = true;
839
- [thisFrame, nextFrame] = [nextFrame, thisFrame];
840
- thisFrame.forEach(triggerCallback);
841
- thisFrame.clear();
842
- isProcessing = false;
843
- if (flushNextFrame) {
844
- flushNextFrame = false;
845
- step.process(frameData);
846
- }
847
- }
848
- };
849
- return step;
850
- }
851
-
852
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/batcher.mjs
853
- var stepsOrder = [
854
- "read",
855
- "resolveKeyframes",
856
- "update",
857
- "preRender",
858
- "render",
859
- "postRender"
860
- ];
861
- var maxElapsed = 40;
862
- function createRenderBatcher(scheduleNextBatch, allowKeepAlive) {
863
- let runNextFrame = false;
864
- let useDefaultElapsed = true;
865
- const state = {
866
- delta: 0,
867
- timestamp: 0,
868
- isProcessing: false
869
- };
870
- const flagRunNextFrame = () => runNextFrame = true;
871
- const steps = stepsOrder.reduce((acc, key) => {
872
- acc[key] = createRenderStep(flagRunNextFrame);
873
- return acc;
874
- }, {});
875
- const { read, resolveKeyframes, update, preRender, render, postRender } = steps;
876
- const processBatch = () => {
877
- const timestamp = MotionGlobalConfig.useManualTiming ? state.timestamp : performance.now();
878
- runNextFrame = false;
879
- state.delta = useDefaultElapsed ? 1000 / 60 : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);
880
- state.timestamp = timestamp;
881
- state.isProcessing = true;
882
- read.process(state);
883
- resolveKeyframes.process(state);
884
- update.process(state);
885
- preRender.process(state);
886
- render.process(state);
887
- postRender.process(state);
888
- state.isProcessing = false;
889
- if (runNextFrame && allowKeepAlive) {
890
- useDefaultElapsed = false;
891
- scheduleNextBatch(processBatch);
892
- }
893
- };
894
- const wake = () => {
895
- runNextFrame = true;
896
- useDefaultElapsed = true;
897
- if (!state.isProcessing) {
898
- scheduleNextBatch(processBatch);
899
- }
900
- };
901
- const schedule = stepsOrder.reduce((acc, key) => {
902
- const step = steps[key];
903
- acc[key] = (process, keepAlive = false, immediate = false) => {
904
- if (!runNextFrame)
905
- wake();
906
- return step.schedule(process, keepAlive, immediate);
907
- };
908
- return acc;
909
- }, {});
910
- const cancel = (process) => {
911
- for (let i = 0;i < stepsOrder.length; i++) {
912
- steps[stepsOrder[i]].cancel(process);
913
- }
914
- };
915
- return { schedule, cancel, state, steps };
916
- }
917
-
918
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/frame.mjs
919
- var { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps } = createRenderBatcher(typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : noop, true);
920
-
921
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/sync-time.mjs
922
- var now;
923
- function clearTime() {
924
- now = undefined;
925
- }
926
- var time = {
927
- now: () => {
928
- if (now === undefined) {
929
- time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming ? frameData.timestamp : performance.now());
930
- }
931
- return now;
932
- },
933
- set: (newTime) => {
934
- now = newTime;
935
- queueMicrotask(clearTime);
936
- }
937
- };
938
-
939
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/subscription-manager.mjs
940
- class SubscriptionManager {
941
- constructor() {
942
- this.subscriptions = [];
943
- }
944
- add(handler) {
945
- addUniqueItem(this.subscriptions, handler);
946
- return () => removeItem(this.subscriptions, handler);
947
- }
948
- notify(a, b, c) {
949
- const numSubscriptions = this.subscriptions.length;
950
- if (!numSubscriptions)
951
- return;
952
- if (numSubscriptions === 1) {
953
- this.subscriptions[0](a, b, c);
954
- } else {
955
- for (let i = 0;i < numSubscriptions; i++) {
956
- const handler = this.subscriptions[i];
957
- handler && handler(a, b, c);
958
- }
959
- }
960
- }
961
- getSize() {
962
- return this.subscriptions.length;
963
- }
964
- clear() {
965
- this.subscriptions.length = 0;
966
- }
967
- }
968
-
969
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/warn-once.mjs
970
- var warned = new Set;
971
-
972
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/index.mjs
973
- var MAX_VELOCITY_DELTA = 30;
974
- var isFloat = (value) => {
975
- return !isNaN(parseFloat(value));
976
- };
977
- var collectMotionValues = {
978
- current: undefined
979
- };
980
-
981
- class MotionValue {
982
- constructor(init, options = {}) {
983
- this.version = "11.18.2";
984
- this.canTrackVelocity = null;
985
- this.events = {};
986
- this.updateAndNotify = (v, render = true) => {
987
- const currentTime = time.now();
988
- if (this.updatedAt !== currentTime) {
989
- this.setPrevFrameValue();
990
- }
991
- this.prev = this.current;
992
- this.setCurrent(v);
993
- if (this.current !== this.prev && this.events.change) {
994
- this.events.change.notify(this.current);
995
- }
996
- if (render && this.events.renderRequest) {
997
- this.events.renderRequest.notify(this.current);
998
- }
999
- };
1000
- this.hasAnimated = false;
1001
- this.setCurrent(init);
1002
- this.owner = options.owner;
1003
- }
1004
- setCurrent(current) {
1005
- this.current = current;
1006
- this.updatedAt = time.now();
1007
- if (this.canTrackVelocity === null && current !== undefined) {
1008
- this.canTrackVelocity = isFloat(this.current);
1009
- }
1010
- }
1011
- setPrevFrameValue(prevFrameValue = this.current) {
1012
- this.prevFrameValue = prevFrameValue;
1013
- this.prevUpdatedAt = this.updatedAt;
1014
- }
1015
- onChange(subscription) {
1016
- if (false) {}
1017
- return this.on("change", subscription);
1018
- }
1019
- on(eventName, callback) {
1020
- if (!this.events[eventName]) {
1021
- this.events[eventName] = new SubscriptionManager;
1022
- }
1023
- const unsubscribe = this.events[eventName].add(callback);
1024
- if (eventName === "change") {
1025
- return () => {
1026
- unsubscribe();
1027
- frame.read(() => {
1028
- if (!this.events.change.getSize()) {
1029
- this.stop();
1030
- }
1031
- });
1032
- };
1033
- }
1034
- return unsubscribe;
1035
- }
1036
- clearListeners() {
1037
- for (const eventManagers in this.events) {
1038
- this.events[eventManagers].clear();
1039
- }
1040
- }
1041
- attach(passiveEffect, stopPassiveEffect) {
1042
- this.passiveEffect = passiveEffect;
1043
- this.stopPassiveEffect = stopPassiveEffect;
1044
- }
1045
- set(v, render = true) {
1046
- if (!render || !this.passiveEffect) {
1047
- this.updateAndNotify(v, render);
1048
- } else {
1049
- this.passiveEffect(v, this.updateAndNotify);
1050
- }
1051
- }
1052
- setWithVelocity(prev, current, delta) {
1053
- this.set(current);
1054
- this.prev = undefined;
1055
- this.prevFrameValue = prev;
1056
- this.prevUpdatedAt = this.updatedAt - delta;
1057
- }
1058
- jump(v, endAnimation = true) {
1059
- this.updateAndNotify(v);
1060
- this.prev = v;
1061
- this.prevUpdatedAt = this.prevFrameValue = undefined;
1062
- endAnimation && this.stop();
1063
- if (this.stopPassiveEffect)
1064
- this.stopPassiveEffect();
1065
- }
1066
- get() {
1067
- if (collectMotionValues.current) {
1068
- collectMotionValues.current.push(this);
1069
- }
1070
- return this.current;
1071
- }
1072
- getPrevious() {
1073
- return this.prev;
1074
- }
1075
- getVelocity() {
1076
- const currentTime = time.now();
1077
- if (!this.canTrackVelocity || this.prevFrameValue === undefined || currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {
1078
- return 0;
1079
- }
1080
- const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);
1081
- return velocityPerSecond(parseFloat(this.current) - parseFloat(this.prevFrameValue), delta);
1082
- }
1083
- start(startAnimation) {
1084
- this.stop();
1085
- return new Promise((resolve) => {
1086
- this.hasAnimated = true;
1087
- this.animation = startAnimation(resolve);
1088
- if (this.events.animationStart) {
1089
- this.events.animationStart.notify();
1090
- }
1091
- }).then(() => {
1092
- if (this.events.animationComplete) {
1093
- this.events.animationComplete.notify();
1094
- }
1095
- this.clearAnimation();
1096
- });
1097
- }
1098
- stop() {
1099
- if (this.animation) {
1100
- this.animation.stop();
1101
- if (this.events.animationCancel) {
1102
- this.events.animationCancel.notify();
1103
- }
1104
- }
1105
- this.clearAnimation();
1106
- }
1107
- isAnimating() {
1108
- return !!this.animation;
1109
- }
1110
- clearAnimation() {
1111
- delete this.animation;
1112
- }
1113
- destroy() {
1114
- this.clearListeners();
1115
- this.stop();
1116
- if (this.stopPassiveEffect) {
1117
- this.stopPassiveEffect();
1118
- }
1119
- }
1120
- }
1121
- function motionValue(init, options) {
1122
- return new MotionValue(init, options);
1123
- }
1124
-
1125
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/resolve-variants.mjs
1126
- function getValueState(visualElement) {
1127
- const state = [{}, {}];
1128
- visualElement === null || visualElement === undefined || visualElement.values.forEach((value, key) => {
1129
- state[0][key] = value.get();
1130
- state[1][key] = value.getVelocity();
1131
- });
1132
- return state;
1133
- }
1134
- function resolveVariantFromProps(props, definition, custom, visualElement) {
1135
- if (typeof definition === "function") {
1136
- const [current, velocity] = getValueState(visualElement);
1137
- definition = definition(custom !== undefined ? custom : props.custom, current, velocity);
1138
- }
1139
- if (typeof definition === "string") {
1140
- definition = props.variants && props.variants[definition];
1141
- }
1142
- if (typeof definition === "function") {
1143
- const [current, velocity] = getValueState(visualElement);
1144
- definition = definition(custom !== undefined ? custom : props.custom, current, velocity);
1145
- }
1146
- return definition;
1147
- }
1148
-
1149
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs
1150
- function resolveVariant(visualElement, definition, custom) {
1151
- const props = visualElement.getProps();
1152
- return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);
1153
- }
1154
-
1155
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/setters.mjs
1156
- function setMotionValue(visualElement, key, value) {
1157
- if (visualElement.hasValue(key)) {
1158
- visualElement.getValue(key).set(value);
1159
- } else {
1160
- visualElement.addValue(key, motionValue(value));
1161
- }
1162
- }
1163
- function setTarget(visualElement, definition) {
1164
- const resolved = resolveVariant(visualElement, definition);
1165
- let { transitionEnd = {}, transition = {}, ...target } = resolved || {};
1166
- target = { ...target, ...transitionEnd };
1167
- for (const key in target) {
1168
- const value = resolveFinalValueInKeyframes(target[key]);
1169
- setMotionValue(visualElement, key, value);
1170
- }
1171
- }
1172
-
1173
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/use-will-change/is.mjs
1174
- function isWillChangeMotionValue(value) {
1175
- return Boolean(isMotionValue(value) && value.add);
1176
- }
1177
-
1178
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/use-will-change/add-will-change.mjs
1179
- function addValueToWillChange(visualElement, key) {
1180
- const willChange = visualElement.getValue("willChange");
1181
- if (isWillChangeMotionValue(willChange)) {
1182
- return willChange.add(key);
1183
- }
1184
- }
1185
-
1186
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs
1187
- var camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, "$1-$2").toLowerCase();
1188
-
1189
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/optimized-appear/data-id.mjs
1190
- var optimizedAppearDataId = "framerAppearId";
1191
- var optimizedAppearDataAttribute = "data-" + camelToDash(optimizedAppearDataId);
1192
-
1193
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs
1194
- function getOptimisedAppearId(visualElement) {
1195
- return visualElement.props[optimizedAppearDataAttribute];
1196
- }
1197
-
1198
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/use-instant-transition-state.mjs
1199
- var instantAnimationState = {
1200
- current: false
1201
- };
1202
-
1203
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/waapi/utils/attach-timeline.mjs
1204
- function attachTimeline(animation, timeline) {
1205
- animation.timeline = timeline;
1206
- animation.onfinish = null;
1207
- }
1208
-
1209
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/is-bezier-definition.mjs
1210
- var isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === "number";
1211
-
1212
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/supports/flags.mjs
1213
- var supportsFlags = {
1214
- linearEasing: undefined
1215
- };
1216
-
1217
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/supports/memo.mjs
1218
- function memoSupports(callback, supportsFlag) {
1219
- const memoized = memo(callback);
1220
- return () => {
1221
- var _a;
1222
- return (_a = supportsFlags[supportsFlag]) !== null && _a !== undefined ? _a : memoized();
1223
- };
1224
- }
1225
-
1226
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/utils/supports/linear-easing.mjs
1227
- var supportsLinearEasing = /* @__PURE__ */ memoSupports(() => {
1228
- try {
1229
- document.createElement("div").animate({ opacity: 0 }, { easing: "linear(0, 1)" });
1230
- } catch (e) {
1231
- return false;
1232
- }
1233
- return true;
1234
- }, "linearEasing");
1235
-
1236
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/waapi/utils/easing.mjs
1237
- function isWaapiSupportedEasing(easing) {
1238
- return Boolean(typeof easing === "function" && supportsLinearEasing() || !easing || typeof easing === "string" && ((easing in supportedWaapiEasing) || supportsLinearEasing()) || isBezierDefinition(easing) || Array.isArray(easing) && easing.every(isWaapiSupportedEasing));
1239
- }
1240
- var cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;
1241
- var supportedWaapiEasing = {
1242
- linear: "linear",
1243
- ease: "ease",
1244
- easeIn: "ease-in",
1245
- easeOut: "ease-out",
1246
- easeInOut: "ease-in-out",
1247
- circIn: /* @__PURE__ */ cubicBezierAsString([0, 0.65, 0.55, 1]),
1248
- circOut: /* @__PURE__ */ cubicBezierAsString([0.55, 0, 1, 0.45]),
1249
- backIn: /* @__PURE__ */ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),
1250
- backOut: /* @__PURE__ */ cubicBezierAsString([0.33, 1.53, 0.69, 0.99])
1251
- };
1252
- function mapEasingToNativeEasing(easing, duration) {
1253
- if (!easing) {
1254
- return;
1255
- } else if (typeof easing === "function" && supportsLinearEasing()) {
1256
- return generateLinearEasing(easing, duration);
1257
- } else if (isBezierDefinition(easing)) {
1258
- return cubicBezierAsString(easing);
1259
- } else if (Array.isArray(easing)) {
1260
- return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || supportedWaapiEasing.easeOut);
1261
- } else {
1262
- return supportedWaapiEasing[easing];
1263
- }
1264
- }
1265
-
1266
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/cubic-bezier.mjs
1267
- var calcBezier = (t, a1, a2) => (((1 - 3 * a2 + 3 * a1) * t + (3 * a2 - 6 * a1)) * t + 3 * a1) * t;
1268
- var subdivisionPrecision = 0.0000001;
1269
- var subdivisionMaxIterations = 12;
1270
- function binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {
1271
- let currentX;
1272
- let currentT;
1273
- let i = 0;
1274
- do {
1275
- currentT = lowerBound + (upperBound - lowerBound) / 2;
1276
- currentX = calcBezier(currentT, mX1, mX2) - x;
1277
- if (currentX > 0) {
1278
- upperBound = currentT;
1279
- } else {
1280
- lowerBound = currentT;
1281
- }
1282
- } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);
1283
- return currentT;
1284
- }
1285
- function cubicBezier(mX1, mY1, mX2, mY2) {
1286
- if (mX1 === mY1 && mX2 === mY2)
1287
- return noop;
1288
- const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);
1289
- return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);
1290
- }
1291
-
1292
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/modifiers/mirror.mjs
1293
- var mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;
1294
-
1295
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/modifiers/reverse.mjs
1296
- var reverseEasing = (easing) => (p) => 1 - easing(1 - p);
1297
-
1298
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/back.mjs
1299
- var backOut = /* @__PURE__ */ cubicBezier(0.33, 1.53, 0.69, 0.99);
1300
- var backIn = /* @__PURE__ */ reverseEasing(backOut);
1301
- var backInOut = /* @__PURE__ */ mirrorEasing(backIn);
1302
-
1303
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/anticipate.mjs
1304
- var anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));
1305
-
1306
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/circ.mjs
1307
- var circIn = (p) => 1 - Math.sin(Math.acos(p));
1308
- var circOut = reverseEasing(circIn);
1309
- var circInOut = mirrorEasing(circIn);
1310
-
1311
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/is-zero-value-string.mjs
1312
- var isZeroValueString = (v) => /^0[^.\s]+$/u.test(v);
1313
-
1314
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-none.mjs
1315
- function isNone(value) {
1316
- if (typeof value === "number") {
1317
- return value === 0;
1318
- } else if (value !== null) {
1319
- return value === "none" || value === "0" || isZeroValueString(value);
1320
- } else {
1321
- return true;
1322
- }
1323
- }
1324
-
1325
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/numbers/index.mjs
1326
- var number = {
1327
- test: (v) => typeof v === "number",
1328
- parse: parseFloat,
1329
- transform: (v) => v
1330
- };
1331
- var alpha = {
1332
- ...number,
1333
- transform: (v) => clamp(0, 1, v)
1334
- };
1335
- var scale = {
1336
- ...number,
1337
- default: 1
1338
- };
1339
-
1340
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/sanitize.mjs
1341
- var sanitize = (v) => Math.round(v * 1e5) / 1e5;
1342
-
1343
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/float-regex.mjs
1344
- var floatRegex = /-?(?:\d+(?:\.\d+)?|\.\d+)/gu;
1345
-
1346
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/is-nullish.mjs
1347
- function isNullish(v) {
1348
- return v == null;
1349
- }
1350
-
1351
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/single-color-regex.mjs
1352
- var singleColorRegex = /^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu;
1353
-
1354
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/utils.mjs
1355
- var isColorString = (type, testProp) => (v) => {
1356
- return Boolean(typeof v === "string" && singleColorRegex.test(v) && v.startsWith(type) || testProp && !isNullish(v) && Object.prototype.hasOwnProperty.call(v, testProp));
1357
- };
1358
- var splitColor = (aName, bName, cName) => (v) => {
1359
- if (typeof v !== "string")
1360
- return v;
1361
- const [a, b, c, alpha2] = v.match(floatRegex);
1362
- return {
1363
- [aName]: parseFloat(a),
1364
- [bName]: parseFloat(b),
1365
- [cName]: parseFloat(c),
1366
- alpha: alpha2 !== undefined ? parseFloat(alpha2) : 1
1367
- };
1368
- };
1369
-
1370
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/rgba.mjs
1371
- var clampRgbUnit = (v) => clamp(0, 255, v);
1372
- var rgbUnit = {
1373
- ...number,
1374
- transform: (v) => Math.round(clampRgbUnit(v))
1375
- };
1376
- var rgba = {
1377
- test: /* @__PURE__ */ isColorString("rgb", "red"),
1378
- parse: /* @__PURE__ */ splitColor("red", "green", "blue"),
1379
- transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => "rgba(" + rgbUnit.transform(red) + ", " + rgbUnit.transform(green) + ", " + rgbUnit.transform(blue) + ", " + sanitize(alpha.transform(alpha$1)) + ")"
1380
- };
1381
-
1382
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/hex.mjs
1383
- function parseHex(v) {
1384
- let r = "";
1385
- let g = "";
1386
- let b = "";
1387
- let a = "";
1388
- if (v.length > 5) {
1389
- r = v.substring(1, 3);
1390
- g = v.substring(3, 5);
1391
- b = v.substring(5, 7);
1392
- a = v.substring(7, 9);
1393
- } else {
1394
- r = v.substring(1, 2);
1395
- g = v.substring(2, 3);
1396
- b = v.substring(3, 4);
1397
- a = v.substring(4, 5);
1398
- r += r;
1399
- g += g;
1400
- b += b;
1401
- a += a;
1402
- }
1403
- return {
1404
- red: parseInt(r, 16),
1405
- green: parseInt(g, 16),
1406
- blue: parseInt(b, 16),
1407
- alpha: a ? parseInt(a, 16) / 255 : 1
1408
- };
1409
- }
1410
- var hex = {
1411
- test: /* @__PURE__ */ isColorString("#"),
1412
- parse: parseHex,
1413
- transform: rgba.transform
1414
- };
1415
-
1416
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/numbers/units.mjs
1417
- var createUnitType = (unit) => ({
1418
- test: (v) => typeof v === "string" && v.endsWith(unit) && v.split(" ").length === 1,
1419
- parse: parseFloat,
1420
- transform: (v) => `${v}${unit}`
1421
- });
1422
- var degrees = /* @__PURE__ */ createUnitType("deg");
1423
- var percent = /* @__PURE__ */ createUnitType("%");
1424
- var px = /* @__PURE__ */ createUnitType("px");
1425
- var vh = /* @__PURE__ */ createUnitType("vh");
1426
- var vw = /* @__PURE__ */ createUnitType("vw");
1427
- var progressPercentage = {
1428
- ...percent,
1429
- parse: (v) => percent.parse(v) / 100,
1430
- transform: (v) => percent.transform(v * 100)
1431
- };
1432
-
1433
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/hsla.mjs
1434
- var hsla = {
1435
- test: /* @__PURE__ */ isColorString("hsl", "hue"),
1436
- parse: /* @__PURE__ */ splitColor("hue", "saturation", "lightness"),
1437
- transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {
1438
- return "hsla(" + Math.round(hue) + ", " + percent.transform(sanitize(saturation)) + ", " + percent.transform(sanitize(lightness)) + ", " + sanitize(alpha.transform(alpha$1)) + ")";
1439
- }
1440
- };
1441
-
1442
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/color/index.mjs
1443
- var color = {
1444
- test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),
1445
- parse: (v) => {
1446
- if (rgba.test(v)) {
1447
- return rgba.parse(v);
1448
- } else if (hsla.test(v)) {
1449
- return hsla.parse(v);
1450
- } else {
1451
- return hex.parse(v);
1452
- }
1453
- },
1454
- transform: (v) => {
1455
- return typeof v === "string" ? v : v.hasOwnProperty("red") ? rgba.transform(v) : hsla.transform(v);
1456
- }
1457
- };
1458
-
1459
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/utils/color-regex.mjs
1460
- var colorRegex = /(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;
1461
-
1462
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/complex/index.mjs
1463
- function test(v) {
1464
- var _a, _b;
1465
- return isNaN(v) && typeof v === "string" && (((_a = v.match(floatRegex)) === null || _a === undefined ? undefined : _a.length) || 0) + (((_b = v.match(colorRegex)) === null || _b === undefined ? undefined : _b.length) || 0) > 0;
1466
- }
1467
- var NUMBER_TOKEN = "number";
1468
- var COLOR_TOKEN = "color";
1469
- var VAR_TOKEN = "var";
1470
- var VAR_FUNCTION_TOKEN = "var(";
1471
- var SPLIT_TOKEN = "${}";
1472
- var complexRegex = /var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;
1473
- function analyseComplexValue(value) {
1474
- const originalValue = value.toString();
1475
- const values = [];
1476
- const indexes = {
1477
- color: [],
1478
- number: [],
1479
- var: []
1480
- };
1481
- const types = [];
1482
- let i = 0;
1483
- const tokenised = originalValue.replace(complexRegex, (parsedValue) => {
1484
- if (color.test(parsedValue)) {
1485
- indexes.color.push(i);
1486
- types.push(COLOR_TOKEN);
1487
- values.push(color.parse(parsedValue));
1488
- } else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {
1489
- indexes.var.push(i);
1490
- types.push(VAR_TOKEN);
1491
- values.push(parsedValue);
1492
- } else {
1493
- indexes.number.push(i);
1494
- types.push(NUMBER_TOKEN);
1495
- values.push(parseFloat(parsedValue));
1496
- }
1497
- ++i;
1498
- return SPLIT_TOKEN;
1499
- });
1500
- const split = tokenised.split(SPLIT_TOKEN);
1501
- return { values, split, indexes, types };
1502
- }
1503
- function parseComplexValue(v) {
1504
- return analyseComplexValue(v).values;
1505
- }
1506
- function createTransformer(source) {
1507
- const { split, types } = analyseComplexValue(source);
1508
- const numSections = split.length;
1509
- return (v) => {
1510
- let output = "";
1511
- for (let i = 0;i < numSections; i++) {
1512
- output += split[i];
1513
- if (v[i] !== undefined) {
1514
- const type = types[i];
1515
- if (type === NUMBER_TOKEN) {
1516
- output += sanitize(v[i]);
1517
- } else if (type === COLOR_TOKEN) {
1518
- output += color.transform(v[i]);
1519
- } else {
1520
- output += v[i];
1521
- }
1522
- }
1523
- }
1524
- return output;
1525
- };
1526
- }
1527
- var convertNumbersToZero = (v) => typeof v === "number" ? 0 : v;
1528
- function getAnimatableNone(v) {
1529
- const parsed = parseComplexValue(v);
1530
- const transformer = createTransformer(v);
1531
- return transformer(parsed.map(convertNumbersToZero));
1532
- }
1533
- var complex = {
1534
- test,
1535
- parse: parseComplexValue,
1536
- createTransformer,
1537
- getAnimatableNone
1538
- };
1539
-
1540
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/value/types/complex/filter.mjs
1541
- var maxDefaults = new Set(["brightness", "contrast", "saturate", "opacity"]);
1542
- function applyDefaultFilter(v) {
1543
- const [name, value] = v.slice(0, -1).split("(");
1544
- if (name === "drop-shadow")
1545
- return v;
1546
- const [number2] = value.match(floatRegex) || [];
1547
- if (!number2)
1548
- return v;
1549
- const unit = value.replace(number2, "");
1550
- let defaultValue = maxDefaults.has(name) ? 1 : 0;
1551
- if (number2 !== value)
1552
- defaultValue *= 100;
1553
- return name + "(" + defaultValue + unit + ")";
1554
- }
1555
- var functionRegex = /\b([a-z-]*)\(.*?\)/gu;
1556
- var filter = {
1557
- ...complex,
1558
- getAnimatableNone: (v) => {
1559
- const functions = v.match(functionRegex);
1560
- return functions ? functions.map(applyDefaultFilter).join(" ") : v;
1561
- }
1562
- };
1563
-
1564
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/number-browser.mjs
1565
- var browserNumberValueTypes = {
1566
- borderWidth: px,
1567
- borderTopWidth: px,
1568
- borderRightWidth: px,
1569
- borderBottomWidth: px,
1570
- borderLeftWidth: px,
1571
- borderRadius: px,
1572
- radius: px,
1573
- borderTopLeftRadius: px,
1574
- borderTopRightRadius: px,
1575
- borderBottomRightRadius: px,
1576
- borderBottomLeftRadius: px,
1577
- width: px,
1578
- maxWidth: px,
1579
- height: px,
1580
- maxHeight: px,
1581
- top: px,
1582
- right: px,
1583
- bottom: px,
1584
- left: px,
1585
- padding: px,
1586
- paddingTop: px,
1587
- paddingRight: px,
1588
- paddingBottom: px,
1589
- paddingLeft: px,
1590
- margin: px,
1591
- marginTop: px,
1592
- marginRight: px,
1593
- marginBottom: px,
1594
- marginLeft: px,
1595
- backgroundPositionX: px,
1596
- backgroundPositionY: px
1597
- };
1598
-
1599
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/transform.mjs
1600
- var transformValueTypes = {
1601
- rotate: degrees,
1602
- rotateX: degrees,
1603
- rotateY: degrees,
1604
- rotateZ: degrees,
1605
- scale,
1606
- scaleX: scale,
1607
- scaleY: scale,
1608
- scaleZ: scale,
1609
- skew: degrees,
1610
- skewX: degrees,
1611
- skewY: degrees,
1612
- distance: px,
1613
- translateX: px,
1614
- translateY: px,
1615
- translateZ: px,
1616
- x: px,
1617
- y: px,
1618
- z: px,
1619
- perspective: px,
1620
- transformPerspective: px,
1621
- opacity: alpha,
1622
- originX: progressPercentage,
1623
- originY: progressPercentage,
1624
- originZ: px
1625
- };
1626
-
1627
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/type-int.mjs
1628
- var int = {
1629
- ...number,
1630
- transform: Math.round
1631
- };
1632
-
1633
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/number.mjs
1634
- var numberValueTypes = {
1635
- ...browserNumberValueTypes,
1636
- ...transformValueTypes,
1637
- zIndex: int,
1638
- size: px,
1639
- fillOpacity: alpha,
1640
- strokeOpacity: alpha,
1641
- numOctaves: int
1642
- };
1643
-
1644
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/defaults.mjs
1645
- var defaultValueTypes = {
1646
- ...numberValueTypes,
1647
- color,
1648
- backgroundColor: color,
1649
- outlineColor: color,
1650
- fill: color,
1651
- stroke: color,
1652
- borderColor: color,
1653
- borderTopColor: color,
1654
- borderRightColor: color,
1655
- borderBottomColor: color,
1656
- borderLeftColor: color,
1657
- filter,
1658
- WebkitFilter: filter
1659
- };
1660
- var getDefaultValueType = (key) => defaultValueTypes[key];
1661
-
1662
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs
1663
- function getAnimatableNone2(key, value) {
1664
- let defaultValueType = getDefaultValueType(key);
1665
- if (defaultValueType !== filter)
1666
- defaultValueType = complex;
1667
- return defaultValueType.getAnimatableNone ? defaultValueType.getAnimatableNone(value) : undefined;
1668
- }
1669
-
1670
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs
1671
- var invalidTemplates = new Set(["auto", "none", "0"]);
1672
- function makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {
1673
- let i = 0;
1674
- let animatableTemplate = undefined;
1675
- while (i < unresolvedKeyframes.length && !animatableTemplate) {
1676
- const keyframe = unresolvedKeyframes[i];
1677
- if (typeof keyframe === "string" && !invalidTemplates.has(keyframe) && analyseComplexValue(keyframe).values.length) {
1678
- animatableTemplate = unresolvedKeyframes[i];
1679
- }
1680
- i++;
1681
- }
1682
- if (animatableTemplate && name) {
1683
- for (const noneIndex of noneKeyframeIndexes) {
1684
- unresolvedKeyframes[noneIndex] = getAnimatableNone2(name, animatableTemplate);
1685
- }
1686
- }
1687
- }
1688
-
1689
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs
1690
- var isNumOrPxType = (v) => v === number || v === px;
1691
- var getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(", ")[pos]);
1692
- var getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {
1693
- if (transform === "none" || !transform)
1694
- return 0;
1695
- const matrix3d = transform.match(/^matrix3d\((.+)\)$/u);
1696
- if (matrix3d) {
1697
- return getPosFromMatrix(matrix3d[1], pos3);
1698
- } else {
1699
- const matrix = transform.match(/^matrix\((.+)\)$/u);
1700
- if (matrix) {
1701
- return getPosFromMatrix(matrix[1], pos2);
1702
- } else {
1703
- return 0;
1704
- }
1705
- }
1706
- };
1707
- var transformKeys = new Set(["x", "y", "z"]);
1708
- var nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));
1709
- function removeNonTranslationalTransform(visualElement) {
1710
- const removedTransforms = [];
1711
- nonTranslationalTransformKeys.forEach((key) => {
1712
- const value = visualElement.getValue(key);
1713
- if (value !== undefined) {
1714
- removedTransforms.push([key, value.get()]);
1715
- value.set(key.startsWith("scale") ? 1 : 0);
1716
- }
1717
- });
1718
- return removedTransforms;
1719
- }
1720
- var positionalValues = {
1721
- width: ({ x }, { paddingLeft = "0", paddingRight = "0" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),
1722
- height: ({ y }, { paddingTop = "0", paddingBottom = "0" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),
1723
- top: (_bbox, { top }) => parseFloat(top),
1724
- left: (_bbox, { left }) => parseFloat(left),
1725
- bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),
1726
- right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),
1727
- x: getTranslateFromMatrix(4, 13),
1728
- y: getTranslateFromMatrix(5, 14)
1729
- };
1730
- positionalValues.translateX = positionalValues.x;
1731
- positionalValues.translateY = positionalValues.y;
1732
-
1733
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/KeyframesResolver.mjs
1734
- var toResolve = new Set;
1735
- var isScheduled = false;
1736
- var anyNeedsMeasurement = false;
1737
- function measureAllKeyframes() {
1738
- if (anyNeedsMeasurement) {
1739
- const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);
1740
- const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));
1741
- const transformsToRestore = new Map;
1742
- elementsToMeasure.forEach((element) => {
1743
- const removedTransforms = removeNonTranslationalTransform(element);
1744
- if (!removedTransforms.length)
1745
- return;
1746
- transformsToRestore.set(element, removedTransforms);
1747
- element.render();
1748
- });
1749
- resolversToMeasure.forEach((resolver) => resolver.measureInitialState());
1750
- elementsToMeasure.forEach((element) => {
1751
- element.render();
1752
- const restore = transformsToRestore.get(element);
1753
- if (restore) {
1754
- restore.forEach(([key, value]) => {
1755
- var _a;
1756
- (_a = element.getValue(key)) === null || _a === undefined || _a.set(value);
1757
- });
1758
- }
1759
- });
1760
- resolversToMeasure.forEach((resolver) => resolver.measureEndState());
1761
- resolversToMeasure.forEach((resolver) => {
1762
- if (resolver.suspendedScrollY !== undefined) {
1763
- window.scrollTo(0, resolver.suspendedScrollY);
1764
- }
1765
- });
1766
- }
1767
- anyNeedsMeasurement = false;
1768
- isScheduled = false;
1769
- toResolve.forEach((resolver) => resolver.complete());
1770
- toResolve.clear();
1771
- }
1772
- function readAllKeyframes() {
1773
- toResolve.forEach((resolver) => {
1774
- resolver.readKeyframes();
1775
- if (resolver.needsMeasurement) {
1776
- anyNeedsMeasurement = true;
1777
- }
1778
- });
1779
- }
1780
- function flushKeyframeResolvers() {
1781
- readAllKeyframes();
1782
- measureAllKeyframes();
1783
- }
1784
-
1785
- class KeyframeResolver {
1786
- constructor(unresolvedKeyframes, onComplete, name, motionValue2, element, isAsync = false) {
1787
- this.isComplete = false;
1788
- this.isAsync = false;
1789
- this.needsMeasurement = false;
1790
- this.isScheduled = false;
1791
- this.unresolvedKeyframes = [...unresolvedKeyframes];
1792
- this.onComplete = onComplete;
1793
- this.name = name;
1794
- this.motionValue = motionValue2;
1795
- this.element = element;
1796
- this.isAsync = isAsync;
1797
- }
1798
- scheduleResolve() {
1799
- this.isScheduled = true;
1800
- if (this.isAsync) {
1801
- toResolve.add(this);
1802
- if (!isScheduled) {
1803
- isScheduled = true;
1804
- frame.read(readAllKeyframes);
1805
- frame.resolveKeyframes(measureAllKeyframes);
1806
- }
1807
- } else {
1808
- this.readKeyframes();
1809
- this.complete();
1810
- }
1811
- }
1812
- readKeyframes() {
1813
- const { unresolvedKeyframes, name, element, motionValue: motionValue2 } = this;
1814
- for (let i = 0;i < unresolvedKeyframes.length; i++) {
1815
- if (unresolvedKeyframes[i] === null) {
1816
- if (i === 0) {
1817
- const currentValue = motionValue2 === null || motionValue2 === undefined ? undefined : motionValue2.get();
1818
- const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
1819
- if (currentValue !== undefined) {
1820
- unresolvedKeyframes[0] = currentValue;
1821
- } else if (element && name) {
1822
- const valueAsRead = element.readValue(name, finalKeyframe);
1823
- if (valueAsRead !== undefined && valueAsRead !== null) {
1824
- unresolvedKeyframes[0] = valueAsRead;
1825
- }
1826
- }
1827
- if (unresolvedKeyframes[0] === undefined) {
1828
- unresolvedKeyframes[0] = finalKeyframe;
1829
- }
1830
- if (motionValue2 && currentValue === undefined) {
1831
- motionValue2.set(unresolvedKeyframes[0]);
1832
- }
1833
- } else {
1834
- unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];
1835
- }
1836
- }
1837
- }
1838
- }
1839
- setFinalKeyframe() {}
1840
- measureInitialState() {}
1841
- renderEndStyles() {}
1842
- measureEndState() {}
1843
- complete() {
1844
- this.isComplete = true;
1845
- this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);
1846
- toResolve.delete(this);
1847
- }
1848
- cancel() {
1849
- if (!this.isComplete) {
1850
- this.isScheduled = false;
1851
- toResolve.delete(this);
1852
- }
1853
- }
1854
- resume() {
1855
- if (!this.isComplete)
1856
- this.scheduleResolve();
1857
- }
1858
- }
1859
-
1860
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/is-numerical-string.mjs
1861
- var isNumericalString = (v) => /^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(v);
1862
-
1863
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs
1864
- var checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token);
1865
- var isCSSVariableName = /* @__PURE__ */ checkStringStartsWith("--");
1866
- var startsAsVariableToken = /* @__PURE__ */ checkStringStartsWith("var(--");
1867
- var isCSSVariableToken = (value) => {
1868
- const startsWithToken = startsAsVariableToken(value);
1869
- if (!startsWithToken)
1870
- return false;
1871
- return singleCssVariableRegex.test(value.split("/*")[0].trim());
1872
- };
1873
- var singleCssVariableRegex = /var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;
1874
-
1875
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs
1876
- var splitCSSVariableRegex = /^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;
1877
- function parseCSSVariable(current) {
1878
- const match = splitCSSVariableRegex.exec(current);
1879
- if (!match)
1880
- return [,];
1881
- const [, token1, token2, fallback] = match;
1882
- return [`--${token1 !== null && token1 !== undefined ? token1 : token2}`, fallback];
1883
- }
1884
- var maxDepth = 4;
1885
- function getVariableValue(current, element, depth = 1) {
1886
- invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property "${current}". This may indicate a circular fallback dependency.`);
1887
- const [token, fallback] = parseCSSVariable(current);
1888
- if (!token)
1889
- return;
1890
- const resolved = window.getComputedStyle(element).getPropertyValue(token);
1891
- if (resolved) {
1892
- const trimmed = resolved.trim();
1893
- return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;
1894
- }
1895
- return isCSSVariableToken(fallback) ? getVariableValue(fallback, element, depth + 1) : fallback;
1896
- }
1897
-
1898
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/test.mjs
1899
- var testValueType = (v) => (type) => type.test(v);
1900
-
1901
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/type-auto.mjs
1902
- var auto = {
1903
- test: (v) => v === "auto",
1904
- parse: (v) => v
1905
- };
1906
-
1907
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/dimensions.mjs
1908
- var dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];
1909
- var findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));
1910
-
1911
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs
1912
- class DOMKeyframesResolver extends KeyframeResolver {
1913
- constructor(unresolvedKeyframes, onComplete, name, motionValue2, element) {
1914
- super(unresolvedKeyframes, onComplete, name, motionValue2, element, true);
1915
- }
1916
- readKeyframes() {
1917
- const { unresolvedKeyframes, element, name } = this;
1918
- if (!element || !element.current)
1919
- return;
1920
- super.readKeyframes();
1921
- for (let i = 0;i < unresolvedKeyframes.length; i++) {
1922
- let keyframe = unresolvedKeyframes[i];
1923
- if (typeof keyframe === "string") {
1924
- keyframe = keyframe.trim();
1925
- if (isCSSVariableToken(keyframe)) {
1926
- const resolved = getVariableValue(keyframe, element.current);
1927
- if (resolved !== undefined) {
1928
- unresolvedKeyframes[i] = resolved;
1929
- }
1930
- if (i === unresolvedKeyframes.length - 1) {
1931
- this.finalKeyframe = keyframe;
1932
- }
1933
- }
1934
- }
1935
- }
1936
- this.resolveNoneKeyframes();
1937
- if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {
1938
- return;
1939
- }
1940
- const [origin, target] = unresolvedKeyframes;
1941
- const originType = findDimensionValueType(origin);
1942
- const targetType = findDimensionValueType(target);
1943
- if (originType === targetType)
1944
- return;
1945
- if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {
1946
- for (let i = 0;i < unresolvedKeyframes.length; i++) {
1947
- const value = unresolvedKeyframes[i];
1948
- if (typeof value === "string") {
1949
- unresolvedKeyframes[i] = parseFloat(value);
1950
- }
1951
- }
1952
- } else {
1953
- this.needsMeasurement = true;
1954
- }
1955
- }
1956
- resolveNoneKeyframes() {
1957
- const { unresolvedKeyframes, name } = this;
1958
- const noneKeyframeIndexes = [];
1959
- for (let i = 0;i < unresolvedKeyframes.length; i++) {
1960
- if (isNone(unresolvedKeyframes[i])) {
1961
- noneKeyframeIndexes.push(i);
1962
- }
1963
- }
1964
- if (noneKeyframeIndexes.length) {
1965
- makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);
1966
- }
1967
- }
1968
- measureInitialState() {
1969
- const { element, unresolvedKeyframes, name } = this;
1970
- if (!element || !element.current)
1971
- return;
1972
- if (name === "height") {
1973
- this.suspendedScrollY = window.pageYOffset;
1974
- }
1975
- this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));
1976
- unresolvedKeyframes[0] = this.measuredOrigin;
1977
- const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
1978
- if (measureKeyframe !== undefined) {
1979
- element.getValue(name, measureKeyframe).jump(measureKeyframe, false);
1980
- }
1981
- }
1982
- measureEndState() {
1983
- var _a;
1984
- const { element, name, unresolvedKeyframes } = this;
1985
- if (!element || !element.current)
1986
- return;
1987
- const value = element.getValue(name);
1988
- value && value.jump(this.measuredOrigin, false);
1989
- const finalKeyframeIndex = unresolvedKeyframes.length - 1;
1990
- const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];
1991
- unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));
1992
- if (finalKeyframe !== null && this.finalKeyframe === undefined) {
1993
- this.finalKeyframe = finalKeyframe;
1994
- }
1995
- if ((_a = this.removedTransforms) === null || _a === undefined ? undefined : _a.length) {
1996
- this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {
1997
- element.getValue(unsetTransformName).set(unsetTransformValue);
1998
- });
1999
- }
2000
- this.resolveNoneKeyframes();
2001
- }
2002
- }
2003
-
2004
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-animatable.mjs
2005
- var isAnimatable = (value, name) => {
2006
- if (name === "zIndex")
2007
- return false;
2008
- if (typeof value === "number" || Array.isArray(value))
2009
- return true;
2010
- if (typeof value === "string" && (complex.test(value) || value === "0") && !value.startsWith("url(")) {
2011
- return true;
2012
- }
2013
- return false;
2014
- };
2015
-
2016
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/utils/can-animate.mjs
2017
- function hasKeyframesChanged(keyframes) {
2018
- const current = keyframes[0];
2019
- if (keyframes.length === 1)
2020
- return true;
2021
- for (let i = 0;i < keyframes.length; i++) {
2022
- if (keyframes[i] !== current)
2023
- return true;
2024
- }
2025
- }
2026
- function canAnimate(keyframes, name, type, velocity) {
2027
- const originKeyframe = keyframes[0];
2028
- if (originKeyframe === null)
2029
- return false;
2030
- if (name === "display" || name === "visibility")
2031
- return true;
2032
- const targetKeyframe = keyframes[keyframes.length - 1];
2033
- const isOriginAnimatable = isAnimatable(originKeyframe, name);
2034
- const isTargetAnimatable = isAnimatable(targetKeyframe, name);
2035
- warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from "${originKeyframe}" to "${targetKeyframe}". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \`style\` property.`);
2036
- if (!isOriginAnimatable || !isTargetAnimatable) {
2037
- return false;
2038
- }
2039
- return hasKeyframesChanged(keyframes) || (type === "spring" || isGenerator(type)) && velocity;
2040
- }
2041
-
2042
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs
2043
- var isNotNull = (value) => value !== null;
2044
- function getFinalKeyframe(keyframes, { repeat, repeatType = "loop" }, finalKeyframe) {
2045
- const resolvedKeyframes = keyframes.filter(isNotNull);
2046
- const index = repeat && repeatType !== "loop" && repeat % 2 === 1 ? 0 : resolvedKeyframes.length - 1;
2047
- return !index || finalKeyframe === undefined ? resolvedKeyframes[index] : finalKeyframe;
2048
- }
2049
-
2050
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/BaseAnimation.mjs
2051
- var MAX_RESOLVE_DELAY = 40;
2052
-
2053
- class BaseAnimation {
2054
- constructor({ autoplay = true, delay = 0, type = "keyframes", repeat = 0, repeatDelay = 0, repeatType = "loop", ...options }) {
2055
- this.isStopped = false;
2056
- this.hasAttemptedResolve = false;
2057
- this.createdAt = time.now();
2058
- this.options = {
2059
- autoplay,
2060
- delay,
2061
- type,
2062
- repeat,
2063
- repeatDelay,
2064
- repeatType,
2065
- ...options
2066
- };
2067
- this.updateFinishedPromise();
2068
- }
2069
- calcStartTime() {
2070
- if (!this.resolvedAt)
2071
- return this.createdAt;
2072
- return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY ? this.resolvedAt : this.createdAt;
2073
- }
2074
- get resolved() {
2075
- if (!this._resolved && !this.hasAttemptedResolve) {
2076
- flushKeyframeResolvers();
2077
- }
2078
- return this._resolved;
2079
- }
2080
- onKeyframesResolved(keyframes, finalKeyframe) {
2081
- this.resolvedAt = time.now();
2082
- this.hasAttemptedResolve = true;
2083
- const { name, type, velocity, delay, onComplete, onUpdate, isGenerator: isGenerator2 } = this.options;
2084
- if (!isGenerator2 && !canAnimate(keyframes, name, type, velocity)) {
2085
- if (instantAnimationState.current || !delay) {
2086
- onUpdate && onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));
2087
- onComplete && onComplete();
2088
- this.resolveFinishedPromise();
2089
- return;
2090
- } else {
2091
- this.options.duration = 0;
2092
- }
2093
- }
2094
- const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);
2095
- if (resolvedAnimation === false)
2096
- return;
2097
- this._resolved = {
2098
- keyframes,
2099
- finalKeyframe,
2100
- ...resolvedAnimation
2101
- };
2102
- this.onPostResolved();
2103
- }
2104
- onPostResolved() {}
2105
- then(resolve, reject) {
2106
- return this.currentFinishedPromise.then(resolve, reject);
2107
- }
2108
- flatten() {
2109
- this.options.type = "keyframes";
2110
- this.options.ease = "linear";
2111
- }
2112
- updateFinishedPromise() {
2113
- this.currentFinishedPromise = new Promise((resolve) => {
2114
- this.resolveFinishedPromise = resolve;
2115
- });
2116
- }
2117
- }
2118
-
2119
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/hsla-to-rgba.mjs
2120
- function hueToRgb(p, q, t) {
2121
- if (t < 0)
2122
- t += 1;
2123
- if (t > 1)
2124
- t -= 1;
2125
- if (t < 1 / 6)
2126
- return p + (q - p) * 6 * t;
2127
- if (t < 1 / 2)
2128
- return q;
2129
- if (t < 2 / 3)
2130
- return p + (q - p) * (2 / 3 - t) * 6;
2131
- return p;
2132
- }
2133
- function hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {
2134
- hue /= 360;
2135
- saturation /= 100;
2136
- lightness /= 100;
2137
- let red = 0;
2138
- let green = 0;
2139
- let blue = 0;
2140
- if (!saturation) {
2141
- red = green = blue = lightness;
2142
- } else {
2143
- const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;
2144
- const p = 2 * lightness - q;
2145
- red = hueToRgb(p, q, hue + 1 / 3);
2146
- green = hueToRgb(p, q, hue);
2147
- blue = hueToRgb(p, q, hue - 1 / 3);
2148
- }
2149
- return {
2150
- red: Math.round(red * 255),
2151
- green: Math.round(green * 255),
2152
- blue: Math.round(blue * 255),
2153
- alpha: alpha2
2154
- };
2155
- }
2156
-
2157
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/immediate.mjs
2158
- function mixImmediate(a, b) {
2159
- return (p) => p > 0 ? b : a;
2160
- }
2161
-
2162
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/color.mjs
2163
- var mixLinearColor = (from, to, v) => {
2164
- const fromExpo = from * from;
2165
- const expo = v * (to * to - fromExpo) + fromExpo;
2166
- return expo < 0 ? 0 : Math.sqrt(expo);
2167
- };
2168
- var colorTypes = [hex, rgba, hsla];
2169
- var getColorType = (v) => colorTypes.find((type) => type.test(v));
2170
- function asRGBA(color2) {
2171
- const type = getColorType(color2);
2172
- warning(Boolean(type), `'${color2}' is not an animatable color. Use the equivalent color code instead.`);
2173
- if (!Boolean(type))
2174
- return false;
2175
- let model = type.parse(color2);
2176
- if (type === hsla) {
2177
- model = hslaToRgba(model);
2178
- }
2179
- return model;
2180
- }
2181
- var mixColor = (from, to) => {
2182
- const fromRGBA = asRGBA(from);
2183
- const toRGBA = asRGBA(to);
2184
- if (!fromRGBA || !toRGBA) {
2185
- return mixImmediate(from, to);
2186
- }
2187
- const blended = { ...fromRGBA };
2188
- return (v) => {
2189
- blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);
2190
- blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);
2191
- blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);
2192
- blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);
2193
- return rgba.transform(blended);
2194
- };
2195
- };
2196
-
2197
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/pipe.mjs
2198
- var combineFunctions = (a, b) => (v) => b(a(v));
2199
- var pipe = (...transformers) => transformers.reduce(combineFunctions);
2200
-
2201
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/visibility.mjs
2202
- var invisibleValues = new Set(["none", "hidden"]);
2203
- function mixVisibility(origin, target) {
2204
- if (invisibleValues.has(origin)) {
2205
- return (p) => p <= 0 ? origin : target;
2206
- } else {
2207
- return (p) => p >= 1 ? target : origin;
2208
- }
2209
- }
2210
-
2211
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/complex.mjs
2212
- function mixNumber2(a, b) {
2213
- return (p) => mixNumber(a, b, p);
2214
- }
2215
- function getMixer(a) {
2216
- if (typeof a === "number") {
2217
- return mixNumber2;
2218
- } else if (typeof a === "string") {
2219
- return isCSSVariableToken(a) ? mixImmediate : color.test(a) ? mixColor : mixComplex;
2220
- } else if (Array.isArray(a)) {
2221
- return mixArray;
2222
- } else if (typeof a === "object") {
2223
- return color.test(a) ? mixColor : mixObject;
2224
- }
2225
- return mixImmediate;
2226
- }
2227
- function mixArray(a, b) {
2228
- const output = [...a];
2229
- const numValues = output.length;
2230
- const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));
2231
- return (p) => {
2232
- for (let i = 0;i < numValues; i++) {
2233
- output[i] = blendValue[i](p);
2234
- }
2235
- return output;
2236
- };
2237
- }
2238
- function mixObject(a, b) {
2239
- const output = { ...a, ...b };
2240
- const blendValue = {};
2241
- for (const key in output) {
2242
- if (a[key] !== undefined && b[key] !== undefined) {
2243
- blendValue[key] = getMixer(a[key])(a[key], b[key]);
2244
- }
2245
- }
2246
- return (v) => {
2247
- for (const key in blendValue) {
2248
- output[key] = blendValue[key](v);
2249
- }
2250
- return output;
2251
- };
2252
- }
2253
- function matchOrder(origin, target) {
2254
- var _a;
2255
- const orderedOrigin = [];
2256
- const pointers = { color: 0, var: 0, number: 0 };
2257
- for (let i = 0;i < target.values.length; i++) {
2258
- const type = target.types[i];
2259
- const originIndex = origin.indexes[type][pointers[type]];
2260
- const originValue = (_a = origin.values[originIndex]) !== null && _a !== undefined ? _a : 0;
2261
- orderedOrigin[i] = originValue;
2262
- pointers[type]++;
2263
- }
2264
- return orderedOrigin;
2265
- }
2266
- var mixComplex = (origin, target) => {
2267
- const template = complex.createTransformer(target);
2268
- const originStats = analyseComplexValue(origin);
2269
- const targetStats = analyseComplexValue(target);
2270
- const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length && originStats.indexes.color.length === targetStats.indexes.color.length && originStats.indexes.number.length >= targetStats.indexes.number.length;
2271
- if (canInterpolate) {
2272
- if (invisibleValues.has(origin) && !targetStats.values.length || invisibleValues.has(target) && !originStats.values.length) {
2273
- return mixVisibility(origin, target);
2274
- }
2275
- return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);
2276
- } else {
2277
- warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);
2278
- return mixImmediate(origin, target);
2279
- }
2280
- };
2281
-
2282
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/mix/index.mjs
2283
- function mix(from, to, p) {
2284
- if (typeof from === "number" && typeof to === "number" && typeof p === "number") {
2285
- return mixNumber(from, to, p);
2286
- }
2287
- const mixer = getMixer(from);
2288
- return mixer(from, to);
2289
- }
2290
-
2291
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/inertia.mjs
2292
- function inertia({ keyframes, velocity = 0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed }) {
2293
- const origin = keyframes[0];
2294
- const state = {
2295
- done: false,
2296
- value: origin
2297
- };
2298
- const isOutOfBounds = (v) => min !== undefined && v < min || max !== undefined && v > max;
2299
- const nearestBoundary = (v) => {
2300
- if (min === undefined)
2301
- return max;
2302
- if (max === undefined)
2303
- return min;
2304
- return Math.abs(min - v) < Math.abs(max - v) ? min : max;
2305
- };
2306
- let amplitude = power * velocity;
2307
- const ideal = origin + amplitude;
2308
- const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);
2309
- if (target !== ideal)
2310
- amplitude = target - origin;
2311
- const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);
2312
- const calcLatest = (t) => target + calcDelta(t);
2313
- const applyFriction = (t) => {
2314
- const delta = calcDelta(t);
2315
- const latest = calcLatest(t);
2316
- state.done = Math.abs(delta) <= restDelta;
2317
- state.value = state.done ? target : latest;
2318
- };
2319
- let timeReachedBoundary;
2320
- let spring$1;
2321
- const checkCatchBoundary = (t) => {
2322
- if (!isOutOfBounds(state.value))
2323
- return;
2324
- timeReachedBoundary = t;
2325
- spring$1 = spring({
2326
- keyframes: [state.value, nearestBoundary(state.value)],
2327
- velocity: calcGeneratorVelocity(calcLatest, t, state.value),
2328
- damping: bounceDamping,
2329
- stiffness: bounceStiffness,
2330
- restDelta,
2331
- restSpeed
2332
- });
2333
- };
2334
- checkCatchBoundary(0);
2335
- return {
2336
- calculatedDuration: null,
2337
- next: (t) => {
2338
- let hasUpdatedFrame = false;
2339
- if (!spring$1 && timeReachedBoundary === undefined) {
2340
- hasUpdatedFrame = true;
2341
- applyFriction(t);
2342
- checkCatchBoundary(t);
2343
- }
2344
- if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {
2345
- return spring$1.next(t - timeReachedBoundary);
2346
- } else {
2347
- !hasUpdatedFrame && applyFriction(t);
2348
- return state;
2349
- }
2350
- }
2351
- };
2352
- }
2353
-
2354
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/ease.mjs
2355
- var easeIn = /* @__PURE__ */ cubicBezier(0.42, 0, 1, 1);
2356
- var easeOut = /* @__PURE__ */ cubicBezier(0, 0, 0.58, 1);
2357
- var easeInOut = /* @__PURE__ */ cubicBezier(0.42, 0, 0.58, 1);
2358
-
2359
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/utils/map.mjs
2360
- var easingLookup = {
2361
- linear: noop,
2362
- easeIn,
2363
- easeInOut,
2364
- easeOut,
2365
- circIn,
2366
- circInOut,
2367
- circOut,
2368
- backIn,
2369
- backInOut,
2370
- backOut,
2371
- anticipate
2372
- };
2373
- var easingDefinitionToFunction = (definition) => {
2374
- if (isBezierDefinition(definition)) {
2375
- invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);
2376
- const [x1, y1, x2, y2] = definition;
2377
- return cubicBezier(x1, y1, x2, y2);
2378
- } else if (typeof definition === "string") {
2379
- invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);
2380
- return easingLookup[definition];
2381
- }
2382
- return definition;
2383
- };
2384
-
2385
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/interpolate.mjs
2386
- function createMixers(output, ease, customMixer) {
2387
- const mixers = [];
2388
- const mixerFactory = customMixer || mix;
2389
- const numMixers = output.length - 1;
2390
- for (let i = 0;i < numMixers; i++) {
2391
- let mixer = mixerFactory(output[i], output[i + 1]);
2392
- if (ease) {
2393
- const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;
2394
- mixer = pipe(easingFunction, mixer);
2395
- }
2396
- mixers.push(mixer);
2397
- }
2398
- return mixers;
2399
- }
2400
- function interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {
2401
- const inputLength = input.length;
2402
- invariant(inputLength === output.length, "Both input and output ranges must be the same length");
2403
- if (inputLength === 1)
2404
- return () => output[0];
2405
- if (inputLength === 2 && output[0] === output[1])
2406
- return () => output[1];
2407
- const isZeroDeltaRange = input[0] === input[1];
2408
- if (input[0] > input[inputLength - 1]) {
2409
- input = [...input].reverse();
2410
- output = [...output].reverse();
2411
- }
2412
- const mixers = createMixers(output, ease, mixer);
2413
- const numMixers = mixers.length;
2414
- const interpolator = (v) => {
2415
- if (isZeroDeltaRange && v < input[0])
2416
- return output[0];
2417
- let i = 0;
2418
- if (numMixers > 1) {
2419
- for (;i < input.length - 2; i++) {
2420
- if (v < input[i + 1])
2421
- break;
2422
- }
2423
- }
2424
- const progressInRange = progress(input[i], input[i + 1], v);
2425
- return mixers[i](progressInRange);
2426
- };
2427
- return isClamp ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v)) : interpolator;
2428
- }
2429
-
2430
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/offsets/time.mjs
2431
- function convertOffsetToTimes(offset, duration) {
2432
- return offset.map((o) => o * duration);
2433
- }
2434
-
2435
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/generators/keyframes.mjs
2436
- function defaultEasing(values, easing) {
2437
- return values.map(() => easing || easeInOut).splice(0, values.length - 1);
2438
- }
2439
- function keyframes({ duration = 300, keyframes: keyframeValues, times, ease = "easeInOut" }) {
2440
- const easingFunctions = isEasingArray(ease) ? ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease);
2441
- const state = {
2442
- done: false,
2443
- value: keyframeValues[0]
2444
- };
2445
- const absoluteTimes = convertOffsetToTimes(times && times.length === keyframeValues.length ? times : defaultOffset(keyframeValues), duration);
2446
- const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {
2447
- ease: Array.isArray(easingFunctions) ? easingFunctions : defaultEasing(keyframeValues, easingFunctions)
2448
- });
2449
- return {
2450
- calculatedDuration: duration,
2451
- next: (t) => {
2452
- state.value = mapTimeToKeyframe(t);
2453
- state.done = t >= duration;
2454
- return state;
2455
- }
2456
- };
2457
- }
2458
-
2459
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs
2460
- var frameloopDriver = (update) => {
2461
- const passTimestamp = ({ timestamp }) => update(timestamp);
2462
- return {
2463
- start: () => frame.update(passTimestamp, true),
2464
- stop: () => cancelFrame(passTimestamp),
2465
- now: () => frameData.isProcessing ? frameData.timestamp : time.now()
2466
- };
2467
- };
2468
-
2469
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs
2470
- var generators = {
2471
- decay: inertia,
2472
- inertia,
2473
- tween: keyframes,
2474
- keyframes,
2475
- spring
2476
- };
2477
- var percentToProgress = (percent2) => percent2 / 100;
2478
-
2479
- class MainThreadAnimation extends BaseAnimation {
2480
- constructor(options) {
2481
- super(options);
2482
- this.holdTime = null;
2483
- this.cancelTime = null;
2484
- this.currentTime = 0;
2485
- this.playbackSpeed = 1;
2486
- this.pendingPlayState = "running";
2487
- this.startTime = null;
2488
- this.state = "idle";
2489
- this.stop = () => {
2490
- this.resolver.cancel();
2491
- this.isStopped = true;
2492
- if (this.state === "idle")
2493
- return;
2494
- this.teardown();
2495
- const { onStop } = this.options;
2496
- onStop && onStop();
2497
- };
2498
- const { name, motionValue: motionValue2, element, keyframes: keyframes2 } = this.options;
2499
- const KeyframeResolver$1 = (element === null || element === undefined ? undefined : element.KeyframeResolver) || KeyframeResolver;
2500
- const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);
2501
- this.resolver = new KeyframeResolver$1(keyframes2, onResolved, name, motionValue2, element);
2502
- this.resolver.scheduleResolve();
2503
- }
2504
- flatten() {
2505
- super.flatten();
2506
- if (this._resolved) {
2507
- Object.assign(this._resolved, this.initPlayback(this._resolved.keyframes));
2508
- }
2509
- }
2510
- initPlayback(keyframes$1) {
2511
- const { type = "keyframes", repeat = 0, repeatDelay = 0, repeatType, velocity = 0 } = this.options;
2512
- const generatorFactory = isGenerator(type) ? type : generators[type] || keyframes;
2513
- let mapPercentToKeyframes;
2514
- let mirroredGenerator;
2515
- if (generatorFactory !== keyframes && typeof keyframes$1[0] !== "number") {
2516
- if (false) {}
2517
- mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));
2518
- keyframes$1 = [0, 100];
2519
- }
2520
- const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });
2521
- if (repeatType === "mirror") {
2522
- mirroredGenerator = generatorFactory({
2523
- ...this.options,
2524
- keyframes: [...keyframes$1].reverse(),
2525
- velocity: -velocity
2526
- });
2527
- }
2528
- if (generator.calculatedDuration === null) {
2529
- generator.calculatedDuration = calcGeneratorDuration(generator);
2530
- }
2531
- const { calculatedDuration } = generator;
2532
- const resolvedDuration = calculatedDuration + repeatDelay;
2533
- const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;
2534
- return {
2535
- generator,
2536
- mirroredGenerator,
2537
- mapPercentToKeyframes,
2538
- calculatedDuration,
2539
- resolvedDuration,
2540
- totalDuration
2541
- };
2542
- }
2543
- onPostResolved() {
2544
- const { autoplay = true } = this.options;
2545
- this.play();
2546
- if (this.pendingPlayState === "paused" || !autoplay) {
2547
- this.pause();
2548
- } else {
2549
- this.state = this.pendingPlayState;
2550
- }
2551
- }
2552
- tick(timestamp, sample = false) {
2553
- const { resolved } = this;
2554
- if (!resolved) {
2555
- const { keyframes: keyframes3 } = this.options;
2556
- return { done: true, value: keyframes3[keyframes3.length - 1] };
2557
- }
2558
- const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes: keyframes2, calculatedDuration, totalDuration, resolvedDuration } = resolved;
2559
- if (this.startTime === null)
2560
- return generator.next(0);
2561
- const { delay, repeat, repeatType, repeatDelay, onUpdate } = this.options;
2562
- if (this.speed > 0) {
2563
- this.startTime = Math.min(this.startTime, timestamp);
2564
- } else if (this.speed < 0) {
2565
- this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);
2566
- }
2567
- if (sample) {
2568
- this.currentTime = timestamp;
2569
- } else if (this.holdTime !== null) {
2570
- this.currentTime = this.holdTime;
2571
- } else {
2572
- this.currentTime = Math.round(timestamp - this.startTime) * this.speed;
2573
- }
2574
- const timeWithoutDelay = this.currentTime - delay * (this.speed >= 0 ? 1 : -1);
2575
- const isInDelayPhase = this.speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;
2576
- this.currentTime = Math.max(timeWithoutDelay, 0);
2577
- if (this.state === "finished" && this.holdTime === null) {
2578
- this.currentTime = totalDuration;
2579
- }
2580
- let elapsed = this.currentTime;
2581
- let frameGenerator = generator;
2582
- if (repeat) {
2583
- const progress2 = Math.min(this.currentTime, totalDuration) / resolvedDuration;
2584
- let currentIteration = Math.floor(progress2);
2585
- let iterationProgress = progress2 % 1;
2586
- if (!iterationProgress && progress2 >= 1) {
2587
- iterationProgress = 1;
2588
- }
2589
- iterationProgress === 1 && currentIteration--;
2590
- currentIteration = Math.min(currentIteration, repeat + 1);
2591
- const isOddIteration = Boolean(currentIteration % 2);
2592
- if (isOddIteration) {
2593
- if (repeatType === "reverse") {
2594
- iterationProgress = 1 - iterationProgress;
2595
- if (repeatDelay) {
2596
- iterationProgress -= repeatDelay / resolvedDuration;
2597
- }
2598
- } else if (repeatType === "mirror") {
2599
- frameGenerator = mirroredGenerator;
2600
- }
2601
- }
2602
- elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;
2603
- }
2604
- const state = isInDelayPhase ? { done: false, value: keyframes2[0] } : frameGenerator.next(elapsed);
2605
- if (mapPercentToKeyframes) {
2606
- state.value = mapPercentToKeyframes(state.value);
2607
- }
2608
- let { done } = state;
2609
- if (!isInDelayPhase && calculatedDuration !== null) {
2610
- done = this.speed >= 0 ? this.currentTime >= totalDuration : this.currentTime <= 0;
2611
- }
2612
- const isAnimationFinished = this.holdTime === null && (this.state === "finished" || this.state === "running" && done);
2613
- if (isAnimationFinished && finalKeyframe !== undefined) {
2614
- state.value = getFinalKeyframe(keyframes2, this.options, finalKeyframe);
2615
- }
2616
- if (onUpdate) {
2617
- onUpdate(state.value);
2618
- }
2619
- if (isAnimationFinished) {
2620
- this.finish();
2621
- }
2622
- return state;
2623
- }
2624
- get duration() {
2625
- const { resolved } = this;
2626
- return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;
2627
- }
2628
- get time() {
2629
- return millisecondsToSeconds(this.currentTime);
2630
- }
2631
- set time(newTime) {
2632
- newTime = secondsToMilliseconds(newTime);
2633
- this.currentTime = newTime;
2634
- if (this.holdTime !== null || this.speed === 0) {
2635
- this.holdTime = newTime;
2636
- } else if (this.driver) {
2637
- this.startTime = this.driver.now() - newTime / this.speed;
2638
- }
2639
- }
2640
- get speed() {
2641
- return this.playbackSpeed;
2642
- }
2643
- set speed(newSpeed) {
2644
- const hasChanged = this.playbackSpeed !== newSpeed;
2645
- this.playbackSpeed = newSpeed;
2646
- if (hasChanged) {
2647
- this.time = millisecondsToSeconds(this.currentTime);
2648
- }
2649
- }
2650
- play() {
2651
- if (!this.resolver.isScheduled) {
2652
- this.resolver.resume();
2653
- }
2654
- if (!this._resolved) {
2655
- this.pendingPlayState = "running";
2656
- return;
2657
- }
2658
- if (this.isStopped)
2659
- return;
2660
- const { driver = frameloopDriver, onPlay, startTime } = this.options;
2661
- if (!this.driver) {
2662
- this.driver = driver((timestamp) => this.tick(timestamp));
2663
- }
2664
- onPlay && onPlay();
2665
- const now2 = this.driver.now();
2666
- if (this.holdTime !== null) {
2667
- this.startTime = now2 - this.holdTime;
2668
- } else if (!this.startTime) {
2669
- this.startTime = startTime !== null && startTime !== undefined ? startTime : this.calcStartTime();
2670
- } else if (this.state === "finished") {
2671
- this.startTime = now2;
2672
- }
2673
- if (this.state === "finished") {
2674
- this.updateFinishedPromise();
2675
- }
2676
- this.cancelTime = this.startTime;
2677
- this.holdTime = null;
2678
- this.state = "running";
2679
- this.driver.start();
2680
- }
2681
- pause() {
2682
- var _a;
2683
- if (!this._resolved) {
2684
- this.pendingPlayState = "paused";
2685
- return;
2686
- }
2687
- this.state = "paused";
2688
- this.holdTime = (_a = this.currentTime) !== null && _a !== undefined ? _a : 0;
2689
- }
2690
- complete() {
2691
- if (this.state !== "running") {
2692
- this.play();
2693
- }
2694
- this.pendingPlayState = this.state = "finished";
2695
- this.holdTime = null;
2696
- }
2697
- finish() {
2698
- this.teardown();
2699
- this.state = "finished";
2700
- const { onComplete } = this.options;
2701
- onComplete && onComplete();
2702
- }
2703
- cancel() {
2704
- if (this.cancelTime !== null) {
2705
- this.tick(this.cancelTime);
2706
- }
2707
- this.teardown();
2708
- this.updateFinishedPromise();
2709
- }
2710
- teardown() {
2711
- this.state = "idle";
2712
- this.stopDriver();
2713
- this.resolveFinishedPromise();
2714
- this.updateFinishedPromise();
2715
- this.startTime = this.cancelTime = null;
2716
- this.resolver.cancel();
2717
- }
2718
- stopDriver() {
2719
- if (!this.driver)
2720
- return;
2721
- this.driver.stop();
2722
- this.driver = undefined;
2723
- }
2724
- sample(time2) {
2725
- this.startTime = 0;
2726
- return this.tick(time2, true);
2727
- }
2728
- }
2729
-
2730
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs
2731
- var acceleratedValues = new Set([
2732
- "opacity",
2733
- "clipPath",
2734
- "filter",
2735
- "transform"
2736
- ]);
2737
-
2738
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/index.mjs
2739
- function startWaapiAnimation(element, valueName, keyframes2, { delay = 0, duration = 300, repeat = 0, repeatType = "loop", ease = "easeInOut", times } = {}) {
2740
- const keyframeOptions = { [valueName]: keyframes2 };
2741
- if (times)
2742
- keyframeOptions.offset = times;
2743
- const easing = mapEasingToNativeEasing(ease, duration);
2744
- if (Array.isArray(easing))
2745
- keyframeOptions.easing = easing;
2746
- return element.animate(keyframeOptions, {
2747
- delay,
2748
- duration,
2749
- easing: !Array.isArray(easing) ? easing : "linear",
2750
- fill: "both",
2751
- iterations: repeat + 1,
2752
- direction: repeatType === "reverse" ? "alternate" : "normal"
2753
- });
2754
- }
2755
-
2756
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs
2757
- var supportsWaapi = /* @__PURE__ */ memo(() => Object.hasOwnProperty.call(Element.prototype, "animate"));
2758
-
2759
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs
2760
- var sampleDelta = 10;
2761
- var maxDuration = 20000;
2762
- function requiresPregeneratedKeyframes(options) {
2763
- return isGenerator(options.type) || options.type === "spring" || !isWaapiSupportedEasing(options.ease);
2764
- }
2765
- function pregenerateKeyframes(keyframes2, options) {
2766
- const sampleAnimation = new MainThreadAnimation({
2767
- ...options,
2768
- keyframes: keyframes2,
2769
- repeat: 0,
2770
- delay: 0,
2771
- isGenerator: true
2772
- });
2773
- let state = { done: false, value: keyframes2[0] };
2774
- const pregeneratedKeyframes = [];
2775
- let t = 0;
2776
- while (!state.done && t < maxDuration) {
2777
- state = sampleAnimation.sample(t);
2778
- pregeneratedKeyframes.push(state.value);
2779
- t += sampleDelta;
2780
- }
2781
- return {
2782
- times: undefined,
2783
- keyframes: pregeneratedKeyframes,
2784
- duration: t - sampleDelta,
2785
- ease: "linear"
2786
- };
2787
- }
2788
- var unsupportedEasingFunctions = {
2789
- anticipate,
2790
- backInOut,
2791
- circInOut
2792
- };
2793
- function isUnsupportedEase(key) {
2794
- return key in unsupportedEasingFunctions;
2795
- }
2796
-
2797
- class AcceleratedAnimation extends BaseAnimation {
2798
- constructor(options) {
2799
- super(options);
2800
- const { name, motionValue: motionValue2, element, keyframes: keyframes2 } = this.options;
2801
- this.resolver = new DOMKeyframesResolver(keyframes2, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue2, element);
2802
- this.resolver.scheduleResolve();
2803
- }
2804
- initPlayback(keyframes2, finalKeyframe) {
2805
- let { duration = 300, times, ease, type, motionValue: motionValue2, name, startTime } = this.options;
2806
- if (!motionValue2.owner || !motionValue2.owner.current) {
2807
- return false;
2808
- }
2809
- if (typeof ease === "string" && supportsLinearEasing() && isUnsupportedEase(ease)) {
2810
- ease = unsupportedEasingFunctions[ease];
2811
- }
2812
- if (requiresPregeneratedKeyframes(this.options)) {
2813
- const { onComplete, onUpdate, motionValue: motionValue3, element, ...options } = this.options;
2814
- const pregeneratedAnimation = pregenerateKeyframes(keyframes2, options);
2815
- keyframes2 = pregeneratedAnimation.keyframes;
2816
- if (keyframes2.length === 1) {
2817
- keyframes2[1] = keyframes2[0];
2818
- }
2819
- duration = pregeneratedAnimation.duration;
2820
- times = pregeneratedAnimation.times;
2821
- ease = pregeneratedAnimation.ease;
2822
- type = "keyframes";
2823
- }
2824
- const animation = startWaapiAnimation(motionValue2.owner.current, name, keyframes2, { ...this.options, duration, times, ease });
2825
- animation.startTime = startTime !== null && startTime !== undefined ? startTime : this.calcStartTime();
2826
- if (this.pendingTimeline) {
2827
- attachTimeline(animation, this.pendingTimeline);
2828
- this.pendingTimeline = undefined;
2829
- } else {
2830
- animation.onfinish = () => {
2831
- const { onComplete } = this.options;
2832
- motionValue2.set(getFinalKeyframe(keyframes2, this.options, finalKeyframe));
2833
- onComplete && onComplete();
2834
- this.cancel();
2835
- this.resolveFinishedPromise();
2836
- };
2837
- }
2838
- return {
2839
- animation,
2840
- duration,
2841
- times,
2842
- type,
2843
- ease,
2844
- keyframes: keyframes2
2845
- };
2846
- }
2847
- get duration() {
2848
- const { resolved } = this;
2849
- if (!resolved)
2850
- return 0;
2851
- const { duration } = resolved;
2852
- return millisecondsToSeconds(duration);
2853
- }
2854
- get time() {
2855
- const { resolved } = this;
2856
- if (!resolved)
2857
- return 0;
2858
- const { animation } = resolved;
2859
- return millisecondsToSeconds(animation.currentTime || 0);
2860
- }
2861
- set time(newTime) {
2862
- const { resolved } = this;
2863
- if (!resolved)
2864
- return;
2865
- const { animation } = resolved;
2866
- animation.currentTime = secondsToMilliseconds(newTime);
2867
- }
2868
- get speed() {
2869
- const { resolved } = this;
2870
- if (!resolved)
2871
- return 1;
2872
- const { animation } = resolved;
2873
- return animation.playbackRate;
2874
- }
2875
- set speed(newSpeed) {
2876
- const { resolved } = this;
2877
- if (!resolved)
2878
- return;
2879
- const { animation } = resolved;
2880
- animation.playbackRate = newSpeed;
2881
- }
2882
- get state() {
2883
- const { resolved } = this;
2884
- if (!resolved)
2885
- return "idle";
2886
- const { animation } = resolved;
2887
- return animation.playState;
2888
- }
2889
- get startTime() {
2890
- const { resolved } = this;
2891
- if (!resolved)
2892
- return null;
2893
- const { animation } = resolved;
2894
- return animation.startTime;
2895
- }
2896
- attachTimeline(timeline) {
2897
- if (!this._resolved) {
2898
- this.pendingTimeline = timeline;
2899
- } else {
2900
- const { resolved } = this;
2901
- if (!resolved)
2902
- return noop;
2903
- const { animation } = resolved;
2904
- attachTimeline(animation, timeline);
2905
- }
2906
- return noop;
2907
- }
2908
- play() {
2909
- if (this.isStopped)
2910
- return;
2911
- const { resolved } = this;
2912
- if (!resolved)
2913
- return;
2914
- const { animation } = resolved;
2915
- if (animation.playState === "finished") {
2916
- this.updateFinishedPromise();
2917
- }
2918
- animation.play();
2919
- }
2920
- pause() {
2921
- const { resolved } = this;
2922
- if (!resolved)
2923
- return;
2924
- const { animation } = resolved;
2925
- animation.pause();
2926
- }
2927
- stop() {
2928
- this.resolver.cancel();
2929
- this.isStopped = true;
2930
- if (this.state === "idle")
2931
- return;
2932
- this.resolveFinishedPromise();
2933
- this.updateFinishedPromise();
2934
- const { resolved } = this;
2935
- if (!resolved)
2936
- return;
2937
- const { animation, keyframes: keyframes2, duration, type, ease, times } = resolved;
2938
- if (animation.playState === "idle" || animation.playState === "finished") {
2939
- return;
2940
- }
2941
- if (this.time) {
2942
- const { motionValue: motionValue2, onUpdate, onComplete, element, ...options } = this.options;
2943
- const sampleAnimation = new MainThreadAnimation({
2944
- ...options,
2945
- keyframes: keyframes2,
2946
- duration,
2947
- type,
2948
- ease,
2949
- times,
2950
- isGenerator: true
2951
- });
2952
- const sampleTime = secondsToMilliseconds(this.time);
2953
- motionValue2.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);
2954
- }
2955
- const { onStop } = this.options;
2956
- onStop && onStop();
2957
- this.cancel();
2958
- }
2959
- complete() {
2960
- const { resolved } = this;
2961
- if (!resolved)
2962
- return;
2963
- resolved.animation.finish();
2964
- }
2965
- cancel() {
2966
- const { resolved } = this;
2967
- if (!resolved)
2968
- return;
2969
- resolved.animation.cancel();
2970
- }
2971
- static supports(options) {
2972
- const { motionValue: motionValue2, name, repeatDelay, repeatType, damping, type } = options;
2973
- if (!motionValue2 || !motionValue2.owner || !(motionValue2.owner.current instanceof HTMLElement)) {
2974
- return false;
2975
- }
2976
- const { onUpdate, transformTemplate } = motionValue2.owner.getProps();
2977
- return supportsWaapi() && name && acceleratedValues.has(name) && !onUpdate && !transformTemplate && !repeatDelay && repeatType !== "mirror" && damping !== 0 && type !== "inertia";
2978
- }
2979
- }
2980
-
2981
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/default-transitions.mjs
2982
- var underDampedSpring = {
2983
- type: "spring",
2984
- stiffness: 500,
2985
- damping: 25,
2986
- restSpeed: 10
2987
- };
2988
- var criticallyDampedSpring = (target) => ({
2989
- type: "spring",
2990
- stiffness: 550,
2991
- damping: target === 0 ? 2 * Math.sqrt(550) : 30,
2992
- restSpeed: 10
2993
- });
2994
- var keyframesTransition = {
2995
- type: "keyframes",
2996
- duration: 0.8
2997
- };
2998
- var ease = {
2999
- type: "keyframes",
3000
- ease: [0.25, 0.1, 0.35, 1],
3001
- duration: 0.3
3002
- };
3003
- var getDefaultTransition = (valueKey, { keyframes: keyframes2 }) => {
3004
- if (keyframes2.length > 2) {
3005
- return keyframesTransition;
3006
- } else if (transformProps.has(valueKey)) {
3007
- return valueKey.startsWith("scale") ? criticallyDampedSpring(keyframes2[1]) : underDampedSpring;
3008
- }
3009
- return ease;
3010
- };
3011
-
3012
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-transition-defined.mjs
3013
- function isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {
3014
- return !!Object.keys(transition).length;
3015
- }
3016
-
3017
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/interfaces/motion-value.mjs
3018
- var animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {
3019
- const valueTransition = getValueTransition2(transition, name) || {};
3020
- const delay = valueTransition.delay || transition.delay || 0;
3021
- let { elapsed = 0 } = transition;
3022
- elapsed = elapsed - secondsToMilliseconds(delay);
3023
- let options = {
3024
- keyframes: Array.isArray(target) ? target : [null, target],
3025
- ease: "easeOut",
3026
- velocity: value.getVelocity(),
3027
- ...valueTransition,
3028
- delay: -elapsed,
3029
- onUpdate: (v) => {
3030
- value.set(v);
3031
- valueTransition.onUpdate && valueTransition.onUpdate(v);
3032
- },
3033
- onComplete: () => {
3034
- onComplete();
3035
- valueTransition.onComplete && valueTransition.onComplete();
3036
- },
3037
- name,
3038
- motionValue: value,
3039
- element: isHandoff ? undefined : element
3040
- };
3041
- if (!isTransitionDefined(valueTransition)) {
3042
- options = {
3043
- ...options,
3044
- ...getDefaultTransition(name, options)
3045
- };
3046
- }
3047
- if (options.duration) {
3048
- options.duration = secondsToMilliseconds(options.duration);
3049
- }
3050
- if (options.repeatDelay) {
3051
- options.repeatDelay = secondsToMilliseconds(options.repeatDelay);
3052
- }
3053
- if (options.from !== undefined) {
3054
- options.keyframes[0] = options.from;
3055
- }
3056
- let shouldSkip = false;
3057
- if (options.type === false || options.duration === 0 && !options.repeatDelay) {
3058
- options.duration = 0;
3059
- if (options.delay === 0) {
3060
- shouldSkip = true;
3061
- }
3062
- }
3063
- if (instantAnimationState.current || MotionGlobalConfig.skipAnimations) {
3064
- shouldSkip = true;
3065
- options.duration = 0;
3066
- options.delay = 0;
3067
- }
3068
- if (shouldSkip && !isHandoff && value.get() !== undefined) {
3069
- const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);
3070
- if (finalKeyframe !== undefined) {
3071
- frame.update(() => {
3072
- options.onUpdate(finalKeyframe);
3073
- options.onComplete();
3074
- });
3075
- return new GroupPlaybackControls([]);
3076
- }
3077
- }
3078
- if (!isHandoff && AcceleratedAnimation.supports(options)) {
3079
- return new AcceleratedAnimation(options);
3080
- } else {
3081
- return new MainThreadAnimation(options);
3082
- }
3083
- };
3084
-
3085
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs
3086
- function shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {
3087
- const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;
3088
- needsAnimating[key] = false;
3089
- return shouldBlock;
3090
- }
3091
- function animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {
3092
- var _a;
3093
- let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;
3094
- if (transitionOverride)
3095
- transition = transitionOverride;
3096
- const animations = [];
3097
- const animationTypeState = type && visualElement.animationState && visualElement.animationState.getState()[type];
3098
- for (const key in target) {
3099
- const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== undefined ? _a : null);
3100
- const valueTarget = target[key];
3101
- if (valueTarget === undefined || animationTypeState && shouldBlockAnimation(animationTypeState, key)) {
3102
- continue;
3103
- }
3104
- const valueTransition = {
3105
- delay,
3106
- ...getValueTransition2(transition || {}, key)
3107
- };
3108
- let isHandoff = false;
3109
- if (window.MotionHandoffAnimation) {
3110
- const appearId = getOptimisedAppearId(visualElement);
3111
- if (appearId) {
3112
- const startTime = window.MotionHandoffAnimation(appearId, key, frame);
3113
- if (startTime !== null) {
3114
- valueTransition.startTime = startTime;
3115
- isHandoff = true;
3116
- }
3117
- }
3118
- }
3119
- addValueToWillChange(visualElement, key);
3120
- value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && positionalKeys.has(key) ? { type: false } : valueTransition, visualElement, isHandoff));
3121
- const animation = value.animation;
3122
- if (animation) {
3123
- animations.push(animation);
3124
- }
3125
- }
3126
- if (transitionEnd) {
3127
- Promise.all(animations).then(() => {
3128
- frame.update(() => {
3129
- transitionEnd && setTarget(visualElement, transitionEnd);
3130
- });
3131
- });
3132
- }
3133
- return animations;
3134
- }
3135
-
3136
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs
3137
- function isSVGElement(element) {
3138
- return element instanceof SVGElement && element.tagName !== "svg";
3139
- }
3140
-
3141
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/projection/geometry/models.mjs
3142
- var createAxis = () => ({ min: 0, max: 0 });
3143
- var createBox = () => ({
3144
- x: createAxis(),
3145
- y: createAxis()
3146
- });
3147
-
3148
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/motion/features/definitions.mjs
3149
- var featureProps = {
3150
- animation: [
3151
- "animate",
3152
- "variants",
3153
- "whileHover",
3154
- "whileTap",
3155
- "exit",
3156
- "whileInView",
3157
- "whileFocus",
3158
- "whileDrag"
3159
- ],
3160
- exit: ["exit"],
3161
- drag: ["drag", "dragControls"],
3162
- focus: ["whileFocus"],
3163
- hover: ["whileHover", "onHoverStart", "onHoverEnd"],
3164
- tap: ["whileTap", "onTap", "onTapStart", "onTapCancel"],
3165
- pan: ["onPan", "onPanStart", "onPanSessionStart", "onPanEnd"],
3166
- inView: ["whileInView", "onViewportEnter", "onViewportLeave"],
3167
- layout: ["layout", "layoutId"]
3168
- };
3169
- var featureDefinitions = {};
3170
- for (const key in featureProps) {
3171
- featureDefinitions[key] = {
3172
- isEnabled: (props) => featureProps[key].some((name) => !!props[name])
3173
- };
3174
- }
3175
-
3176
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/is-browser.mjs
3177
- var isBrowser = typeof window !== "undefined";
3178
-
3179
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/reduced-motion/state.mjs
3180
- var prefersReducedMotion = { current: null };
3181
- var hasReducedMotionListener = { current: false };
3182
-
3183
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/reduced-motion/index.mjs
3184
- function initPrefersReducedMotion() {
3185
- hasReducedMotionListener.current = true;
3186
- if (!isBrowser)
3187
- return;
3188
- if (window.matchMedia) {
3189
- const motionMediaQuery = window.matchMedia("(prefers-reduced-motion)");
3190
- const setReducedMotionPreferences = () => prefersReducedMotion.current = motionMediaQuery.matches;
3191
- motionMediaQuery.addListener(setReducedMotionPreferences);
3192
- setReducedMotionPreferences();
3193
- } else {
3194
- prefersReducedMotion.current = false;
3195
- }
3196
- }
3197
-
3198
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/find.mjs
3199
- var valueTypes = [...dimensionValueTypes, color, complex];
3200
- var findValueType = (v) => valueTypes.find(testValueType(v));
3201
-
3202
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/is-animation-controls.mjs
3203
- function isAnimationControls(v) {
3204
- return v !== null && typeof v === "object" && typeof v.start === "function";
3205
- }
3206
-
3207
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/is-variant-label.mjs
3208
- function isVariantLabel(v) {
3209
- return typeof v === "string" || Array.isArray(v);
3210
- }
3211
-
3212
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/variant-props.mjs
3213
- var variantPriorityOrder = [
3214
- "animate",
3215
- "whileInView",
3216
- "whileFocus",
3217
- "whileHover",
3218
- "whileTap",
3219
- "whileDrag",
3220
- "exit"
3221
- ];
3222
- var variantProps = ["initial", ...variantPriorityOrder];
3223
-
3224
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/is-controlling-variants.mjs
3225
- function isControllingVariants(props) {
3226
- return isAnimationControls(props.animate) || variantProps.some((name) => isVariantLabel(props[name]));
3227
- }
3228
- function isVariantNode(props) {
3229
- return Boolean(isControllingVariants(props) || props.variants);
3230
- }
3231
-
3232
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/utils/motion-values.mjs
3233
- function updateMotionValuesFromProps(element, next, prev) {
3234
- for (const key in next) {
3235
- const nextValue = next[key];
3236
- const prevValue = prev[key];
3237
- if (isMotionValue(nextValue)) {
3238
- element.addValue(key, nextValue);
3239
- if (false) {}
3240
- } else if (isMotionValue(prevValue)) {
3241
- element.addValue(key, motionValue(nextValue, { owner: element }));
3242
- } else if (prevValue !== nextValue) {
3243
- if (element.hasValue(key)) {
3244
- const existingValue = element.getValue(key);
3245
- if (existingValue.liveStyle === true) {
3246
- existingValue.jump(nextValue);
3247
- } else if (!existingValue.hasAnimated) {
3248
- existingValue.set(nextValue);
3249
- }
3250
- } else {
3251
- const latestValue = element.getStaticValue(key);
3252
- element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));
3253
- }
3254
- }
3255
- }
3256
- for (const key in prev) {
3257
- if (next[key] === undefined)
3258
- element.removeValue(key);
3259
- }
3260
- return next;
3261
- }
3262
-
3263
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/VisualElement.mjs
3264
- var propEventHandlers = [
3265
- "AnimationStart",
3266
- "AnimationComplete",
3267
- "Update",
3268
- "BeforeLayoutMeasure",
3269
- "LayoutMeasure",
3270
- "LayoutAnimationStart",
3271
- "LayoutAnimationComplete"
3272
- ];
3273
-
3274
- class VisualElement {
3275
- scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {
3276
- return {};
3277
- }
3278
- constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState }, options = {}) {
3279
- this.current = null;
3280
- this.children = new Set;
3281
- this.isVariantNode = false;
3282
- this.isControllingVariants = false;
3283
- this.shouldReduceMotion = null;
3284
- this.values = new Map;
3285
- this.KeyframeResolver = KeyframeResolver;
3286
- this.features = {};
3287
- this.valueSubscriptions = new Map;
3288
- this.prevMotionValues = {};
3289
- this.events = {};
3290
- this.propEventSubscriptions = {};
3291
- this.notifyUpdate = () => this.notify("Update", this.latestValues);
3292
- this.render = () => {
3293
- if (!this.current)
3294
- return;
3295
- this.triggerBuild();
3296
- this.renderInstance(this.current, this.renderState, this.props.style, this.projection);
3297
- };
3298
- this.renderScheduledAt = 0;
3299
- this.scheduleRender = () => {
3300
- const now2 = time.now();
3301
- if (this.renderScheduledAt < now2) {
3302
- this.renderScheduledAt = now2;
3303
- frame.render(this.render, false, true);
3304
- }
3305
- };
3306
- const { latestValues, renderState, onUpdate } = visualState;
3307
- this.onUpdate = onUpdate;
3308
- this.latestValues = latestValues;
3309
- this.baseTarget = { ...latestValues };
3310
- this.initialValues = props.initial ? { ...latestValues } : {};
3311
- this.renderState = renderState;
3312
- this.parent = parent;
3313
- this.props = props;
3314
- this.presenceContext = presenceContext;
3315
- this.depth = parent ? parent.depth + 1 : 0;
3316
- this.reducedMotionConfig = reducedMotionConfig;
3317
- this.options = options;
3318
- this.blockInitialAnimation = Boolean(blockInitialAnimation);
3319
- this.isControllingVariants = isControllingVariants(props);
3320
- this.isVariantNode = isVariantNode(props);
3321
- if (this.isVariantNode) {
3322
- this.variantChildren = new Set;
3323
- }
3324
- this.manuallyAnimateOnMount = Boolean(parent && parent.current);
3325
- const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);
3326
- for (const key in initialMotionValues) {
3327
- const value = initialMotionValues[key];
3328
- if (latestValues[key] !== undefined && isMotionValue(value)) {
3329
- value.set(latestValues[key], false);
3330
- }
3331
- }
3332
- }
3333
- mount(instance) {
3334
- this.current = instance;
3335
- visualElementStore.set(instance, this);
3336
- if (this.projection && !this.projection.instance) {
3337
- this.projection.mount(instance);
3338
- }
3339
- if (this.parent && this.isVariantNode && !this.isControllingVariants) {
3340
- this.removeFromVariantTree = this.parent.addVariantChild(this);
3341
- }
3342
- this.values.forEach((value, key) => this.bindToMotionValue(key, value));
3343
- if (!hasReducedMotionListener.current) {
3344
- initPrefersReducedMotion();
3345
- }
3346
- this.shouldReduceMotion = this.reducedMotionConfig === "never" ? false : this.reducedMotionConfig === "always" ? true : prefersReducedMotion.current;
3347
- if (false) {}
3348
- if (this.parent)
3349
- this.parent.children.add(this);
3350
- this.update(this.props, this.presenceContext);
3351
- }
3352
- unmount() {
3353
- visualElementStore.delete(this.current);
3354
- this.projection && this.projection.unmount();
3355
- cancelFrame(this.notifyUpdate);
3356
- cancelFrame(this.render);
3357
- this.valueSubscriptions.forEach((remove) => remove());
3358
- this.valueSubscriptions.clear();
3359
- this.removeFromVariantTree && this.removeFromVariantTree();
3360
- this.parent && this.parent.children.delete(this);
3361
- for (const key in this.events) {
3362
- this.events[key].clear();
3363
- }
3364
- for (const key in this.features) {
3365
- const feature = this.features[key];
3366
- if (feature) {
3367
- feature.unmount();
3368
- feature.isMounted = false;
3369
- }
3370
- }
3371
- this.current = null;
3372
- }
3373
- bindToMotionValue(key, value) {
3374
- if (this.valueSubscriptions.has(key)) {
3375
- this.valueSubscriptions.get(key)();
3376
- }
3377
- const valueIsTransform = transformProps.has(key);
3378
- const removeOnChange = value.on("change", (latestValue) => {
3379
- this.latestValues[key] = latestValue;
3380
- this.props.onUpdate && frame.preRender(this.notifyUpdate);
3381
- if (valueIsTransform && this.projection) {
3382
- this.projection.isTransformDirty = true;
3383
- }
3384
- });
3385
- const removeOnRenderRequest = value.on("renderRequest", this.scheduleRender);
3386
- let removeSyncCheck;
3387
- if (window.MotionCheckAppearSync) {
3388
- removeSyncCheck = window.MotionCheckAppearSync(this, key, value);
3389
- }
3390
- this.valueSubscriptions.set(key, () => {
3391
- removeOnChange();
3392
- removeOnRenderRequest();
3393
- if (removeSyncCheck)
3394
- removeSyncCheck();
3395
- if (value.owner)
3396
- value.stop();
3397
- });
3398
- }
3399
- sortNodePosition(other) {
3400
- if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type) {
3401
- return 0;
3402
- }
3403
- return this.sortInstanceNodePosition(this.current, other.current);
3404
- }
3405
- updateFeatures() {
3406
- let key = "animation";
3407
- for (key in featureDefinitions) {
3408
- const featureDefinition = featureDefinitions[key];
3409
- if (!featureDefinition)
3410
- continue;
3411
- const { isEnabled, Feature: FeatureConstructor } = featureDefinition;
3412
- if (!this.features[key] && FeatureConstructor && isEnabled(this.props)) {
3413
- this.features[key] = new FeatureConstructor(this);
3414
- }
3415
- if (this.features[key]) {
3416
- const feature = this.features[key];
3417
- if (feature.isMounted) {
3418
- feature.update();
3419
- } else {
3420
- feature.mount();
3421
- feature.isMounted = true;
3422
- }
3423
- }
3424
- }
3425
- }
3426
- triggerBuild() {
3427
- this.build(this.renderState, this.latestValues, this.props);
3428
- }
3429
- measureViewportBox() {
3430
- return this.current ? this.measureInstanceViewportBox(this.current, this.props) : createBox();
3431
- }
3432
- getStaticValue(key) {
3433
- return this.latestValues[key];
3434
- }
3435
- setStaticValue(key, value) {
3436
- this.latestValues[key] = value;
3437
- }
3438
- update(props, presenceContext) {
3439
- if (props.transformTemplate || this.props.transformTemplate) {
3440
- this.scheduleRender();
3441
- }
3442
- this.prevProps = this.props;
3443
- this.props = props;
3444
- this.prevPresenceContext = this.presenceContext;
3445
- this.presenceContext = presenceContext;
3446
- for (let i = 0;i < propEventHandlers.length; i++) {
3447
- const key = propEventHandlers[i];
3448
- if (this.propEventSubscriptions[key]) {
3449
- this.propEventSubscriptions[key]();
3450
- delete this.propEventSubscriptions[key];
3451
- }
3452
- const listenerName = "on" + key;
3453
- const listener = props[listenerName];
3454
- if (listener) {
3455
- this.propEventSubscriptions[key] = this.on(key, listener);
3456
- }
3457
- }
3458
- this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);
3459
- if (this.handleChildMotionValue) {
3460
- this.handleChildMotionValue();
3461
- }
3462
- this.onUpdate && this.onUpdate(this);
3463
- }
3464
- getProps() {
3465
- return this.props;
3466
- }
3467
- getVariant(name) {
3468
- return this.props.variants ? this.props.variants[name] : undefined;
3469
- }
3470
- getDefaultTransition() {
3471
- return this.props.transition;
3472
- }
3473
- getTransformPagePoint() {
3474
- return this.props.transformPagePoint;
3475
- }
3476
- getClosestVariantNode() {
3477
- return this.isVariantNode ? this : this.parent ? this.parent.getClosestVariantNode() : undefined;
3478
- }
3479
- addVariantChild(child) {
3480
- const closestVariantNode = this.getClosestVariantNode();
3481
- if (closestVariantNode) {
3482
- closestVariantNode.variantChildren && closestVariantNode.variantChildren.add(child);
3483
- return () => closestVariantNode.variantChildren.delete(child);
3484
- }
3485
- }
3486
- addValue(key, value) {
3487
- const existingValue = this.values.get(key);
3488
- if (value !== existingValue) {
3489
- if (existingValue)
3490
- this.removeValue(key);
3491
- this.bindToMotionValue(key, value);
3492
- this.values.set(key, value);
3493
- this.latestValues[key] = value.get();
3494
- }
3495
- }
3496
- removeValue(key) {
3497
- this.values.delete(key);
3498
- const unsubscribe = this.valueSubscriptions.get(key);
3499
- if (unsubscribe) {
3500
- unsubscribe();
3501
- this.valueSubscriptions.delete(key);
3502
- }
3503
- delete this.latestValues[key];
3504
- this.removeValueFromRenderState(key, this.renderState);
3505
- }
3506
- hasValue(key) {
3507
- return this.values.has(key);
3508
- }
3509
- getValue(key, defaultValue) {
3510
- if (this.props.values && this.props.values[key]) {
3511
- return this.props.values[key];
3512
- }
3513
- let value = this.values.get(key);
3514
- if (value === undefined && defaultValue !== undefined) {
3515
- value = motionValue(defaultValue === null ? undefined : defaultValue, { owner: this });
3516
- this.addValue(key, value);
3517
- }
3518
- return value;
3519
- }
3520
- readValue(key, target) {
3521
- var _a;
3522
- let value = this.latestValues[key] !== undefined || !this.current ? this.latestValues[key] : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== undefined ? _a : this.readValueFromInstance(this.current, key, this.options);
3523
- if (value !== undefined && value !== null) {
3524
- if (typeof value === "string" && (isNumericalString(value) || isZeroValueString(value))) {
3525
- value = parseFloat(value);
3526
- } else if (!findValueType(value) && complex.test(target)) {
3527
- value = getAnimatableNone2(key, target);
3528
- }
3529
- this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);
3530
- }
3531
- return isMotionValue(value) ? value.get() : value;
3532
- }
3533
- setBaseTarget(key, value) {
3534
- this.baseTarget[key] = value;
3535
- }
3536
- getBaseTarget(key) {
3537
- var _a;
3538
- const { initial } = this.props;
3539
- let valueFromInitial;
3540
- if (typeof initial === "string" || typeof initial === "object") {
3541
- const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === undefined ? undefined : _a.custom);
3542
- if (variant) {
3543
- valueFromInitial = variant[key];
3544
- }
3545
- }
3546
- if (initial && valueFromInitial !== undefined) {
3547
- return valueFromInitial;
3548
- }
3549
- const target = this.getBaseTargetFromProps(this.props, key);
3550
- if (target !== undefined && !isMotionValue(target))
3551
- return target;
3552
- return this.initialValues[key] !== undefined && valueFromInitial === undefined ? undefined : this.baseTarget[key];
3553
- }
3554
- on(eventName, callback) {
3555
- if (!this.events[eventName]) {
3556
- this.events[eventName] = new SubscriptionManager;
3557
- }
3558
- return this.events[eventName].add(callback);
3559
- }
3560
- notify(eventName, ...args) {
3561
- if (this.events[eventName]) {
3562
- this.events[eventName].notify(...args);
3563
- }
3564
- }
3565
- }
3566
-
3567
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/DOMVisualElement.mjs
3568
- class DOMVisualElement extends VisualElement {
3569
- constructor() {
3570
- super(...arguments);
3571
- this.KeyframeResolver = DOMKeyframesResolver;
3572
- }
3573
- sortInstanceNodePosition(a, b) {
3574
- return a.compareDocumentPosition(b) & 2 ? 1 : -1;
3575
- }
3576
- getBaseTargetFromProps(props, key) {
3577
- return props.style ? props.style[key] : undefined;
3578
- }
3579
- removeValueFromRenderState(key, { vars, style }) {
3580
- delete vars[key];
3581
- delete style[key];
3582
- }
3583
- handleChildMotionValue() {
3584
- if (this.childSubscription) {
3585
- this.childSubscription();
3586
- delete this.childSubscription;
3587
- }
3588
- const { children } = this.props;
3589
- if (isMotionValue(children)) {
3590
- this.childSubscription = children.on("change", (latest) => {
3591
- if (this.current) {
3592
- this.current.textContent = `${latest}`;
3593
- }
3594
- });
3595
- }
3596
- }
3597
- }
3598
-
3599
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs
3600
- var getValueAsType = (value, type) => {
3601
- return type && typeof value === "number" ? type.transform(value) : value;
3602
- };
3603
-
3604
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/build-transform.mjs
3605
- var translateAlias = {
3606
- x: "translateX",
3607
- y: "translateY",
3608
- z: "translateZ",
3609
- transformPerspective: "perspective"
3610
- };
3611
- var numTransforms = transformPropOrder.length;
3612
- function buildTransform(latestValues, transform, transformTemplate) {
3613
- let transformString = "";
3614
- let transformIsDefault = true;
3615
- for (let i = 0;i < numTransforms; i++) {
3616
- const key = transformPropOrder[i];
3617
- const value = latestValues[key];
3618
- if (value === undefined)
3619
- continue;
3620
- let valueIsDefault = true;
3621
- if (typeof value === "number") {
3622
- valueIsDefault = value === (key.startsWith("scale") ? 1 : 0);
3623
- } else {
3624
- valueIsDefault = parseFloat(value) === 0;
3625
- }
3626
- if (!valueIsDefault || transformTemplate) {
3627
- const valueAsType = getValueAsType(value, numberValueTypes[key]);
3628
- if (!valueIsDefault) {
3629
- transformIsDefault = false;
3630
- const transformName = translateAlias[key] || key;
3631
- transformString += `${transformName}(${valueAsType}) `;
3632
- }
3633
- if (transformTemplate) {
3634
- transform[key] = valueAsType;
3635
- }
3636
- }
3637
- }
3638
- transformString = transformString.trim();
3639
- if (transformTemplate) {
3640
- transformString = transformTemplate(transform, transformIsDefault ? "" : transformString);
3641
- } else if (transformIsDefault) {
3642
- transformString = "none";
3643
- }
3644
- return transformString;
3645
- }
3646
-
3647
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/build-styles.mjs
3648
- function buildHTMLStyles(state, latestValues, transformTemplate) {
3649
- const { style, vars, transformOrigin } = state;
3650
- let hasTransform = false;
3651
- let hasTransformOrigin = false;
3652
- for (const key in latestValues) {
3653
- const value = latestValues[key];
3654
- if (transformProps.has(key)) {
3655
- hasTransform = true;
3656
- continue;
3657
- } else if (isCSSVariableName(key)) {
3658
- vars[key] = value;
3659
- continue;
3660
- } else {
3661
- const valueAsType = getValueAsType(value, numberValueTypes[key]);
3662
- if (key.startsWith("origin")) {
3663
- hasTransformOrigin = true;
3664
- transformOrigin[key] = valueAsType;
3665
- } else {
3666
- style[key] = valueAsType;
3667
- }
3668
- }
3669
- }
3670
- if (!latestValues.transform) {
3671
- if (hasTransform || transformTemplate) {
3672
- style.transform = buildTransform(latestValues, state.transform, transformTemplate);
3673
- } else if (style.transform) {
3674
- style.transform = "none";
3675
- }
3676
- }
3677
- if (hasTransformOrigin) {
3678
- const { originX = "50%", originY = "50%", originZ = 0 } = transformOrigin;
3679
- style.transformOrigin = `${originX} ${originY} ${originZ}`;
3680
- }
3681
- }
3682
-
3683
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/path.mjs
3684
- var dashKeys = {
3685
- offset: "stroke-dashoffset",
3686
- array: "stroke-dasharray"
3687
- };
3688
- var camelKeys = {
3689
- offset: "strokeDashoffset",
3690
- array: "strokeDasharray"
3691
- };
3692
- function buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {
3693
- attrs.pathLength = 1;
3694
- const keys = useDashCase ? dashKeys : camelKeys;
3695
- attrs[keys.offset] = px.transform(-offset);
3696
- const pathLength = px.transform(length);
3697
- const pathSpacing = px.transform(spacing);
3698
- attrs[keys.array] = `${pathLength} ${pathSpacing}`;
3699
- }
3700
-
3701
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/transform-origin.mjs
3702
- function calcOrigin(origin, offset, size) {
3703
- return typeof origin === "string" ? origin : px.transform(offset + size * origin);
3704
- }
3705
- function calcSVGTransformOrigin(dimensions, originX, originY) {
3706
- const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);
3707
- const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);
3708
- return `${pxOriginX} ${pxOriginY}`;
3709
- }
3710
-
3711
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/build-attrs.mjs
3712
- function buildSVGAttrs(state, {
3713
- attrX,
3714
- attrY,
3715
- attrScale,
3716
- originX,
3717
- originY,
3718
- pathLength,
3719
- pathSpacing = 1,
3720
- pathOffset = 0,
3721
- ...latest
3722
- }, isSVGTag, transformTemplate) {
3723
- buildHTMLStyles(state, latest, transformTemplate);
3724
- if (isSVGTag) {
3725
- if (state.style.viewBox) {
3726
- state.attrs.viewBox = state.style.viewBox;
3727
- }
3728
- return;
3729
- }
3730
- state.attrs = state.style;
3731
- state.style = {};
3732
- const { attrs, style, dimensions } = state;
3733
- if (attrs.transform) {
3734
- if (dimensions)
3735
- style.transform = attrs.transform;
3736
- delete attrs.transform;
3737
- }
3738
- if (dimensions && (originX !== undefined || originY !== undefined || style.transform)) {
3739
- style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);
3740
- }
3741
- if (attrX !== undefined)
3742
- attrs.x = attrX;
3743
- if (attrY !== undefined)
3744
- attrs.y = attrY;
3745
- if (attrScale !== undefined)
3746
- attrs.scale = attrScale;
3747
- if (pathLength !== undefined) {
3748
- buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);
3749
- }
3750
- }
3751
-
3752
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs
3753
- var camelCaseAttributes = new Set([
3754
- "baseFrequency",
3755
- "diffuseConstant",
3756
- "kernelMatrix",
3757
- "kernelUnitLength",
3758
- "keySplines",
3759
- "keyTimes",
3760
- "limitingConeAngle",
3761
- "markerHeight",
3762
- "markerWidth",
3763
- "numOctaves",
3764
- "targetX",
3765
- "targetY",
3766
- "surfaceScale",
3767
- "specularConstant",
3768
- "specularExponent",
3769
- "stdDeviation",
3770
- "tableValues",
3771
- "viewBox",
3772
- "gradientTransform",
3773
- "pathLength",
3774
- "startOffset",
3775
- "textLength",
3776
- "lengthAdjust"
3777
- ]);
3778
-
3779
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs
3780
- var isSVGTag = (tag) => typeof tag === "string" && tag.toLowerCase() === "svg";
3781
-
3782
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/render.mjs
3783
- function renderHTML(element, { style, vars }, styleProp, projection) {
3784
- Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));
3785
- for (const key in vars) {
3786
- element.style.setProperty(key, vars[key]);
3787
- }
3788
- }
3789
-
3790
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/render.mjs
3791
- function renderSVG(element, renderState, _styleProp, projection) {
3792
- renderHTML(element, renderState, undefined, projection);
3793
- for (const key in renderState.attrs) {
3794
- element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);
3795
- }
3796
- }
3797
-
3798
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/projection/styles/scale-correction.mjs
3799
- var scaleCorrectors = {};
3800
-
3801
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs
3802
- function isForcedMotionValue(key, { layout, layoutId }) {
3803
- return transformProps.has(key) || key.startsWith("origin") || (layout || layoutId !== undefined) && (!!scaleCorrectors[key] || key === "opacity");
3804
- }
3805
-
3806
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs
3807
- function scrapeMotionValuesFromProps(props, prevProps, visualElement) {
3808
- var _a;
3809
- const { style } = props;
3810
- const newValues = {};
3811
- for (const key in style) {
3812
- if (isMotionValue(style[key]) || prevProps.style && isMotionValue(prevProps.style[key]) || isForcedMotionValue(key, props) || ((_a = visualElement === null || visualElement === undefined ? undefined : visualElement.getValue(key)) === null || _a === undefined ? undefined : _a.liveStyle) !== undefined) {
3813
- newValues[key] = style[key];
3814
- }
3815
- }
3816
- return newValues;
3817
- }
3818
-
3819
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs
3820
- function scrapeMotionValuesFromProps2(props, prevProps, visualElement) {
3821
- const newValues = scrapeMotionValuesFromProps(props, prevProps, visualElement);
3822
- for (const key in props) {
3823
- if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {
3824
- const targetKey = transformPropOrder.indexOf(key) !== -1 ? "attr" + key.charAt(0).toUpperCase() + key.substring(1) : key;
3825
- newValues[targetKey] = props[key];
3826
- }
3827
- }
3828
- return newValues;
3829
- }
3830
-
3831
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/svg/SVGVisualElement.mjs
3832
- class SVGVisualElement extends DOMVisualElement {
3833
- constructor() {
3834
- super(...arguments);
3835
- this.type = "svg";
3836
- this.isSVGTag = false;
3837
- this.measureInstanceViewportBox = createBox;
3838
- }
3839
- getBaseTargetFromProps(props, key) {
3840
- return props[key];
3841
- }
3842
- readValueFromInstance(instance, key) {
3843
- if (transformProps.has(key)) {
3844
- const defaultType = getDefaultValueType(key);
3845
- return defaultType ? defaultType.default || 0 : 0;
3846
- }
3847
- key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;
3848
- return instance.getAttribute(key);
3849
- }
3850
- scrapeMotionValuesFromProps(props, prevProps, visualElement) {
3851
- return scrapeMotionValuesFromProps2(props, prevProps, visualElement);
3852
- }
3853
- build(renderState, latestValues, props) {
3854
- buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate);
3855
- }
3856
- renderInstance(instance, renderState, styleProp, projection) {
3857
- renderSVG(instance, renderState, styleProp, projection);
3858
- }
3859
- mount(instance) {
3860
- this.isSVGTag = isSVGTag(instance.tagName);
3861
- super.mount(instance);
3862
- }
3863
- }
3864
-
3865
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/projection/geometry/conversion.mjs
3866
- function convertBoundingBoxToBox({ top, left, right, bottom }) {
3867
- return {
3868
- x: { min: left, max: right },
3869
- y: { min: top, max: bottom }
3870
- };
3871
- }
3872
- function transformBoxPoints(point, transformPoint) {
3873
- if (!transformPoint)
3874
- return point;
3875
- const topLeft = transformPoint({ x: point.left, y: point.top });
3876
- const bottomRight = transformPoint({ x: point.right, y: point.bottom });
3877
- return {
3878
- top: topLeft.y,
3879
- left: topLeft.x,
3880
- bottom: bottomRight.y,
3881
- right: bottomRight.x
3882
- };
3883
- }
3884
-
3885
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/projection/utils/measure.mjs
3886
- function measureViewportBox(instance, transformPoint) {
3887
- return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));
3888
- }
3889
-
3890
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/html/HTMLVisualElement.mjs
3891
- function getComputedStyle2(element) {
3892
- return window.getComputedStyle(element);
3893
- }
3894
-
3895
- class HTMLVisualElement extends DOMVisualElement {
3896
- constructor() {
3897
- super(...arguments);
3898
- this.type = "html";
3899
- this.renderInstance = renderHTML;
3900
- }
3901
- readValueFromInstance(instance, key) {
3902
- if (transformProps.has(key)) {
3903
- const defaultType = getDefaultValueType(key);
3904
- return defaultType ? defaultType.default || 0 : 0;
3905
- } else {
3906
- const computedStyle = getComputedStyle2(instance);
3907
- const value = (isCSSVariableName(key) ? computedStyle.getPropertyValue(key) : computedStyle[key]) || 0;
3908
- return typeof value === "string" ? value.trim() : value;
3909
- }
3910
- }
3911
- measureInstanceViewportBox(instance, { transformPagePoint }) {
3912
- return measureViewportBox(instance, transformPagePoint);
3913
- }
3914
- build(renderState, latestValues, props) {
3915
- buildHTMLStyles(renderState, latestValues, props.transformTemplate);
3916
- }
3917
- scrapeMotionValuesFromProps(props, prevProps, visualElement) {
3918
- return scrapeMotionValuesFromProps(props, prevProps, visualElement);
3919
- }
3920
- }
3921
-
3922
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/object/ObjectVisualElement.mjs
3923
- function isObjectKey(key, object) {
3924
- return key in object;
3925
- }
3926
-
3927
- class ObjectVisualElement extends VisualElement {
3928
- constructor() {
3929
- super(...arguments);
3930
- this.type = "object";
3931
- }
3932
- readValueFromInstance(instance, key) {
3933
- if (isObjectKey(key, instance)) {
3934
- const value = instance[key];
3935
- if (typeof value === "string" || typeof value === "number") {
3936
- return value;
3937
- }
3938
- }
3939
- return;
3940
- }
3941
- getBaseTargetFromProps() {
3942
- return;
3943
- }
3944
- removeValueFromRenderState(key, renderState) {
3945
- delete renderState.output[key];
3946
- }
3947
- measureInstanceViewportBox() {
3948
- return createBox();
3949
- }
3950
- build(renderState, latestValues) {
3951
- Object.assign(renderState.output, latestValues);
3952
- }
3953
- renderInstance(instance, { output }) {
3954
- Object.assign(instance, output);
3955
- }
3956
- sortInstanceNodePosition() {
3957
- return 0;
3958
- }
3959
- }
3960
-
3961
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/create-visual-element.mjs
3962
- function createDOMVisualElement(element) {
3963
- const options = {
3964
- presenceContext: null,
3965
- props: {},
3966
- visualState: {
3967
- renderState: {
3968
- transform: {},
3969
- transformOrigin: {},
3970
- style: {},
3971
- vars: {},
3972
- attrs: {}
3973
- },
3974
- latestValues: {}
3975
- }
3976
- };
3977
- const node = isSVGElement(element) ? new SVGVisualElement(options) : new HTMLVisualElement(options);
3978
- node.mount(element);
3979
- visualElementStore.set(element, node);
3980
- }
3981
- function createObjectVisualElement(subject) {
3982
- const options = {
3983
- presenceContext: null,
3984
- props: {},
3985
- visualState: {
3986
- renderState: {
3987
- output: {}
3988
- },
3989
- latestValues: {}
3990
- }
3991
- };
3992
- const node = new ObjectVisualElement(options);
3993
- node.mount(subject);
3994
- visualElementStore.set(subject, node);
3995
- }
3996
-
3997
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/single-value.mjs
3998
- function animateSingleValue(value, keyframes2, options) {
3999
- const motionValue$1 = isMotionValue(value) ? value : motionValue(value);
4000
- motionValue$1.start(animateMotionValue("", motionValue$1, keyframes2, options));
4001
- return motionValue$1.animation;
4002
- }
4003
-
4004
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/subject.mjs
4005
- function isSingleValue(subject, keyframes2) {
4006
- return isMotionValue(subject) || typeof subject === "number" || typeof subject === "string" && !isDOMKeyframes(keyframes2);
4007
- }
4008
- function animateSubject(subject, keyframes2, options, scope) {
4009
- const animations = [];
4010
- if (isSingleValue(subject, keyframes2)) {
4011
- animations.push(animateSingleValue(subject, isDOMKeyframes(keyframes2) ? keyframes2.default || keyframes2 : keyframes2, options ? options.default || options : options));
4012
- } else {
4013
- const subjects = resolveSubjects(subject, keyframes2, scope);
4014
- const numSubjects = subjects.length;
4015
- invariant(Boolean(numSubjects), "No valid elements provided.");
4016
- for (let i = 0;i < numSubjects; i++) {
4017
- const thisSubject = subjects[i];
4018
- const createVisualElement = thisSubject instanceof Element ? createDOMVisualElement : createObjectVisualElement;
4019
- if (!visualElementStore.has(thisSubject)) {
4020
- createVisualElement(thisSubject);
4021
- }
4022
- const visualElement = visualElementStore.get(thisSubject);
4023
- const transition = { ...options };
4024
- if ("delay" in transition && typeof transition.delay === "function") {
4025
- transition.delay = transition.delay(i, numSubjects);
4026
- }
4027
- animations.push(...animateTarget(visualElement, { ...keyframes2, transition }, {}));
4028
- }
4029
- }
4030
- return animations;
4031
- }
4032
-
4033
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/sequence.mjs
4034
- function animateSequence(sequence, options, scope) {
4035
- const animations = [];
4036
- const animationDefinitions = createAnimationsFromSequence(sequence, options, scope, { spring });
4037
- animationDefinitions.forEach(({ keyframes: keyframes2, transition }, subject) => {
4038
- animations.push(...animateSubject(subject, keyframes2, transition));
4039
- });
4040
- return animations;
4041
- }
4042
-
4043
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animate/index.mjs
4044
- function isSequence(value) {
4045
- return Array.isArray(value) && value.some(Array.isArray);
4046
- }
4047
- function createScopedAnimate(scope) {
4048
- function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) {
4049
- let animations = [];
4050
- if (isSequence(subjectOrSequence)) {
4051
- animations = animateSequence(subjectOrSequence, optionsOrKeyframes, scope);
4052
- } else {
4053
- animations = animateSubject(subjectOrSequence, optionsOrKeyframes, options, scope);
4054
- }
4055
- const animation = new GroupPlaybackControls(animations);
4056
- if (scope) {
4057
- scope.animations.push(animation);
4058
- }
4059
- return animation;
4060
- }
4061
- return scopedAnimate;
4062
- }
4063
- var animate = createScopedAnimate();
4064
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/motion-dom/dist/es/animation/waapi/NativeAnimationControls.mjs
4065
- class NativeAnimationControls {
4066
- constructor(animation) {
4067
- this.animation = animation;
4068
- }
4069
- get duration() {
4070
- var _a, _b, _c;
4071
- const durationInMs = ((_b = (_a = this.animation) === null || _a === undefined ? undefined : _a.effect) === null || _b === undefined ? undefined : _b.getComputedTiming().duration) || ((_c = this.options) === null || _c === undefined ? undefined : _c.duration) || 300;
4072
- return millisecondsToSeconds(Number(durationInMs));
4073
- }
4074
- get time() {
4075
- var _a;
4076
- if (this.animation) {
4077
- return millisecondsToSeconds(((_a = this.animation) === null || _a === undefined ? undefined : _a.currentTime) || 0);
4078
- }
4079
- return 0;
4080
- }
4081
- set time(newTime) {
4082
- if (this.animation) {
4083
- this.animation.currentTime = secondsToMilliseconds(newTime);
4084
- }
4085
- }
4086
- get speed() {
4087
- return this.animation ? this.animation.playbackRate : 1;
4088
- }
4089
- set speed(newSpeed) {
4090
- if (this.animation) {
4091
- this.animation.playbackRate = newSpeed;
4092
- }
4093
- }
4094
- get state() {
4095
- return this.animation ? this.animation.playState : "finished";
4096
- }
4097
- get startTime() {
4098
- return this.animation ? this.animation.startTime : null;
4099
- }
4100
- get finished() {
4101
- return this.animation ? this.animation.finished : Promise.resolve();
4102
- }
4103
- play() {
4104
- this.animation && this.animation.play();
4105
- }
4106
- pause() {
4107
- this.animation && this.animation.pause();
4108
- }
4109
- stop() {
4110
- if (!this.animation || this.state === "idle" || this.state === "finished") {
4111
- return;
4112
- }
4113
- if (this.animation.commitStyles) {
4114
- this.animation.commitStyles();
4115
- }
4116
- this.cancel();
4117
- }
4118
- flatten() {
4119
- var _a;
4120
- if (!this.animation)
4121
- return;
4122
- (_a = this.animation.effect) === null || _a === undefined || _a.updateTiming({ easing: "linear" });
4123
- }
4124
- attachTimeline(timeline) {
4125
- if (this.animation)
4126
- attachTimeline(this.animation, timeline);
4127
- return noop;
4128
- }
4129
- complete() {
4130
- this.animation && this.animation.finish();
4131
- }
4132
- cancel() {
4133
- try {
4134
- this.animation && this.animation.cancel();
4135
- } catch (e) {}
4136
- }
4137
- }
4138
-
4139
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/style.mjs
4140
- function setCSSVar(element, name, value) {
4141
- element.style.setProperty(`--${name}`, value);
4142
- }
4143
- function setStyle(element, name, value) {
4144
- element.style[name] = value;
4145
- }
4146
-
4147
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-partial-keyframes.mjs
4148
- var supportsPartialKeyframes = /* @__PURE__ */ memo(() => {
4149
- try {
4150
- document.createElement("div").animate({ opacity: [1] });
4151
- } catch (e) {
4152
- return false;
4153
- }
4154
- return true;
4155
- });
4156
-
4157
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs
4158
- var state = new WeakMap;
4159
- function hydrateKeyframes(valueName, keyframes2, read) {
4160
- for (let i = 0;i < keyframes2.length; i++) {
4161
- if (keyframes2[i] === null) {
4162
- keyframes2[i] = i === 0 ? read() : keyframes2[i - 1];
4163
- }
4164
- if (typeof keyframes2[i] === "number" && browserNumberValueTypes[valueName]) {
4165
- keyframes2[i] = browserNumberValueTypes[valueName].transform(keyframes2[i]);
4166
- }
4167
- }
4168
- if (!supportsPartialKeyframes() && keyframes2.length < 2) {
4169
- keyframes2.unshift(read());
4170
- }
4171
- }
4172
- var defaultEasing2 = "easeOut";
4173
- function getElementAnimationState(element) {
4174
- const animationState = state.get(element) || new Map;
4175
- state.set(element, animationState);
4176
- return state.get(element);
4177
- }
4178
-
4179
- class NativeAnimation extends NativeAnimationControls {
4180
- constructor(element, valueName, valueKeyframes, options) {
4181
- const isCSSVar = valueName.startsWith("--");
4182
- invariant(typeof options.type !== "string", `animateMini doesn't support "type" as a string. Did you mean to import { spring } from "framer-motion"?`);
4183
- const existingAnimation = getElementAnimationState(element).get(valueName);
4184
- existingAnimation && existingAnimation.stop();
4185
- const readInitialKeyframe = () => {
4186
- return valueName.startsWith("--") ? element.style.getPropertyValue(valueName) : window.getComputedStyle(element)[valueName];
4187
- };
4188
- if (!Array.isArray(valueKeyframes)) {
4189
- valueKeyframes = [valueKeyframes];
4190
- }
4191
- hydrateKeyframes(valueName, valueKeyframes, readInitialKeyframe);
4192
- if (isGenerator(options.type)) {
4193
- const generatorOptions = createGeneratorEasing(options, 100, options.type);
4194
- options.ease = supportsLinearEasing() ? generatorOptions.ease : defaultEasing2;
4195
- options.duration = secondsToMilliseconds(generatorOptions.duration);
4196
- options.type = "keyframes";
4197
- } else {
4198
- options.ease = options.ease || defaultEasing2;
4199
- }
4200
- const onFinish = () => {
4201
- this.setValue(element, valueName, getFinalKeyframe(valueKeyframes, options));
4202
- this.cancel();
4203
- this.resolveFinishedPromise();
4204
- };
4205
- const init = () => {
4206
- this.setValue = isCSSVar ? setCSSVar : setStyle;
4207
- this.options = options;
4208
- this.updateFinishedPromise();
4209
- this.removeAnimation = () => {
4210
- const elementState = state.get(element);
4211
- elementState && elementState.delete(valueName);
4212
- };
4213
- };
4214
- if (!supportsWaapi()) {
4215
- super();
4216
- init();
4217
- onFinish();
4218
- } else {
4219
- super(startWaapiAnimation(element, valueName, valueKeyframes, options));
4220
- init();
4221
- if (options.autoplay === false) {
4222
- this.animation.pause();
4223
- }
4224
- this.animation.onfinish = onFinish;
4225
- getElementAnimationState(element).set(valueName, this);
4226
- }
4227
- }
4228
- then(resolve, reject) {
4229
- return this.currentFinishedPromise.then(resolve, reject);
4230
- }
4231
- updateFinishedPromise() {
4232
- this.currentFinishedPromise = new Promise((resolve) => {
4233
- this.resolveFinishedPromise = resolve;
4234
- });
4235
- }
4236
- play() {
4237
- if (this.state === "finished") {
4238
- this.updateFinishedPromise();
4239
- }
4240
- super.play();
4241
- }
4242
- cancel() {
4243
- this.removeAnimation();
4244
- super.cancel();
4245
- }
4246
- }
4247
-
4248
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs
4249
- function animateElements(elementOrSelector, keyframes2, options, scope) {
4250
- const elements = resolveElements(elementOrSelector, scope);
4251
- const numElements = elements.length;
4252
- invariant(Boolean(numElements), "No valid element provided.");
4253
- const animations = [];
4254
- for (let i = 0;i < numElements; i++) {
4255
- const element = elements[i];
4256
- const elementTransition = { ...options };
4257
- if (typeof elementTransition.delay === "function") {
4258
- elementTransition.delay = elementTransition.delay(i, numElements);
4259
- }
4260
- for (const valueName in keyframes2) {
4261
- const valueKeyframes = keyframes2[valueName];
4262
- const valueOptions = {
4263
- ...getValueTransition2(elementTransition, valueName)
4264
- };
4265
- valueOptions.duration = valueOptions.duration ? secondsToMilliseconds(valueOptions.duration) : valueOptions.duration;
4266
- valueOptions.delay = secondsToMilliseconds(valueOptions.delay || 0);
4267
- animations.push(new NativeAnimation(element, valueName, valueKeyframes, valueOptions));
4268
- }
4269
- }
4270
- return animations;
4271
- }
4272
-
4273
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs
4274
- var createScopedWaapiAnimate = (scope) => {
4275
- function scopedAnimate(elementOrSelector, keyframes2, options) {
4276
- return new GroupPlaybackControls(animateElements(elementOrSelector, keyframes2, options, scope));
4277
- }
4278
- return scopedAnimate;
4279
- };
4280
- var animateMini = /* @__PURE__ */ createScopedWaapiAnimate();
4281
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/observe.mjs
4282
- function observeTimeline(update, timeline) {
4283
- let prevProgress;
4284
- const onFrame = () => {
4285
- const { currentTime } = timeline;
4286
- const percentage = currentTime === null ? 0 : currentTime.value;
4287
- const progress2 = percentage / 100;
4288
- if (prevProgress !== progress2) {
4289
- update(progress2);
4290
- }
4291
- prevProgress = progress2;
4292
- };
4293
- frame.update(onFrame, true);
4294
- return () => cancelFrame(onFrame);
4295
- }
4296
-
4297
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/resize/handle-element.mjs
4298
- var resizeHandlers = new WeakMap;
4299
- var observer;
4300
- function getElementSize(target, borderBoxSize) {
4301
- if (borderBoxSize) {
4302
- const { inlineSize, blockSize } = borderBoxSize[0];
4303
- return { width: inlineSize, height: blockSize };
4304
- } else if (target instanceof SVGElement && "getBBox" in target) {
4305
- return target.getBBox();
4306
- } else {
4307
- return {
4308
- width: target.offsetWidth,
4309
- height: target.offsetHeight
4310
- };
4311
- }
4312
- }
4313
- function notifyTarget({ target, contentRect, borderBoxSize }) {
4314
- var _a;
4315
- (_a = resizeHandlers.get(target)) === null || _a === undefined || _a.forEach((handler) => {
4316
- handler({
4317
- target,
4318
- contentSize: contentRect,
4319
- get size() {
4320
- return getElementSize(target, borderBoxSize);
4321
- }
4322
- });
4323
- });
4324
- }
4325
- function notifyAll(entries) {
4326
- entries.forEach(notifyTarget);
4327
- }
4328
- function createResizeObserver() {
4329
- if (typeof ResizeObserver === "undefined")
4330
- return;
4331
- observer = new ResizeObserver(notifyAll);
4332
- }
4333
- function resizeElement(target, handler) {
4334
- if (!observer)
4335
- createResizeObserver();
4336
- const elements = resolveElements(target);
4337
- elements.forEach((element) => {
4338
- let elementHandlers = resizeHandlers.get(element);
4339
- if (!elementHandlers) {
4340
- elementHandlers = new Set;
4341
- resizeHandlers.set(element, elementHandlers);
4342
- }
4343
- elementHandlers.add(handler);
4344
- observer === null || observer === undefined || observer.observe(element);
4345
- });
4346
- return () => {
4347
- elements.forEach((element) => {
4348
- const elementHandlers = resizeHandlers.get(element);
4349
- elementHandlers === null || elementHandlers === undefined || elementHandlers.delete(handler);
4350
- if (!(elementHandlers === null || elementHandlers === undefined ? undefined : elementHandlers.size)) {
4351
- observer === null || observer === undefined || observer.unobserve(element);
4352
- }
4353
- });
4354
- };
4355
- }
4356
-
4357
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/resize/handle-window.mjs
4358
- var windowCallbacks = new Set;
4359
- var windowResizeHandler;
4360
- function createWindowResizeHandler() {
4361
- windowResizeHandler = () => {
4362
- const size = {
4363
- width: window.innerWidth,
4364
- height: window.innerHeight
4365
- };
4366
- const info = {
4367
- target: window,
4368
- size,
4369
- contentSize: size
4370
- };
4371
- windowCallbacks.forEach((callback) => callback(info));
4372
- };
4373
- window.addEventListener("resize", windowResizeHandler);
4374
- }
4375
- function resizeWindow(callback) {
4376
- windowCallbacks.add(callback);
4377
- if (!windowResizeHandler)
4378
- createWindowResizeHandler();
4379
- return () => {
4380
- windowCallbacks.delete(callback);
4381
- if (!windowCallbacks.size && windowResizeHandler) {
4382
- windowResizeHandler = undefined;
4383
- }
4384
- };
4385
- }
4386
-
4387
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/resize/index.mjs
4388
- function resize(a, b) {
4389
- return typeof a === "function" ? resizeWindow(a) : resizeElement(a, b);
4390
- }
4391
-
4392
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/info.mjs
4393
- var maxElapsed2 = 50;
4394
- var createAxisInfo = () => ({
4395
- current: 0,
4396
- offset: [],
4397
- progress: 0,
4398
- scrollLength: 0,
4399
- targetOffset: 0,
4400
- targetLength: 0,
4401
- containerLength: 0,
4402
- velocity: 0
4403
- });
4404
- var createScrollInfo = () => ({
4405
- time: 0,
4406
- x: createAxisInfo(),
4407
- y: createAxisInfo()
4408
- });
4409
- var keys = {
4410
- x: {
4411
- length: "Width",
4412
- position: "Left"
4413
- },
4414
- y: {
4415
- length: "Height",
4416
- position: "Top"
4417
- }
4418
- };
4419
- function updateAxisInfo(element, axisName, info, time2) {
4420
- const axis = info[axisName];
4421
- const { length, position } = keys[axisName];
4422
- const prev = axis.current;
4423
- const prevTime = info.time;
4424
- axis.current = element[`scroll${position}`];
4425
- axis.scrollLength = element[`scroll${length}`] - element[`client${length}`];
4426
- axis.offset.length = 0;
4427
- axis.offset[0] = 0;
4428
- axis.offset[1] = axis.scrollLength;
4429
- axis.progress = progress(0, axis.scrollLength, axis.current);
4430
- const elapsed = time2 - prevTime;
4431
- axis.velocity = elapsed > maxElapsed2 ? 0 : velocityPerSecond(axis.current - prev, elapsed);
4432
- }
4433
- function updateScrollInfo(element, info, time2) {
4434
- updateAxisInfo(element, "x", info, time2);
4435
- updateAxisInfo(element, "y", info, time2);
4436
- info.time = time2;
4437
- }
4438
-
4439
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs
4440
- function calcInset(element, container) {
4441
- const inset = { x: 0, y: 0 };
4442
- let current = element;
4443
- while (current && current !== container) {
4444
- if (current instanceof HTMLElement) {
4445
- inset.x += current.offsetLeft;
4446
- inset.y += current.offsetTop;
4447
- current = current.offsetParent;
4448
- } else if (current.tagName === "svg") {
4449
- const svgBoundingBox = current.getBoundingClientRect();
4450
- current = current.parentElement;
4451
- const parentBoundingBox = current.getBoundingClientRect();
4452
- inset.x += svgBoundingBox.left - parentBoundingBox.left;
4453
- inset.y += svgBoundingBox.top - parentBoundingBox.top;
4454
- } else if (current instanceof SVGGraphicsElement) {
4455
- const { x, y } = current.getBBox();
4456
- inset.x += x;
4457
- inset.y += y;
4458
- let svg = null;
4459
- let parent = current.parentNode;
4460
- while (!svg) {
4461
- if (parent.tagName === "svg") {
4462
- svg = parent;
4463
- }
4464
- parent = current.parentNode;
4465
- }
4466
- current = svg;
4467
- } else {
4468
- break;
4469
- }
4470
- }
4471
- return inset;
4472
- }
4473
-
4474
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs
4475
- var namedEdges = {
4476
- start: 0,
4477
- center: 0.5,
4478
- end: 1
4479
- };
4480
- function resolveEdge(edge, length, inset = 0) {
4481
- let delta = 0;
4482
- if (edge in namedEdges) {
4483
- edge = namedEdges[edge];
4484
- }
4485
- if (typeof edge === "string") {
4486
- const asNumber = parseFloat(edge);
4487
- if (edge.endsWith("px")) {
4488
- delta = asNumber;
4489
- } else if (edge.endsWith("%")) {
4490
- edge = asNumber / 100;
4491
- } else if (edge.endsWith("vw")) {
4492
- delta = asNumber / 100 * document.documentElement.clientWidth;
4493
- } else if (edge.endsWith("vh")) {
4494
- delta = asNumber / 100 * document.documentElement.clientHeight;
4495
- } else {
4496
- edge = asNumber;
4497
- }
4498
- }
4499
- if (typeof edge === "number") {
4500
- delta = length * edge;
4501
- }
4502
- return inset + delta;
4503
- }
4504
-
4505
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs
4506
- var defaultOffset2 = [0, 0];
4507
- function resolveOffset(offset, containerLength, targetLength, targetInset) {
4508
- let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset2;
4509
- let targetPoint = 0;
4510
- let containerPoint = 0;
4511
- if (typeof offset === "number") {
4512
- offsetDefinition = [offset, offset];
4513
- } else if (typeof offset === "string") {
4514
- offset = offset.trim();
4515
- if (offset.includes(" ")) {
4516
- offsetDefinition = offset.split(" ");
4517
- } else {
4518
- offsetDefinition = [offset, namedEdges[offset] ? offset : `0`];
4519
- }
4520
- }
4521
- targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);
4522
- containerPoint = resolveEdge(offsetDefinition[1], containerLength);
4523
- return targetPoint - containerPoint;
4524
- }
4525
-
4526
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs
4527
- var ScrollOffset = {
4528
- Enter: [
4529
- [0, 1],
4530
- [1, 1]
4531
- ],
4532
- Exit: [
4533
- [0, 0],
4534
- [1, 0]
4535
- ],
4536
- Any: [
4537
- [1, 0],
4538
- [0, 1]
4539
- ],
4540
- All: [
4541
- [0, 0],
4542
- [1, 1]
4543
- ]
4544
- };
4545
-
4546
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs
4547
- var point = { x: 0, y: 0 };
4548
- function getTargetSize(target) {
4549
- return "getBBox" in target && target.tagName !== "svg" ? target.getBBox() : { width: target.clientWidth, height: target.clientHeight };
4550
- }
4551
- function resolveOffsets(container, info, options) {
4552
- const { offset: offsetDefinition = ScrollOffset.All } = options;
4553
- const { target = container, axis = "y" } = options;
4554
- const lengthLabel = axis === "y" ? "height" : "width";
4555
- const inset = target !== container ? calcInset(target, container) : point;
4556
- const targetSize = target === container ? { width: container.scrollWidth, height: container.scrollHeight } : getTargetSize(target);
4557
- const containerSize = {
4558
- width: container.clientWidth,
4559
- height: container.clientHeight
4560
- };
4561
- info[axis].offset.length = 0;
4562
- let hasChanged = !info[axis].interpolate;
4563
- const numOffsets = offsetDefinition.length;
4564
- for (let i = 0;i < numOffsets; i++) {
4565
- const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);
4566
- if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {
4567
- hasChanged = true;
4568
- }
4569
- info[axis].offset[i] = offset;
4570
- }
4571
- if (hasChanged) {
4572
- info[axis].interpolate = interpolate(info[axis].offset, defaultOffset(offsetDefinition), { clamp: false });
4573
- info[axis].interpolatorOffsets = [...info[axis].offset];
4574
- }
4575
- info[axis].progress = clamp(0, 1, info[axis].interpolate(info[axis].current));
4576
- }
4577
-
4578
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs
4579
- function measure(container, target = container, info) {
4580
- info.x.targetOffset = 0;
4581
- info.y.targetOffset = 0;
4582
- if (target !== container) {
4583
- let node = target;
4584
- while (node && node !== container) {
4585
- info.x.targetOffset += node.offsetLeft;
4586
- info.y.targetOffset += node.offsetTop;
4587
- node = node.offsetParent;
4588
- }
4589
- }
4590
- info.x.targetLength = target === container ? target.scrollWidth : target.clientWidth;
4591
- info.y.targetLength = target === container ? target.scrollHeight : target.clientHeight;
4592
- info.x.containerLength = container.clientWidth;
4593
- info.y.containerLength = container.clientHeight;
4594
- if (false) {}
4595
- }
4596
- function createOnScrollHandler(element, onScroll, info, options = {}) {
4597
- return {
4598
- measure: () => measure(element, options.target, info),
4599
- update: (time2) => {
4600
- updateScrollInfo(element, info, time2);
4601
- if (options.offset || options.target) {
4602
- resolveOffsets(element, info, options);
4603
- }
4604
- },
4605
- notify: () => onScroll(info)
4606
- };
4607
- }
4608
-
4609
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/track.mjs
4610
- var scrollListeners = new WeakMap;
4611
- var resizeListeners = new WeakMap;
4612
- var onScrollHandlers = new WeakMap;
4613
- var getEventTarget = (element) => element === document.documentElement ? window : element;
4614
- function scrollInfo(onScroll, { container = document.documentElement, ...options } = {}) {
4615
- let containerHandlers = onScrollHandlers.get(container);
4616
- if (!containerHandlers) {
4617
- containerHandlers = new Set;
4618
- onScrollHandlers.set(container, containerHandlers);
4619
- }
4620
- const info = createScrollInfo();
4621
- const containerHandler = createOnScrollHandler(container, onScroll, info, options);
4622
- containerHandlers.add(containerHandler);
4623
- if (!scrollListeners.has(container)) {
4624
- const measureAll = () => {
4625
- for (const handler of containerHandlers)
4626
- handler.measure();
4627
- };
4628
- const updateAll = () => {
4629
- for (const handler of containerHandlers) {
4630
- handler.update(frameData.timestamp);
4631
- }
4632
- };
4633
- const notifyAll2 = () => {
4634
- for (const handler of containerHandlers)
4635
- handler.notify();
4636
- };
4637
- const listener2 = () => {
4638
- frame.read(measureAll, false, true);
4639
- frame.read(updateAll, false, true);
4640
- frame.update(notifyAll2, false, true);
4641
- };
4642
- scrollListeners.set(container, listener2);
4643
- const target = getEventTarget(container);
4644
- window.addEventListener("resize", listener2, { passive: true });
4645
- if (container !== document.documentElement) {
4646
- resizeListeners.set(container, resize(container, listener2));
4647
- }
4648
- target.addEventListener("scroll", listener2, { passive: true });
4649
- }
4650
- const listener = scrollListeners.get(container);
4651
- frame.read(listener, false, true);
4652
- return () => {
4653
- var _a;
4654
- cancelFrame(listener);
4655
- const currentHandlers = onScrollHandlers.get(container);
4656
- if (!currentHandlers)
4657
- return;
4658
- currentHandlers.delete(containerHandler);
4659
- if (currentHandlers.size)
4660
- return;
4661
- const scrollListener = scrollListeners.get(container);
4662
- scrollListeners.delete(container);
4663
- if (scrollListener) {
4664
- getEventTarget(container).removeEventListener("scroll", scrollListener);
4665
- (_a = resizeListeners.get(container)) === null || _a === undefined || _a();
4666
- window.removeEventListener("resize", scrollListener);
4667
- }
4668
- };
4669
- }
4670
-
4671
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/scroll/index.mjs
4672
- function scrollTimelineFallback({ source, container, axis = "y" }) {
4673
- if (source)
4674
- container = source;
4675
- const currentTime = { value: 0 };
4676
- const cancel = scrollInfo((info) => {
4677
- currentTime.value = info[axis].progress * 100;
4678
- }, { container, axis });
4679
- return { currentTime, cancel };
4680
- }
4681
- var timelineCache = new Map;
4682
- function getTimeline({ source, container = document.documentElement, axis = "y" } = {}) {
4683
- if (source)
4684
- container = source;
4685
- if (!timelineCache.has(container)) {
4686
- timelineCache.set(container, {});
4687
- }
4688
- const elementCache = timelineCache.get(container);
4689
- if (!elementCache[axis]) {
4690
- elementCache[axis] = supportsScrollTimeline() ? new ScrollTimeline({ source: container, axis }) : scrollTimelineFallback({ source: container, axis });
4691
- }
4692
- return elementCache[axis];
4693
- }
4694
- function isOnScrollWithInfo(onScroll) {
4695
- return onScroll.length === 2;
4696
- }
4697
- function needsElementTracking(options) {
4698
- return options && (options.target || options.offset);
4699
- }
4700
- function scrollFunction(onScroll, options) {
4701
- if (isOnScrollWithInfo(onScroll) || needsElementTracking(options)) {
4702
- return scrollInfo((info) => {
4703
- onScroll(info[options.axis].progress, info);
4704
- }, options);
4705
- } else {
4706
- return observeTimeline(onScroll, getTimeline(options));
4707
- }
4708
- }
4709
- function scrollAnimation(animation, options) {
4710
- animation.flatten();
4711
- if (needsElementTracking(options)) {
4712
- animation.pause();
4713
- return scrollInfo((info) => {
4714
- animation.time = animation.duration * info[options.axis].progress;
4715
- }, options);
4716
- } else {
4717
- const timeline = getTimeline(options);
4718
- if (animation.attachTimeline) {
4719
- return animation.attachTimeline(timeline, (valueAnimation) => {
4720
- valueAnimation.pause();
4721
- return observeTimeline((progress2) => {
4722
- valueAnimation.time = valueAnimation.duration * progress2;
4723
- }, timeline);
4724
- });
4725
- } else {
4726
- return noop;
4727
- }
4728
- }
4729
- }
4730
- function scroll(onScroll, { axis = "y", ...options } = {}) {
4731
- const optionsWithDefaults = { axis, ...options };
4732
- return typeof onScroll === "function" ? scrollFunction(onScroll, optionsWithDefaults) : scrollAnimation(onScroll, optionsWithDefaults);
4733
- }
4734
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/render/dom/viewport/index.mjs
4735
- var thresholds = {
4736
- some: 0,
4737
- all: 1
4738
- };
4739
- function inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = "some" } = {}) {
4740
- const elements = resolveElements(elementOrSelector);
4741
- const activeIntersections = new WeakMap;
4742
- const onIntersectionChange = (entries) => {
4743
- entries.forEach((entry) => {
4744
- const onEnd = activeIntersections.get(entry.target);
4745
- if (entry.isIntersecting === Boolean(onEnd))
4746
- return;
4747
- if (entry.isIntersecting) {
4748
- const newOnEnd = onStart(entry);
4749
- if (typeof newOnEnd === "function") {
4750
- activeIntersections.set(entry.target, newOnEnd);
4751
- } else {
4752
- observer2.unobserve(entry.target);
4753
- }
4754
- } else if (typeof onEnd === "function") {
4755
- onEnd(entry);
4756
- activeIntersections.delete(entry.target);
4757
- }
4758
- });
4759
- };
4760
- const observer2 = new IntersectionObserver(onIntersectionChange, {
4761
- root,
4762
- rootMargin,
4763
- threshold: typeof amount === "number" ? amount : thresholds[amount]
4764
- });
4765
- elements.forEach((element) => observer2.observe(element));
4766
- return () => observer2.disconnect();
4767
- }
4768
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/easing/steps.mjs
4769
- function steps(numSteps, direction = "end") {
4770
- return (progress2) => {
4771
- progress2 = direction === "end" ? Math.min(progress2, 0.999) : Math.max(progress2, 0.001);
4772
- const expanded = progress2 * numSteps;
4773
- const rounded = direction === "end" ? Math.floor(expanded) : Math.ceil(expanded);
4774
- return clamp(0, 1, rounded / numSteps);
4775
- };
4776
- }
4777
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/animation/utils/stagger.mjs
4778
- function getOriginIndex(from, total) {
4779
- if (from === "first") {
4780
- return 0;
4781
- } else {
4782
- const lastIndex = total - 1;
4783
- return from === "last" ? lastIndex : lastIndex / 2;
4784
- }
4785
- }
4786
- function stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2 } = {}) {
4787
- return (i, total) => {
4788
- const fromIndex = typeof from === "number" ? from : getOriginIndex(from, total);
4789
- const distance = Math.abs(fromIndex - i);
4790
- let delay = duration * distance;
4791
- if (ease2) {
4792
- const maxDelay = total * duration;
4793
- const easingFunction = easingDefinitionToFunction(ease2);
4794
- delay = easingFunction(delay / maxDelay) * maxDelay;
4795
- }
4796
- return startDelay + delay;
4797
- };
4798
- }
4799
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/delay.mjs
4800
- function delay(callback, timeout) {
4801
- const start = time.now();
4802
- const checkElapsed = ({ timestamp }) => {
4803
- const elapsed = timestamp - start;
4804
- if (elapsed >= timeout) {
4805
- cancelFrame(checkElapsed);
4806
- callback(elapsed - timeout);
4807
- }
4808
- };
4809
- frame.read(checkElapsed, true);
4810
- return () => cancelFrame(checkElapsed);
4811
- }
4812
- function delayInSeconds(callback, timeout) {
4813
- return delay(callback, secondsToMilliseconds(timeout));
4814
- }
4815
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/distance.mjs
4816
- var distance = (a, b) => Math.abs(a - b);
4817
- function distance2D(a, b) {
4818
- const xDelta = distance(a.x, b.x);
4819
- const yDelta = distance(a.y, b.y);
4820
- return Math.sqrt(xDelta ** 2 + yDelta ** 2);
4821
- }
4822
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/utils/transform.mjs
4823
- var isCustomValueType = (v) => {
4824
- return v && typeof v === "object" && v.mix;
4825
- };
4826
- var getMixer2 = (v) => isCustomValueType(v) ? v.mix : undefined;
4827
- function transform(...args) {
4828
- const useImmediate = !Array.isArray(args[0]);
4829
- const argOffset = useImmediate ? 0 : -1;
4830
- const inputValue = args[0 + argOffset];
4831
- const inputRange = args[1 + argOffset];
4832
- const outputRange = args[2 + argOffset];
4833
- const options = args[3 + argOffset];
4834
- const interpolator = interpolate(inputRange, outputRange, {
4835
- mixer: getMixer2(outputRange[0]),
4836
- ...options
4837
- });
4838
- return useImmediate ? interpolator(inputValue) : interpolator;
4839
- }
4840
- // ../../../node_modules/.pnpm/motion@11.18.2_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/motion/dist/es/framer-motion/dist/es/frameloop/index-legacy.mjs
4841
- var sync = frame;
4842
- var cancelSync = stepsOrder.reduce((acc, key) => {
4843
- acc[key] = (process) => cancelFrame(process);
4844
- return acc;
4845
- }, {});
4846
- // synth:/Users/iagh/git/claude-design/plugins/design/dev-server/.runtime-bundle-motion-entry.tsx
4847
- var {
4848
- MotionValue: MotionValue2,
4849
- animate: animate2,
4850
- animateMini: animateMini2,
4851
- anticipate: anticipate2,
4852
- backIn: backIn2,
4853
- backInOut: backInOut2,
4854
- backOut: backOut2,
4855
- cancelFrame: cancelFrame2,
4856
- cancelSync: cancelSync2,
4857
- circIn: circIn2,
4858
- circInOut: circInOut2,
4859
- circOut: circOut2,
4860
- clamp: clamp2,
4861
- createScopedAnimate: createScopedAnimate2,
4862
- cubicBezier: cubicBezier2,
4863
- delay: delay2,
4864
- distance: distance2,
4865
- distance2D: distance2D2,
4866
- easeIn: easeIn2,
4867
- easeInOut: easeInOut2,
4868
- easeOut: easeOut2,
4869
- frame: frame2,
4870
- frameData: frameData2,
4871
- frameSteps: frameSteps2,
4872
- inView: inView2,
4873
- inertia: inertia2,
4874
- interpolate: interpolate2,
4875
- invariant: invariant2,
4876
- isDragActive: isDragActive2,
4877
- keyframes: keyframes2,
4878
- mirrorEasing: mirrorEasing2,
4879
- mix: mix2,
4880
- motionValue: motionValue2,
4881
- noop: noop2,
4882
- pipe: pipe2,
4883
- progress: progress2,
4884
- reverseEasing: reverseEasing2,
4885
- scroll: scroll2,
4886
- scrollInfo: scrollInfo2,
4887
- spring: spring2,
4888
- stagger: stagger2,
4889
- steps: steps2,
4890
- sync: sync2,
4891
- time: time2,
4892
- transform: transform2,
4893
- wrap: wrap2
4894
- } = exports_lib;
4895
- var __runtime_bundle_motion_entry_default = exports_lib;
4896
- export {
4897
- wrap2 as wrap,
4898
- transform2 as transform,
4899
- time2 as time,
4900
- sync2 as sync,
4901
- steps2 as steps,
4902
- stagger2 as stagger,
4903
- spring2 as spring,
4904
- scrollInfo2 as scrollInfo,
4905
- scroll2 as scroll,
4906
- reverseEasing2 as reverseEasing,
4907
- progress2 as progress,
4908
- pipe2 as pipe,
4909
- noop2 as noop,
4910
- motionValue2 as motionValue,
4911
- mix2 as mix,
4912
- mirrorEasing2 as mirrorEasing,
4913
- keyframes2 as keyframes,
4914
- isDragActive2 as isDragActive,
4915
- invariant2 as invariant,
4916
- interpolate2 as interpolate,
4917
- inertia2 as inertia,
4918
- inView2 as inView,
4919
- frameSteps2 as frameSteps,
4920
- frameData2 as frameData,
4921
- frame2 as frame,
4922
- easeOut2 as easeOut,
4923
- easeInOut2 as easeInOut,
4924
- easeIn2 as easeIn,
4925
- distance2D2 as distance2D,
4926
- distance2 as distance,
4927
- delay2 as delay,
4928
- __runtime_bundle_motion_entry_default as default,
4929
- cubicBezier2 as cubicBezier,
4930
- createScopedAnimate2 as createScopedAnimate,
4931
- clamp2 as clamp,
4932
- circOut2 as circOut,
4933
- circInOut2 as circInOut,
4934
- circIn2 as circIn,
4935
- cancelSync2 as cancelSync,
4936
- cancelFrame2 as cancelFrame,
4937
- backOut2 as backOut,
4938
- backInOut2 as backInOut,
4939
- backIn2 as backIn,
4940
- anticipate2 as anticipate,
4941
- animateMini2 as animateMini,
4942
- animate2 as animate,
4943
- MotionValue2 as MotionValue
4944
- };