@cardstack/boxel-cli 0.12.0 → 0.13.0-unstable.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-realms/pretui/components/chip.gts +47 -2
- package/bundled-realms/pretui/components/chip.md +5 -2
- package/bundled-realms/pretui/components/chip.usage.gts +37 -2
- package/bundled-realms/pretui/components/status-chip.gts +12 -2
- package/bundled-realms/pretui/components/status-chip.md +2 -1
- package/bundled-realms/pretui/components/status-chip.usage.gts +2 -0
- package/bundled-test-harness/assets/{ai-module-creation-test-B9lSKNq1.js → ai-module-creation-test-Czsh1MyP.js} +1 -1
- package/bundled-test-harness/assets/{aibot-message-LXV0UlzI.js → aibot-message-Dg5nzE1b.js} +1 -1
- package/bundled-test-harness/assets/{app-BIQcKrVT.js → app-hXF_bqWy.js} +6 -6
- package/bundled-test-harness/assets/{assistant-transcript-test-CG_2-bog.js → assistant-transcript-test-kILRv_pf.js} +1 -1
- package/bundled-test-harness/assets/{binary-upload-dedupe-test-Q7e6bzl1.js → binary-upload-dedupe-test-Bt5RqtEk.js} +1 -1
- package/bundled-test-harness/assets/{bundled-base-DldokUSJ.js → bundled-base-DtxlKFXx.js} +3 -3
- package/bundled-test-harness/assets/{bundled-base-modules-test-VAlRx4t3.js → bundled-base-modules-test-D1fXHMTE.js} +1 -1
- package/bundled-test-harness/assets/{can-invoke-test-BGmUJHxo.js → can-invoke-test-DqBuecdl.js} +1 -1
- package/bundled-test-harness/assets/{card-chooser-paging-test-CzooKL4I.js → card-chooser-paging-test-Cf8r032c.js} +1 -1
- package/bundled-test-harness/assets/{card-chooser-test-C3fjaDYi.js → card-chooser-test-q_qnUKxi.js} +1 -1
- package/bundled-test-harness/assets/{card-def-field-def-relationships-test-yqv8ir8Y.js → card-def-field-def-relationships-test-C5xkWMZi.js} +1 -1
- package/bundled-test-harness/assets/{card-delete-test-BtjqrqKO.js → card-delete-test-KB4aJuv_.js} +1 -1
- package/bundled-test-harness/assets/{chip-D6Xffhjx.css → chip-B2Ns53A6.css} +35 -9
- package/bundled-test-harness/assets/{chip-BydgljDL.js → chip-DVJE_YDh.js} +11 -3
- package/bundled-test-harness/assets/{choreo-D7dLCdGB.js → choreo-CIrop3HM.js} +16 -35
- package/bundled-test-harness/assets/choreo-Ca2Y2sF3.js +2 -0
- package/bundled-test-harness/assets/{choreo-feature-reel-test--x-L3ZKc.js → choreo-feature-reel-test-CJHms7Sf.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-ZO9vXOxd.js → choreo-gallery-DZm1KZ20.js} +3 -3
- package/bundled-test-harness/assets/{choreo-gallery-build-order-test-DG5UTyc9.js → choreo-gallery-build-order-test-QKyMWELN.js} +4 -4
- package/bundled-test-harness/assets/{choreo-gallery-compositor-test-DJP80SNj.js → choreo-gallery-compositor-test-BQDptxfE.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-cover-test-CHYz7sM4.js → choreo-gallery-cover-test-Do-HYF96.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-crossing-stage-test-BuinlINr.js → choreo-gallery-crossing-stage-test-yJVXghRc.js} +10 -10
- package/bundled-test-harness/assets/{choreo-gallery-demos-alive-test-BjNCGfH9.js → choreo-gallery-demos-alive-test-BCeaaZye.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-drift-test-BJ17f3yv.js → choreo-gallery-drift-test-CJ1yq6R0.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-escort-test-Dadih8-S.js → choreo-gallery-escort-test-DypqSgvs.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-films-test-CCXty_WI.js → choreo-gallery-films-test-ClMy5M_p.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-filter-test-BozCoT_M.js → choreo-gallery-filter-test-CzOmgqgl.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-fold-test-Kez2P3_Y.js → choreo-gallery-fold-test-qNnH6wtC.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-guide-pages-test-BV5oxrYA.js → choreo-gallery-guide-pages-test-BtKWMkTv.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-guides-test-DwYBDgKi.js → choreo-gallery-guides-test-CXMsuDYi.js} +4 -3
- package/bundled-test-harness/assets/{choreo-gallery-hang-test-B-5u7cGJ.js → choreo-gallery-hang-test-BD4JQ04e.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-highlight-test-BZ5Lg8V6.js → choreo-gallery-highlight-test-BK280K2W.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-inline-edit-test-wSlSI-VM.js → choreo-gallery-inline-edit-test-DAgUcaaw.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-interruption-test-DBpCEiro.js → choreo-gallery-interruption-test-DY5KUilC.js} +4 -4
- package/bundled-test-harness/assets/{choreo-gallery-lone-stack-test-aMLrHsns.js → choreo-gallery-lone-stack-test-Dxd_Nb0-.js} +4 -4
- package/bundled-test-harness/assets/{choreo-gallery-navigation-test-B8b-2ZTz.js → choreo-gallery-navigation-test-DWJq12PN.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-playhead-transport-test-B95CYBh7.js → choreo-gallery-playhead-transport-test-DlQ6yTKW.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-poplayout-subtree-test-jZAAICV6.js → choreo-gallery-poplayout-subtree-test-D59W8gYt.js} +5 -5
- package/bundled-test-harness/assets/{choreo-gallery-presence-modes-test-BawIKB-a.js → choreo-gallery-presence-modes-test-BAU-dggP.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-presentation-test-CYIb-8ML.js → choreo-gallery-presentation-test-BqGsinE0.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-reduced-motion-test-C6Vi1WYr.js → choreo-gallery-reduced-motion-test-By0rb2Ai.js} +4 -3
- package/bundled-test-harness/assets/{choreo-gallery-sheet-standalone-test-_e4T5KDI.js → choreo-gallery-sheet-standalone-test-Cfw-4ULF.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-sheet-test-Cv51Te3G.js → choreo-gallery-sheet-test-dm53Pdzb.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-site-test-Cm35kHu_.js → choreo-gallery-site-test-SAlqtZgL.js} +3 -2
- package/bundled-test-harness/assets/{choreo-gallery-stage-Bp6QVqlI.js → choreo-gallery-stage-CU8LvQqX.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-stage-keyboard-test-DDX2cuMa.js → choreo-gallery-stage-keyboard-test-DQ4v5qA4.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-stages-test-Dfa_33_4.js → choreo-gallery-stages-test-CRvaS6w6.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-subdivision-test-CgR3WdcT.js → choreo-gallery-subdivision-test-CtOm-U35.js} +3 -3
- package/bundled-test-harness/assets/{choreo-gallery-table-plan-test-DF-cE3J9.js → choreo-gallery-table-plan-test-_0koIm2u.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-theater-test-BuIyb2ke.js → choreo-gallery-theater-test-yedwQVyP.js} +4 -4
- package/bundled-test-harness/assets/{choreo-gallery-tuning-test-BdZ45YBK.js → choreo-gallery-tuning-test-CmMtfJ5a.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-widget-room-test-HcPX75Dg.js → choreo-gallery-widget-room-test-jnYOas5x.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-wires-test-BhFCIjB1.js → choreo-gallery-wires-test-CSyqjVnm.js} +2 -2
- package/bundled-test-harness/assets/clip--wioup_3.js +2 -0
- package/bundled-test-harness/assets/{clip-BmBVqUyU.js → clip-Cm32sLyn.js} +3 -3
- package/bundled-test-harness/assets/{codeblocks-test-DbZYlmG_.js → codeblocks-test-DLVRpBAl.js} +1 -1
- package/bundled-test-harness/assets/{compaction-test-D1G3KCSe.js → compaction-test-zX01t57K.js} +1 -1
- package/bundled-test-harness/assets/{container-XSX5809v.js → container-CXZoEvul.js} +10 -9
- package/bundled-test-harness/assets/{create-listing-modal-test--oGT9P_F.js → create-listing-modal-test-DPgVovcL.js} +1 -1
- package/bundled-test-harness/assets/{debug-message-test-C8UZUtCt.js → debug-message-test-CWl-ido2.js} +1 -1
- package/bundled-test-harness/assets/{externals--YMzwHwd.js → externals-Ddhtv753.js} +37 -37
- package/bundled-test-harness/assets/{fallback-banner-live-delete-test-DPK_coJY.js → fallback-banner-live-delete-test-CFbMEFHo.js} +1 -1
- package/bundled-test-harness/assets/{fallback-banner-test-C2wi6Lu6.js → fallback-banner-test-3O0imkxJ.js} +1 -1
- package/bundled-test-harness/assets/{fallback-models-test-SqdXWB1Z.js → fallback-models-test-hyQfQLuM.js} +1 -1
- package/bundled-test-harness/assets/{file-attachment-test-DT0HK6yS.js → file-attachment-test-C63Ttyaj.js} +1 -1
- package/bundled-test-harness/assets/{film-Zt2YoVoG.js → film-9V69qBWw.js} +6 -6
- package/bundled-test-harness/assets/{film-77OfTGL7.js → film-Z87hSVo_.js} +8 -8
- package/bundled-test-harness/assets/film-h1N8vUjG.js +2 -0
- package/bundled-test-harness/assets/{formatted-aibot-message-test-B6i0k9wW.js → formatted-aibot-message-test-DH3WPvU1.js} +1 -1
- package/bundled-test-harness/assets/{general-test-C0Xb2Idr.js → general-test-wrSeNkrm.js} +1 -1
- package/bundled-test-harness/assets/{glimmer-motion-and-choreo-in-cards-test-DFlkZtek.js → glimmer-motion-and-choreo-in-cards-test-Byg3fSOY.js} +32 -32
- package/bundled-test-harness/assets/{glimmer-motion-and-choreo-test-B2ustNm9.js → glimmer-motion-and-choreo-test-BM7uX8k4.js} +10 -10
- package/bundled-test-harness/assets/group-Cgg5RLul.js +2 -0
- package/bundled-test-harness/assets/{group-BNxp6qON.js → group-DL-b_Hzj.js} +2 -2
- package/bundled-test-harness/assets/{index-query-engine-test-BKOqgBMv.js → index-query-engine-test-DvfKgn6s.js} +1 -1
- package/bundled-test-harness/assets/{instance-filter-matcher-test-CNIzKZvP.js → instance-filter-matcher-test-KqGi-K79.js} +1 -1
- package/bundled-test-harness/assets/item-Bu9hhPf2.js +2 -0
- package/bundled-test-harness/assets/{item-BDyVqxdA.js → item-CBEoTOyj.js} +2 -2
- package/bundled-test-harness/assets/{main-BiI-FhMc.js → main-CoUo04VF.js} +1 -1
- package/bundled-test-harness/assets/{markdown-preview-BItI_AEl.js → markdown-preview-D_QssEOi.js} +1 -1
- package/bundled-test-harness/assets/{markdown-preview-test-Bntyikh1.js → markdown-preview-test-nljzB8o_.js} +1 -1
- package/bundled-test-harness/assets/memory-B73-H_Rp.js +223 -0
- package/bundled-test-harness/assets/{model-cost-tier-test-Hu2-LpEw.js → model-cost-tier-test-B5ByLtAP.js} +1 -1
- package/bundled-test-harness/assets/{motion-DeM7UCtd.js → motion-BiMvMS08.js} +1 -1
- package/bundled-test-harness/assets/{node-BAM535H5.js → node-BWOLCOMI.js} +95 -6
- package/bundled-test-harness/assets/{operation-lowering-test-CG1gatuH.js → operation-lowering-test-Bz81V0Gt.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-card-chooser-test-Bo5ZnF_x.js → operator-mode-card-chooser-test-DNOnplV8.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-links-test-DVx_LQOU.js → operator-mode-links-test-BeXsOYMU.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-test-CCbFrYgN.js → operator-mode-test-jdeCXqhV.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-ui-test-Dm2Bf6Vn.js → operator-mode-ui-test-DdiFZylM.js} +1 -1
- package/bundled-test-harness/assets/{overlay-menu-items-test-Bk5AidFD.js → overlay-menu-items-test-C_Q4sJlC.js} +1 -1
- package/bundled-test-harness/assets/{overlays-CY7IgeOl.js → overlays-DZXjQykn.js} +3 -3
- package/bundled-test-harness/assets/{overlays-DhVKmSP-.js → overlays-hrAO43jG.js} +1 -1
- package/bundled-test-harness/assets/{panel-t9QyU1lY.js → panel-CXmB6GMs.js} +15 -75
- package/bundled-test-harness/assets/{panel-CUYJ8oHS.css → panel-D2zkZoIr.css} +39 -31
- package/bundled-test-harness/assets/{past-sessions-test-Dq-Y9T6W.js → past-sessions-test-Bm1UiLD0.js} +1 -1
- package/bundled-test-harness/assets/{permission-checking-realm-test-CuImx8ie.js → permission-checking-realm-test-Jq7R-yRT.js} +1 -1
- package/bundled-test-harness/assets/pill-menu-Ctn3JNqG.js +154 -0
- package/bundled-test-harness/assets/{pill-menu-test-kpWBGrX5.js → pill-menu-test-Cf2xO2w6.js} +1 -1
- package/bundled-test-harness/assets/plate-CnatwP3n.js +2 -0
- package/bundled-test-harness/assets/{plate-B4Lz2Ulo.js → plate-Cu5EnXQZ.js} +3 -3
- package/bundled-test-harness/assets/player-Bwn5tEsh.js +2 -0
- package/bundled-test-harness/assets/{player-B965XH82.js → player-CVdsx7Ng.js} +3 -3
- package/bundled-test-harness/assets/presence-BKkR2au7.js +553 -0
- package/bundled-test-harness/assets/presence-CcEXVges.js +2 -0
- package/bundled-test-harness/assets/{quick-look-test-VW5_W7dm.js → quick-look-test-BrnxRRsq.js} +1 -1
- package/bundled-test-harness/assets/{realm-api-keys-sg--fohv.js → realm-api-keys-CHPnfcko.js} +1 -1
- package/bundled-test-harness/assets/realm-api-keys-GLBmvu4U.js +2 -0
- package/bundled-test-harness/assets/{realm-api-keys-test-Cy7qSoAd.js → realm-api-keys-test-CHBGOFcx.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-DvpP1xf-.js → realm-config-C7c3B2er.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-policy-standing-test-DJk-ftgH.js → realm-config-policy-standing-test-C8aNeb6_.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-CTPiJrAL.js → realm-config-routing-rule-edit-test-Dmnw-VQz.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-settings-test-CUa-PjMC.js → realm-config-settings-test-C6V0Mx35.js} +1 -1
- package/bundled-test-harness/assets/{reasoning-test-CeeGGwvf.js → reasoning-test-Dn0Xb42V.js} +1 -1
- package/bundled-test-harness/assets/{rendered-markdown-B8TH0yN4.js → rendered-markdown-DPEXS7MQ.js} +1 -1
- package/bundled-test-harness/assets/{rendered-markdown-test-CBRsIBqW.js → rendered-markdown-test-DxbJ1nFX.js} +1 -1
- package/bundled-test-harness/assets/{room-message-test-BTxZ_W74.js → room-message-test-BBE8UIPX.js} +1 -1
- package/bundled-test-harness/assets/{run-BSEzn_PH.js → run-CfyzhBXb.js} +2 -2
- package/bundled-test-harness/assets/{scrolling-test-C7R0UASi.js → scrolling-test-sLBz7Gxv.js} +2 -2
- package/bundled-test-harness/assets/{searchable-option-test-BiOqxIIs.js → searchable-option-test-Ix9_H5QV.js} +1 -1
- package/bundled-test-harness/assets/{sending-test-DOXQ0Tvx.js → sending-test-_Pqzq1bN.js} +1 -1
- package/bundled-test-harness/assets/{skills-test-BjCYI4Z_.js → skills-test-DUHRQGiC.js} +1 -1
- package/bundled-test-harness/assets/src-CEw1V0fi.js +11 -0
- package/bundled-test-harness/assets/{src-Bhefkhqj.js → src-CbBcj3xm.js} +11 -5
- package/bundled-test-harness/assets/{src-BDDYD1rs.js → src-D8bpj2tb.js} +2 -2
- package/bundled-test-harness/assets/{src-DySBAkac.js → src-Df4Vutrk.js} +3 -3
- package/bundled-test-harness/assets/{stick-to-bottom-resize-test-hN0AjdXP.js → stick-to-bottom-resize-test-Du4B3w2x.js} +4 -4
- package/bundled-test-harness/assets/{store-test-BD99H9dQ.js → store-test-9C-s0-H6.js} +1 -1
- package/bundled-test-harness/assets/{test-support-BcjhIHQa.js → test-support-BOFeeYuE.js} +25 -2
- package/bundled-test-harness/assets/test-support-CXESl4Wf.js +3 -0
- package/bundled-test-harness/assets/test-support-CgWmpebE.js +3 -0
- package/bundled-test-harness/assets/{test-support-Dl6FChlV.js → test-support-xTaMuaOA.js} +4 -27
- package/bundled-test-harness/assets/{tests-BqLDuQog.js → tests-CVpu0hZj.js} +437 -437
- package/bundled-test-harness/assets/{text-input-validator-test-CW6Ay7bo.js → text-input-validator-test-CcVh-MFa.js} +1 -1
- package/bundled-test-harness/assets/{titles-CFt3dEls.js → titles-BUbpcMoe.js} +3 -3
- package/bundled-test-harness/assets/titles-D80DwOQU.js +2 -0
- package/bundled-test-harness/assets/{to-device-streaming-test-DRxNCi7Z.js → to-device-streaming-test-RFHD62PN.js} +1 -1
- package/bundled-test-harness/assets/{token-usage-test-Ck9rB3Ie.js → token-usage-test-B2iJC-UX.js} +1 -1
- package/bundled-test-harness/assets/{tools-test-B3zniq10.js → tools-test-BZOWfXML.js} +1 -1
- package/bundled-test-harness/assets/{turn-settling-test-C0X6hL7x.js → turn-settling-test-Cvu2rvzM.js} +1 -1
- package/bundled-test-harness/assets/{turn-summary-0XOoAv3j.js → turn-summary-CAZVdcBd.js} +1 -1
- package/bundled-test-harness/index.html +26 -25
- package/bundled-test-harness/tests/index.html +26 -25
- package/bundled-types/choreo/choreo.gts +21 -42
- package/bundled-types/choreo/test-support/index.ts +9 -30
- package/bundled-types/glimmer-motion/index.ts +11 -3
- package/bundled-types/glimmer-motion/memory.ts +302 -0
- package/bundled-types/glimmer-motion/node.ts +125 -14
- package/bundled-types/glimmer-motion/presence-types.ts +13 -5
- package/bundled-types/glimmer-motion/presence.gts +199 -11
- package/bundled-types/glimmer-motion/snapshot.ts +280 -0
- package/bundled-types/glimmer-motion/test-support/index.ts +36 -4
- package/bundled-types/host-app/components/ai-assistant/llm-select.gts +3 -0
- package/bundled-types/host-app/components/ai-assistant/skill-menu/index.gts +3 -0
- package/bundled-types/host-app/components/matrix/room.gts +15 -3
- package/bundled-types/host-app/components/pill-menu/index.gts +74 -23
- package/package.json +1 -1
- package/bundled-test-harness/assets/choreo-Cd9yKlEK.js +0 -2
- package/bundled-test-harness/assets/clip-DnEy6oK5.js +0 -2
- package/bundled-test-harness/assets/film-C4NJTl9U.js +0 -2
- package/bundled-test-harness/assets/group-CPQojb-T.js +0 -2
- package/bundled-test-harness/assets/item-DGzMAZ9K.js +0 -2
- package/bundled-test-harness/assets/pill-menu-DaRpDMUm.js +0 -68
- package/bundled-test-harness/assets/plate-B7JjCVMj.js +0 -2
- package/bundled-test-harness/assets/player-DpGXST02.js +0 -2
- package/bundled-test-harness/assets/presence-CmLmFwhO.js +0 -2
- package/bundled-test-harness/assets/presence-Sv4y4tQy.js +0 -230
- package/bundled-test-harness/assets/realm-api-keys-DkdlXgAg.js +0 -2
- package/bundled-test-harness/assets/src-BpmcuCfH.js +0 -10
- package/bundled-test-harness/assets/test-support-CB3auo8h.js +0 -2
- package/bundled-test-harness/assets/test-support-DfGKwg35.js +0 -3
- package/bundled-test-harness/assets/titles-DVhrJZzS.js +0 -2
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
import { r as __exportAll } from "./chunk-Rp0pCe6z.js";
|
|
2
|
+
import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-BoCBNIsz.js";
|
|
3
|
+
import { et as tracked, kn as isDestroying, wt as setComponentTemplate } from "./cache-DtDz7X5V-Wn8jRDfL.js";
|
|
4
|
+
import { o as VOLATILE_TAG, u as consumeTag } from "./validator-T25d_ucg.js";
|
|
5
|
+
import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
|
|
6
|
+
import { n as registerDestructor } from "./destroyable-mdLYRn_o.js";
|
|
7
|
+
import "./tracking-CNiq91Pk.js";
|
|
8
|
+
import "./component-BJO47HTh.js";
|
|
9
|
+
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
10
|
+
import "./template-factory-ds9s0u8l.js";
|
|
11
|
+
import { o as snapshotOnRender, v as postRender, yt as frame } from "./layout-group-BS0gklZp.js";
|
|
12
|
+
import { a as seatOf, i as seatInsets, n as flushPendingMounts, t as MotionNode } from "./node-BWOLCOMI.js";
|
|
13
|
+
import { i as keepAsMemory, o as readShown, r as elementsOf, s as shownOnCopy } from "./memory-B73-H_Rp.js";
|
|
14
|
+
//#region ../glimmer-motion/src/snapshot.ts
|
|
15
|
+
/**
|
|
16
|
+
* `<Presence @mode="snapshot">`: a leaver's exit played on a static copy of
|
|
17
|
+
* it that the engine owns, instead of on its live block.
|
|
18
|
+
*
|
|
19
|
+
* A Glimmer block re-runs from live state for as long as it is rendered, so a
|
|
20
|
+
* leaver kept on screen for its exit shows state that has already moved on.
|
|
21
|
+
* In snapshot mode the leaver's block is torn down in the render that removes
|
|
22
|
+
* it, as if no <Presence> were there. Before that render patches the
|
|
23
|
+
* leaver's block, the element is copied as it stands. After it, the copy goes
|
|
24
|
+
* back where the element stood (before the first node that followed it and is
|
|
25
|
+
* still there), lifted out of flow at its recorded seat, plays the element's
|
|
26
|
+
* exit, and is removed.
|
|
27
|
+
*
|
|
28
|
+
* The seat is read in every frame that follows a render, and whenever the
|
|
29
|
+
* element or the box it is pinned inside resizes, not at the diff: Glimmer
|
|
30
|
+
* patches the DOM in template order, so by the time <Presence> diffs, content
|
|
31
|
+
* earlier in the template has already been patched for the render, and may
|
|
32
|
+
* have moved or resized the element. Its content is still the last frame's;
|
|
33
|
+
* its box may not be. A move that is neither a render nor one of those
|
|
34
|
+
* resizes is not seen: a transition on a sibling's width can shift the
|
|
35
|
+
* element without resizing either box, and the copy is then pinned where the
|
|
36
|
+
* element stood before that move.
|
|
37
|
+
*
|
|
38
|
+
* The copy is kept as a memory (see memory.ts): it shows the element's last
|
|
39
|
+
* frame, and nothing in it acts. A clone does not carry everything the
|
|
40
|
+
* element showed, so the copy also takes the canvas pixels it showed, the
|
|
41
|
+
* option each of its selects had chosen, and the values its script
|
|
42
|
+
* animations and transitions had reached.
|
|
43
|
+
*/
|
|
44
|
+
/** where a copy is pinned, and what its exit variants resolve against */
|
|
45
|
+
/** what the diff read from a leaver, for its copy to use after the render */
|
|
46
|
+
var copyId = 0;
|
|
47
|
+
/** an element's CSS property for a keyframe key: `clipPath` → `clip-path`, `--x` stays */
|
|
48
|
+
function cssProperty(key) {
|
|
49
|
+
if (key.startsWith("--")) return key;
|
|
50
|
+
return key === "cssFloat" ? "float" : key.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);
|
|
51
|
+
}
|
|
52
|
+
var KEYFRAME_META = new Set([
|
|
53
|
+
"composite",
|
|
54
|
+
"computedOffset",
|
|
55
|
+
"easing",
|
|
56
|
+
"offset"
|
|
57
|
+
]);
|
|
58
|
+
/** a script animation or a transition: the copy keeps the value it shows now */
|
|
59
|
+
function freezeComputed(animation, live, copy) {
|
|
60
|
+
const effect = animation.effect;
|
|
61
|
+
const computed = getComputedStyle(live);
|
|
62
|
+
const style = copy.style;
|
|
63
|
+
for (const frame of effect.getKeyframes()) for (const key of Object.keys(frame)) if (!KEYFRAME_META.has(key)) {
|
|
64
|
+
const property = cssProperty(key);
|
|
65
|
+
style.setProperty(property, computed.getPropertyValue(property));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function copyCanvas(live, copy) {
|
|
69
|
+
try {
|
|
70
|
+
copy.getContext("2d")?.drawImage(live, 0, 0);
|
|
71
|
+
} catch {}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Copies an element that is about to be removed, as it stands. Called from
|
|
75
|
+
* <Presence>'s diff, before the render patches the element's block. `seat` is
|
|
76
|
+
* the one recorded for it (see MotionNode.recordSeat); an element that is
|
|
77
|
+
* leaving before any seat was recorded is pinned where it stands now.
|
|
78
|
+
*/
|
|
79
|
+
function captureExit(source) {
|
|
80
|
+
const { element, props } = source;
|
|
81
|
+
const parent = element.parentNode;
|
|
82
|
+
const seat = source.seat ?? seatOf(element);
|
|
83
|
+
if (!parent || !seat) return;
|
|
84
|
+
const copy = element.cloneNode(true);
|
|
85
|
+
const live = elementsOf(element);
|
|
86
|
+
const copies = elementsOf(copy);
|
|
87
|
+
const indexOf = new Map(live.map((el, i) => [el, i]));
|
|
88
|
+
for (const animation of element.getAnimations({ subtree: true })) {
|
|
89
|
+
const effect = animation.effect;
|
|
90
|
+
const index = !(animation instanceof CSSAnimation) && effect instanceof KeyframeEffect && !effect.pseudoElement && effect.target ? indexOf.get(effect.target) : void 0;
|
|
91
|
+
if (index !== void 0) freezeComputed(animation, live[index], copies[index]);
|
|
92
|
+
}
|
|
93
|
+
live.forEach((el, i) => {
|
|
94
|
+
if (el instanceof HTMLCanvasElement) copyCanvas(el, copies[i]);
|
|
95
|
+
else if (el instanceof HTMLOptionElement) copies[i].selected = el.selected;
|
|
96
|
+
});
|
|
97
|
+
const following = [];
|
|
98
|
+
for (let node = element.nextSibling; node; node = node.nextSibling) following.push(node);
|
|
99
|
+
return new ExitCopy({
|
|
100
|
+
copy,
|
|
101
|
+
following,
|
|
102
|
+
parent,
|
|
103
|
+
props,
|
|
104
|
+
seat,
|
|
105
|
+
shown: shownOnCopy(readShown(element), element, copy)
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/** one static copy of a leaver, from the render that removed the leaver until its exit ends */
|
|
109
|
+
var ExitCopy = class {
|
|
110
|
+
node;
|
|
111
|
+
ended = false;
|
|
112
|
+
/** set once the copy has mounted and its exit has started: before that, a report is the mount's */
|
|
113
|
+
armed = false;
|
|
114
|
+
reports = /* @__PURE__ */ new Map();
|
|
115
|
+
onDone;
|
|
116
|
+
captured;
|
|
117
|
+
constructor(captured) {
|
|
118
|
+
this.captured = captured;
|
|
119
|
+
}
|
|
120
|
+
/** after the render: put the copy where its element stood and play the exit */
|
|
121
|
+
start(placement, onDone) {
|
|
122
|
+
this.onDone = onDone;
|
|
123
|
+
const { copy, following, parent, props, shown } = this.captured;
|
|
124
|
+
if (this.ended || !parent.isConnected) {
|
|
125
|
+
this.end(true);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
this.pin(placement);
|
|
129
|
+
const before = following.find((node) => node.parentNode === parent);
|
|
130
|
+
keepAsMemory(copy, shown, () => parent.insertBefore(copy, before ?? null));
|
|
131
|
+
(this.node = new MotionNode()).update(copy, {
|
|
132
|
+
...props,
|
|
133
|
+
presence: this.handle(placement)
|
|
134
|
+
});
|
|
135
|
+
flushPendingMounts();
|
|
136
|
+
this.armed = true;
|
|
137
|
+
this.check();
|
|
138
|
+
}
|
|
139
|
+
/** stop now and remove the copy, without reporting an exit (its item came back) */
|
|
140
|
+
cut() {
|
|
141
|
+
this.end(false);
|
|
142
|
+
}
|
|
143
|
+
/** lifted out of flow at the seat its element had: inline and important, so the copy's own CSS cannot move it */
|
|
144
|
+
pin({ anchorX, anchorY }) {
|
|
145
|
+
const { copy, seat } = this.captured;
|
|
146
|
+
const { inline, block } = seatInsets(seat, anchorX, anchorY);
|
|
147
|
+
const style = copy.style;
|
|
148
|
+
const set = (property, value) => style.setProperty(property, value, "important");
|
|
149
|
+
set("position", "absolute");
|
|
150
|
+
set("margin", "0");
|
|
151
|
+
set("width", `${seat.w}px`);
|
|
152
|
+
set("height", `${seat.h}px`);
|
|
153
|
+
for (const side of [
|
|
154
|
+
"top",
|
|
155
|
+
"right",
|
|
156
|
+
"bottom",
|
|
157
|
+
"left"
|
|
158
|
+
]) set(side, "auto");
|
|
159
|
+
set(inline[0], `${inline[1]}px`);
|
|
160
|
+
set(block[0], `${block[1]}px`);
|
|
161
|
+
}
|
|
162
|
+
/** the copy is not present, and its exit is done once every motion element registered in it reports */
|
|
163
|
+
handle(placement) {
|
|
164
|
+
const id = `presence-copy-${copyId++}`;
|
|
165
|
+
const context = {
|
|
166
|
+
id,
|
|
167
|
+
isPresent: false,
|
|
168
|
+
custom: placement.custom,
|
|
169
|
+
register: (childId) => {
|
|
170
|
+
this.reports.set(childId, false);
|
|
171
|
+
return () => {
|
|
172
|
+
this.reports.delete(childId);
|
|
173
|
+
this.check();
|
|
174
|
+
};
|
|
175
|
+
},
|
|
176
|
+
onExitComplete: (childId) => {
|
|
177
|
+
this.reports.set(childId, true);
|
|
178
|
+
this.check();
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
return {
|
|
182
|
+
anchorX: placement.anchorX,
|
|
183
|
+
anchorY: placement.anchorY,
|
|
184
|
+
context,
|
|
185
|
+
isPresent: false,
|
|
186
|
+
key: id,
|
|
187
|
+
mode: "sync",
|
|
188
|
+
popCandidate: () => () => void 0,
|
|
189
|
+
subscribe: () => () => void 0
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
check() {
|
|
193
|
+
if (this.armed && !this.ended && [...this.reports.values()].every(Boolean)) this.end(true);
|
|
194
|
+
}
|
|
195
|
+
end(report) {
|
|
196
|
+
if (this.ended) return;
|
|
197
|
+
this.ended = true;
|
|
198
|
+
this.node?.destroy();
|
|
199
|
+
this.node = void 0;
|
|
200
|
+
this.captured.copy.remove();
|
|
201
|
+
if (report) this.onDone?.();
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
//#endregion
|
|
205
|
+
//#region ../glimmer-motion/src/presence.gts
|
|
206
|
+
/**
|
|
207
|
+
* AnimatePresence for Glimmer — the same algorithm as Motion's
|
|
208
|
+
* components/AnimatePresence (diff present vs rendered, keep leavers until
|
|
209
|
+
* every exit inside them completes, `exitComplete` map, mode="wait", custom,
|
|
210
|
+
* onExitComplete, propagate).
|
|
211
|
+
*
|
|
212
|
+
* <Presence @items={{this.crumbs}} @key={{this.keyOf}} @mode="popLayout" as |crumb p|>
|
|
213
|
+
* <span {{motion presence=p initial=… animate=… exit=…}}>…</span>
|
|
214
|
+
* </Presence>
|
|
215
|
+
*
|
|
216
|
+
* Motion elements nested deeper inside a child inherit its presence through
|
|
217
|
+
* their parent VisualElement, as React's PresenceContext would provide it.
|
|
218
|
+
*
|
|
219
|
+
* `@mode="snapshot"` is this package's own: a leaver's block is torn down in
|
|
220
|
+
* the render that removes it, and a static copy of the element the handle was
|
|
221
|
+
* passed to plays that element's exit, lifted out of flow at the seat the last
|
|
222
|
+
* frame showed the element in. Use it where a leaver's content comes from
|
|
223
|
+
* state that moves on as it leaves, such as a component's blocks: a live
|
|
224
|
+
* leaver would re-render from that state, and stay focusable, with its ids
|
|
225
|
+
* and form controls, beside its replacement. The copy is kept as a memory
|
|
226
|
+
* (see memory.ts). See snapshot.ts.
|
|
227
|
+
*/
|
|
228
|
+
var presence_exports = /* @__PURE__ */ __exportAll({
|
|
229
|
+
Presence: () => Presence,
|
|
230
|
+
default: () => Presence
|
|
231
|
+
});
|
|
232
|
+
var presenceId = 0;
|
|
233
|
+
/** PresenceChild: one context per rendered child, tracking the motion elements registered inside it */
|
|
234
|
+
var Entry = class {
|
|
235
|
+
static {
|
|
236
|
+
decorateFieldV2(this.prototype, "item", [tracked]);
|
|
237
|
+
}
|
|
238
|
+
#item = (initializeDeferredDecorator(this, "item"), void 0);
|
|
239
|
+
/** last presence seen by the diff — plain state, never read during render tracking */ wasPresent = true;
|
|
240
|
+
id = `presence-${presenceId++}`;
|
|
241
|
+
children = /* @__PURE__ */ new Map();
|
|
242
|
+
subscribers = /* @__PURE__ */ new Set();
|
|
243
|
+
/** popLayout and snapshot: the direct children, so they can be read before the DOM changes */
|
|
244
|
+
popCandidates = /* @__PURE__ */ new Set();
|
|
245
|
+
subscribe(refresh) {
|
|
246
|
+
this.subscribers.add(refresh);
|
|
247
|
+
return () => this.subscribers.delete(refresh);
|
|
248
|
+
}
|
|
249
|
+
popCandidate(node) {
|
|
250
|
+
this.popCandidates.add(node);
|
|
251
|
+
return () => {
|
|
252
|
+
this.popCandidates.delete(node);
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/** snapshot: each direct child reads its seat now; returns the elements those seats depend on */
|
|
256
|
+
recordSeats() {
|
|
257
|
+
const watched = [];
|
|
258
|
+
this.popCandidates.forEach((node) => watched.push(...node.recordSeat()));
|
|
259
|
+
return watched;
|
|
260
|
+
}
|
|
261
|
+
/** snapshot: static copies of the direct children, taken before the render that removes them */
|
|
262
|
+
copiesForExit() {
|
|
263
|
+
const copies = [];
|
|
264
|
+
this.popCandidates.forEach((node) => {
|
|
265
|
+
const source = node.exitForCopy();
|
|
266
|
+
const copy = source && captureExit(source);
|
|
267
|
+
if (copy) copies.push(copy);
|
|
268
|
+
});
|
|
269
|
+
return copies;
|
|
270
|
+
}
|
|
271
|
+
key;
|
|
272
|
+
owner;
|
|
273
|
+
initialBlocked;
|
|
274
|
+
constructor(key, item, owner, initialBlocked) {
|
|
275
|
+
this.key = key;
|
|
276
|
+
this.item = item;
|
|
277
|
+
this.owner = owner;
|
|
278
|
+
this.initialBlocked = initialBlocked;
|
|
279
|
+
}
|
|
280
|
+
/** derived from @items (and the parent handle) — nothing is mutated during render */
|
|
281
|
+
get isPresent() {
|
|
282
|
+
return this.owner.isKeyPresent(this.key);
|
|
283
|
+
}
|
|
284
|
+
get mode() {
|
|
285
|
+
return this.owner.args.mode ?? "sync";
|
|
286
|
+
}
|
|
287
|
+
get anchorX() {
|
|
288
|
+
return this.owner.args.anchorX ?? "left";
|
|
289
|
+
}
|
|
290
|
+
get anchorY() {
|
|
291
|
+
return this.owner.args.anchorY ?? "top";
|
|
292
|
+
}
|
|
293
|
+
get context() {
|
|
294
|
+
return {
|
|
295
|
+
id: this.id,
|
|
296
|
+
isPresent: this.isPresent,
|
|
297
|
+
initial: this.initialBlocked ? false : void 0,
|
|
298
|
+
custom: this.owner.args.custom,
|
|
299
|
+
register: (childId) => {
|
|
300
|
+
const leaving = !this.isPresent;
|
|
301
|
+
this.children.set(childId, leaving);
|
|
302
|
+
if (leaving) postRender(() => this.checkComplete());
|
|
303
|
+
return () => {
|
|
304
|
+
this.children.delete(childId);
|
|
305
|
+
if (!this.isPresent && !this.children.size) this.owner.onExit(this.key);
|
|
306
|
+
};
|
|
307
|
+
},
|
|
308
|
+
onExitComplete: (childId) => {
|
|
309
|
+
this.children.set(childId, true);
|
|
310
|
+
this.checkComplete();
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
/** presence flipped (PresenceChild's isPresent effects): children report again; no children → done at once */
|
|
315
|
+
presenceChanged(present) {
|
|
316
|
+
if (!present && this.mode === "popLayout") this.popCandidates.forEach((node) => node.measureForPop());
|
|
317
|
+
this.children.forEach((_, k) => this.children.set(k, false));
|
|
318
|
+
postRender(() => this.notify());
|
|
319
|
+
if (!present) postRender(() => this.checkImmediateExit());
|
|
320
|
+
}
|
|
321
|
+
notify() {
|
|
322
|
+
flushPendingMounts();
|
|
323
|
+
this.subscribers.forEach((fn) => fn());
|
|
324
|
+
}
|
|
325
|
+
/** every registered child has reported: the leaver is done */
|
|
326
|
+
checkComplete() {
|
|
327
|
+
if (this.isPresent) return;
|
|
328
|
+
for (const done of this.children.values()) if (!done) return;
|
|
329
|
+
this.owner.onExit(this.key);
|
|
330
|
+
}
|
|
331
|
+
checkImmediateExit() {
|
|
332
|
+
flushPendingMounts();
|
|
333
|
+
if (!this.isPresent && !this.children.size) this.owner.onExit(this.key);
|
|
334
|
+
}
|
|
335
|
+
};
|
|
336
|
+
var Presence = class extends Component {
|
|
337
|
+
entries = /* @__PURE__ */ new Map();
|
|
338
|
+
order = [];
|
|
339
|
+
lastItems;
|
|
340
|
+
firstRender = true;
|
|
341
|
+
/** React's exitComplete map + exitingComponents set */
|
|
342
|
+
exitComplete = /* @__PURE__ */ new Map();
|
|
343
|
+
exiting = /* @__PURE__ */ new Set();
|
|
344
|
+
pendingItems = [];
|
|
345
|
+
registeredWithParent;
|
|
346
|
+
selfId = `presence:${presenceId++}`;
|
|
347
|
+
/** snapshot: copies still playing an exit, by the key of the item they copied */
|
|
348
|
+
copies = /* @__PURE__ */ new Map();
|
|
349
|
+
/** snapshot: a read of the children's seats is booked for the next frame */
|
|
350
|
+
seatReadBooked = false;
|
|
351
|
+
/** snapshot: re-reads the seats when a child, or the box it is pinned inside, resizes */
|
|
352
|
+
resizes;
|
|
353
|
+
watched = /* @__PURE__ */ new Set();
|
|
354
|
+
static {
|
|
355
|
+
decorateFieldV2(this.prototype, "version", [tracked], function() {
|
|
356
|
+
return 0;
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
#version = (initializeDeferredDecorator(this, "version"), void 0);
|
|
360
|
+
constructor(owner, args) {
|
|
361
|
+
super(owner, args);
|
|
362
|
+
registerDestructor(this, () => {
|
|
363
|
+
this.registeredWithParent?.();
|
|
364
|
+
this.copies.forEach((_, copy) => copy.cut());
|
|
365
|
+
this.copies.clear();
|
|
366
|
+
this.stopWatchingSeats();
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
get parentPresent() {
|
|
370
|
+
const { propagate, parent } = this.args;
|
|
371
|
+
return !propagate || !parent || parent.isPresent;
|
|
372
|
+
}
|
|
373
|
+
/** the keys @items currently asks for (empty while a propagating parent is leaving) */
|
|
374
|
+
get presentKeys() {
|
|
375
|
+
return this.parentPresent ? this.args.items.map(this.args.key) : [];
|
|
376
|
+
}
|
|
377
|
+
isKeyPresent(key) {
|
|
378
|
+
return this.presentKeys.includes(key);
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Snapshot: a leaver's copy is pinned to the seat its element last
|
|
382
|
+
* recorded. Each direct child reads its seat in the frame after every
|
|
383
|
+
* render, and again whenever it or the box it is pinned inside resizes (see
|
|
384
|
+
* MotionNode.recordSeat). The diff cannot read it: Glimmer patches the DOM
|
|
385
|
+
* in template order, so content earlier in the template than this
|
|
386
|
+
* <Presence> has been patched by the time it diffs, and may have moved or
|
|
387
|
+
* resized the leaver. A move that is neither a render nor one of those
|
|
388
|
+
* resizes, such as a transition on a sibling's width, is not seen.
|
|
389
|
+
*/
|
|
390
|
+
get seatWatch() {
|
|
391
|
+
if (this.args.mode !== "snapshot") {
|
|
392
|
+
this.stopWatchingSeats();
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
consumeTag(VOLATILE_TAG);
|
|
396
|
+
if (!this.seatReadBooked) {
|
|
397
|
+
this.seatReadBooked = true;
|
|
398
|
+
frame.read(() => {
|
|
399
|
+
this.seatReadBooked = false;
|
|
400
|
+
this.readSeats();
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Reads every child's seat. After a render it also moves the resize watch
|
|
406
|
+
* onto the elements those seats depend on now; a read from the watch itself
|
|
407
|
+
* leaves it alone, since a target observed inside a resize callback can be
|
|
408
|
+
* left undelivered, which the browser reports as an error.
|
|
409
|
+
*/
|
|
410
|
+
readSeats(rewatch = true) {
|
|
411
|
+
if (isDestroying(this) || this.args.mode !== "snapshot") return;
|
|
412
|
+
const watched = /* @__PURE__ */ new Set();
|
|
413
|
+
this.entries.forEach((e) => e.recordSeats().forEach((el) => watched.add(el)));
|
|
414
|
+
if (!rewatch) return;
|
|
415
|
+
const resizes = this.resizes ??= new ResizeObserver(() => this.readSeats(false));
|
|
416
|
+
this.watched.forEach((el) => {
|
|
417
|
+
if (!watched.has(el)) resizes.unobserve(el);
|
|
418
|
+
});
|
|
419
|
+
watched.forEach((el) => {
|
|
420
|
+
if (!this.watched.has(el)) resizes.observe(el);
|
|
421
|
+
});
|
|
422
|
+
this.watched = watched;
|
|
423
|
+
}
|
|
424
|
+
stopWatchingSeats() {
|
|
425
|
+
this.resizes?.disconnect();
|
|
426
|
+
this.resizes = void 0;
|
|
427
|
+
this.watched.clear();
|
|
428
|
+
}
|
|
429
|
+
get rendered() {
|
|
430
|
+
this.version;
|
|
431
|
+
const items = this.args.items;
|
|
432
|
+
const parentPresent = this.parentPresent;
|
|
433
|
+
if (this.args.propagate && this.args.parent && !this.registeredWithParent) this.registeredWithParent = this.args.parent.context.register(this.selfId);
|
|
434
|
+
if (items !== this.lastItems || this.lastParentPresent !== parentPresent) {
|
|
435
|
+
snapshotOnRender();
|
|
436
|
+
this.lastItems = items;
|
|
437
|
+
this.lastParentPresent = parentPresent;
|
|
438
|
+
this.pendingItems = items;
|
|
439
|
+
const presentKeys = this.presentKeys;
|
|
440
|
+
const blockInitial = this.firstRender && this.args.initial === false;
|
|
441
|
+
const snapshot = this.args.mode === "snapshot";
|
|
442
|
+
items.forEach((item) => {
|
|
443
|
+
const k = this.args.key(item);
|
|
444
|
+
const e = this.entries.get(k);
|
|
445
|
+
if (e) e.item = item;
|
|
446
|
+
else {
|
|
447
|
+
this.cutCopies(k);
|
|
448
|
+
this.entries.set(k, new Entry(k, item, this, blockInitial));
|
|
449
|
+
}
|
|
450
|
+
});
|
|
451
|
+
const exitingKeys = [];
|
|
452
|
+
const copied = [];
|
|
453
|
+
let snapshotLeft = false;
|
|
454
|
+
let next = parentPresent ? [...presentKeys] : [];
|
|
455
|
+
let insertionIndex = 0;
|
|
456
|
+
for (const k of this.order) {
|
|
457
|
+
const presentIndex = presentKeys.indexOf(k);
|
|
458
|
+
if (presentIndex === -1 && snapshot) {
|
|
459
|
+
snapshotLeft = true;
|
|
460
|
+
for (const copy of this.entries.get(k)?.copiesForExit() ?? []) {
|
|
461
|
+
this.copies.set(copy, k);
|
|
462
|
+
copied.push(copy);
|
|
463
|
+
}
|
|
464
|
+
this.entries.delete(k);
|
|
465
|
+
this.exitComplete.delete(k);
|
|
466
|
+
this.exiting.delete(k);
|
|
467
|
+
} else if (presentIndex === -1) {
|
|
468
|
+
next.splice(insertionIndex++, 0, k);
|
|
469
|
+
exitingKeys.push(k);
|
|
470
|
+
} else insertionIndex = presentIndex + exitingKeys.length + 1;
|
|
471
|
+
}
|
|
472
|
+
if (snapshotLeft) postRender(() => this.startCopies(copied));
|
|
473
|
+
if ((this.args.mode ?? "sync") === "wait" && exitingKeys.length) next = exitingKeys;
|
|
474
|
+
this.order = next.filter((k, i) => next.indexOf(k) === i);
|
|
475
|
+
for (const k of this.order) {
|
|
476
|
+
const e = this.entries.get(k);
|
|
477
|
+
const present = presentKeys.includes(k);
|
|
478
|
+
if (!present) {
|
|
479
|
+
if (this.exitComplete.get(k) !== true) this.exitComplete.set(k, false);
|
|
480
|
+
} else {
|
|
481
|
+
this.exitComplete.delete(k);
|
|
482
|
+
this.exiting.delete(k);
|
|
483
|
+
}
|
|
484
|
+
if (e.wasPresent !== present) {
|
|
485
|
+
e.wasPresent = present;
|
|
486
|
+
e.presenceChanged(present);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
this.firstRender = false;
|
|
490
|
+
if (this.args.propagate && !parentPresent && !this.order.length && !snapshotLeft && !this.copies.size) postRender(() => this.safeToRemove());
|
|
491
|
+
}
|
|
492
|
+
return this.order.map((k) => this.entries.get(k));
|
|
493
|
+
}
|
|
494
|
+
lastParentPresent;
|
|
495
|
+
/** AnimatePresence's onExit for one child: once every exiting child is done, show what's pending */
|
|
496
|
+
onExit(key) {
|
|
497
|
+
if (this.exiting.has(key)) return;
|
|
498
|
+
if (!this.exitComplete.has(key)) return;
|
|
499
|
+
this.exiting.add(key);
|
|
500
|
+
this.exitComplete.set(key, true);
|
|
501
|
+
for (const done of this.exitComplete.values()) if (!done) return;
|
|
502
|
+
const presentKeys = this.parentPresent ? this.pendingItems.map(this.args.key) : [];
|
|
503
|
+
for (const k of this.order) if (!presentKeys.includes(k)) this.entries.delete(k);
|
|
504
|
+
this.lastItems = void 0;
|
|
505
|
+
this.exitComplete.clear();
|
|
506
|
+
this.exiting.clear();
|
|
507
|
+
this.order = presentKeys;
|
|
508
|
+
this.version++;
|
|
509
|
+
if (this.args.propagate) this.safeToRemove();
|
|
510
|
+
this.args.onExitComplete?.();
|
|
511
|
+
}
|
|
512
|
+
safeToRemove() {
|
|
513
|
+
this.args.parent?.context.onExitComplete?.(this.selfId);
|
|
514
|
+
}
|
|
515
|
+
/** snapshot: after the render that removed their items, the copies go back in and play their exits */
|
|
516
|
+
startCopies(copies) {
|
|
517
|
+
const placement = {
|
|
518
|
+
anchorX: this.args.anchorX ?? "left",
|
|
519
|
+
anchorY: this.args.anchorY ?? "top",
|
|
520
|
+
custom: this.args.custom
|
|
521
|
+
};
|
|
522
|
+
for (const copy of copies) if (this.copies.has(copy)) copy.start(placement, () => this.copyLeft(copy));
|
|
523
|
+
if (!copies.length) this.checkCopiesLeft();
|
|
524
|
+
}
|
|
525
|
+
copyLeft(copy) {
|
|
526
|
+
this.copies.delete(copy);
|
|
527
|
+
this.checkCopiesLeft();
|
|
528
|
+
}
|
|
529
|
+
/** every copy has finished its exit, and no live leaver is still playing one: report as onExit does */
|
|
530
|
+
checkCopiesLeft() {
|
|
531
|
+
if (this.copies.size || this.exitComplete.size || isDestroying(this)) return;
|
|
532
|
+
if (this.args.propagate) this.safeToRemove();
|
|
533
|
+
this.args.onExitComplete?.();
|
|
534
|
+
}
|
|
535
|
+
cutCopies(key) {
|
|
536
|
+
this.copies.forEach((k, copy) => {
|
|
537
|
+
if (k === key) {
|
|
538
|
+
this.copies.delete(copy);
|
|
539
|
+
copy.cut();
|
|
540
|
+
}
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
static {
|
|
544
|
+
setComponentTemplate(templateFactory({
|
|
545
|
+
"id": "OVg7Gi4X",
|
|
546
|
+
"block": "[[[1,[30,0,[\"seatWatch\"]]],[1,\"\\n\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\"rendered\"]]],null]],null],\"key\",[[[1,\" \"],[18,2,[[30,1,[\"item\"]],[30,1]]],[1,\"\\n\"]],[1]],null]],[\"e\",\"&default\"],[\"each\",\"-track-array\",\"yield\"]]",
|
|
547
|
+
"moduleName": "/home/runner/work/boxel/boxel/packages/glimmer-motion/src/presence.gts",
|
|
548
|
+
"isStrictMode": true
|
|
549
|
+
}), this);
|
|
550
|
+
}
|
|
551
|
+
};
|
|
552
|
+
//#endregion
|
|
553
|
+
export { presence_exports as n, Presence as t };
|
package/bundled-test-harness/assets/{quick-look-test-VW5_W7dm.js → quick-look-test-BrnxRRsq.js}
RENAMED
|
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
|
|
|
6
6
|
import "./component-BJO47HTh.js";
|
|
7
7
|
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
8
8
|
import "./template-factory-ds9s0u8l.js";
|
|
9
|
-
import { t as OperatorModeContainer } from "./container-
|
|
9
|
+
import { t as OperatorModeContainer } from "./container-CXZoEvul.js";
|
|
10
10
|
import { c as triggerKeyEvent, d as click, o as waitFor, s as fillIn } from "./dist-BOAdzfkP.js";
|
|
11
11
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
12
12
|
import { D as realmConfigCardJSON, F as setupLocalIndexing, I as setupOnSave, L as setupRealmCacheTeardown, M as setupCardLogs, P as setupIntegrationTestRealm, Z as withCachedRealmSetup, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-Ci72h1Wf.js";
|
package/bundled-test-harness/assets/{realm-api-keys-sg--fohv.js → realm-api-keys-CHPnfcko.js}
RENAMED
|
@@ -18,7 +18,7 @@ import { a as ListRealmKeySharesTool, r as SuspendKeyShareTool, s as GetKeyShare
|
|
|
18
18
|
import { t as OpenSecureWindowTool } from "./open-secure-window-DLIotnK5.js";
|
|
19
19
|
import { t as Button } from "./button-CXBgG9uE.js";
|
|
20
20
|
import { c as listenDocumentCapture, s as listenDocument } from "./focus-Dmgc0c-7.js";
|
|
21
|
-
import { t as Chip } from "./chip-
|
|
21
|
+
import { t as Chip } from "./chip-DVJE_YDh.js";
|
|
22
22
|
import { a as resolvePlacement, i as resolveOpen, n as anchorTo } from "./overlay-C5k_NSQJ.js";
|
|
23
23
|
import { t as isLiveRender } from "./render-context-CZy_0gyC.js";
|
|
24
24
|
//#region ../boxel-icons/dist/@cardstack/boxel-icons/v1/icons/key.js
|
|
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
|
|
|
6
6
|
import "./component-BJO47HTh.js";
|
|
7
7
|
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
8
8
|
import "./template-factory-ds9s0u8l.js";
|
|
9
|
-
import { t as OperatorModeContainer } from "./container-
|
|
9
|
+
import { t as OperatorModeContainer } from "./container-CXZoEvul.js";
|
|
10
10
|
import { T as settled, o as waitFor } from "./dist-BOAdzfkP.js";
|
|
11
11
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
12
12
|
import { D as realmConfigCardJSON, F as setupLocalIndexing, P as setupIntegrationTestRealm, St as unregisterRealmServerRoute, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix, yt as registerRealmServerRoute } from "./mock-matrix-Ci72h1Wf.js";
|
|
@@ -35,7 +35,7 @@ import { t as NumberField } from "./number-BhzcQBKm.js";
|
|
|
35
35
|
import { t as isLiveRender } from "./render-context-CZy_0gyC.js";
|
|
36
36
|
import { t as JsonField } from "./json-field-BWYU9trX.js";
|
|
37
37
|
import { d as operations, u as operation } from "./operations-BTFC1cvX.js";
|
|
38
|
-
import { t as RealmApiKeys } from "./realm-api-keys-
|
|
38
|
+
import { t as RealmApiKeys } from "./realm-api-keys-CHPnfcko.js";
|
|
39
39
|
//#region ../base/realm-config.gts
|
|
40
40
|
var RoutingRuleAtom = class extends Component$1 {
|
|
41
41
|
static {
|
|
@@ -7,7 +7,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
|
|
|
7
7
|
import "./component-BJO47HTh.js";
|
|
8
8
|
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
9
9
|
import "./template-factory-ds9s0u8l.js";
|
|
10
|
-
import { t as OperatorModeContainer } from "./container-
|
|
10
|
+
import { t as OperatorModeContainer } from "./container-CXZoEvul.js";
|
|
11
11
|
import { T as settled, d as click, m as rerender, o as waitFor } from "./dist-BOAdzfkP.js";
|
|
12
12
|
import { n as ISOLATED_RENDER_ELEMENT_ID } from "./render-service-DONRC3JB.js";
|
|
13
13
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
@@ -7,7 +7,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
|
|
|
7
7
|
import "./component-BJO47HTh.js";
|
|
8
8
|
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
9
9
|
import "./template-factory-ds9s0u8l.js";
|
|
10
|
-
import { t as OperatorModeContainer } from "./container-
|
|
10
|
+
import { t as OperatorModeContainer } from "./container-CXZoEvul.js";
|
|
11
11
|
import { T as settled, d as click, o as waitFor, s as fillIn } from "./dist-BOAdzfkP.js";
|
|
12
12
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
13
13
|
import { F as setupLocalIndexing, P as setupIntegrationTestRealm, lt as setupRenderingTest, nt as provide, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-Ci72h1Wf.js";
|
|
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
|
|
|
6
6
|
import "./component-BJO47HTh.js";
|
|
7
7
|
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
8
8
|
import "./template-factory-ds9s0u8l.js";
|
|
9
|
-
import { t as OperatorModeContainer } from "./container-
|
|
9
|
+
import { t as OperatorModeContainer } from "./container-CXZoEvul.js";
|
|
10
10
|
import { M as waitUntil, d as click, l as triggerEvent, o as waitFor, s as fillIn } from "./dist-BOAdzfkP.js";
|
|
11
11
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
12
12
|
import { F as setupLocalIndexing, P as setupIntegrationTestRealm, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-Ci72h1Wf.js";
|
package/bundled-test-harness/assets/{reasoning-test-CeeGGwvf.js → reasoning-test-Dn0Xb42V.js}
RENAMED
|
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
|
|
|
6
6
|
import "./component-BJO47HTh.js";
|
|
7
7
|
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
8
8
|
import "./template-factory-ds9s0u8l.js";
|
|
9
|
-
import { t as OperatorModeContainer } from "./container-
|
|
9
|
+
import { t as OperatorModeContainer } from "./container-CXZoEvul.js";
|
|
10
10
|
import { M as waitUntil, T as settled, d as click, o as waitFor } from "./dist-BOAdzfkP.js";
|
|
11
11
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
12
12
|
import { D as realmConfigCardJSON, F as setupLocalIndexing, I as setupOnSave, L as setupRealmCacheTeardown, M as setupCardLogs, P as setupIntegrationTestRealm, Z as withCachedRealmSetup, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-Ci72h1Wf.js";
|
package/bundled-test-harness/assets/{rendered-markdown-B8TH0yN4.js → rendered-markdown-DPEXS7MQ.js}
RENAMED
|
@@ -20,7 +20,7 @@ import { r as modifier, t as ClassBasedModifier } from "./dist-nMt-N14r.js";
|
|
|
20
20
|
import { t as consume } from "./dist-Ble0L9o7.js";
|
|
21
21
|
import { t as CardRenderer } from "./card-renderer-BxpiPOZ6.js";
|
|
22
22
|
import { a as markdownToHtml, i as markdownOversizedNoticeHtml, r as isMarkdownOverRenderLimit } from "./marked-sync-C-diBz5n.js";
|
|
23
|
-
import { s as beacon } from "./src-
|
|
23
|
+
import { s as beacon } from "./src-D8bpj2tb.js";
|
|
24
24
|
import { t as cardRefLabel } from "./reply-furniture-Cu7OoDDn.js";
|
|
25
25
|
//#region app/components/operator-mode/preview-panel/rendered-markdown.gts
|
|
26
26
|
function resolveUrl(raw, baseUrl) {
|
|
@@ -8,7 +8,7 @@ import "./component-BJO47HTh.js";
|
|
|
8
8
|
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
9
9
|
import "./template-factory-ds9s0u8l.js";
|
|
10
10
|
import { M as waitUntil, T as settled } from "./dist-BOAdzfkP.js";
|
|
11
|
-
import { t as RenderedMarkdown } from "./rendered-markdown-
|
|
11
|
+
import { t as RenderedMarkdown } from "./rendered-markdown-DPEXS7MQ.js";
|
|
12
12
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
13
13
|
import { lt as setupRenderingTest } from "./mock-matrix-Ci72h1Wf.js";
|
|
14
14
|
import { n as renderComponent } from "./render-component-B15Z0e2v.js";
|
package/bundled-test-harness/assets/{room-message-test-BTxZ_W74.js → room-message-test-BBE8UIPX.js}
RENAMED
|
@@ -9,7 +9,7 @@ import "./component-BJO47HTh.js";
|
|
|
9
9
|
import { t as Component } from "./dist-CkA1rgqO.js";
|
|
10
10
|
import "./template-factory-ds9s0u8l.js";
|
|
11
11
|
import { t as templateOnly } from "./template-only-6nVzLWF-.js";
|
|
12
|
-
import { n as aiBotUserId, r as RoomMessage } from "./panel-
|
|
12
|
+
import { n as aiBotUserId, r as RoomMessage } from "./panel-CXmB6GMs.js";
|
|
13
13
|
import { n as getCardCollection } from "./card-collection-DROiEsNV.js";
|
|
14
14
|
import { n as getCard } from "./card-resource-BF1P-sI3.js";
|
|
15
15
|
import { r as provide } from "./dist-Ble0L9o7.js";
|