@qredence/fleet 0.6.0 → 0.6.2
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.
- package/CHANGELOG.md +18 -0
- package/dist/web/client/assets/agent-disclosure-CMrxF7L-.js +1 -0
- package/dist/web/client/assets/analytics-stub-C2vgmGm_.js +1 -0
- package/dist/web/client/assets/artifacts-panel-DmQghvw8.js +1 -0
- package/dist/web/client/assets/{bot-Bs7QWJ2q.js → bot-DbB9BKL0.js} +1 -1
- package/dist/web/client/assets/bundle-mjs-cJTHqqzI.js +1 -0
- package/dist/web/client/assets/button-Dl0ce3Y5.js +1 -0
- package/dist/web/client/assets/card-DCEnYd2G.js +1 -0
- package/dist/web/client/assets/chat-C24kD2SP.js +52 -0
- package/dist/web/client/assets/chat-command-palette-BIwjhE6s.js +1 -0
- package/dist/web/client/assets/check-B3LlvM65.js +1 -0
- package/dist/web/client/assets/{chevron-down-BEVGmnSb.js → chevron-down-DUUprRP5.js} +1 -1
- package/dist/web/client/assets/chevron-right-NVqQIoiO.js +1 -0
- package/dist/web/client/assets/{chunk-YOKDWASO-BAf618wr.js → chunk-YOKDWASO-Bte3iwlH.js} +6 -6
- package/dist/web/client/assets/citations-BUvM92nt.js +1 -0
- package/dist/web/client/assets/collapsible-CUxOjhDJ.js +1 -0
- package/dist/web/client/assets/command-Dv96gATQ.js +1 -0
- package/dist/web/client/assets/createBaseUIEventDetails-B58Jldei.js +1 -0
- package/dist/web/client/assets/createLucideIcon-_dfI7Arx.js +1 -0
- package/dist/web/client/assets/dialog-BCb4rQh0.js +1 -0
- package/dist/web/client/assets/dist-52wg4XPY.js +1 -0
- package/dist/web/client/assets/dist-DbHxXSgQ.js +41 -0
- package/dist/web/client/assets/ease-CMumuPlX.js +1 -0
- package/dist/web/client/assets/{eye-B0DFz5hL.js → eye-CDHqtVoE.js} +1 -1
- package/dist/web/client/assets/file-text-TmalmYrb.js +1 -0
- package/dist/web/client/assets/{folder-BC5p7qK7.js → folder-vuNT4shY.js} +1 -1
- package/dist/web/client/assets/{fork-picker-dialog-ByBOGVsa.js → fork-picker-dialog-CpwEwsxA.js} +1 -1
- package/dist/web/client/assets/gauge-BsDqNM1A.js +1 -0
- package/dist/web/client/assets/globals-DCtBkCSD.css +2 -0
- package/dist/web/client/assets/{hard-drive-CHqgr7VQ.js → hard-drive-BT7UxHQu.js} +1 -1
- package/dist/web/client/assets/highlighted-body-KPVGNVTW-CgT7gqvs.js +1 -0
- package/dist/web/client/assets/horizontal-resize-VLjLByUV.js +1 -0
- package/dist/web/client/assets/index-BGnQeUYE.js +12 -0
- package/dist/web/client/assets/input-CxZp56Im.js +1 -0
- package/dist/web/client/assets/input-group-D7lAfKHR.js +1 -0
- package/dist/web/client/assets/ipython-tool-CkHaO3PW.js +3 -0
- package/dist/web/client/assets/is-ref-object-BcRWZ4l7.js +1 -0
- package/dist/web/client/assets/{loader-circle-DjfHXUPB.js → loader-circle-B5GIZGxd.js} +1 -1
- package/dist/web/client/assets/markdown-BHkByC9K.js +2 -0
- package/dist/web/client/assets/{markdown-code-CuQcR3UO.js → markdown-code-CDTRq-HZ.js} +1 -1
- package/dist/web/client/assets/mermaid-HWGCJPDP-CY3N5ECk.js +1 -0
- package/dist/web/client/assets/message-queue-Dl8wbCOu.js +1 -0
- package/dist/web/client/assets/model-selector-list-CRZCXeBf.js +1 -0
- package/dist/web/client/assets/{notify-DgMKgZZW.js → notify-DjVixft7.js} +1 -1
- package/dist/web/client/assets/openui-renderer-Bkkx5kmA.js +378 -0
- package/dist/web/client/assets/{package-CdcJFPf2.js → package-BKBPgwMP.js} +1 -1
- package/dist/web/client/assets/{pencil-DcUwsKLn.js → pencil-CdO6qfv3.js} +1 -1
- package/dist/web/client/assets/{plug-Dt6VN0zF.js → plug-BRROUIw-.js} +1 -1
- package/dist/web/client/assets/prompt-input-WaGSKZCU.js +1 -0
- package/dist/web/client/assets/prompt-suggestions-BNyTcyWg.js +1 -0
- package/dist/web/client/assets/provider-catalog-C0XBIasJ.js +1 -0
- package/dist/web/client/assets/provider-label-Cka0ep0S.js +1 -0
- package/dist/web/client/assets/react-CwJFpaho.js +1 -0
- package/dist/web/client/assets/react-dom-DX3XddaT.js +1 -0
- package/dist/web/client/assets/{refresh-cw-IThTJ3j-.js → refresh-cw-l9WPHRkq.js} +1 -1
- package/dist/web/client/assets/repl-panel-L9dmPqio.js +1 -0
- package/dist/web/client/assets/{resource-helpers-Q2T0YCMO.js → resource-helpers-BuWybA8l.js} +1 -1
- package/dist/web/client/assets/resources-panel-mT-aMCvV.js +1 -0
- package/dist/web/client/assets/right-panel-context-CS8tJMzE.js +1 -0
- package/dist/web/client/assets/right-panel-registry-BCW7fQTG.js +2 -0
- package/dist/web/client/assets/{rotate-ccw-WNFNkKQD.js → rotate-ccw-CfGhzOv7.js} +1 -1
- package/dist/web/client/assets/routes-BWe5Iz-2.js +16 -0
- package/dist/web/client/assets/safe-external-url-BbAom7Bm.js +1 -0
- package/dist/web/client/assets/search-BjcXAUrI.js +1 -0
- package/dist/web/client/assets/session-insights-panel-B0rl37lo.js +1 -0
- package/dist/web/client/assets/session-reasoning-panel-8D2P7iaJ.js +1 -0
- package/dist/web/client/assets/{fleet-pi-tool-renderer-BEDIO3al.js → session-tool-renderer-3E3cv8D0.js} +30 -30
- package/dist/web/client/assets/settings-dialog-B8lHq2tT.js +2 -0
- package/dist/web/client/assets/{skeleton-CkR2VmWc.js → skeleton-C3mo31Qu.js} +1 -1
- package/dist/web/client/assets/skeleton-loaders-BMa_G4yX.js +1 -0
- package/dist/web/client/assets/{shield-check-CkA2viVW.js → sparkles-D8XIY8pN.js} +1 -1
- package/dist/web/client/assets/square-DQaQu9bp.js +1 -0
- package/dist/web/client/assets/{square-terminal-BYTN_I86.js → square-terminal-BsopiuN7.js} +1 -1
- package/dist/web/client/assets/{subagent-chat-panel-Yujplxpb.js → subagent-chat-panel-C5ukYiUx.js} +1 -1
- package/dist/web/client/assets/subagent-transcript-lqNcSVbH.js +1 -0
- package/dist/web/client/assets/subagents-panel-SJKhaVTr.js +1 -0
- package/dist/web/client/assets/{sun-BWiZFty0.js → sun-D0llhiMU.js} +1 -1
- package/dist/web/client/assets/surfaces-CpfsGAIA.js +1 -0
- package/dist/web/client/assets/switch-D3FhZU-S.js +1 -0
- package/dist/web/client/assets/terminal-BQAKkBY6.js +1 -0
- package/dist/web/client/assets/toast-lnCWGgSE.js +1 -0
- package/dist/web/client/assets/tokens-Ch5WqXC_.js +1 -0
- package/dist/web/client/assets/tool-result-B_yb2JoE.js +4 -0
- package/dist/web/client/assets/tool-timeline-VnMRQoLS.js +1 -0
- package/dist/web/client/assets/{triangle-alert-CU-gd7ui.js → triangle-alert-GAYh_5d3.js} +1 -1
- package/dist/web/client/assets/ui-preferences-aG2U2jjW.js +1 -0
- package/dist/web/client/assets/use-presence-7I2qv4qI.js +1 -0
- package/dist/web/client/assets/use-reduced-motion-BOcG709U.js +9 -0
- package/dist/web/client/assets/useBaseUiId-D9ZGPZ6f.js +1 -0
- package/dist/web/client/assets/useControlled-CgAAWIy9.js +1 -0
- package/dist/web/client/assets/utils-Brtgag-m.js +1 -0
- package/dist/web/client/assets/virtualized-turn-list-BgUgX6tM.js +6 -0
- package/dist/web/client/assets/workspace-panel-CKF5JQl2.js +1 -0
- package/dist/web/client/assets/workspace-path-nav-DqPbETfJ.js +2 -0
- package/dist/web/client/assets/{wrench-BJNNe07k.js → wrench-Myc12BTA.js} +1 -1
- package/dist/web/client/assets/x-BGsDD848.js +1 -0
- package/dist/web/client/bundle-budget.json +6 -6
- package/dist/web/launcher.mjs +10 -1
- package/dist/web/server/_tanstack-start-manifest_v-BDPifIFN-DTSNCHBX.js +91 -0
- package/dist/web/server/{artifacts-panel-CaKrX2XC-R37I4BHF.js → artifacts-panel-BN3DgqfV-N73J6N5Y.js} +39 -44
- package/dist/web/server/{chat-command-palette-7gbqEnm9-6XICQZN7.js → chat-command-palette-G8awyZRw-2QE7FXGT.js} +18 -18
- package/dist/web/server/{chunk-SALXCFVO.js → chunk-33QA7BQJ.js} +19 -1
- package/dist/web/server/{chunk-P6UMR32I.js → chunk-43S5N7SH.js} +80 -47
- package/dist/web/server/chunk-4EBSM4JR.js +74 -0
- package/dist/web/server/{chunk-BBBS5AS7.js → chunk-4OTHKQMG.js} +753 -677
- package/dist/web/server/{chunk-WM4PUT6M.js → chunk-6SOMNRAX.js} +535 -505
- package/dist/web/server/chunk-7E76R7MB.js +2138 -0
- package/dist/web/server/{chunk-K3BXQG3N.js → chunk-7FK6YEMA.js} +100 -95
- package/dist/web/server/chunk-7HXCGBUP.js +56 -0
- package/dist/web/server/{chunk-P66QQWUM.js → chunk-7NZ3FJDA.js} +14 -1
- package/dist/web/server/{chunk-WHBVQJ4K.js → chunk-7UTDOTOU.js} +11 -9
- package/dist/web/server/{chunk-OZO5ARFA.js → chunk-BQROC4PL.js} +11 -2
- package/dist/web/server/{chunk-WYL2DW5R.js → chunk-BUXJSBE3.js} +2 -2
- package/dist/web/server/{chunk-ZJFA4F5X.js → chunk-CAPTFJOC.js} +9 -7
- package/dist/web/server/{chunk-EH4BZ6QM.js → chunk-CCYLHNZJ.js} +1767 -52
- package/dist/web/server/{chunk-DJMHPJBP.js → chunk-CHEC7TWB.js} +3 -1
- package/dist/web/server/{chunk-PIOFZUOU.js → chunk-CW6KZUKT.js} +7 -6
- package/dist/web/server/chunk-DLA5TLKX.js +164 -0
- package/dist/web/server/{chunk-7SR6WDM2.js → chunk-E5HALE4M.js} +4 -4
- package/dist/web/server/{chunk-DZ2IC3FH.js → chunk-EDAWH2MT.js} +47 -46
- package/dist/web/server/{chunk-JQDLJ7KI.js → chunk-ENGEUJIH.js} +2288 -2438
- package/dist/web/server/{chunk-DI7XRK2H.js → chunk-ESM7OCRL.js} +4 -4
- package/dist/web/server/{chunk-KELEYPVK.js → chunk-FT74GAAH.js} +74861 -74854
- package/dist/web/server/{chunk-LZ4Q5KUJ.js → chunk-HQ5TEXHT.js} +40 -60
- package/dist/web/server/{chunk-YOM42BKD.js → chunk-IPV4GLJL.js} +16 -16
- package/dist/web/server/{chunk-KOUEJ3NU.js → chunk-IXGLKAPN.js} +54 -46
- package/dist/web/server/{chunk-EAE2QXRK.js → chunk-JPDRUSUD.js} +2 -3
- package/dist/web/server/{chunk-AGFRJQZ7.js → chunk-JVOW2NWC.js} +452 -450
- package/dist/web/server/chunk-K6PTNSCW.js +31 -0
- package/dist/web/server/{chunk-AR7O7JXD.js → chunk-KBWUBWVJ.js} +24 -1
- package/dist/web/server/{chunk-NXJ32VFR.js → chunk-MJXXVQNA.js} +91 -96
- package/dist/web/server/{chunk-N6NOTURM.js → chunk-NCK2FJAD.js} +30 -26
- package/dist/web/server/{chunk-LXJD6IGW.js → chunk-NMBH57JT.js} +94 -33
- package/dist/web/server/{chunk-EAJTWMK5.js → chunk-NZ6KQT2X.js} +2 -2
- package/dist/web/server/{chunk-CNXJN5HN.js → chunk-O2UYZT3Z.js} +11 -11
- package/dist/web/server/{chunk-YXXRP3NS.js → chunk-OMEDERPG.js} +21 -25
- package/dist/web/server/{chunk-BLSX7WHW.js → chunk-OSMP55KI.js} +23 -2
- package/dist/web/server/{chunk-S3PQ6HKH.js → chunk-OVJYUWSQ.js} +2 -2
- package/dist/web/server/{chunk-XLNCWZMZ.js → chunk-RXUMFFUV.js} +5 -3
- package/dist/web/server/{chunk-DO2O27B2.js → chunk-SDV3P3IW.js} +2 -2
- package/dist/web/server/chunk-TLNZNR7C.js +46 -0
- package/dist/web/server/{chunk-IJPCV6DH.js → chunk-UDD5W4CR.js} +32 -10
- package/dist/web/server/{chunk-HSJMLO36.js → chunk-UE32PAV2.js} +47 -57
- package/dist/web/server/{chunk-UAPNEWCA.js → chunk-WB2LJC3R.js} +29 -32
- package/dist/web/server/{chunk-ETTDO4UO.js → chunk-WTYNN6EV.js} +1 -26
- package/dist/web/server/{chunk-2ATMSG7U.js → chunk-WU6X3GPJ.js} +48 -5
- package/dist/web/server/{chunk-C5X6G26O.js → chunk-XJ6TGSUB.js} +45 -24
- package/dist/web/server/{chunk-YNUWKMNQ.js → chunk-YMPJMHXZ.js} +41 -155
- package/dist/web/server/{chunk-GETSIVNU.js → chunk-YVGCPUAW.js} +7 -7
- package/dist/web/server/{chunk-4UBOIY2S.js → chunk-ZNFXBGLK.js} +1 -1
- package/dist/web/server/chunk-ZOVXMNJM.js +477 -0
- package/dist/web/server/{fork-picker-dialog-DlINz9UQ-UWIXFDJX.js → fork-picker-dialog-YKlapaxN-DR5L74ST.js} +9 -8
- package/dist/web/server/{markdown-DTnMbD87-FXGGAPJD.js → markdown-BzNejPoZ-6ITTDAV6.js} +2 -3
- package/dist/web/server/{markdown-code-BStjFfsy-SSLWUT4S.js → markdown-code-DAwXuW6m-HHVELO6I.js} +3 -4
- package/dist/web/server/{fleet-message-queue-BS-cZ56r-GLZXUKDF.js → message-queue-Demph1x4-RBJUC3AT.js} +14 -10
- package/dist/web/server/{model-selector-list-jBTZc2Mu-OXJOS5NA.js → model-selector-list-BmzLiCx9-TK6JGGKU.js} +20 -19
- package/dist/web/server/{openui-renderer-Biyyjhjn-SJOEKPTJ.js → openui-renderer-moJGf0LA-QCU3PI6H.js} +17 -18
- package/dist/web/server/{prompt-suggestions-D4AEEY7K-RZSP7PWV.js → prompt-suggestions-yPZqX__K-3VGJC4IF.js} +7 -6
- package/dist/web/server/{repl-panel-D5KsoJik-BQKO53JO.js → repl-panel-CgUF1qUw-3DFD2V53.js} +10 -11
- package/dist/web/server/{resources-panel-CE5pD4vy-V5FXBTYC.js → resources-panel-ChUliWV--JITAGS6Q.js} +6 -7
- package/dist/web/server/{router-DWALoX_M-I5CBL7FQ.js → router-CPdFlpbe-LAD4MNZB.js} +3117 -241
- package/dist/web/server/{routes-BBVirYfL-5WXMOT7M.js → routes-hkom6S6L-DUPPQHPY.js} +8753 -7974
- package/dist/web/server/server.js +2 -2
- package/dist/web/server/{session-insights-panel-CUhdgvRt-VB2HUCQP.js → session-insights-panel-xgrkX1Rp-FDNURBXZ.js} +9 -9
- package/dist/web/server/{fleet-reasoning-panel-BxC2COxi-GPLMQSTT.js → session-reasoning-panel-m1RgcIph-NUXGXVKE.js} +39 -40
- package/dist/web/server/session-tool-renderer-CglQ2ky7-2JVYNZG2.js +45 -0
- package/dist/web/server/{settings-dialog-DndPbM-v-RFNXXEAN.js → settings-dialog-BCEfmgtP-T3WQEZHB.js} +1912 -3120
- package/dist/web/server/{subagent-chat-panel-C0RpnXav-J7VYO7QY.js → subagent-chat-panel-BTwI1kdB-LKBWA4GD.js} +32 -41
- package/dist/web/server/{subagents-panel-jDqIn9Nh-YEV6QLUY.js → subagents-panel-8Z9_csoV-HYMEEBHB.js} +37 -45
- package/dist/web/server/{fleet-tool-timeline-IB36_PB2-XJENTO6I.js → tool-timeline-QL9k5dzA-RLU26HXT.js} +6 -6
- package/dist/web/server/{workspace-panel-CX_Vo6As-EWO6AMPI.js → workspace-panel-BHEB9nRM-TS62SYBA.js} +64 -46
- package/package.json +1 -1
- package/dist/web/client/assets/action-swap-roll-BB8DFMuf.js +0 -1
- package/dist/web/client/assets/agent-activity-CwMDU7aP.js +0 -1
- package/dist/web/client/assets/agent-disclosure-B8SnhQXL.js +0 -1
- package/dist/web/client/assets/analytics-stub-Cas1He0w.js +0 -1
- package/dist/web/client/assets/artifacts-panel-CJ75gQub.js +0 -1
- package/dist/web/client/assets/artifacts-utils-N_kUFbz2.js +0 -1
- package/dist/web/client/assets/bundle-mjs-DKHVkVWu.js +0 -1
- package/dist/web/client/assets/button-BR2WWrFo.js +0 -1
- package/dist/web/client/assets/card-BKl76a3R.js +0 -1
- package/dist/web/client/assets/chat-Ci2cEQrR.js +0 -52
- package/dist/web/client/assets/chat-command-palette-CkISHfKE.js +0 -1
- package/dist/web/client/assets/check-JjHKAZas.js +0 -1
- package/dist/web/client/assets/chevron-right-DrJxToLs.js +0 -1
- package/dist/web/client/assets/chevron-up-CnSvySGH.js +0 -1
- package/dist/web/client/assets/circle-alert-CONlFReH.js +0 -1
- package/dist/web/client/assets/circle-x-CkKCB__4.js +0 -1
- package/dist/web/client/assets/citations-C_tPOJE_.js +0 -2
- package/dist/web/client/assets/cn-C8c0S2mI.js +0 -1
- package/dist/web/client/assets/collapsible-BoXtZZWN.js +0 -1
- package/dist/web/client/assets/command-_WjnervL.js +0 -1
- package/dist/web/client/assets/createBaseUIEventDetails-DV0dQrBX.js +0 -1
- package/dist/web/client/assets/createLucideIcon-DwxZHm0M.js +0 -1
- package/dist/web/client/assets/dialog-BEZuZhzk.js +0 -1
- package/dist/web/client/assets/dist-BPaFisIZ.js +0 -41
- package/dist/web/client/assets/earth-DGZXAN5r.js +0 -1
- package/dist/web/client/assets/ease-u56MhKYS.js +0 -1
- package/dist/web/client/assets/file-text-T-NcAlZs.js +0 -1
- package/dist/web/client/assets/fleet-message-queue-BCno4XP-.js +0 -1
- package/dist/web/client/assets/fleet-reasoning-panel-CbkO7u-v.js +0 -1
- package/dist/web/client/assets/fleet-subagent-list-iKUtLJKZ.js +0 -1
- package/dist/web/client/assets/fleet-tool-timeline-C8heL7ae.js +0 -1
- package/dist/web/client/assets/gauge-DNpstbBn.js +0 -1
- package/dist/web/client/assets/globals-B_I1Eq1u.css +0 -2
- package/dist/web/client/assets/highlighted-body-KPVGNVTW-sUCZ1fHv.js +0 -1
- package/dist/web/client/assets/horizontal-resize-CwoDojST.js +0 -1
- package/dist/web/client/assets/image-BbPmlw-n.js +0 -1
- package/dist/web/client/assets/index-DJ1fFbQu.js +0 -12
- package/dist/web/client/assets/input-0wwjWjKq.js +0 -1
- package/dist/web/client/assets/input-group-Tb5TYbzi.js +0 -1
- package/dist/web/client/assets/ipython-tool-ldJ9F1Cw.js +0 -3
- package/dist/web/client/assets/layout-gyLzPvVv.js +0 -1
- package/dist/web/client/assets/markdown-DInPmRUG.js +0 -2
- package/dist/web/client/assets/mermaid-HWGCJPDP-Bm7CuruA.js +0 -1
- package/dist/web/client/assets/message-square-hbDao-A1.js +0 -1
- package/dist/web/client/assets/model-selector-list-Ch05B2nZ.js +0 -1
- package/dist/web/client/assets/openui-renderer-Bf60nxNi.js +0 -378
- package/dist/web/client/assets/plus-DXN1Bg_z.js +0 -1
- package/dist/web/client/assets/prompt-input-qPIXZ-Rb.js +0 -1
- package/dist/web/client/assets/prompt-suggestions-Cc--lSNR.js +0 -1
- package/dist/web/client/assets/provider-catalog-D8G66gwc.js +0 -1
- package/dist/web/client/assets/provider-label-DDLRnZyC.js +0 -1
- package/dist/web/client/assets/react-dom-Bwxum3ti.js +0 -1
- package/dist/web/client/assets/repl-panel-DsPX04Xr.js +0 -1
- package/dist/web/client/assets/resources-panel-D867-goy.js +0 -1
- package/dist/web/client/assets/right-panel-context-DHlNWJsF.js +0 -1
- package/dist/web/client/assets/right-panel-registry-Dp8yX-oL.js +0 -2
- package/dist/web/client/assets/routes-DpgMJZ5n.js +0 -16
- package/dist/web/client/assets/safe-external-url-D3PJJIcM.js +0 -1
- package/dist/web/client/assets/search-eWVnAJsb.js +0 -1
- package/dist/web/client/assets/session-insights-panel-YnaXvTpi.js +0 -1
- package/dist/web/client/assets/settings-dialog-YJkvt5EB.js +0 -2
- package/dist/web/client/assets/skeleton-loaders-C9vHwAYV.js +0 -1
- package/dist/web/client/assets/sparkles-DuclzqlE.js +0 -1
- package/dist/web/client/assets/square-Bhn8gjr0.js +0 -1
- package/dist/web/client/assets/subagent-transcript-CnI-mqN0.js +0 -1
- package/dist/web/client/assets/subagent-utils-DDH5qm9Z.js +0 -1
- package/dist/web/client/assets/subagents-panel-CjXEdimj.js +0 -1
- package/dist/web/client/assets/surfaces-DI-U-_2a.js +0 -1
- package/dist/web/client/assets/switch-9rTeg6J6.js +0 -1
- package/dist/web/client/assets/terminal-DOS1s1gm.js +0 -1
- package/dist/web/client/assets/toast-Bt9p2OL4.js +0 -1
- package/dist/web/client/assets/tool-result-DfnPN0FQ.js +0 -4
- package/dist/web/client/assets/ui-preferences-CImQGZm_.js +0 -1
- package/dist/web/client/assets/use-reduced-motion-eORd7fqW.js +0 -9
- package/dist/web/client/assets/useBaseUiId-CHqXB2UQ.js +0 -1
- package/dist/web/client/assets/useControlled-CJJ9BOQB.js +0 -1
- package/dist/web/client/assets/utils-Eg7xtNmV.js +0 -1
- package/dist/web/client/assets/virtualized-turn-list--Vynre4D.js +0 -6
- package/dist/web/client/assets/workspace-panel-CPPIznT9.js +0 -1
- package/dist/web/client/assets/workspace-path-nav-C0AQNZyy.js +0 -1
- package/dist/web/client/assets/x-CsRC_tCI.js +0 -1
- package/dist/web/server/_tanstack-start-manifest_v-DS_CSIFQ-WB3VTKF3.js +0 -95
- package/dist/web/server/agent-activity-CS2rbF_C-A3R26CYH.js +0 -514
- package/dist/web/server/chunk-3JMESBAT.js +0 -35
- package/dist/web/server/chunk-42XU6WV7.js +0 -56
- package/dist/web/server/chunk-7SD2ZSEA.js +0 -86
- package/dist/web/server/chunk-AQ66E5OW.js +0 -33
- package/dist/web/server/chunk-BYXBJQAS.js +0 -0
- package/dist/web/server/chunk-FAGDMGLK.js +0 -6589
- package/dist/web/server/chunk-FJV6EQDW.js +0 -36
- package/dist/web/server/chunk-GL6HWDJB.js +0 -19
- package/dist/web/server/chunk-HFQTI7AX.js +0 -42
- package/dist/web/server/chunk-L46H6IDX.js +0 -13
- package/dist/web/server/chunk-ON33WDZX.js +0 -31
- package/dist/web/server/chunk-PVJCTQFK.js +0 -22
- package/dist/web/server/chunk-QPNUGF3V.js +0 -35
- package/dist/web/server/chunk-TWYHHG5N.js +0 -1196
- package/dist/web/server/chunk-YKVGQBZA.js +0 -1262
- package/dist/web/server/chunk-ZCVWADNW.js +0 -37
- package/dist/web/server/fleet-pi-tool-renderer-umKunT3K-O4GBH35V.js +0 -51
- package/dist/web/server/fleet-subagent-list-CpSYzCIq-JDH2LHSS.js +0 -18
|
@@ -0,0 +1,2138 @@
|
|
|
1
|
+
// web/app/dist/server/assets/is-ref-object-BOCcojEl.js
|
|
2
|
+
import { createContext, useRef } from "react";
|
|
3
|
+
var LayoutGroupContext = createContext({});
|
|
4
|
+
function useConstant(init) {
|
|
5
|
+
const ref = useRef(null);
|
|
6
|
+
if (ref.current === null) ref.current = init();
|
|
7
|
+
return ref.current;
|
|
8
|
+
}
|
|
9
|
+
var PresenceContext = /* @__PURE__ */ createContext(null);
|
|
10
|
+
function addUniqueItem(arr, item) {
|
|
11
|
+
if (arr.indexOf(item) === -1) arr.push(item);
|
|
12
|
+
}
|
|
13
|
+
function removeItem(arr, item) {
|
|
14
|
+
const index = arr.indexOf(item);
|
|
15
|
+
if (index > -1) arr.splice(index, 1);
|
|
16
|
+
}
|
|
17
|
+
var clamp = (min, max, v) => {
|
|
18
|
+
if (v > max) return max;
|
|
19
|
+
if (v < min) return min;
|
|
20
|
+
return v;
|
|
21
|
+
};
|
|
22
|
+
var warning = () => {
|
|
23
|
+
};
|
|
24
|
+
var invariant = () => {
|
|
25
|
+
};
|
|
26
|
+
var MotionGlobalConfig = {};
|
|
27
|
+
var isNumericalString = (v) => /^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(v);
|
|
28
|
+
var isZeroValueString = (v) => /^0[^.\s]+$/u.test(v);
|
|
29
|
+
// @__NO_SIDE_EFFECTS__
|
|
30
|
+
function memo$1(callback) {
|
|
31
|
+
let result;
|
|
32
|
+
return () => {
|
|
33
|
+
if (result === void 0) result = callback();
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
var noop = /* @__NO_SIDE_EFFECTS__ */ (any) => any;
|
|
38
|
+
var SubscriptionManager = class {
|
|
39
|
+
constructor() {
|
|
40
|
+
this.subscriptions = [];
|
|
41
|
+
}
|
|
42
|
+
add(handler) {
|
|
43
|
+
addUniqueItem(this.subscriptions, handler);
|
|
44
|
+
return () => removeItem(this.subscriptions, handler);
|
|
45
|
+
}
|
|
46
|
+
notify(a, b, c) {
|
|
47
|
+
const numSubscriptions = this.subscriptions.length;
|
|
48
|
+
if (!numSubscriptions) return;
|
|
49
|
+
if (numSubscriptions === 1)
|
|
50
|
+
this.subscriptions[0](a, b, c);
|
|
51
|
+
else for (let i = 0; i < numSubscriptions; i++) {
|
|
52
|
+
const handler = this.subscriptions[i];
|
|
53
|
+
handler && handler(a, b, c);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
getSize() {
|
|
57
|
+
return this.subscriptions.length;
|
|
58
|
+
}
|
|
59
|
+
clear() {
|
|
60
|
+
this.subscriptions.length = 0;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var secondsToMilliseconds = /* @__NO_SIDE_EFFECTS__ */ (seconds) => seconds * 1e3;
|
|
64
|
+
var millisecondsToSeconds = /* @__NO_SIDE_EFFECTS__ */ (milliseconds) => milliseconds / 1e3;
|
|
65
|
+
var velocityPerSecond = /* @__NO_SIDE_EFFECTS__ */ (velocity, frameDuration) => frameDuration ? velocity * (1e3 / frameDuration) : 0;
|
|
66
|
+
var isBezierDefinition = /* @__NO_SIDE_EFFECTS__ */ (easing) => Array.isArray(easing) && typeof easing[0] === "number";
|
|
67
|
+
var stepsOrder = [
|
|
68
|
+
"setup",
|
|
69
|
+
"read",
|
|
70
|
+
"resolveKeyframes",
|
|
71
|
+
"preUpdate",
|
|
72
|
+
"update",
|
|
73
|
+
"preRender",
|
|
74
|
+
"render",
|
|
75
|
+
"postRender"
|
|
76
|
+
];
|
|
77
|
+
function createRenderStep(runNextFrame) {
|
|
78
|
+
let thisFrame = /* @__PURE__ */ new Set();
|
|
79
|
+
let nextFrame = /* @__PURE__ */ new Set();
|
|
80
|
+
let isProcessing = false;
|
|
81
|
+
let flushNextFrame = false;
|
|
82
|
+
const toKeepAlive = /* @__PURE__ */ new WeakSet();
|
|
83
|
+
let latestFrameData = {
|
|
84
|
+
delta: 0,
|
|
85
|
+
timestamp: 0,
|
|
86
|
+
isProcessing: false
|
|
87
|
+
};
|
|
88
|
+
function triggerCallback(callback) {
|
|
89
|
+
if (toKeepAlive.has(callback)) {
|
|
90
|
+
step.schedule(callback);
|
|
91
|
+
runNextFrame();
|
|
92
|
+
}
|
|
93
|
+
callback(latestFrameData);
|
|
94
|
+
}
|
|
95
|
+
const step = {
|
|
96
|
+
/**
|
|
97
|
+
* Schedule a process to run on the next frame.
|
|
98
|
+
*/
|
|
99
|
+
schedule: (callback, keepAlive = false, immediate = false) => {
|
|
100
|
+
const queue = immediate && isProcessing ? thisFrame : nextFrame;
|
|
101
|
+
if (keepAlive) toKeepAlive.add(callback);
|
|
102
|
+
queue.add(callback);
|
|
103
|
+
return callback;
|
|
104
|
+
},
|
|
105
|
+
/**
|
|
106
|
+
* Cancel the provided callback from running on the next frame.
|
|
107
|
+
*/
|
|
108
|
+
cancel: (callback) => {
|
|
109
|
+
nextFrame.delete(callback);
|
|
110
|
+
toKeepAlive.delete(callback);
|
|
111
|
+
},
|
|
112
|
+
/**
|
|
113
|
+
* Execute all schedule callbacks.
|
|
114
|
+
*/
|
|
115
|
+
process: (frameData2) => {
|
|
116
|
+
latestFrameData = frameData2;
|
|
117
|
+
if (isProcessing) {
|
|
118
|
+
flushNextFrame = true;
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
isProcessing = true;
|
|
122
|
+
const prevFrame = thisFrame;
|
|
123
|
+
thisFrame = nextFrame;
|
|
124
|
+
nextFrame = prevFrame;
|
|
125
|
+
thisFrame.forEach(triggerCallback);
|
|
126
|
+
thisFrame.clear();
|
|
127
|
+
isProcessing = false;
|
|
128
|
+
if (flushNextFrame) {
|
|
129
|
+
flushNextFrame = false;
|
|
130
|
+
step.process(frameData2);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
return step;
|
|
135
|
+
}
|
|
136
|
+
var maxElapsed = 40;
|
|
137
|
+
function createRenderBatcher(scheduleNextBatch, allowKeepAlive) {
|
|
138
|
+
let runNextFrame = false;
|
|
139
|
+
let useDefaultElapsed = true;
|
|
140
|
+
const state = {
|
|
141
|
+
delta: 0,
|
|
142
|
+
timestamp: 0,
|
|
143
|
+
isProcessing: false
|
|
144
|
+
};
|
|
145
|
+
const flagRunNextFrame = () => runNextFrame = true;
|
|
146
|
+
const steps = stepsOrder.reduce((acc, key) => {
|
|
147
|
+
acc[key] = createRenderStep(flagRunNextFrame);
|
|
148
|
+
return acc;
|
|
149
|
+
}, {});
|
|
150
|
+
const { setup, read, resolveKeyframes, preUpdate, update, preRender, render, postRender } = steps;
|
|
151
|
+
const processBatch = () => {
|
|
152
|
+
const useManualTiming = MotionGlobalConfig.useManualTiming;
|
|
153
|
+
const timestamp = useManualTiming ? state.timestamp : performance.now();
|
|
154
|
+
runNextFrame = false;
|
|
155
|
+
if (!useManualTiming) state.delta = useDefaultElapsed ? 1e3 / 60 : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);
|
|
156
|
+
state.timestamp = timestamp;
|
|
157
|
+
state.isProcessing = true;
|
|
158
|
+
setup.process(state);
|
|
159
|
+
read.process(state);
|
|
160
|
+
resolveKeyframes.process(state);
|
|
161
|
+
preUpdate.process(state);
|
|
162
|
+
update.process(state);
|
|
163
|
+
preRender.process(state);
|
|
164
|
+
render.process(state);
|
|
165
|
+
postRender.process(state);
|
|
166
|
+
state.isProcessing = false;
|
|
167
|
+
if (runNextFrame && allowKeepAlive) {
|
|
168
|
+
useDefaultElapsed = false;
|
|
169
|
+
scheduleNextBatch(processBatch);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
const wake = () => {
|
|
173
|
+
runNextFrame = true;
|
|
174
|
+
useDefaultElapsed = true;
|
|
175
|
+
if (!state.isProcessing) scheduleNextBatch(processBatch);
|
|
176
|
+
};
|
|
177
|
+
const schedule = stepsOrder.reduce((acc, key) => {
|
|
178
|
+
const step = steps[key];
|
|
179
|
+
acc[key] = (process, keepAlive = false, immediate = false) => {
|
|
180
|
+
if (!runNextFrame) wake();
|
|
181
|
+
return step.schedule(process, keepAlive, immediate);
|
|
182
|
+
};
|
|
183
|
+
return acc;
|
|
184
|
+
}, {});
|
|
185
|
+
const cancel = (process) => {
|
|
186
|
+
for (let i = 0; i < stepsOrder.length; i++) steps[stepsOrder[i]].cancel(process);
|
|
187
|
+
};
|
|
188
|
+
return {
|
|
189
|
+
schedule,
|
|
190
|
+
cancel,
|
|
191
|
+
state,
|
|
192
|
+
steps
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
var { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps } = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : noop, true);
|
|
196
|
+
var now;
|
|
197
|
+
function clearTime() {
|
|
198
|
+
now = void 0;
|
|
199
|
+
}
|
|
200
|
+
var time = {
|
|
201
|
+
now: () => {
|
|
202
|
+
if (now === void 0) time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming ? frameData.timestamp : performance.now());
|
|
203
|
+
return now;
|
|
204
|
+
},
|
|
205
|
+
set: (newTime) => {
|
|
206
|
+
now = newTime;
|
|
207
|
+
queueMicrotask(clearTime);
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
var checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token);
|
|
211
|
+
var isCSSVariableName = /* @__PURE__ */ checkStringStartsWith("--");
|
|
212
|
+
var startsAsVariableToken = /* @__PURE__ */ checkStringStartsWith("var(--");
|
|
213
|
+
var isCSSVariableToken = (value) => {
|
|
214
|
+
if (!startsAsVariableToken(value)) return false;
|
|
215
|
+
return singleCssVariableRegex.test(value.split("/*")[0].trim());
|
|
216
|
+
};
|
|
217
|
+
var singleCssVariableRegex = /var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;
|
|
218
|
+
function containsCSSVariable(value) {
|
|
219
|
+
if (typeof value !== "string") return false;
|
|
220
|
+
return value.split("/*")[0].includes("var(--");
|
|
221
|
+
}
|
|
222
|
+
var number = {
|
|
223
|
+
test: (v) => typeof v === "number",
|
|
224
|
+
parse: parseFloat,
|
|
225
|
+
transform: (v) => v
|
|
226
|
+
};
|
|
227
|
+
var alpha = {
|
|
228
|
+
...number,
|
|
229
|
+
transform: (v) => clamp(0, 1, v)
|
|
230
|
+
};
|
|
231
|
+
var scale = {
|
|
232
|
+
...number,
|
|
233
|
+
default: 1
|
|
234
|
+
};
|
|
235
|
+
var sanitize = (v) => Math.round(v * 1e5) / 1e5;
|
|
236
|
+
var floatRegex = /-?(?:\d+(?:\.\d+)?|\.\d+)/gu;
|
|
237
|
+
function isNullish(v) {
|
|
238
|
+
return v == null;
|
|
239
|
+
}
|
|
240
|
+
var singleColorRegex = /^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu;
|
|
241
|
+
var isColorString = (type, testProp) => (v) => {
|
|
242
|
+
return Boolean(typeof v === "string" && singleColorRegex.test(v) && v.startsWith(type) || testProp && !isNullish(v) && Object.prototype.hasOwnProperty.call(v, testProp));
|
|
243
|
+
};
|
|
244
|
+
var splitColor = (aName, bName, cName) => (v) => {
|
|
245
|
+
if (typeof v !== "string") return v;
|
|
246
|
+
const [a, b, c, alpha2] = v.match(floatRegex);
|
|
247
|
+
return {
|
|
248
|
+
[aName]: parseFloat(a),
|
|
249
|
+
[bName]: parseFloat(b),
|
|
250
|
+
[cName]: parseFloat(c),
|
|
251
|
+
alpha: alpha2 !== void 0 ? parseFloat(alpha2) : 1
|
|
252
|
+
};
|
|
253
|
+
};
|
|
254
|
+
var clampRgbUnit = (v) => clamp(0, 255, v);
|
|
255
|
+
var rgbUnit = {
|
|
256
|
+
...number,
|
|
257
|
+
transform: (v) => Math.round(clampRgbUnit(v))
|
|
258
|
+
};
|
|
259
|
+
var rgba = {
|
|
260
|
+
test: /* @__PURE__ */ isColorString("rgb", "red"),
|
|
261
|
+
parse: /* @__PURE__ */ splitColor("red", "green", "blue"),
|
|
262
|
+
transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => "rgba(" + rgbUnit.transform(red) + ", " + rgbUnit.transform(green) + ", " + rgbUnit.transform(blue) + ", " + sanitize(alpha.transform(alpha$1)) + ")"
|
|
263
|
+
};
|
|
264
|
+
function parseHex(v) {
|
|
265
|
+
let r = "";
|
|
266
|
+
let g = "";
|
|
267
|
+
let b = "";
|
|
268
|
+
let a = "";
|
|
269
|
+
if (v.length > 5) {
|
|
270
|
+
r = v.substring(1, 3);
|
|
271
|
+
g = v.substring(3, 5);
|
|
272
|
+
b = v.substring(5, 7);
|
|
273
|
+
a = v.substring(7, 9);
|
|
274
|
+
} else {
|
|
275
|
+
r = v.substring(1, 2);
|
|
276
|
+
g = v.substring(2, 3);
|
|
277
|
+
b = v.substring(3, 4);
|
|
278
|
+
a = v.substring(4, 5);
|
|
279
|
+
r += r;
|
|
280
|
+
g += g;
|
|
281
|
+
b += b;
|
|
282
|
+
a += a;
|
|
283
|
+
}
|
|
284
|
+
return {
|
|
285
|
+
red: parseInt(r, 16),
|
|
286
|
+
green: parseInt(g, 16),
|
|
287
|
+
blue: parseInt(b, 16),
|
|
288
|
+
alpha: a ? parseInt(a, 16) / 255 : 1
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
var hex = {
|
|
292
|
+
test: /* @__PURE__ */ isColorString("#"),
|
|
293
|
+
parse: parseHex,
|
|
294
|
+
transform: rgba.transform
|
|
295
|
+
};
|
|
296
|
+
var createUnitType = /* @__NO_SIDE_EFFECTS__ */ (unit) => ({
|
|
297
|
+
test: (v) => typeof v === "string" && v.endsWith(unit) && v.split(" ").length === 1,
|
|
298
|
+
parse: parseFloat,
|
|
299
|
+
transform: (v) => `${v}${unit}`
|
|
300
|
+
});
|
|
301
|
+
var degrees = /* @__PURE__ */ createUnitType("deg");
|
|
302
|
+
var percent = /* @__PURE__ */ createUnitType("%");
|
|
303
|
+
var px = /* @__PURE__ */ createUnitType("px");
|
|
304
|
+
var vh = /* @__PURE__ */ createUnitType("vh");
|
|
305
|
+
var vw = /* @__PURE__ */ createUnitType("vw");
|
|
306
|
+
var progressPercentage = /* @__PURE__ */ (() => ({
|
|
307
|
+
...percent,
|
|
308
|
+
parse: (v) => percent.parse(v) / 100,
|
|
309
|
+
transform: (v) => percent.transform(v * 100)
|
|
310
|
+
}))();
|
|
311
|
+
var hsla = {
|
|
312
|
+
test: /* @__PURE__ */ isColorString("hsl", "hue"),
|
|
313
|
+
parse: /* @__PURE__ */ splitColor("hue", "saturation", "lightness"),
|
|
314
|
+
transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {
|
|
315
|
+
return "hsla(" + Math.round(hue) + ", " + percent.transform(sanitize(saturation)) + ", " + percent.transform(sanitize(lightness)) + ", " + sanitize(alpha.transform(alpha$1)) + ")";
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
var color = {
|
|
319
|
+
test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),
|
|
320
|
+
parse: (v) => {
|
|
321
|
+
if (rgba.test(v)) return rgba.parse(v);
|
|
322
|
+
else if (hsla.test(v)) return hsla.parse(v);
|
|
323
|
+
else return hex.parse(v);
|
|
324
|
+
},
|
|
325
|
+
transform: (v) => {
|
|
326
|
+
return typeof v === "string" ? v : v.hasOwnProperty("red") ? rgba.transform(v) : hsla.transform(v);
|
|
327
|
+
},
|
|
328
|
+
getAnimatableNone: (v) => {
|
|
329
|
+
const parsed = color.parse(v);
|
|
330
|
+
parsed.alpha = 0;
|
|
331
|
+
return color.transform(parsed);
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
var colorRegex = /(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;
|
|
335
|
+
function test(v) {
|
|
336
|
+
return isNaN(v) && typeof v === "string" && (v.match(floatRegex)?.length || 0) + (v.match(colorRegex)?.length || 0) > 0;
|
|
337
|
+
}
|
|
338
|
+
var NUMBER_TOKEN = "number";
|
|
339
|
+
var COLOR_TOKEN = "color";
|
|
340
|
+
var VAR_TOKEN = "var";
|
|
341
|
+
var VAR_FUNCTION_TOKEN = "var(";
|
|
342
|
+
var SPLIT_TOKEN = "${}";
|
|
343
|
+
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;
|
|
344
|
+
function analyseComplexValue(value) {
|
|
345
|
+
const originalValue = value.toString();
|
|
346
|
+
const values = [];
|
|
347
|
+
const indexes = {
|
|
348
|
+
color: [],
|
|
349
|
+
number: [],
|
|
350
|
+
var: []
|
|
351
|
+
};
|
|
352
|
+
const types = [];
|
|
353
|
+
let i = 0;
|
|
354
|
+
return {
|
|
355
|
+
values,
|
|
356
|
+
split: originalValue.replace(complexRegex, (parsedValue) => {
|
|
357
|
+
if (color.test(parsedValue)) {
|
|
358
|
+
indexes.color.push(i);
|
|
359
|
+
types.push(COLOR_TOKEN);
|
|
360
|
+
values.push(color.parse(parsedValue));
|
|
361
|
+
} else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {
|
|
362
|
+
indexes.var.push(i);
|
|
363
|
+
types.push(VAR_TOKEN);
|
|
364
|
+
values.push(parsedValue);
|
|
365
|
+
} else {
|
|
366
|
+
indexes.number.push(i);
|
|
367
|
+
types.push(NUMBER_TOKEN);
|
|
368
|
+
values.push(parseFloat(parsedValue));
|
|
369
|
+
}
|
|
370
|
+
++i;
|
|
371
|
+
return SPLIT_TOKEN;
|
|
372
|
+
}).split(SPLIT_TOKEN),
|
|
373
|
+
indexes,
|
|
374
|
+
types
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
function parseComplexValue(v) {
|
|
378
|
+
return analyseComplexValue(v).values;
|
|
379
|
+
}
|
|
380
|
+
function buildTransformer({ split, types }) {
|
|
381
|
+
const numSections = split.length;
|
|
382
|
+
return (v) => {
|
|
383
|
+
let output = "";
|
|
384
|
+
for (let i = 0; i < numSections; i++) {
|
|
385
|
+
output += split[i];
|
|
386
|
+
if (v[i] !== void 0) {
|
|
387
|
+
const type = types[i];
|
|
388
|
+
if (type === NUMBER_TOKEN) output += sanitize(v[i]);
|
|
389
|
+
else if (type === COLOR_TOKEN) output += color.transform(v[i]);
|
|
390
|
+
else output += v[i];
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return output;
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
function createTransformer(source) {
|
|
397
|
+
return buildTransformer(analyseComplexValue(source));
|
|
398
|
+
}
|
|
399
|
+
var convertNumbersToZero = (v) => typeof v === "number" ? 0 : color.test(v) ? color.getAnimatableNone(v) : v;
|
|
400
|
+
var convertToZero = (value, splitBefore) => {
|
|
401
|
+
if (typeof value === "number") return splitBefore?.trim().endsWith("/") ? value : 0;
|
|
402
|
+
return convertNumbersToZero(value);
|
|
403
|
+
};
|
|
404
|
+
function getAnimatableNone$1(v) {
|
|
405
|
+
const info = analyseComplexValue(v);
|
|
406
|
+
return buildTransformer(info)(info.values.map((value, i) => convertToZero(value, info.split[i])));
|
|
407
|
+
}
|
|
408
|
+
var complex = {
|
|
409
|
+
test,
|
|
410
|
+
parse: parseComplexValue,
|
|
411
|
+
createTransformer,
|
|
412
|
+
getAnimatableNone: getAnimatableNone$1
|
|
413
|
+
};
|
|
414
|
+
var mixNumber = (from, to, progress) => {
|
|
415
|
+
return from + (to - from) * progress;
|
|
416
|
+
};
|
|
417
|
+
var generateLinearEasing = (easing, duration, resolution = 10) => {
|
|
418
|
+
let points = "";
|
|
419
|
+
const numPoints = Math.max(Math.round(duration / resolution), 2);
|
|
420
|
+
for (let i = 0; i < numPoints; i++) points += Math.round(easing(i / (numPoints - 1)) * 1e4) / 1e4 + ", ";
|
|
421
|
+
return `linear(${points.substring(0, points.length - 2)})`;
|
|
422
|
+
};
|
|
423
|
+
var isNotNull = (value) => value !== null;
|
|
424
|
+
function getFinalKeyframe(keyframes, { repeat, repeatType = "loop" }, finalKeyframe, speed = 1) {
|
|
425
|
+
const resolvedKeyframes = keyframes.filter(isNotNull);
|
|
426
|
+
const index = speed < 0 || repeat && repeatType !== "loop" && repeat % 2 === 1 ? 0 : resolvedKeyframes.length - 1;
|
|
427
|
+
return !index || finalKeyframe === void 0 ? resolvedKeyframes[index] : finalKeyframe;
|
|
428
|
+
}
|
|
429
|
+
var WithPromise = class {
|
|
430
|
+
constructor() {
|
|
431
|
+
this.updateFinished();
|
|
432
|
+
}
|
|
433
|
+
get finished() {
|
|
434
|
+
return this._finished;
|
|
435
|
+
}
|
|
436
|
+
updateFinished() {
|
|
437
|
+
this._finished = new Promise((resolve) => {
|
|
438
|
+
this.resolve = resolve;
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
notifyFinished() {
|
|
442
|
+
this.resolve();
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Allows the animation to be awaited.
|
|
446
|
+
*
|
|
447
|
+
* @deprecated Use `finished` instead.
|
|
448
|
+
*/
|
|
449
|
+
then(onResolve, onReject) {
|
|
450
|
+
return this.finished.then(onResolve, onReject);
|
|
451
|
+
}
|
|
452
|
+
};
|
|
453
|
+
function fillWildcards(keyframes) {
|
|
454
|
+
for (let i = 1; i < keyframes.length; i++) keyframes[i] ?? (keyframes[i] = keyframes[i - 1]);
|
|
455
|
+
}
|
|
456
|
+
var radToDeg = (rad) => rad * 180 / Math.PI;
|
|
457
|
+
var rotate = (v) => {
|
|
458
|
+
return rebaseAngle(radToDeg(Math.atan2(v[1], v[0])));
|
|
459
|
+
};
|
|
460
|
+
var matrix2dParsers = {
|
|
461
|
+
x: 4,
|
|
462
|
+
y: 5,
|
|
463
|
+
translateX: 4,
|
|
464
|
+
translateY: 5,
|
|
465
|
+
scaleX: 0,
|
|
466
|
+
scaleY: 3,
|
|
467
|
+
scale: (v) => (Math.abs(v[0]) + Math.abs(v[3])) / 2,
|
|
468
|
+
rotate,
|
|
469
|
+
rotateZ: rotate,
|
|
470
|
+
skewX: (v) => radToDeg(Math.atan(v[1])),
|
|
471
|
+
skewY: (v) => radToDeg(Math.atan(v[2])),
|
|
472
|
+
skew: (v) => (Math.abs(v[1]) + Math.abs(v[2])) / 2
|
|
473
|
+
};
|
|
474
|
+
var rebaseAngle = (angle) => {
|
|
475
|
+
angle = angle % 360;
|
|
476
|
+
if (angle < 0) angle += 360;
|
|
477
|
+
return angle;
|
|
478
|
+
};
|
|
479
|
+
var rotateZ = rotate;
|
|
480
|
+
var scaleX = (v) => Math.sqrt(v[0] * v[0] + v[1] * v[1]);
|
|
481
|
+
var scaleY = (v) => Math.sqrt(v[4] * v[4] + v[5] * v[5]);
|
|
482
|
+
var matrix3dParsers = {
|
|
483
|
+
x: 12,
|
|
484
|
+
y: 13,
|
|
485
|
+
z: 14,
|
|
486
|
+
translateX: 12,
|
|
487
|
+
translateY: 13,
|
|
488
|
+
translateZ: 14,
|
|
489
|
+
scaleX,
|
|
490
|
+
scaleY,
|
|
491
|
+
scale: (v) => (scaleX(v) + scaleY(v)) / 2,
|
|
492
|
+
rotateX: (v) => rebaseAngle(radToDeg(Math.atan2(v[6], v[5]))),
|
|
493
|
+
rotateY: (v) => rebaseAngle(radToDeg(Math.atan2(-v[2], v[0]))),
|
|
494
|
+
rotateZ,
|
|
495
|
+
rotate: rotateZ,
|
|
496
|
+
skewX: (v) => radToDeg(Math.atan(v[4])),
|
|
497
|
+
skewY: (v) => radToDeg(Math.atan(v[1])),
|
|
498
|
+
skew: (v) => (Math.abs(v[1]) + Math.abs(v[4])) / 2
|
|
499
|
+
};
|
|
500
|
+
function defaultTransformValue(name) {
|
|
501
|
+
return name.includes("scale") ? 1 : 0;
|
|
502
|
+
}
|
|
503
|
+
function parseValueFromTransform(transform, name) {
|
|
504
|
+
if (!transform || transform === "none") return defaultTransformValue(name);
|
|
505
|
+
const matrix3dMatch = transform.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);
|
|
506
|
+
let parsers;
|
|
507
|
+
let match;
|
|
508
|
+
if (matrix3dMatch) {
|
|
509
|
+
parsers = matrix3dParsers;
|
|
510
|
+
match = matrix3dMatch;
|
|
511
|
+
} else {
|
|
512
|
+
const matrix2dMatch = transform.match(/^matrix\(([-\d.e\s,]+)\)$/u);
|
|
513
|
+
parsers = matrix2dParsers;
|
|
514
|
+
match = matrix2dMatch;
|
|
515
|
+
}
|
|
516
|
+
if (!match) return defaultTransformValue(name);
|
|
517
|
+
const valueParser = parsers[name];
|
|
518
|
+
const values = match[1].split(",").map(convertTransformToNumber);
|
|
519
|
+
return typeof valueParser === "function" ? valueParser(values) : values[valueParser];
|
|
520
|
+
}
|
|
521
|
+
var readTransformValue = (instance, name) => {
|
|
522
|
+
const { transform = "none" } = getComputedStyle(instance);
|
|
523
|
+
return parseValueFromTransform(transform, name);
|
|
524
|
+
};
|
|
525
|
+
function convertTransformToNumber(value) {
|
|
526
|
+
return parseFloat(value.trim());
|
|
527
|
+
}
|
|
528
|
+
var transformPropOrder = [
|
|
529
|
+
"transformPerspective",
|
|
530
|
+
"x",
|
|
531
|
+
"y",
|
|
532
|
+
"z",
|
|
533
|
+
"translateX",
|
|
534
|
+
"translateY",
|
|
535
|
+
"translateZ",
|
|
536
|
+
"scale",
|
|
537
|
+
"scaleX",
|
|
538
|
+
"scaleY",
|
|
539
|
+
"rotate",
|
|
540
|
+
"rotateX",
|
|
541
|
+
"rotateY",
|
|
542
|
+
"rotateZ",
|
|
543
|
+
"skew",
|
|
544
|
+
"skewX",
|
|
545
|
+
"skewY"
|
|
546
|
+
];
|
|
547
|
+
var transformProps = /* @__PURE__ */ (() => /* @__PURE__ */ new Set([...transformPropOrder, "pathRotation"]))();
|
|
548
|
+
var isNumOrPxType = (v) => v === number || v === px;
|
|
549
|
+
var transformKeys = /* @__PURE__ */ new Set([
|
|
550
|
+
"x",
|
|
551
|
+
"y",
|
|
552
|
+
"z"
|
|
553
|
+
]);
|
|
554
|
+
var nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));
|
|
555
|
+
function removeNonTranslationalTransform(visualElement) {
|
|
556
|
+
const removedTransforms = [];
|
|
557
|
+
nonTranslationalTransformKeys.forEach((key) => {
|
|
558
|
+
const value = visualElement.getValue(key);
|
|
559
|
+
if (value !== void 0) {
|
|
560
|
+
removedTransforms.push([key, value.get()]);
|
|
561
|
+
value.set(key.startsWith("scale") ? 1 : 0);
|
|
562
|
+
}
|
|
563
|
+
});
|
|
564
|
+
return removedTransforms;
|
|
565
|
+
}
|
|
566
|
+
var positionalValues = {
|
|
567
|
+
width: ({ x }, { paddingLeft = "0", paddingRight = "0", boxSizing }) => {
|
|
568
|
+
const width = x.max - x.min;
|
|
569
|
+
return boxSizing === "border-box" ? width : width - parseFloat(paddingLeft) - parseFloat(paddingRight);
|
|
570
|
+
},
|
|
571
|
+
height: ({ y }, { paddingTop = "0", paddingBottom = "0", boxSizing }) => {
|
|
572
|
+
const height = y.max - y.min;
|
|
573
|
+
return boxSizing === "border-box" ? height : height - parseFloat(paddingTop) - parseFloat(paddingBottom);
|
|
574
|
+
},
|
|
575
|
+
top: (_bbox, { top }) => parseFloat(top),
|
|
576
|
+
left: (_bbox, { left }) => parseFloat(left),
|
|
577
|
+
bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),
|
|
578
|
+
right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),
|
|
579
|
+
x: (_bbox, { transform }) => parseValueFromTransform(transform, "x"),
|
|
580
|
+
y: (_bbox, { transform }) => parseValueFromTransform(transform, "y")
|
|
581
|
+
};
|
|
582
|
+
positionalValues.translateX = positionalValues.x;
|
|
583
|
+
positionalValues.translateY = positionalValues.y;
|
|
584
|
+
var toResolve = /* @__PURE__ */ new Set();
|
|
585
|
+
var isScheduled = false;
|
|
586
|
+
var anyNeedsMeasurement = false;
|
|
587
|
+
var isForced = false;
|
|
588
|
+
function measureAllKeyframes() {
|
|
589
|
+
if (anyNeedsMeasurement) {
|
|
590
|
+
const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);
|
|
591
|
+
const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));
|
|
592
|
+
const transformsToRestore = /* @__PURE__ */ new Map();
|
|
593
|
+
elementsToMeasure.forEach((element) => {
|
|
594
|
+
const removedTransforms = removeNonTranslationalTransform(element);
|
|
595
|
+
if (!removedTransforms.length) return;
|
|
596
|
+
transformsToRestore.set(element, removedTransforms);
|
|
597
|
+
element.render();
|
|
598
|
+
});
|
|
599
|
+
resolversToMeasure.forEach((resolver) => resolver.measureInitialState());
|
|
600
|
+
elementsToMeasure.forEach((element) => {
|
|
601
|
+
element.render();
|
|
602
|
+
const restore = transformsToRestore.get(element);
|
|
603
|
+
if (restore) restore.forEach(([key, value]) => {
|
|
604
|
+
element.getValue(key)?.set(value);
|
|
605
|
+
});
|
|
606
|
+
});
|
|
607
|
+
resolversToMeasure.forEach((resolver) => resolver.measureEndState());
|
|
608
|
+
resolversToMeasure.forEach((resolver) => {
|
|
609
|
+
if (resolver.suspendedScrollY !== void 0) window.scrollTo(0, resolver.suspendedScrollY);
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
anyNeedsMeasurement = false;
|
|
613
|
+
isScheduled = false;
|
|
614
|
+
toResolve.forEach((resolver) => resolver.complete(isForced));
|
|
615
|
+
toResolve.clear();
|
|
616
|
+
}
|
|
617
|
+
function readAllKeyframes() {
|
|
618
|
+
toResolve.forEach((resolver) => {
|
|
619
|
+
resolver.readKeyframes();
|
|
620
|
+
if (resolver.needsMeasurement) anyNeedsMeasurement = true;
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
function flushKeyframeResolvers() {
|
|
624
|
+
isForced = true;
|
|
625
|
+
readAllKeyframes();
|
|
626
|
+
measureAllKeyframes();
|
|
627
|
+
isForced = false;
|
|
628
|
+
}
|
|
629
|
+
var KeyframeResolver = class {
|
|
630
|
+
constructor(unresolvedKeyframes, onComplete, name, motionValue2, element, isAsync = false) {
|
|
631
|
+
this.state = "pending";
|
|
632
|
+
this.isAsync = false;
|
|
633
|
+
this.needsMeasurement = false;
|
|
634
|
+
this.unresolvedKeyframes = [...unresolvedKeyframes];
|
|
635
|
+
this.onComplete = onComplete;
|
|
636
|
+
this.name = name;
|
|
637
|
+
this.motionValue = motionValue2;
|
|
638
|
+
this.element = element;
|
|
639
|
+
this.isAsync = isAsync;
|
|
640
|
+
}
|
|
641
|
+
scheduleResolve() {
|
|
642
|
+
this.state = "scheduled";
|
|
643
|
+
if (this.isAsync) {
|
|
644
|
+
toResolve.add(this);
|
|
645
|
+
if (!isScheduled) {
|
|
646
|
+
isScheduled = true;
|
|
647
|
+
frame.read(readAllKeyframes);
|
|
648
|
+
frame.resolveKeyframes(measureAllKeyframes);
|
|
649
|
+
}
|
|
650
|
+
} else {
|
|
651
|
+
this.readKeyframes();
|
|
652
|
+
this.complete();
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
readKeyframes() {
|
|
656
|
+
const { unresolvedKeyframes, name, element, motionValue: motionValue2 } = this;
|
|
657
|
+
if (unresolvedKeyframes[0] === null) {
|
|
658
|
+
const currentValue = motionValue2?.get();
|
|
659
|
+
const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
|
|
660
|
+
if (currentValue !== void 0) unresolvedKeyframes[0] = currentValue;
|
|
661
|
+
else if (element && name) {
|
|
662
|
+
const valueAsRead = element.readValue(name, finalKeyframe);
|
|
663
|
+
if (valueAsRead !== void 0 && valueAsRead !== null) unresolvedKeyframes[0] = valueAsRead;
|
|
664
|
+
}
|
|
665
|
+
if (unresolvedKeyframes[0] === void 0) unresolvedKeyframes[0] = finalKeyframe;
|
|
666
|
+
if (motionValue2 && currentValue === void 0) motionValue2.set(unresolvedKeyframes[0]);
|
|
667
|
+
}
|
|
668
|
+
fillWildcards(unresolvedKeyframes);
|
|
669
|
+
}
|
|
670
|
+
setFinalKeyframe() {
|
|
671
|
+
}
|
|
672
|
+
measureInitialState() {
|
|
673
|
+
}
|
|
674
|
+
renderEndStyles() {
|
|
675
|
+
}
|
|
676
|
+
measureEndState() {
|
|
677
|
+
}
|
|
678
|
+
complete(isForcedComplete = false) {
|
|
679
|
+
this.state = "complete";
|
|
680
|
+
this.onComplete(this.unresolvedKeyframes, this.finalKeyframe, isForcedComplete);
|
|
681
|
+
toResolve.delete(this);
|
|
682
|
+
}
|
|
683
|
+
cancel() {
|
|
684
|
+
if (this.state === "scheduled") {
|
|
685
|
+
toResolve.delete(this);
|
|
686
|
+
this.state = "pending";
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
resume() {
|
|
690
|
+
if (this.state === "pending") this.scheduleResolve();
|
|
691
|
+
}
|
|
692
|
+
};
|
|
693
|
+
var isCSSVar = (name) => name.startsWith("--");
|
|
694
|
+
function setStyle(element, name, value) {
|
|
695
|
+
isCSSVar(name) ? element.style.setProperty(name, value) : element.style[name] = value;
|
|
696
|
+
}
|
|
697
|
+
var supportsFlags = {};
|
|
698
|
+
function memoSupports(callback, supportsFlag) {
|
|
699
|
+
const memoized = /* @__PURE__ */ memo$1(callback);
|
|
700
|
+
return () => supportsFlags[supportsFlag] ?? memoized();
|
|
701
|
+
}
|
|
702
|
+
var supportsScrollTimeline = /* @__PURE__ */ memoSupports(() => window.ScrollTimeline !== void 0, "scrollTimeline");
|
|
703
|
+
var supportsLinearEasing = /* @__PURE__ */ memoSupports(() => {
|
|
704
|
+
try {
|
|
705
|
+
document.createElement("div").animate({ opacity: 0 }, { easing: "linear(0, 1)" });
|
|
706
|
+
} catch (e) {
|
|
707
|
+
return false;
|
|
708
|
+
}
|
|
709
|
+
return true;
|
|
710
|
+
}, "linearEasing");
|
|
711
|
+
var cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;
|
|
712
|
+
var supportedWaapiEasing = {
|
|
713
|
+
linear: "linear",
|
|
714
|
+
ease: "ease",
|
|
715
|
+
easeIn: "ease-in",
|
|
716
|
+
easeOut: "ease-out",
|
|
717
|
+
easeInOut: "ease-in-out",
|
|
718
|
+
circIn: /* @__PURE__ */ cubicBezierAsString([
|
|
719
|
+
0,
|
|
720
|
+
0.65,
|
|
721
|
+
0.55,
|
|
722
|
+
1
|
|
723
|
+
]),
|
|
724
|
+
circOut: /* @__PURE__ */ cubicBezierAsString([
|
|
725
|
+
0.55,
|
|
726
|
+
0,
|
|
727
|
+
1,
|
|
728
|
+
0.45
|
|
729
|
+
]),
|
|
730
|
+
backIn: /* @__PURE__ */ cubicBezierAsString([
|
|
731
|
+
0.31,
|
|
732
|
+
0.01,
|
|
733
|
+
0.66,
|
|
734
|
+
-0.59
|
|
735
|
+
]),
|
|
736
|
+
backOut: /* @__PURE__ */ cubicBezierAsString([
|
|
737
|
+
0.33,
|
|
738
|
+
1.53,
|
|
739
|
+
0.69,
|
|
740
|
+
0.99
|
|
741
|
+
])
|
|
742
|
+
};
|
|
743
|
+
function mapEasingToNativeEasing(easing, duration) {
|
|
744
|
+
if (!easing) return;
|
|
745
|
+
else if (typeof easing === "function") return supportsLinearEasing() ? generateLinearEasing(easing, duration) : "ease-out";
|
|
746
|
+
else if (/* @__PURE__ */ isBezierDefinition(easing)) return cubicBezierAsString(easing);
|
|
747
|
+
else if (Array.isArray(easing)) return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || supportedWaapiEasing.easeOut);
|
|
748
|
+
else return supportedWaapiEasing[easing];
|
|
749
|
+
}
|
|
750
|
+
function startWaapiAnimation(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = "loop", ease = "easeOut", times } = {}, pseudoElement = void 0) {
|
|
751
|
+
const keyframeOptions = { [valueName]: keyframes };
|
|
752
|
+
if (times) keyframeOptions.offset = times;
|
|
753
|
+
const easing = mapEasingToNativeEasing(ease, duration);
|
|
754
|
+
if (Array.isArray(easing)) keyframeOptions.easing = easing;
|
|
755
|
+
const options = {
|
|
756
|
+
delay,
|
|
757
|
+
duration,
|
|
758
|
+
easing: !Array.isArray(easing) ? easing : "linear",
|
|
759
|
+
fill: "both",
|
|
760
|
+
iterations: repeat + 1,
|
|
761
|
+
direction: repeatType === "reverse" ? "alternate" : "normal"
|
|
762
|
+
};
|
|
763
|
+
if (pseudoElement) options.pseudoElement = pseudoElement;
|
|
764
|
+
return element.animate(keyframeOptions, options);
|
|
765
|
+
}
|
|
766
|
+
function isGenerator(type) {
|
|
767
|
+
return typeof type === "function" && "applyToOptions" in type;
|
|
768
|
+
}
|
|
769
|
+
function applyGeneratorOptions({ type, ...options }) {
|
|
770
|
+
if (isGenerator(type) && supportsLinearEasing()) return type.applyToOptions(options);
|
|
771
|
+
else {
|
|
772
|
+
options.duration ?? (options.duration = 300);
|
|
773
|
+
options.ease ?? (options.ease = "easeOut");
|
|
774
|
+
}
|
|
775
|
+
return options;
|
|
776
|
+
}
|
|
777
|
+
var NativeAnimation = class extends WithPromise {
|
|
778
|
+
constructor(options) {
|
|
779
|
+
super();
|
|
780
|
+
this.finishedTime = null;
|
|
781
|
+
this.isStopped = false;
|
|
782
|
+
this.manualStartTime = null;
|
|
783
|
+
if (!options) return;
|
|
784
|
+
const { element, name, keyframes, pseudoElement, allowFlatten = false, finalKeyframe, onComplete } = options;
|
|
785
|
+
this.isPseudoElement = Boolean(pseudoElement);
|
|
786
|
+
this.allowFlatten = allowFlatten;
|
|
787
|
+
this.options = options;
|
|
788
|
+
options.type;
|
|
789
|
+
const transition = applyGeneratorOptions(options);
|
|
790
|
+
this.animation = startWaapiAnimation(element, name, keyframes, transition, pseudoElement);
|
|
791
|
+
if (transition.autoplay === false) this.animation.pause();
|
|
792
|
+
this.animation.onfinish = () => {
|
|
793
|
+
this.finishedTime = this.time;
|
|
794
|
+
if (!pseudoElement) {
|
|
795
|
+
const keyframe = getFinalKeyframe(keyframes, this.options, finalKeyframe, this.speed);
|
|
796
|
+
if (this.updateMotionValue) this.updateMotionValue(keyframe);
|
|
797
|
+
setStyle(element, name, keyframe);
|
|
798
|
+
this.animation.cancel();
|
|
799
|
+
}
|
|
800
|
+
onComplete?.();
|
|
801
|
+
this.notifyFinished();
|
|
802
|
+
};
|
|
803
|
+
}
|
|
804
|
+
play() {
|
|
805
|
+
if (this.isStopped) return;
|
|
806
|
+
this.manualStartTime = null;
|
|
807
|
+
this.animation.play();
|
|
808
|
+
if (this.state === "finished") this.updateFinished();
|
|
809
|
+
}
|
|
810
|
+
pause() {
|
|
811
|
+
this.animation.pause();
|
|
812
|
+
}
|
|
813
|
+
complete() {
|
|
814
|
+
this.animation.finish?.();
|
|
815
|
+
}
|
|
816
|
+
cancel() {
|
|
817
|
+
try {
|
|
818
|
+
this.animation.cancel();
|
|
819
|
+
} catch (e) {
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
stop() {
|
|
823
|
+
if (this.isStopped) return;
|
|
824
|
+
this.isStopped = true;
|
|
825
|
+
const { state } = this;
|
|
826
|
+
if (state === "idle" || state === "finished") return;
|
|
827
|
+
if (this.updateMotionValue) this.updateMotionValue();
|
|
828
|
+
else this.commitStyles();
|
|
829
|
+
if (!this.isPseudoElement) this.cancel();
|
|
830
|
+
}
|
|
831
|
+
/**
|
|
832
|
+
* WAAPI doesn't natively have any interruption capabilities.
|
|
833
|
+
*
|
|
834
|
+
* In this method, we commit styles back to the DOM before cancelling
|
|
835
|
+
* the animation.
|
|
836
|
+
*
|
|
837
|
+
* This is designed to be overridden by NativeAnimationExtended, which
|
|
838
|
+
* will create a renderless JS animation and sample it twice to calculate
|
|
839
|
+
* its current value, "previous" value, and therefore allow
|
|
840
|
+
* Motion to also correctly calculate velocity for any subsequent animation
|
|
841
|
+
* while deferring the commit until the next animation frame.
|
|
842
|
+
*/
|
|
843
|
+
commitStyles() {
|
|
844
|
+
const element = this.options?.element;
|
|
845
|
+
if (!this.isPseudoElement && element?.isConnected) this.animation.commitStyles?.();
|
|
846
|
+
}
|
|
847
|
+
get duration() {
|
|
848
|
+
const duration = this.animation.effect?.getComputedTiming?.().duration || 0;
|
|
849
|
+
return /* @__PURE__ */ millisecondsToSeconds(Number(duration));
|
|
850
|
+
}
|
|
851
|
+
get iterationDuration() {
|
|
852
|
+
const { delay = 0 } = this.options || {};
|
|
853
|
+
return this.duration + /* @__PURE__ */ millisecondsToSeconds(delay);
|
|
854
|
+
}
|
|
855
|
+
get time() {
|
|
856
|
+
return /* @__PURE__ */ millisecondsToSeconds(Number(this.animation.currentTime) || 0);
|
|
857
|
+
}
|
|
858
|
+
set time(newTime) {
|
|
859
|
+
const wasFinished = this.finishedTime !== null;
|
|
860
|
+
this.manualStartTime = null;
|
|
861
|
+
this.finishedTime = null;
|
|
862
|
+
this.animation.currentTime = /* @__PURE__ */ secondsToMilliseconds(newTime);
|
|
863
|
+
if (wasFinished) this.animation.pause();
|
|
864
|
+
}
|
|
865
|
+
/**
|
|
866
|
+
* The playback speed of the animation.
|
|
867
|
+
* 1 = normal speed, 2 = double speed, 0.5 = half speed.
|
|
868
|
+
*/
|
|
869
|
+
get speed() {
|
|
870
|
+
return this.animation.playbackRate;
|
|
871
|
+
}
|
|
872
|
+
set speed(newSpeed) {
|
|
873
|
+
if (newSpeed < 0) this.finishedTime = null;
|
|
874
|
+
this.animation.playbackRate = newSpeed;
|
|
875
|
+
}
|
|
876
|
+
get state() {
|
|
877
|
+
return this.finishedTime !== null ? "finished" : this.animation.playState;
|
|
878
|
+
}
|
|
879
|
+
get startTime() {
|
|
880
|
+
return this.manualStartTime ?? Number(this.animation.startTime);
|
|
881
|
+
}
|
|
882
|
+
set startTime(newStartTime) {
|
|
883
|
+
this.manualStartTime = this.animation.startTime = newStartTime;
|
|
884
|
+
}
|
|
885
|
+
/**
|
|
886
|
+
* Attaches a timeline to the animation, for instance the `ScrollTimeline`.
|
|
887
|
+
*/
|
|
888
|
+
attachTimeline({ timeline, rangeStart, rangeEnd, observe }) {
|
|
889
|
+
if (this.allowFlatten) this.animation.effect?.updateTiming({ easing: "linear" });
|
|
890
|
+
this.animation.onfinish = null;
|
|
891
|
+
if (timeline && supportsScrollTimeline()) {
|
|
892
|
+
this.animation.timeline = timeline;
|
|
893
|
+
if (rangeStart) this.animation.rangeStart = rangeStart;
|
|
894
|
+
if (rangeEnd) this.animation.rangeEnd = rangeEnd;
|
|
895
|
+
return noop;
|
|
896
|
+
} else return observe(this);
|
|
897
|
+
}
|
|
898
|
+
};
|
|
899
|
+
var acceleratedValues = /* @__PURE__ */ new Set([
|
|
900
|
+
"opacity",
|
|
901
|
+
"clipPath",
|
|
902
|
+
"filter",
|
|
903
|
+
"transform",
|
|
904
|
+
"backgroundColor"
|
|
905
|
+
]);
|
|
906
|
+
var MAX_VELOCITY_DELTA = 30;
|
|
907
|
+
var isFloat = (value) => {
|
|
908
|
+
return !isNaN(parseFloat(value));
|
|
909
|
+
};
|
|
910
|
+
var collectMotionValues = { current: void 0 };
|
|
911
|
+
var MotionValue = class {
|
|
912
|
+
/**
|
|
913
|
+
* @param init - The initiating value
|
|
914
|
+
* @param config - Optional configuration options
|
|
915
|
+
*
|
|
916
|
+
* - `transformer`: A function to transform incoming values with.
|
|
917
|
+
*/
|
|
918
|
+
constructor(init, options = {}) {
|
|
919
|
+
this.canTrackVelocity = null;
|
|
920
|
+
this.events = {};
|
|
921
|
+
this.updateAndNotify = (v) => {
|
|
922
|
+
const currentTime = time.now();
|
|
923
|
+
if (this.updatedAt !== currentTime) this.setPrevFrameValue();
|
|
924
|
+
this.prev = this.current;
|
|
925
|
+
this.setCurrent(v);
|
|
926
|
+
if (this.current !== this.prev) {
|
|
927
|
+
this.events.change?.notify(this.current);
|
|
928
|
+
if (this.dependents) for (const dependent of this.dependents) dependent.dirty();
|
|
929
|
+
}
|
|
930
|
+
};
|
|
931
|
+
this.hasAnimated = false;
|
|
932
|
+
this.setCurrent(init);
|
|
933
|
+
this.owner = options.owner;
|
|
934
|
+
}
|
|
935
|
+
setCurrent(current) {
|
|
936
|
+
this.current = current;
|
|
937
|
+
this.updatedAt = time.now();
|
|
938
|
+
if (this.canTrackVelocity === null && current !== void 0) this.canTrackVelocity = isFloat(this.current);
|
|
939
|
+
}
|
|
940
|
+
setPrevFrameValue(prevFrameValue = this.current) {
|
|
941
|
+
this.prevFrameValue = prevFrameValue;
|
|
942
|
+
this.prevUpdatedAt = this.updatedAt;
|
|
943
|
+
}
|
|
944
|
+
/**
|
|
945
|
+
* Adds a function that will be notified when the `MotionValue` is updated.
|
|
946
|
+
*
|
|
947
|
+
* It returns a function that, when called, will cancel the subscription.
|
|
948
|
+
*
|
|
949
|
+
* When calling `onChange` inside a React component, it should be wrapped with the
|
|
950
|
+
* `useEffect` hook. As it returns an unsubscribe function, this should be returned
|
|
951
|
+
* from the `useEffect` function to ensure you don't add duplicate subscribers..
|
|
952
|
+
*
|
|
953
|
+
* ```jsx
|
|
954
|
+
* export const MyComponent = () => {
|
|
955
|
+
* const x = useMotionValue(0)
|
|
956
|
+
* const y = useMotionValue(0)
|
|
957
|
+
* const opacity = useMotionValue(1)
|
|
958
|
+
*
|
|
959
|
+
* useEffect(() => {
|
|
960
|
+
* function updateOpacity() {
|
|
961
|
+
* const maxXY = Math.max(x.get(), y.get())
|
|
962
|
+
* const newOpacity = transform(maxXY, [0, 100], [1, 0])
|
|
963
|
+
* opacity.set(newOpacity)
|
|
964
|
+
* }
|
|
965
|
+
*
|
|
966
|
+
* const unsubscribeX = x.on("change", updateOpacity)
|
|
967
|
+
* const unsubscribeY = y.on("change", updateOpacity)
|
|
968
|
+
*
|
|
969
|
+
* return () => {
|
|
970
|
+
* unsubscribeX()
|
|
971
|
+
* unsubscribeY()
|
|
972
|
+
* }
|
|
973
|
+
* }, [])
|
|
974
|
+
*
|
|
975
|
+
* return <motion.div style={{ x }} />
|
|
976
|
+
* }
|
|
977
|
+
* ```
|
|
978
|
+
*
|
|
979
|
+
* @param subscriber - A function that receives the latest value.
|
|
980
|
+
* @returns A function that, when called, will cancel this subscription.
|
|
981
|
+
*
|
|
982
|
+
* @deprecated
|
|
983
|
+
*/
|
|
984
|
+
onChange(subscription) {
|
|
985
|
+
return this.on("change", subscription);
|
|
986
|
+
}
|
|
987
|
+
on(eventName, callback) {
|
|
988
|
+
if (!this.events[eventName]) this.events[eventName] = new SubscriptionManager();
|
|
989
|
+
const unsubscribe = this.events[eventName].add(callback);
|
|
990
|
+
if (eventName === "change") return () => {
|
|
991
|
+
unsubscribe();
|
|
992
|
+
frame.read(() => {
|
|
993
|
+
if (!this.events.change.getSize()) this.stop();
|
|
994
|
+
});
|
|
995
|
+
};
|
|
996
|
+
return unsubscribe;
|
|
997
|
+
}
|
|
998
|
+
clearListeners() {
|
|
999
|
+
for (const eventManagers in this.events) this.events[eventManagers].clear();
|
|
1000
|
+
}
|
|
1001
|
+
/**
|
|
1002
|
+
* Attaches a passive effect to the `MotionValue`.
|
|
1003
|
+
*/
|
|
1004
|
+
attach(passiveEffect, stopPassiveEffect) {
|
|
1005
|
+
this.passiveEffect = passiveEffect;
|
|
1006
|
+
this.stopPassiveEffect = stopPassiveEffect;
|
|
1007
|
+
}
|
|
1008
|
+
/**
|
|
1009
|
+
* Sets the state of the `MotionValue`.
|
|
1010
|
+
*
|
|
1011
|
+
* @remarks
|
|
1012
|
+
*
|
|
1013
|
+
* ```jsx
|
|
1014
|
+
* const x = useMotionValue(0)
|
|
1015
|
+
* x.set(10)
|
|
1016
|
+
* ```
|
|
1017
|
+
*
|
|
1018
|
+
* @param latest - Latest value to set.
|
|
1019
|
+
* @param render - Whether to notify render subscribers. Defaults to `true`
|
|
1020
|
+
*
|
|
1021
|
+
* @public
|
|
1022
|
+
*/
|
|
1023
|
+
set(v) {
|
|
1024
|
+
if (!this.passiveEffect) this.updateAndNotify(v);
|
|
1025
|
+
else this.passiveEffect(v, this.updateAndNotify);
|
|
1026
|
+
}
|
|
1027
|
+
setWithVelocity(prev, current, delta) {
|
|
1028
|
+
this.set(current);
|
|
1029
|
+
this.prev = void 0;
|
|
1030
|
+
this.prevFrameValue = prev;
|
|
1031
|
+
this.prevUpdatedAt = this.updatedAt - delta;
|
|
1032
|
+
}
|
|
1033
|
+
/**
|
|
1034
|
+
* Set the state of the `MotionValue`, stopping any active animations,
|
|
1035
|
+
* effects, and resets velocity to `0`.
|
|
1036
|
+
*/
|
|
1037
|
+
jump(v, endAnimation = true) {
|
|
1038
|
+
this.updateAndNotify(v);
|
|
1039
|
+
this.prev = v;
|
|
1040
|
+
this.prevUpdatedAt = this.prevFrameValue = void 0;
|
|
1041
|
+
endAnimation && this.stop();
|
|
1042
|
+
if (this.stopPassiveEffect) this.stopPassiveEffect();
|
|
1043
|
+
}
|
|
1044
|
+
dirty() {
|
|
1045
|
+
this.events.change?.notify(this.current);
|
|
1046
|
+
}
|
|
1047
|
+
addDependent(dependent) {
|
|
1048
|
+
if (!this.dependents) this.dependents = /* @__PURE__ */ new Set();
|
|
1049
|
+
this.dependents.add(dependent);
|
|
1050
|
+
}
|
|
1051
|
+
removeDependent(dependent) {
|
|
1052
|
+
if (this.dependents) this.dependents.delete(dependent);
|
|
1053
|
+
}
|
|
1054
|
+
/**
|
|
1055
|
+
* Returns the latest state of `MotionValue`
|
|
1056
|
+
*
|
|
1057
|
+
* @returns - The latest state of `MotionValue`
|
|
1058
|
+
*
|
|
1059
|
+
* @public
|
|
1060
|
+
*/
|
|
1061
|
+
get() {
|
|
1062
|
+
if (collectMotionValues.current) collectMotionValues.current.push(this);
|
|
1063
|
+
return this.current;
|
|
1064
|
+
}
|
|
1065
|
+
/**
|
|
1066
|
+
* @public
|
|
1067
|
+
*/
|
|
1068
|
+
getPrevious() {
|
|
1069
|
+
return this.prev;
|
|
1070
|
+
}
|
|
1071
|
+
/**
|
|
1072
|
+
* Returns the latest velocity of `MotionValue`
|
|
1073
|
+
*
|
|
1074
|
+
* @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.
|
|
1075
|
+
*
|
|
1076
|
+
* @public
|
|
1077
|
+
*/
|
|
1078
|
+
getVelocity() {
|
|
1079
|
+
const currentTime = time.now();
|
|
1080
|
+
if (!this.canTrackVelocity || this.prevFrameValue === void 0 || currentTime - this.updatedAt > MAX_VELOCITY_DELTA) return 0;
|
|
1081
|
+
const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);
|
|
1082
|
+
return /* @__PURE__ */ velocityPerSecond(parseFloat(this.current) - parseFloat(this.prevFrameValue), delta);
|
|
1083
|
+
}
|
|
1084
|
+
/**
|
|
1085
|
+
* Registers a new animation to control this `MotionValue`. Only one
|
|
1086
|
+
* animation can drive a `MotionValue` at one time.
|
|
1087
|
+
*
|
|
1088
|
+
* ```jsx
|
|
1089
|
+
* value.start()
|
|
1090
|
+
* ```
|
|
1091
|
+
*
|
|
1092
|
+
* @param animation - A function that starts the provided animation
|
|
1093
|
+
*/
|
|
1094
|
+
start(startAnimation) {
|
|
1095
|
+
this.stop();
|
|
1096
|
+
return new Promise((resolve) => {
|
|
1097
|
+
this.hasAnimated = true;
|
|
1098
|
+
this.animation = startAnimation(resolve);
|
|
1099
|
+
if (this.events.animationStart) this.events.animationStart.notify();
|
|
1100
|
+
}).then(() => {
|
|
1101
|
+
if (this.events.animationComplete) this.events.animationComplete.notify();
|
|
1102
|
+
this.clearAnimation();
|
|
1103
|
+
});
|
|
1104
|
+
}
|
|
1105
|
+
/**
|
|
1106
|
+
* Stop the currently active animation.
|
|
1107
|
+
*
|
|
1108
|
+
* @public
|
|
1109
|
+
*/
|
|
1110
|
+
stop() {
|
|
1111
|
+
if (this.animation) {
|
|
1112
|
+
this.animation.stop();
|
|
1113
|
+
if (this.events.animationCancel) this.events.animationCancel.notify();
|
|
1114
|
+
}
|
|
1115
|
+
this.clearAnimation();
|
|
1116
|
+
}
|
|
1117
|
+
/**
|
|
1118
|
+
* Returns `true` if this value is currently animating.
|
|
1119
|
+
*
|
|
1120
|
+
* @public
|
|
1121
|
+
*/
|
|
1122
|
+
isAnimating() {
|
|
1123
|
+
return !!this.animation;
|
|
1124
|
+
}
|
|
1125
|
+
clearAnimation() {
|
|
1126
|
+
delete this.animation;
|
|
1127
|
+
}
|
|
1128
|
+
/**
|
|
1129
|
+
* Destroy and clean up subscribers to this `MotionValue`.
|
|
1130
|
+
*
|
|
1131
|
+
* The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically
|
|
1132
|
+
* handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually
|
|
1133
|
+
* created a `MotionValue` via the `motionValue` function.
|
|
1134
|
+
*
|
|
1135
|
+
* @public
|
|
1136
|
+
*/
|
|
1137
|
+
destroy() {
|
|
1138
|
+
this.dependents?.clear();
|
|
1139
|
+
this.events.destroy?.notify();
|
|
1140
|
+
this.clearListeners();
|
|
1141
|
+
this.stop();
|
|
1142
|
+
if (this.stopPassiveEffect) this.stopPassiveEffect();
|
|
1143
|
+
}
|
|
1144
|
+
};
|
|
1145
|
+
function motionValue(init, options) {
|
|
1146
|
+
return new MotionValue(init, options);
|
|
1147
|
+
}
|
|
1148
|
+
function getValueState(visualElement) {
|
|
1149
|
+
const state = [{}, {}];
|
|
1150
|
+
visualElement?.values.forEach((value, key) => {
|
|
1151
|
+
state[0][key] = value.get();
|
|
1152
|
+
state[1][key] = value.getVelocity();
|
|
1153
|
+
});
|
|
1154
|
+
return state;
|
|
1155
|
+
}
|
|
1156
|
+
function resolveVariantFromProps(props, definition, custom, visualElement) {
|
|
1157
|
+
if (typeof definition === "function") {
|
|
1158
|
+
const [current, velocity] = getValueState(visualElement);
|
|
1159
|
+
definition = definition(custom !== void 0 ? custom : props.custom, current, velocity);
|
|
1160
|
+
}
|
|
1161
|
+
if (typeof definition === "string") definition = props.variants && props.variants[definition];
|
|
1162
|
+
if (typeof definition === "function") {
|
|
1163
|
+
const [current, velocity] = getValueState(visualElement);
|
|
1164
|
+
definition = definition(custom !== void 0 ? custom : props.custom, current, velocity);
|
|
1165
|
+
}
|
|
1166
|
+
return definition;
|
|
1167
|
+
}
|
|
1168
|
+
var isMotionValue = (value) => Boolean(value && value.getVelocity);
|
|
1169
|
+
function camelToDash(str) {
|
|
1170
|
+
return str.replace(/([A-Z])/g, (match) => `-${match.toLowerCase()}`);
|
|
1171
|
+
}
|
|
1172
|
+
var optimizedAppearDataAttribute = "data-" + camelToDash("framerAppearId");
|
|
1173
|
+
var auto = {
|
|
1174
|
+
test: (v) => v === "auto",
|
|
1175
|
+
parse: (v) => v
|
|
1176
|
+
};
|
|
1177
|
+
var testValueType = (v) => (type) => type.test(v);
|
|
1178
|
+
var dimensionValueTypes = [
|
|
1179
|
+
number,
|
|
1180
|
+
px,
|
|
1181
|
+
percent,
|
|
1182
|
+
degrees,
|
|
1183
|
+
vw,
|
|
1184
|
+
vh,
|
|
1185
|
+
auto
|
|
1186
|
+
];
|
|
1187
|
+
var findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));
|
|
1188
|
+
var maxDefaults = /* @__PURE__ */ new Set([
|
|
1189
|
+
"brightness",
|
|
1190
|
+
"contrast",
|
|
1191
|
+
"saturate",
|
|
1192
|
+
"opacity"
|
|
1193
|
+
]);
|
|
1194
|
+
function applyDefaultFilter(v) {
|
|
1195
|
+
const [name, value] = v.slice(0, -1).split("(");
|
|
1196
|
+
if (name === "drop-shadow") return v;
|
|
1197
|
+
const [number2] = value.match(floatRegex) || [];
|
|
1198
|
+
if (!number2) return v;
|
|
1199
|
+
const unit = value.replace(number2, "");
|
|
1200
|
+
let defaultValue = maxDefaults.has(name) ? 1 : 0;
|
|
1201
|
+
if (number2 !== value) defaultValue *= 100;
|
|
1202
|
+
return name + "(" + defaultValue + unit + ")";
|
|
1203
|
+
}
|
|
1204
|
+
var functionRegex = /\b([a-z-]*)\(.*?\)/gu;
|
|
1205
|
+
var filter = {
|
|
1206
|
+
...complex,
|
|
1207
|
+
getAnimatableNone: (v) => {
|
|
1208
|
+
const functions = v.match(functionRegex);
|
|
1209
|
+
return functions ? functions.map(applyDefaultFilter).join(" ") : v;
|
|
1210
|
+
}
|
|
1211
|
+
};
|
|
1212
|
+
var mask = {
|
|
1213
|
+
...complex,
|
|
1214
|
+
getAnimatableNone: (v) => {
|
|
1215
|
+
const parsed = complex.parse(v);
|
|
1216
|
+
return complex.createTransformer(v)(parsed.map((v2) => typeof v2 === "number" ? 0 : typeof v2 === "object" ? {
|
|
1217
|
+
...v2,
|
|
1218
|
+
alpha: 1
|
|
1219
|
+
} : v2));
|
|
1220
|
+
}
|
|
1221
|
+
};
|
|
1222
|
+
var int = {
|
|
1223
|
+
...number,
|
|
1224
|
+
transform: Math.round
|
|
1225
|
+
};
|
|
1226
|
+
var numberValueTypes = {
|
|
1227
|
+
borderWidth: px,
|
|
1228
|
+
borderTopWidth: px,
|
|
1229
|
+
borderRightWidth: px,
|
|
1230
|
+
borderBottomWidth: px,
|
|
1231
|
+
borderLeftWidth: px,
|
|
1232
|
+
borderRadius: px,
|
|
1233
|
+
borderTopLeftRadius: px,
|
|
1234
|
+
borderTopRightRadius: px,
|
|
1235
|
+
borderBottomRightRadius: px,
|
|
1236
|
+
borderBottomLeftRadius: px,
|
|
1237
|
+
width: px,
|
|
1238
|
+
maxWidth: px,
|
|
1239
|
+
height: px,
|
|
1240
|
+
maxHeight: px,
|
|
1241
|
+
top: px,
|
|
1242
|
+
right: px,
|
|
1243
|
+
bottom: px,
|
|
1244
|
+
left: px,
|
|
1245
|
+
inset: px,
|
|
1246
|
+
insetBlock: px,
|
|
1247
|
+
insetBlockStart: px,
|
|
1248
|
+
insetBlockEnd: px,
|
|
1249
|
+
insetInline: px,
|
|
1250
|
+
insetInlineStart: px,
|
|
1251
|
+
insetInlineEnd: px,
|
|
1252
|
+
padding: px,
|
|
1253
|
+
paddingTop: px,
|
|
1254
|
+
paddingRight: px,
|
|
1255
|
+
paddingBottom: px,
|
|
1256
|
+
paddingLeft: px,
|
|
1257
|
+
paddingBlock: px,
|
|
1258
|
+
paddingBlockStart: px,
|
|
1259
|
+
paddingBlockEnd: px,
|
|
1260
|
+
paddingInline: px,
|
|
1261
|
+
paddingInlineStart: px,
|
|
1262
|
+
paddingInlineEnd: px,
|
|
1263
|
+
margin: px,
|
|
1264
|
+
marginTop: px,
|
|
1265
|
+
marginRight: px,
|
|
1266
|
+
marginBottom: px,
|
|
1267
|
+
marginLeft: px,
|
|
1268
|
+
marginBlock: px,
|
|
1269
|
+
marginBlockStart: px,
|
|
1270
|
+
marginBlockEnd: px,
|
|
1271
|
+
marginInline: px,
|
|
1272
|
+
marginInlineStart: px,
|
|
1273
|
+
marginInlineEnd: px,
|
|
1274
|
+
fontSize: px,
|
|
1275
|
+
backgroundPositionX: px,
|
|
1276
|
+
backgroundPositionY: px,
|
|
1277
|
+
rotate: degrees,
|
|
1278
|
+
/**
|
|
1279
|
+
* Internal channel for `transition.path` orientToPath. Composed onto
|
|
1280
|
+
* `rotate` at the transform-build sites so the user's `rotate` is
|
|
1281
|
+
* never read or overwritten. Not part of `transformPropOrder`.
|
|
1282
|
+
*/
|
|
1283
|
+
pathRotation: degrees,
|
|
1284
|
+
rotateX: degrees,
|
|
1285
|
+
rotateY: degrees,
|
|
1286
|
+
rotateZ: degrees,
|
|
1287
|
+
scale,
|
|
1288
|
+
scaleX: scale,
|
|
1289
|
+
scaleY: scale,
|
|
1290
|
+
scaleZ: scale,
|
|
1291
|
+
skew: degrees,
|
|
1292
|
+
skewX: degrees,
|
|
1293
|
+
skewY: degrees,
|
|
1294
|
+
distance: px,
|
|
1295
|
+
translateX: px,
|
|
1296
|
+
translateY: px,
|
|
1297
|
+
translateZ: px,
|
|
1298
|
+
x: px,
|
|
1299
|
+
y: px,
|
|
1300
|
+
z: px,
|
|
1301
|
+
perspective: px,
|
|
1302
|
+
transformPerspective: px,
|
|
1303
|
+
opacity: alpha,
|
|
1304
|
+
originX: progressPercentage,
|
|
1305
|
+
originY: progressPercentage,
|
|
1306
|
+
originZ: px,
|
|
1307
|
+
zIndex: int,
|
|
1308
|
+
fillOpacity: alpha,
|
|
1309
|
+
strokeOpacity: alpha,
|
|
1310
|
+
numOctaves: int
|
|
1311
|
+
};
|
|
1312
|
+
var defaultValueTypes = {
|
|
1313
|
+
...numberValueTypes,
|
|
1314
|
+
color,
|
|
1315
|
+
backgroundColor: color,
|
|
1316
|
+
outlineColor: color,
|
|
1317
|
+
fill: color,
|
|
1318
|
+
stroke: color,
|
|
1319
|
+
borderColor: color,
|
|
1320
|
+
borderTopColor: color,
|
|
1321
|
+
borderRightColor: color,
|
|
1322
|
+
borderBottomColor: color,
|
|
1323
|
+
borderLeftColor: color,
|
|
1324
|
+
filter,
|
|
1325
|
+
WebkitFilter: filter,
|
|
1326
|
+
mask,
|
|
1327
|
+
WebkitMask: mask
|
|
1328
|
+
};
|
|
1329
|
+
var getDefaultValueType = (key) => defaultValueTypes[key];
|
|
1330
|
+
var customTypes = /* @__PURE__ */ new Set([filter, mask]);
|
|
1331
|
+
function getAnimatableNone(key, value) {
|
|
1332
|
+
let defaultValueType = getDefaultValueType(key);
|
|
1333
|
+
if (!customTypes.has(defaultValueType)) defaultValueType = complex;
|
|
1334
|
+
return defaultValueType.getAnimatableNone ? defaultValueType.getAnimatableNone(value) : void 0;
|
|
1335
|
+
}
|
|
1336
|
+
var cornerRadiusProps = [
|
|
1337
|
+
"borderTopLeftRadius",
|
|
1338
|
+
"borderTopRightRadius",
|
|
1339
|
+
"borderBottomRightRadius",
|
|
1340
|
+
"borderBottomLeftRadius"
|
|
1341
|
+
];
|
|
1342
|
+
var getValueAsType = (value, type) => {
|
|
1343
|
+
return type && typeof value === "number" ? type.transform(value) : value;
|
|
1344
|
+
};
|
|
1345
|
+
var { schedule: microtask, cancel: cancelMicrotask } = /* @__PURE__ */ createRenderBatcher(queueMicrotask, false);
|
|
1346
|
+
var valueTypes = [
|
|
1347
|
+
...dimensionValueTypes,
|
|
1348
|
+
color,
|
|
1349
|
+
complex
|
|
1350
|
+
];
|
|
1351
|
+
var findValueType = (v) => valueTypes.find(testValueType(v));
|
|
1352
|
+
var createAxisDelta = () => ({
|
|
1353
|
+
translate: 0,
|
|
1354
|
+
scale: 1,
|
|
1355
|
+
origin: 0,
|
|
1356
|
+
originPoint: 0
|
|
1357
|
+
});
|
|
1358
|
+
var createDelta = () => ({
|
|
1359
|
+
x: createAxisDelta(),
|
|
1360
|
+
y: createAxisDelta()
|
|
1361
|
+
});
|
|
1362
|
+
var createAxis = () => ({
|
|
1363
|
+
min: 0,
|
|
1364
|
+
max: 0
|
|
1365
|
+
});
|
|
1366
|
+
var createBox = () => ({
|
|
1367
|
+
x: createAxis(),
|
|
1368
|
+
y: createAxis()
|
|
1369
|
+
});
|
|
1370
|
+
var visualElementStore = /* @__PURE__ */ new WeakMap();
|
|
1371
|
+
function isAnimationControls(v) {
|
|
1372
|
+
return v !== null && typeof v === "object" && typeof v.start === "function";
|
|
1373
|
+
}
|
|
1374
|
+
function isVariantLabel(v) {
|
|
1375
|
+
return typeof v === "string" || Array.isArray(v);
|
|
1376
|
+
}
|
|
1377
|
+
var variantPriorityOrder = [
|
|
1378
|
+
"animate",
|
|
1379
|
+
"whileInView",
|
|
1380
|
+
"whileFocus",
|
|
1381
|
+
"whileHover",
|
|
1382
|
+
"whileTap",
|
|
1383
|
+
"whileDrag",
|
|
1384
|
+
"exit"
|
|
1385
|
+
];
|
|
1386
|
+
var variantProps = ["initial", ...variantPriorityOrder];
|
|
1387
|
+
function isControllingVariants(props) {
|
|
1388
|
+
return isAnimationControls(props.animate) || variantProps.some((name) => isVariantLabel(props[name]));
|
|
1389
|
+
}
|
|
1390
|
+
function isVariantNode(props) {
|
|
1391
|
+
return Boolean(isControllingVariants(props) || props.variants);
|
|
1392
|
+
}
|
|
1393
|
+
function updateMotionValuesFromProps(element, next, prev) {
|
|
1394
|
+
for (const key in next) {
|
|
1395
|
+
const nextValue = next[key];
|
|
1396
|
+
const prevValue = prev[key];
|
|
1397
|
+
if (isMotionValue(nextValue))
|
|
1398
|
+
element.addValue(key, nextValue);
|
|
1399
|
+
else if (isMotionValue(prevValue))
|
|
1400
|
+
element.addValue(key, motionValue(nextValue, { owner: element }));
|
|
1401
|
+
else if (prevValue !== nextValue) {
|
|
1402
|
+
if (element.hasValue(key)) {
|
|
1403
|
+
const existingValue = element.getValue(key);
|
|
1404
|
+
if (existingValue.liveStyle === true) existingValue.jump(nextValue);
|
|
1405
|
+
else if (!existingValue.hasAnimated) existingValue.set(nextValue);
|
|
1406
|
+
} else {
|
|
1407
|
+
const latestValue = element.getStaticValue(key);
|
|
1408
|
+
element.addValue(key, motionValue(latestValue !== void 0 ? latestValue : nextValue, { owner: element }));
|
|
1409
|
+
}
|
|
1410
|
+
}
|
|
1411
|
+
}
|
|
1412
|
+
for (const key in prev) if (next[key] === void 0) element.removeValue(key);
|
|
1413
|
+
return next;
|
|
1414
|
+
}
|
|
1415
|
+
var prefersReducedMotion = { current: null };
|
|
1416
|
+
var hasReducedMotionListener = { current: false };
|
|
1417
|
+
var isBrowser = typeof window !== "undefined";
|
|
1418
|
+
function initPrefersReducedMotion() {
|
|
1419
|
+
hasReducedMotionListener.current = true;
|
|
1420
|
+
if (!isBrowser) return;
|
|
1421
|
+
if (window.matchMedia) {
|
|
1422
|
+
const motionMediaQuery = window.matchMedia("(prefers-reduced-motion)");
|
|
1423
|
+
const setReducedMotionPreferences = () => prefersReducedMotion.current = motionMediaQuery.matches;
|
|
1424
|
+
motionMediaQuery.addEventListener("change", setReducedMotionPreferences);
|
|
1425
|
+
setReducedMotionPreferences();
|
|
1426
|
+
} else prefersReducedMotion.current = false;
|
|
1427
|
+
}
|
|
1428
|
+
var propEventHandlers = [
|
|
1429
|
+
"AnimationStart",
|
|
1430
|
+
"AnimationComplete",
|
|
1431
|
+
"Update",
|
|
1432
|
+
"BeforeLayoutMeasure",
|
|
1433
|
+
"LayoutMeasure",
|
|
1434
|
+
"LayoutAnimationStart",
|
|
1435
|
+
"LayoutAnimationComplete"
|
|
1436
|
+
];
|
|
1437
|
+
var featureDefinitions = {};
|
|
1438
|
+
function setFeatureDefinitions(definitions) {
|
|
1439
|
+
featureDefinitions = definitions;
|
|
1440
|
+
}
|
|
1441
|
+
function getFeatureDefinitions() {
|
|
1442
|
+
return featureDefinitions;
|
|
1443
|
+
}
|
|
1444
|
+
var VisualElement = class {
|
|
1445
|
+
/**
|
|
1446
|
+
* This method takes React props and returns found MotionValues. For example, HTML
|
|
1447
|
+
* MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.
|
|
1448
|
+
*
|
|
1449
|
+
* This isn't an abstract method as it needs calling in the constructor, but it is
|
|
1450
|
+
* intended to be one.
|
|
1451
|
+
*/
|
|
1452
|
+
scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {
|
|
1453
|
+
return {};
|
|
1454
|
+
}
|
|
1455
|
+
constructor({ parent, props, presenceContext, reducedMotionConfig, skipAnimations, blockInitialAnimation, visualState }, options = {}) {
|
|
1456
|
+
this.current = null;
|
|
1457
|
+
this.children = /* @__PURE__ */ new Set();
|
|
1458
|
+
this.isVariantNode = false;
|
|
1459
|
+
this.isControllingVariants = false;
|
|
1460
|
+
this.shouldReduceMotion = null;
|
|
1461
|
+
this.shouldSkipAnimations = false;
|
|
1462
|
+
this.values = /* @__PURE__ */ new Map();
|
|
1463
|
+
this.KeyframeResolver = KeyframeResolver;
|
|
1464
|
+
this.features = {};
|
|
1465
|
+
this.valueSubscriptions = /* @__PURE__ */ new Map();
|
|
1466
|
+
this.prevMotionValues = {};
|
|
1467
|
+
this.hasBeenMounted = false;
|
|
1468
|
+
this.events = {};
|
|
1469
|
+
this.propEventSubscriptions = {};
|
|
1470
|
+
this.notifyUpdate = () => this.notify("Update", this.latestValues);
|
|
1471
|
+
this.render = () => {
|
|
1472
|
+
if (!this.current) return;
|
|
1473
|
+
this.triggerBuild();
|
|
1474
|
+
this.renderInstance(this.current, this.renderState, this.props.style, this.projection);
|
|
1475
|
+
};
|
|
1476
|
+
this.renderScheduledAt = 0;
|
|
1477
|
+
this.scheduleRender = () => {
|
|
1478
|
+
const now2 = time.now();
|
|
1479
|
+
if (this.renderScheduledAt < now2) {
|
|
1480
|
+
this.renderScheduledAt = now2;
|
|
1481
|
+
frame.render(this.render, false, true);
|
|
1482
|
+
}
|
|
1483
|
+
};
|
|
1484
|
+
const { latestValues, renderState } = visualState;
|
|
1485
|
+
this.latestValues = latestValues;
|
|
1486
|
+
this.baseTarget = { ...latestValues };
|
|
1487
|
+
this.initialValues = props.initial ? { ...latestValues } : {};
|
|
1488
|
+
this.renderState = renderState;
|
|
1489
|
+
this.parent = parent;
|
|
1490
|
+
this.props = props;
|
|
1491
|
+
this.presenceContext = presenceContext;
|
|
1492
|
+
this.depth = parent ? parent.depth + 1 : 0;
|
|
1493
|
+
this.reducedMotionConfig = reducedMotionConfig;
|
|
1494
|
+
this.skipAnimationsConfig = skipAnimations;
|
|
1495
|
+
this.options = options;
|
|
1496
|
+
this.blockInitialAnimation = Boolean(blockInitialAnimation);
|
|
1497
|
+
this.isControllingVariants = isControllingVariants(props);
|
|
1498
|
+
this.isVariantNode = isVariantNode(props);
|
|
1499
|
+
if (this.isVariantNode) this.variantChildren = /* @__PURE__ */ new Set();
|
|
1500
|
+
this.manuallyAnimateOnMount = Boolean(parent && parent.current);
|
|
1501
|
+
const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);
|
|
1502
|
+
for (const key in initialMotionValues) {
|
|
1503
|
+
const value = initialMotionValues[key];
|
|
1504
|
+
if (latestValues[key] !== void 0 && isMotionValue(value)) value.set(latestValues[key]);
|
|
1505
|
+
}
|
|
1506
|
+
}
|
|
1507
|
+
mount(instance) {
|
|
1508
|
+
if (this.hasBeenMounted) for (const key in this.initialValues) {
|
|
1509
|
+
this.values.get(key)?.jump(this.initialValues[key]);
|
|
1510
|
+
this.latestValues[key] = this.initialValues[key];
|
|
1511
|
+
}
|
|
1512
|
+
this.current = instance;
|
|
1513
|
+
visualElementStore.set(instance, this);
|
|
1514
|
+
if (this.projection && !this.projection.instance) this.projection.mount(instance);
|
|
1515
|
+
if (this.parent && this.isVariantNode && !this.isControllingVariants) this.removeFromVariantTree = this.parent.addVariantChild(this);
|
|
1516
|
+
this.values.forEach((value, key) => this.bindToMotionValue(key, value));
|
|
1517
|
+
if (this.reducedMotionConfig === "never") this.shouldReduceMotion = false;
|
|
1518
|
+
else if (this.reducedMotionConfig === "always") this.shouldReduceMotion = true;
|
|
1519
|
+
else {
|
|
1520
|
+
if (!hasReducedMotionListener.current) initPrefersReducedMotion();
|
|
1521
|
+
this.shouldReduceMotion = prefersReducedMotion.current;
|
|
1522
|
+
}
|
|
1523
|
+
this.shouldSkipAnimations = this.skipAnimationsConfig ?? false;
|
|
1524
|
+
this.parent?.addChild(this);
|
|
1525
|
+
this.update(this.props, this.presenceContext);
|
|
1526
|
+
this.hasBeenMounted = true;
|
|
1527
|
+
}
|
|
1528
|
+
unmount() {
|
|
1529
|
+
this.projection && this.projection.unmount();
|
|
1530
|
+
cancelFrame(this.notifyUpdate);
|
|
1531
|
+
cancelFrame(this.render);
|
|
1532
|
+
this.valueSubscriptions.forEach((remove) => remove());
|
|
1533
|
+
this.valueSubscriptions.clear();
|
|
1534
|
+
this.removeFromVariantTree && this.removeFromVariantTree();
|
|
1535
|
+
this.parent?.removeChild(this);
|
|
1536
|
+
for (const key in this.events) this.events[key].clear();
|
|
1537
|
+
for (const key in this.features) {
|
|
1538
|
+
const feature = this.features[key];
|
|
1539
|
+
if (feature) {
|
|
1540
|
+
feature.unmount();
|
|
1541
|
+
feature.isMounted = false;
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
this.current = null;
|
|
1545
|
+
}
|
|
1546
|
+
addChild(child) {
|
|
1547
|
+
this.children.add(child);
|
|
1548
|
+
this.enteringChildren ?? (this.enteringChildren = /* @__PURE__ */ new Set());
|
|
1549
|
+
this.enteringChildren.add(child);
|
|
1550
|
+
}
|
|
1551
|
+
removeChild(child) {
|
|
1552
|
+
this.children.delete(child);
|
|
1553
|
+
this.enteringChildren && this.enteringChildren.delete(child);
|
|
1554
|
+
}
|
|
1555
|
+
bindToMotionValue(key, value) {
|
|
1556
|
+
if (this.valueSubscriptions.has(key)) this.valueSubscriptions.get(key)();
|
|
1557
|
+
if (value.accelerate && acceleratedValues.has(key) && this.current instanceof HTMLElement) {
|
|
1558
|
+
const { factory, keyframes, times, ease, duration } = value.accelerate;
|
|
1559
|
+
const animation = new NativeAnimation({
|
|
1560
|
+
element: this.current,
|
|
1561
|
+
name: key,
|
|
1562
|
+
keyframes,
|
|
1563
|
+
times,
|
|
1564
|
+
ease,
|
|
1565
|
+
duration: /* @__PURE__ */ secondsToMilliseconds(duration)
|
|
1566
|
+
});
|
|
1567
|
+
const cleanup = factory(animation);
|
|
1568
|
+
this.valueSubscriptions.set(key, () => {
|
|
1569
|
+
cleanup();
|
|
1570
|
+
animation.cancel();
|
|
1571
|
+
});
|
|
1572
|
+
return;
|
|
1573
|
+
}
|
|
1574
|
+
const valueIsTransform = transformProps.has(key);
|
|
1575
|
+
if (valueIsTransform && this.onBindTransform) this.onBindTransform();
|
|
1576
|
+
const removeOnChange = value.on("change", (latestValue) => {
|
|
1577
|
+
this.latestValues[key] = latestValue;
|
|
1578
|
+
this.props.onUpdate && frame.preRender(this.notifyUpdate);
|
|
1579
|
+
if (valueIsTransform && this.projection) this.projection.isTransformDirty = true;
|
|
1580
|
+
this.scheduleRender();
|
|
1581
|
+
});
|
|
1582
|
+
let removeSyncCheck;
|
|
1583
|
+
if (typeof window !== "undefined" && window.MotionCheckAppearSync) removeSyncCheck = window.MotionCheckAppearSync(this, key, value);
|
|
1584
|
+
this.valueSubscriptions.set(key, () => {
|
|
1585
|
+
removeOnChange();
|
|
1586
|
+
if (removeSyncCheck) removeSyncCheck();
|
|
1587
|
+
});
|
|
1588
|
+
}
|
|
1589
|
+
sortNodePosition(other) {
|
|
1590
|
+
if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type) return 0;
|
|
1591
|
+
return this.sortInstanceNodePosition(this.current, other.current);
|
|
1592
|
+
}
|
|
1593
|
+
updateFeatures() {
|
|
1594
|
+
let key = "animation";
|
|
1595
|
+
for (key in featureDefinitions) {
|
|
1596
|
+
const featureDefinition = featureDefinitions[key];
|
|
1597
|
+
if (!featureDefinition) continue;
|
|
1598
|
+
const { isEnabled, Feature: FeatureConstructor } = featureDefinition;
|
|
1599
|
+
if (!this.features[key] && FeatureConstructor && isEnabled(this.props)) this.features[key] = new FeatureConstructor(this);
|
|
1600
|
+
if (this.features[key]) {
|
|
1601
|
+
const feature = this.features[key];
|
|
1602
|
+
if (feature.isMounted) feature.update();
|
|
1603
|
+
else {
|
|
1604
|
+
feature.mount();
|
|
1605
|
+
feature.isMounted = true;
|
|
1606
|
+
}
|
|
1607
|
+
}
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
triggerBuild() {
|
|
1611
|
+
this.build(this.renderState, this.latestValues, this.props);
|
|
1612
|
+
}
|
|
1613
|
+
/**
|
|
1614
|
+
* Measure the current viewport box with or without transforms.
|
|
1615
|
+
* Only measures axis-aligned boxes, rotate and skew must be manually
|
|
1616
|
+
* removed with a re-render to work.
|
|
1617
|
+
*/
|
|
1618
|
+
measureViewportBox() {
|
|
1619
|
+
return this.current ? this.measureInstanceViewportBox(this.current, this.props) : createBox();
|
|
1620
|
+
}
|
|
1621
|
+
getStaticValue(key) {
|
|
1622
|
+
return this.latestValues[key];
|
|
1623
|
+
}
|
|
1624
|
+
setStaticValue(key, value) {
|
|
1625
|
+
this.latestValues[key] = value;
|
|
1626
|
+
}
|
|
1627
|
+
/**
|
|
1628
|
+
* Update the provided props. Ensure any newly-added motion values are
|
|
1629
|
+
* added to our map, old ones removed, and listeners updated.
|
|
1630
|
+
*/
|
|
1631
|
+
update(props, presenceContext) {
|
|
1632
|
+
if (props.transformTemplate || this.props.transformTemplate) this.scheduleRender();
|
|
1633
|
+
this.prevProps = this.props;
|
|
1634
|
+
this.props = props;
|
|
1635
|
+
this.prevPresenceContext = this.presenceContext;
|
|
1636
|
+
this.presenceContext = presenceContext;
|
|
1637
|
+
for (let i = 0; i < propEventHandlers.length; i++) {
|
|
1638
|
+
const key = propEventHandlers[i];
|
|
1639
|
+
if (this.propEventSubscriptions[key]) {
|
|
1640
|
+
this.propEventSubscriptions[key]();
|
|
1641
|
+
delete this.propEventSubscriptions[key];
|
|
1642
|
+
}
|
|
1643
|
+
const listener = props["on" + key];
|
|
1644
|
+
if (listener) this.propEventSubscriptions[key] = this.on(key, listener);
|
|
1645
|
+
}
|
|
1646
|
+
this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps || {}, this), this.prevMotionValues);
|
|
1647
|
+
if (this.handleChildMotionValue) this.handleChildMotionValue();
|
|
1648
|
+
}
|
|
1649
|
+
getProps() {
|
|
1650
|
+
return this.props;
|
|
1651
|
+
}
|
|
1652
|
+
/**
|
|
1653
|
+
* Returns the variant definition with a given name.
|
|
1654
|
+
*/
|
|
1655
|
+
getVariant(name) {
|
|
1656
|
+
return this.props.variants ? this.props.variants[name] : void 0;
|
|
1657
|
+
}
|
|
1658
|
+
/**
|
|
1659
|
+
* Returns the defined default transition on this component.
|
|
1660
|
+
*/
|
|
1661
|
+
getDefaultTransition() {
|
|
1662
|
+
return this.props.transition;
|
|
1663
|
+
}
|
|
1664
|
+
getTransformPagePoint() {
|
|
1665
|
+
return this.props.transformPagePoint;
|
|
1666
|
+
}
|
|
1667
|
+
getClosestVariantNode() {
|
|
1668
|
+
return this.isVariantNode ? this : this.parent ? this.parent.getClosestVariantNode() : void 0;
|
|
1669
|
+
}
|
|
1670
|
+
/**
|
|
1671
|
+
* Add a child visual element to our set of children.
|
|
1672
|
+
*/
|
|
1673
|
+
addVariantChild(child) {
|
|
1674
|
+
const closestVariantNode = this.getClosestVariantNode();
|
|
1675
|
+
if (closestVariantNode) {
|
|
1676
|
+
closestVariantNode.variantChildren && closestVariantNode.variantChildren.add(child);
|
|
1677
|
+
return () => closestVariantNode.variantChildren.delete(child);
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
/**
|
|
1681
|
+
* Add a motion value and bind it to this visual element.
|
|
1682
|
+
*/
|
|
1683
|
+
addValue(key, value) {
|
|
1684
|
+
const existingValue = this.values.get(key);
|
|
1685
|
+
if (value !== existingValue) {
|
|
1686
|
+
if (existingValue) this.removeValue(key);
|
|
1687
|
+
this.bindToMotionValue(key, value);
|
|
1688
|
+
this.values.set(key, value);
|
|
1689
|
+
this.latestValues[key] = value.get();
|
|
1690
|
+
}
|
|
1691
|
+
}
|
|
1692
|
+
/**
|
|
1693
|
+
* Remove a motion value and unbind any active subscriptions.
|
|
1694
|
+
*/
|
|
1695
|
+
removeValue(key) {
|
|
1696
|
+
this.values.delete(key);
|
|
1697
|
+
const unsubscribe = this.valueSubscriptions.get(key);
|
|
1698
|
+
if (unsubscribe) {
|
|
1699
|
+
unsubscribe();
|
|
1700
|
+
this.valueSubscriptions.delete(key);
|
|
1701
|
+
}
|
|
1702
|
+
delete this.latestValues[key];
|
|
1703
|
+
this.removeValueFromRenderState(key, this.renderState);
|
|
1704
|
+
}
|
|
1705
|
+
/**
|
|
1706
|
+
* Check whether we have a motion value for this key
|
|
1707
|
+
*/
|
|
1708
|
+
hasValue(key) {
|
|
1709
|
+
return this.values.has(key);
|
|
1710
|
+
}
|
|
1711
|
+
getValue(key, defaultValue) {
|
|
1712
|
+
if (this.props.values && this.props.values[key]) return this.props.values[key];
|
|
1713
|
+
let value = this.values.get(key);
|
|
1714
|
+
if (value === void 0 && defaultValue !== void 0) {
|
|
1715
|
+
value = motionValue(defaultValue === null ? void 0 : defaultValue, { owner: this });
|
|
1716
|
+
this.addValue(key, value);
|
|
1717
|
+
}
|
|
1718
|
+
return value;
|
|
1719
|
+
}
|
|
1720
|
+
/**
|
|
1721
|
+
* If we're trying to animate to a previously unencountered value,
|
|
1722
|
+
* we need to check for it in our state and as a last resort read it
|
|
1723
|
+
* directly from the instance (which might have performance implications).
|
|
1724
|
+
*/
|
|
1725
|
+
readValue(key, target) {
|
|
1726
|
+
let value = this.latestValues[key] !== void 0 || !this.current ? this.latestValues[key] : this.getBaseTargetFromProps(this.props, key) ?? this.readValueFromInstance(this.current, key, this.options);
|
|
1727
|
+
if (value !== void 0 && value !== null) {
|
|
1728
|
+
if (typeof value === "string" && (isNumericalString(value) || isZeroValueString(value))) value = parseFloat(value);
|
|
1729
|
+
else if (!findValueType(value) && complex.test(target)) value = getAnimatableNone(key, target);
|
|
1730
|
+
this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);
|
|
1731
|
+
}
|
|
1732
|
+
return isMotionValue(value) ? value.get() : value;
|
|
1733
|
+
}
|
|
1734
|
+
/**
|
|
1735
|
+
* Set the base target to later animate back to. This is currently
|
|
1736
|
+
* only hydrated on creation and when we first read a value.
|
|
1737
|
+
*/
|
|
1738
|
+
setBaseTarget(key, value) {
|
|
1739
|
+
this.baseTarget[key] = value;
|
|
1740
|
+
}
|
|
1741
|
+
/**
|
|
1742
|
+
* Find the base target for a value thats been removed from all animation
|
|
1743
|
+
* props.
|
|
1744
|
+
*/
|
|
1745
|
+
getBaseTarget(key) {
|
|
1746
|
+
const { initial } = this.props;
|
|
1747
|
+
let valueFromInitial;
|
|
1748
|
+
if (typeof initial === "string" || typeof initial === "object") {
|
|
1749
|
+
const variant = resolveVariantFromProps(this.props, initial, this.presenceContext?.custom);
|
|
1750
|
+
if (variant) valueFromInitial = variant[key];
|
|
1751
|
+
}
|
|
1752
|
+
if (initial && valueFromInitial !== void 0) return valueFromInitial;
|
|
1753
|
+
const target = this.getBaseTargetFromProps(this.props, key);
|
|
1754
|
+
if (target !== void 0 && !isMotionValue(target)) return target;
|
|
1755
|
+
return this.initialValues[key] !== void 0 && valueFromInitial === void 0 ? void 0 : this.baseTarget[key];
|
|
1756
|
+
}
|
|
1757
|
+
on(eventName, callback) {
|
|
1758
|
+
if (!this.events[eventName]) this.events[eventName] = new SubscriptionManager();
|
|
1759
|
+
return this.events[eventName].add(callback);
|
|
1760
|
+
}
|
|
1761
|
+
notify(eventName, ...args) {
|
|
1762
|
+
if (this.events[eventName]) this.events[eventName].notify(...args);
|
|
1763
|
+
}
|
|
1764
|
+
scheduleRenderMicrotask() {
|
|
1765
|
+
microtask.render(this.render);
|
|
1766
|
+
}
|
|
1767
|
+
};
|
|
1768
|
+
var translateAlias = {
|
|
1769
|
+
x: "translateX",
|
|
1770
|
+
y: "translateY",
|
|
1771
|
+
z: "translateZ",
|
|
1772
|
+
transformPerspective: "perspective"
|
|
1773
|
+
};
|
|
1774
|
+
var numTransforms = transformPropOrder.length;
|
|
1775
|
+
function buildTransform(latestValues, transform, transformTemplate) {
|
|
1776
|
+
let transformString = "";
|
|
1777
|
+
let transformIsDefault = true;
|
|
1778
|
+
for (let i = 0; i < numTransforms; i++) {
|
|
1779
|
+
const key = transformPropOrder[i];
|
|
1780
|
+
const value = latestValues[key];
|
|
1781
|
+
if (value === void 0) continue;
|
|
1782
|
+
let valueIsDefault = true;
|
|
1783
|
+
if (typeof value === "number") valueIsDefault = value === (key.startsWith("scale") ? 1 : 0);
|
|
1784
|
+
else {
|
|
1785
|
+
const parsed = parseFloat(value);
|
|
1786
|
+
valueIsDefault = key.startsWith("scale") ? parsed === 1 : parsed === 0;
|
|
1787
|
+
}
|
|
1788
|
+
if (!valueIsDefault || transformTemplate) {
|
|
1789
|
+
const valueAsType = getValueAsType(value, numberValueTypes[key]);
|
|
1790
|
+
if (!valueIsDefault) {
|
|
1791
|
+
transformIsDefault = false;
|
|
1792
|
+
const transformName = translateAlias[key] || key;
|
|
1793
|
+
transformString += `${transformName}(${valueAsType}) `;
|
|
1794
|
+
}
|
|
1795
|
+
if (transformTemplate) transform[key] = valueAsType;
|
|
1796
|
+
}
|
|
1797
|
+
}
|
|
1798
|
+
const pathRotation = latestValues.pathRotation;
|
|
1799
|
+
if (pathRotation) {
|
|
1800
|
+
transformIsDefault = false;
|
|
1801
|
+
transformString += `rotate(${getValueAsType(pathRotation, numberValueTypes.pathRotation)}) `;
|
|
1802
|
+
}
|
|
1803
|
+
transformString = transformString.trim();
|
|
1804
|
+
if (transformTemplate) transformString = transformTemplate(transform, transformIsDefault ? "" : transformString);
|
|
1805
|
+
else if (transformIsDefault) transformString = "none";
|
|
1806
|
+
return transformString;
|
|
1807
|
+
}
|
|
1808
|
+
function buildHTMLStyles(state, latestValues, transformTemplate) {
|
|
1809
|
+
const { style, vars, transformOrigin } = state;
|
|
1810
|
+
let hasTransform = false;
|
|
1811
|
+
let hasTransformOrigin = false;
|
|
1812
|
+
for (const key in latestValues) {
|
|
1813
|
+
const value = latestValues[key];
|
|
1814
|
+
if (transformProps.has(key)) {
|
|
1815
|
+
hasTransform = true;
|
|
1816
|
+
continue;
|
|
1817
|
+
} else if (isCSSVariableName(key)) {
|
|
1818
|
+
vars[key] = value;
|
|
1819
|
+
continue;
|
|
1820
|
+
} else {
|
|
1821
|
+
const valueAsType = getValueAsType(value, numberValueTypes[key]);
|
|
1822
|
+
if (key.startsWith("origin")) {
|
|
1823
|
+
hasTransformOrigin = true;
|
|
1824
|
+
transformOrigin[key] = valueAsType;
|
|
1825
|
+
} else style[key] = valueAsType;
|
|
1826
|
+
}
|
|
1827
|
+
}
|
|
1828
|
+
if (!latestValues.transform) {
|
|
1829
|
+
if (hasTransform || transformTemplate) style.transform = buildTransform(latestValues, state.transform, transformTemplate);
|
|
1830
|
+
else if (style.transform)
|
|
1831
|
+
style.transform = "none";
|
|
1832
|
+
}
|
|
1833
|
+
if (hasTransformOrigin) {
|
|
1834
|
+
const { originX = "50%", originY = "50%", originZ = 0 } = transformOrigin;
|
|
1835
|
+
style.transformOrigin = `${originX} ${originY} ${originZ}`;
|
|
1836
|
+
}
|
|
1837
|
+
}
|
|
1838
|
+
function pixelsToPercent(pixels, axis) {
|
|
1839
|
+
if (axis.max === axis.min) return 0;
|
|
1840
|
+
return pixels / (axis.max - axis.min) * 100;
|
|
1841
|
+
}
|
|
1842
|
+
var correctBorderRadius = { correct: (latest, node) => {
|
|
1843
|
+
if (!node.target) return latest;
|
|
1844
|
+
if (typeof latest === "string") {
|
|
1845
|
+
if (px.test(latest)) latest = parseFloat(latest);
|
|
1846
|
+
else return latest;
|
|
1847
|
+
}
|
|
1848
|
+
return `${pixelsToPercent(latest, node.target.x)}% ${pixelsToPercent(latest, node.target.y)}%`;
|
|
1849
|
+
} };
|
|
1850
|
+
var correctBoxShadow = { correct: (latest, { treeScale, projectionDelta }) => {
|
|
1851
|
+
const original = latest;
|
|
1852
|
+
const shadow = complex.parse(latest);
|
|
1853
|
+
if (shadow.length > 5) return original;
|
|
1854
|
+
const template = complex.createTransformer(latest);
|
|
1855
|
+
const offset = typeof shadow[0] !== "number" ? 1 : 0;
|
|
1856
|
+
const xScale = projectionDelta.x.scale * treeScale.x;
|
|
1857
|
+
const yScale = projectionDelta.y.scale * treeScale.y;
|
|
1858
|
+
shadow[0 + offset] /= xScale;
|
|
1859
|
+
shadow[1 + offset] /= yScale;
|
|
1860
|
+
const averageScale = mixNumber(xScale, yScale, 0.5);
|
|
1861
|
+
if (typeof shadow[2 + offset] === "number") shadow[2 + offset] /= averageScale;
|
|
1862
|
+
if (typeof shadow[3 + offset] === "number") shadow[3 + offset] /= averageScale;
|
|
1863
|
+
return template(shadow);
|
|
1864
|
+
} };
|
|
1865
|
+
var scaleCorrectors = {
|
|
1866
|
+
borderRadius: {
|
|
1867
|
+
...correctBorderRadius,
|
|
1868
|
+
applyTo: [...cornerRadiusProps]
|
|
1869
|
+
},
|
|
1870
|
+
borderTopLeftRadius: correctBorderRadius,
|
|
1871
|
+
borderTopRightRadius: correctBorderRadius,
|
|
1872
|
+
borderBottomLeftRadius: correctBorderRadius,
|
|
1873
|
+
borderBottomRightRadius: correctBorderRadius,
|
|
1874
|
+
boxShadow: correctBoxShadow
|
|
1875
|
+
};
|
|
1876
|
+
function isForcedMotionValue(key, { layout, layoutId }) {
|
|
1877
|
+
return transformProps.has(key) || key.startsWith("origin") || (layout || layoutId !== void 0) && (!!scaleCorrectors[key] || key === "opacity");
|
|
1878
|
+
}
|
|
1879
|
+
function scrapeMotionValuesFromProps$1(props, prevProps, visualElement) {
|
|
1880
|
+
const style = props.style;
|
|
1881
|
+
const prevStyle = prevProps?.style;
|
|
1882
|
+
const newValues = {};
|
|
1883
|
+
if (!style) return newValues;
|
|
1884
|
+
for (const key in style) if (isMotionValue(style[key]) || prevStyle && isMotionValue(prevStyle[key]) || isForcedMotionValue(key, props) || visualElement?.getValue(key)?.liveStyle !== void 0) newValues[key] = style[key];
|
|
1885
|
+
return newValues;
|
|
1886
|
+
}
|
|
1887
|
+
var dashKeys = {
|
|
1888
|
+
offset: "stroke-dashoffset",
|
|
1889
|
+
array: "stroke-dasharray"
|
|
1890
|
+
};
|
|
1891
|
+
var camelKeys = {
|
|
1892
|
+
offset: "strokeDashoffset",
|
|
1893
|
+
array: "strokeDasharray"
|
|
1894
|
+
};
|
|
1895
|
+
function buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {
|
|
1896
|
+
attrs.pathLength = 1;
|
|
1897
|
+
const keys = useDashCase ? dashKeys : camelKeys;
|
|
1898
|
+
attrs[keys.offset] = `${-offset}`;
|
|
1899
|
+
attrs[keys.array] = `${length} ${spacing}`;
|
|
1900
|
+
}
|
|
1901
|
+
var cssStyleProperties = [
|
|
1902
|
+
"transform",
|
|
1903
|
+
"opacity",
|
|
1904
|
+
"offsetDistance",
|
|
1905
|
+
"offsetPath",
|
|
1906
|
+
"offsetRotate",
|
|
1907
|
+
"offsetAnchor"
|
|
1908
|
+
];
|
|
1909
|
+
function buildSVGAttrs(state, { attrX, attrY, attrScale, pathLength, pathSpacing = 1, pathOffset = 0, ...latest }, isSVGTag2, transformTemplate, styleProp) {
|
|
1910
|
+
buildHTMLStyles(state, latest, transformTemplate);
|
|
1911
|
+
if (isSVGTag2) {
|
|
1912
|
+
if (state.style.viewBox) state.attrs.viewBox = state.style.viewBox;
|
|
1913
|
+
return;
|
|
1914
|
+
}
|
|
1915
|
+
state.attrs = state.style;
|
|
1916
|
+
state.style = {};
|
|
1917
|
+
const { attrs, style } = state;
|
|
1918
|
+
for (const key of cssStyleProperties) if (attrs[key] !== void 0) {
|
|
1919
|
+
style[key] = attrs[key];
|
|
1920
|
+
delete attrs[key];
|
|
1921
|
+
}
|
|
1922
|
+
if (style.transform || attrs.transformOrigin) {
|
|
1923
|
+
style.transformOrigin = attrs.transformOrigin ?? "50% 50%";
|
|
1924
|
+
delete attrs.transformOrigin;
|
|
1925
|
+
}
|
|
1926
|
+
if (style.transform) {
|
|
1927
|
+
style.transformBox = styleProp?.transformBox ?? "fill-box";
|
|
1928
|
+
delete attrs.transformBox;
|
|
1929
|
+
}
|
|
1930
|
+
if (attrX !== void 0) attrs.x = attrX;
|
|
1931
|
+
if (attrY !== void 0) attrs.y = attrY;
|
|
1932
|
+
if (attrScale !== void 0) attrs.scale = attrScale;
|
|
1933
|
+
if (pathLength !== void 0) buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);
|
|
1934
|
+
}
|
|
1935
|
+
var isSVGTag = (tag) => typeof tag === "string" && tag.toLowerCase() === "svg";
|
|
1936
|
+
function scrapeMotionValuesFromProps(props, prevProps, visualElement) {
|
|
1937
|
+
const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);
|
|
1938
|
+
for (const key in props) if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {
|
|
1939
|
+
const targetKey = transformPropOrder.indexOf(key) !== -1 ? "attr" + key.charAt(0).toUpperCase() + key.substring(1) : key;
|
|
1940
|
+
newValues[targetKey] = props[key];
|
|
1941
|
+
}
|
|
1942
|
+
return newValues;
|
|
1943
|
+
}
|
|
1944
|
+
function resolveMotionValue(value) {
|
|
1945
|
+
return isMotionValue(value) ? value.get() : value;
|
|
1946
|
+
}
|
|
1947
|
+
var MotionConfigContext = createContext({
|
|
1948
|
+
transformPagePoint: (p) => p,
|
|
1949
|
+
isStatic: false,
|
|
1950
|
+
reducedMotion: "never"
|
|
1951
|
+
});
|
|
1952
|
+
var LazyContext = createContext({ strict: false });
|
|
1953
|
+
var featureProps = {
|
|
1954
|
+
animation: [
|
|
1955
|
+
"animate",
|
|
1956
|
+
"variants",
|
|
1957
|
+
"whileHover",
|
|
1958
|
+
"whileTap",
|
|
1959
|
+
"exit",
|
|
1960
|
+
"whileInView",
|
|
1961
|
+
"whileFocus",
|
|
1962
|
+
"whileDrag"
|
|
1963
|
+
],
|
|
1964
|
+
exit: ["exit"],
|
|
1965
|
+
drag: ["drag", "dragControls"],
|
|
1966
|
+
focus: ["whileFocus"],
|
|
1967
|
+
hover: [
|
|
1968
|
+
"whileHover",
|
|
1969
|
+
"onHoverStart",
|
|
1970
|
+
"onHoverEnd"
|
|
1971
|
+
],
|
|
1972
|
+
tap: [
|
|
1973
|
+
"whileTap",
|
|
1974
|
+
"onTap",
|
|
1975
|
+
"onTapStart",
|
|
1976
|
+
"onTapCancel"
|
|
1977
|
+
],
|
|
1978
|
+
pan: [
|
|
1979
|
+
"onPan",
|
|
1980
|
+
"onPanStart",
|
|
1981
|
+
"onPanSessionStart",
|
|
1982
|
+
"onPanEnd"
|
|
1983
|
+
],
|
|
1984
|
+
inView: [
|
|
1985
|
+
"whileInView",
|
|
1986
|
+
"onViewportEnter",
|
|
1987
|
+
"onViewportLeave"
|
|
1988
|
+
],
|
|
1989
|
+
layout: ["layout", "layoutId"]
|
|
1990
|
+
};
|
|
1991
|
+
var isInitialized = false;
|
|
1992
|
+
function initFeatureDefinitions() {
|
|
1993
|
+
if (isInitialized) return;
|
|
1994
|
+
const initialFeatureDefinitions = {};
|
|
1995
|
+
for (const key in featureProps) initialFeatureDefinitions[key] = { isEnabled: (props) => featureProps[key].some((name) => !!props[name]) };
|
|
1996
|
+
setFeatureDefinitions(initialFeatureDefinitions);
|
|
1997
|
+
isInitialized = true;
|
|
1998
|
+
}
|
|
1999
|
+
function getInitializedFeatureDefinitions() {
|
|
2000
|
+
initFeatureDefinitions();
|
|
2001
|
+
return getFeatureDefinitions();
|
|
2002
|
+
}
|
|
2003
|
+
function loadFeatures(features) {
|
|
2004
|
+
const featureDefinitions2 = getInitializedFeatureDefinitions();
|
|
2005
|
+
for (const key in features) featureDefinitions2[key] = {
|
|
2006
|
+
...featureDefinitions2[key],
|
|
2007
|
+
...features[key]
|
|
2008
|
+
};
|
|
2009
|
+
setFeatureDefinitions(featureDefinitions2);
|
|
2010
|
+
}
|
|
2011
|
+
var lowercaseSVGElements = [
|
|
2012
|
+
"animate",
|
|
2013
|
+
"circle",
|
|
2014
|
+
"defs",
|
|
2015
|
+
"desc",
|
|
2016
|
+
"ellipse",
|
|
2017
|
+
"g",
|
|
2018
|
+
"image",
|
|
2019
|
+
"line",
|
|
2020
|
+
"filter",
|
|
2021
|
+
"marker",
|
|
2022
|
+
"mask",
|
|
2023
|
+
"metadata",
|
|
2024
|
+
"path",
|
|
2025
|
+
"pattern",
|
|
2026
|
+
"polygon",
|
|
2027
|
+
"polyline",
|
|
2028
|
+
"rect",
|
|
2029
|
+
"stop",
|
|
2030
|
+
"switch",
|
|
2031
|
+
"symbol",
|
|
2032
|
+
"svg",
|
|
2033
|
+
"text",
|
|
2034
|
+
"tspan",
|
|
2035
|
+
"use",
|
|
2036
|
+
"view"
|
|
2037
|
+
];
|
|
2038
|
+
function isSVGComponent(Component) {
|
|
2039
|
+
if (typeof Component !== "string" || Component.includes("-")) return false;
|
|
2040
|
+
else if (lowercaseSVGElements.indexOf(Component) > -1 || /[A-Z]/u.test(Component)) return true;
|
|
2041
|
+
return false;
|
|
2042
|
+
}
|
|
2043
|
+
var SwitchLayoutGroupContext = createContext({});
|
|
2044
|
+
function isRefObject(ref) {
|
|
2045
|
+
return ref && typeof ref === "object" && Object.prototype.hasOwnProperty.call(ref, "current");
|
|
2046
|
+
}
|
|
2047
|
+
|
|
2048
|
+
export {
|
|
2049
|
+
LayoutGroupContext,
|
|
2050
|
+
useConstant,
|
|
2051
|
+
PresenceContext,
|
|
2052
|
+
addUniqueItem,
|
|
2053
|
+
removeItem,
|
|
2054
|
+
clamp,
|
|
2055
|
+
warning,
|
|
2056
|
+
invariant,
|
|
2057
|
+
MotionGlobalConfig,
|
|
2058
|
+
isNumericalString,
|
|
2059
|
+
isZeroValueString,
|
|
2060
|
+
memo$1,
|
|
2061
|
+
noop,
|
|
2062
|
+
SubscriptionManager,
|
|
2063
|
+
secondsToMilliseconds,
|
|
2064
|
+
millisecondsToSeconds,
|
|
2065
|
+
velocityPerSecond,
|
|
2066
|
+
isBezierDefinition,
|
|
2067
|
+
frame,
|
|
2068
|
+
cancelFrame,
|
|
2069
|
+
frameData,
|
|
2070
|
+
frameSteps,
|
|
2071
|
+
time,
|
|
2072
|
+
isCSSVariableName,
|
|
2073
|
+
isCSSVariableToken,
|
|
2074
|
+
containsCSSVariable,
|
|
2075
|
+
rgba,
|
|
2076
|
+
hex,
|
|
2077
|
+
percent,
|
|
2078
|
+
px,
|
|
2079
|
+
hsla,
|
|
2080
|
+
color,
|
|
2081
|
+
analyseComplexValue,
|
|
2082
|
+
complex,
|
|
2083
|
+
mixNumber,
|
|
2084
|
+
generateLinearEasing,
|
|
2085
|
+
getFinalKeyframe,
|
|
2086
|
+
WithPromise,
|
|
2087
|
+
defaultTransformValue,
|
|
2088
|
+
readTransformValue,
|
|
2089
|
+
transformPropOrder,
|
|
2090
|
+
transformProps,
|
|
2091
|
+
isNumOrPxType,
|
|
2092
|
+
positionalValues,
|
|
2093
|
+
flushKeyframeResolvers,
|
|
2094
|
+
KeyframeResolver,
|
|
2095
|
+
setStyle,
|
|
2096
|
+
isGenerator,
|
|
2097
|
+
NativeAnimation,
|
|
2098
|
+
acceleratedValues,
|
|
2099
|
+
motionValue,
|
|
2100
|
+
resolveVariantFromProps,
|
|
2101
|
+
isMotionValue,
|
|
2102
|
+
camelToDash,
|
|
2103
|
+
optimizedAppearDataAttribute,
|
|
2104
|
+
findDimensionValueType,
|
|
2105
|
+
getDefaultValueType,
|
|
2106
|
+
getAnimatableNone,
|
|
2107
|
+
cornerRadiusProps,
|
|
2108
|
+
microtask,
|
|
2109
|
+
createDelta,
|
|
2110
|
+
createBox,
|
|
2111
|
+
visualElementStore,
|
|
2112
|
+
isAnimationControls,
|
|
2113
|
+
isVariantLabel,
|
|
2114
|
+
variantPriorityOrder,
|
|
2115
|
+
variantProps,
|
|
2116
|
+
isControllingVariants,
|
|
2117
|
+
isVariantNode,
|
|
2118
|
+
prefersReducedMotion,
|
|
2119
|
+
hasReducedMotionListener,
|
|
2120
|
+
initPrefersReducedMotion,
|
|
2121
|
+
VisualElement,
|
|
2122
|
+
buildHTMLStyles,
|
|
2123
|
+
scaleCorrectors,
|
|
2124
|
+
isForcedMotionValue,
|
|
2125
|
+
scrapeMotionValuesFromProps$1,
|
|
2126
|
+
cssStyleProperties,
|
|
2127
|
+
buildSVGAttrs,
|
|
2128
|
+
isSVGTag,
|
|
2129
|
+
scrapeMotionValuesFromProps,
|
|
2130
|
+
resolveMotionValue,
|
|
2131
|
+
MotionConfigContext,
|
|
2132
|
+
LazyContext,
|
|
2133
|
+
getInitializedFeatureDefinitions,
|
|
2134
|
+
loadFeatures,
|
|
2135
|
+
isSVGComponent,
|
|
2136
|
+
SwitchLayoutGroupContext,
|
|
2137
|
+
isRefObject
|
|
2138
|
+
};
|