@cardstack/boxel-cli 0.12.0 → 0.13.0-unstable.1
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/base/command.gts +4 -4
- package/bundled-realms/base/realm-api-keys.gts +35 -3
- 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-DxxsXNXe.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-BEvPLshl.js} +8 -8
- 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-B_gcWqxF.js} +1 -1
- package/bundled-test-harness/assets/{bundled-base-DldokUSJ.js → bundled-base-CYD5iFX3.js} +3 -3
- package/bundled-test-harness/assets/{bundled-base-modules-test-VAlRx4t3.js → bundled-base-modules-test-bO7yZysu.js} +1 -1
- package/bundled-test-harness/assets/{can-invoke-test-BGmUJHxo.js → can-invoke-test-BBTE4_cE.js} +1 -1
- package/bundled-test-harness/assets/{card-chooser-paging-test-CzooKL4I.js → card-chooser-paging-test-14IqQei3.js} +1 -1
- package/bundled-test-harness/assets/{card-chooser-test-C3fjaDYi.js → card-chooser-test-CRg2JrXQ.js} +1 -1
- package/bundled-test-harness/assets/{card-def-field-def-relationships-test-yqv8ir8Y.js → card-def-field-def-relationships-test-BapYGyoB.js} +1 -1
- package/bundled-test-harness/assets/{card-delete-test-BtjqrqKO.js → card-delete-test-CvbDQUUE.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-j4ES37-L.js} +1 -1
- package/bundled-test-harness/assets/{compaction-test-D1G3KCSe.js → compaction-test-CyhMODxy.js} +1 -1
- package/bundled-test-harness/assets/{container-BCOmNUou.css → container-CAEYXGQg.css} +179 -155
- package/bundled-test-harness/assets/{container-XSX5809v.js → container-CATqNgYF.js} +20 -19
- package/bundled-test-harness/assets/{create-listing-modal-test--oGT9P_F.js → create-listing-modal-test-QmWcm9hl.js} +1 -1
- package/bundled-test-harness/assets/{debug-message-test-C8UZUtCt.js → debug-message-test-D-4Dcu8y.js} +1 -1
- package/bundled-test-harness/assets/{externals--YMzwHwd.js → externals-Cw0MmkHM.js} +38 -38
- package/bundled-test-harness/assets/{fallback-banner-live-delete-test-DPK_coJY.js → fallback-banner-live-delete-test-Bzqw4uMs.js} +1 -1
- package/bundled-test-harness/assets/{fallback-banner-test-C2wi6Lu6.js → fallback-banner-test-BMQVK4gy.js} +1 -1
- package/bundled-test-harness/assets/{fallback-models-test-SqdXWB1Z.js → fallback-models-test-DkdjPwvA.js} +1 -1
- package/bundled-test-harness/assets/{file-attachment-test-DT0HK6yS.js → file-attachment-test-yvR5gw9_.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-D2j4JhrD.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-DFkm037X.js} +1 -1
- package/bundled-test-harness/assets/{instance-filter-matcher-test-CNIzKZvP.js → instance-filter-matcher-test-UqB2Rto8.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-CM62YtMN.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-CDXxio0B.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-C_CaTJ0F.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-card-chooser-test-Bo5ZnF_x.js → operator-mode-card-chooser-test-CU5f7q6r.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-links-test-DVx_LQOU.js → operator-mode-links-test-CoeF3prV.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-test-CCbFrYgN.js → operator-mode-test-B9c6N5FF.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-ui-test-Dm2Bf6Vn.js → operator-mode-ui-test-CJQxypf_.js} +1 -1
- package/bundled-test-harness/assets/{overlay-menu-items-test-Bk5AidFD.js → overlay-menu-items-test-CFWZ-tzq.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-7FgLJlog.js} +1 -1
- package/bundled-test-harness/assets/{permission-checking-realm-test-CuImx8ie.js → permission-checking-realm-test-Cm9eB-hE.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-DrqgCLlM.js} +1 -1
- package/bundled-test-harness/assets/{realm-api-keys-Tlj0OK1c.css → realm-api-keys-16eN_yJb.css} +35 -25
- package/bundled-test-harness/assets/{realm-api-keys-sg--fohv.js → realm-api-keys-ZJedocgl.js} +11 -5
- package/bundled-test-harness/assets/realm-api-keys-m-EOSWuV.js +2 -0
- package/bundled-test-harness/assets/{realm-api-keys-test-mrgvnhFJ.js → realm-api-keys-test-Ba_1CKJu.js} +3 -5
- package/bundled-test-harness/assets/{realm-api-keys-test-Cy7qSoAd.js → realm-api-keys-test-jXscHLbS.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-DvpP1xf-.js → realm-config-DIOozzdQ.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-policy-standing-test-DJk-ftgH.js → realm-config-policy-standing-test-DEFQEEvl.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-CTPiJrAL.js → realm-config-routing-rule-edit-test-CtLYsxzq.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-settings-test-CUa-PjMC.js → realm-config-settings-test-Dsatuv-T.js} +1 -1
- package/bundled-test-harness/assets/{reasoning-test-CeeGGwvf.js → reasoning-test-3p_PygAV.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/{schema-generation-test-De1eamwr.js → schema-generation-test-hkFzUr7-.js} +1 -1
- package/bundled-test-harness/assets/{scrolling-test-C7R0UASi.js → scrolling-test-B8CudFE9.js} +2 -2
- package/bundled-test-harness/assets/{searchable-option-test-BiOqxIIs.js → searchable-option-test-B8lZyJij.js} +1 -1
- package/bundled-test-harness/assets/{sending-test-DOXQ0Tvx.js → sending-test-BtH1z2uE.js} +1 -1
- package/bundled-test-harness/assets/{skills-test-BjCYI4Z_.js → skills-test-DIQvoCLm.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-DoHgyfQA.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-DXX9TrgY.js} +759 -750
- package/bundled-test-harness/assets/{text-input-validator-test-CW6Ay7bo.js → text-input-validator-test-D56aDP2e.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-Ug8UnlUl.js} +1 -1
- package/bundled-test-harness/assets/{token-usage-test-Ck9rB3Ie.js → token-usage-test-BolKbZVL.js} +1 -1
- package/bundled-test-harness/assets/{tools-DRCjAZCp.js → tools-CkouX4wE.js} +1 -1
- package/bundled-test-harness/assets/{tools-test-B3zniq10.js → tools-test-CdYgRu5Z.js} +1 -1
- package/bundled-test-harness/assets/{turn-settling-test-C0X6hL7x.js → turn-settling-test-CS0PlpTg.js} +1 -1
- package/bundled-test-harness/assets/{turn-summary-0XOoAv3j.js → turn-summary-CAZVdcBd.js} +1 -1
- package/bundled-test-harness/assets/{unshare-key-Dfy1IK9g.js → unshare-key-W_bNI_MF.js} +0 -1
- package/bundled-test-harness/index.html +29 -28
- package/bundled-test-harness/tests/index.html +29 -28
- package/bundled-types/base/command.d.ts +0 -1
- 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/operator-mode/dashboard/add-workspace.gts +5 -3
- package/bundled-types/host-app/components/operator-mode/dashboard/archived-workspace.gts +3 -5
- package/bundled-types/host-app/components/operator-mode/dashboard/catalog-shelf.gts +24 -7
- package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +9 -4
- package/bundled-types/host-app/components/pill-menu/index.gts +74 -23
- package/bundled-types/host-app/lib/key-shares.ts +0 -1
- package/bundled-types/host-app/tools/get-key-share-usage.ts +0 -1
- package/dist/index.js +161 -161
- package/package.json +1 -1
- package/src/commands/keys/manage.ts +22 -6
- package/src/lib/user-keys.ts +18 -5
- 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
package/bundled-test-harness/assets/{choreo-gallery-ZO9vXOxd.js → choreo-gallery-DZm1KZ20.js}
RENAMED
|
@@ -900,7 +900,7 @@ var core_first_app_default = "# Build Your First Choreo Application\n\nThis tuto
|
|
|
900
900
|
var core_header_default = "# Responding to Scroll Direction\n\nA hiding header should make room for reading and return when the reader looks back. Responding to the sign of every scroll delta is not sufficient: small reversals, trackpad noise and overscroll recoil can make a header flicker. This example teaches a small state machine around a scroll value, with motion responsible only for the resulting visible state.\n\n::card[../../demos/header]\n\n**Live example: Responding to Scroll Direction.** Scroll down, reverse slightly, then reverse decisively. Repeat near the top and bottom and compare Floating header with Instant response. [Open the demo](../../demos/header) to tune it with DialKit.\n\n## Separate observation from presentation\n\nThe scroll subscription observes the local column. It tracks the previous position and accumulates travel in the current direction. When direction reverses, the accumulated distance starts over rather than requiring the reader to pay back the previous movement. Only sustained travel changes the hidden state.\n\nThe header target then derives from that state: visible or translated upward with lower opacity. The transition determines how that state change feels. Floating header and Instant response alter this presentation timing; they do not change the amount of directional travel required to trigger a change. That threshold remains a separate variable in the source.\n\n## Handle boundaries deliberately\n\nA scroll container can report positions outside its ordinary range during rubber-band overscroll. Clamp the observed position before calculating a direction. Otherwise the recoil back into range resembles an intentional movement in the opposite direction.\n\nThe top edge always shows the header. Near the bottom, the state holds instead of reacting to every small bounce. These edge policies are part of the interaction, not merely numerical cleanup. Test them on touch hardware as well as with a mouse wheel, because the input produces different boundary behaviour.\n\n## Verify the reader's control\n\nScroll down far enough to hide the header, reverse slightly, then reverse decisively. A small reversal should not cause chatter, while sustained upward travel should restore the controls. Repeat near both ends of the column and after changing the transition preset.\n\nKeep the document position stable when the header changes. If the header's removal also changes layout height, the resulting scroll delta can feed back into the state machine. The example translates the header visually instead of using its disappearance to resize the content.\n\nFor continuous layer movement, compare [scroll progress](core-scroll). For discrete row entrances, compare [revealing data](core-reveal). All three consume scroll-related information, but their state and timing responsibilities differ.\n\n---\n\n[← Revealing Data on Arrival](core-reveal) · [All guides](README) · [Understanding a Choreo Scene →](interactive-start)\n";
|
|
901
901
|
//#endregion
|
|
902
902
|
//#region ../choreo-gallery/realm/docs/guides/core-host.md?raw
|
|
903
|
-
var core_host_default = "# Host Adapters and the Render Pipeline\n\nMost applications should use the modifier and components. A new Glimmer host or specialized renderer needs a deeper boundary: constructing motion nodes, scheduling work after render, and preserving measurement order. The exported host APIs exist for that integration, not as extra animation commands to sprinkle through ordinary components.\n\n## Owning an Element Lifecycle\n\n`MotionNode` represents the lifecycle glue for one HTML or SVG element. `MotionProps` describes its engine-facing properties, and `MotionEl` describes the supported DOM element shape. The `MotionModifier` is the Ember modifier shell that connects this model to Glimmer. A host adapter must construct, update, and tear down nodes in the order expected by the engine.\n\nThe binding queues initial mounts because Glimmer installs child modifiers before parent modifiers. `flushPendingMounts()` builds the required tree relationship and completes the pending work. Calling it at an arbitrary point inside another render is not a safe shortcut: a child may otherwise miss its parent's variants, presence, or configuration.\n\n## Scheduling After Render\n\n`postRender()` is the common scheduling boundary, and `setPostRender()` installs a host implementation. The callback must run after the relevant render pass has committed. It should not be replaced with an arbitrary timeout whose delay merely appears to work on one device.\n\nThe layout pipeline follows a specific order:\n\n```text title=\"Rendering contract\"\nsnapshot old bounds\n→ commit the DOM change\n→ finish pending mounts\n→ measure new bounds\n→ settle projection\n```\n\n`snapshotAll()` captures projection state; `requestSettle()` requests the coordinated post-render measurement; `afterSettle()` schedules work after that pipeline. `layoutChange()` is the ordinary application-facing wrapper for a state change outside an observing layout group. `instantLayoutTransition()` is a special control for landing a layout update without animation.\n\n## Detecting Integration Failures\n\n`layoutLoopDetected()` and `resetLayoutLoopGuard()` support diagnostics and test cleanup. The guard detects a burst of repeated settlement without an intervening browser frame. It keeps the page responsive enough to diagnose the problem, but a tripped guard still means the application or adapter has a feedback loop.\n\nA common trigger is assigning a tracked property unconditionally from a per-frame callback, which causes another render, another measurement, and another callback. Guard meaningful state changes and let MotionValues carry continuous visual values.\n\nTest a new adapter with nested motion elements, shared layout, an exiting child, and interruption. A single successful opacity animation does not validate mount ordering or projection. The existing fidelity and contract suites are the relevant evidence because they exercise the temporal behavior that a host integration can silently change.\n\n## Hosting Participants\n\nA component that coordinates many motion elements at once, such as a choreography region or a shared-element transition, is a participant host. It implements `ParticipantHost`, renders `data-motion-host` (the `PARTICIPANT_HOST_ATTRIBUTE`) on its root element, and installs itself on that element with `setParticipantHost()` from a modifier. `closestParticipantHost()` is the lookup a motion element runs when it mounts. The attribute belongs in the markup rather than in the modifier, because modifiers install children-first: a marked element whose host has not installed yet resolves to no host, never to an outer one.\n\nOnly a motion element with an `id` or a `role` joins, and it joins the nearest host. The host sees it as a `MotionParticipant`, with its element, VisualElement, identity, group and presence. `register` runs on mount. On teardown the element unregisters and then asks `claim`. A host that claims a leaving element owns its unmount, and calls `release()` when it is done with it. `<Choreo>` is a participant host.\n\nA host can also add its own named arguments to the modifier. It declares them by augmenting `ParticipantArgs` and registers each one with `defineParticipantArg()`. The modifier keeps those arguments away from the engine and hands each value to the host on every pass.\n\nA host whose work outlasts the engine's own animations, such as a timeline still running between steps, registers a `BusyProbe` with `registerBusyProbe()`. The probe answers `false` at rest or a short reason while busy, and `animationsSettled()` and `whatIsBusy()` consult it alongside the frameloop and the projection tree. Registration returns a remover. A probe over one host instance's state is removed in that instance's destructor, so a torn-down host never holds a test open; a probe over module-global state, such as Choreo's far-match barrier, may stay registered for the life of the page.\n\n## API Coverage\n\n**glimmer-motion**: `BusyProbe`, `registerBusyProbe`, `afterSettle`, `instantLayoutTransition`, `layoutLoopDetected`, `requestSettle`, `resetLayoutLoopGuard`, `snapshotAll`, `MotionEl`, `MotionModifier`, `flushPendingMounts`, `MotionNode`, `MotionParticipant`, `ParticipantArgs`, `ParticipantHost`, `closestParticipantHost`, `defineParticipantArg`, `PARTICIPANT_HOST_ATTRIBUTE`, `setParticipantHost`, `postRender`, `setPostRender`.\n\nRead the implementation: [`activity.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts), [`layout.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts), [`motion.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts), [`node.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/node.ts), [`scheduler.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scheduler.ts).\n\n---\n\n[← Slow Motion and Playback Rate](core-tempo) · [All guides](README) · [Testing Time, Gates, and Settlement →](core-test-timing)\n";
|
|
903
|
+
var core_host_default = "# Host Adapters and the Render Pipeline\n\nMost applications should use the modifier and components. A new Glimmer host or specialized renderer needs a deeper boundary: constructing motion nodes, scheduling work after render, and preserving measurement order. The exported host APIs exist for that integration, not as extra animation commands to sprinkle through ordinary components.\n\n## Owning an Element Lifecycle\n\n`MotionNode` represents the lifecycle glue for one HTML or SVG element. `MotionProps` describes its engine-facing properties, and `MotionEl` describes the supported DOM element shape. The `MotionModifier` is the Ember modifier shell that connects this model to Glimmer. A host adapter must construct, update, and tear down nodes in the order expected by the engine.\n\nThe binding queues initial mounts because Glimmer installs child modifiers before parent modifiers. `flushPendingMounts()` builds the required tree relationship and completes the pending work. Calling it at an arbitrary point inside another render is not a safe shortcut: a child may otherwise miss its parent's variants, presence, or configuration.\n\n## Scheduling After Render\n\n`postRender()` is the common scheduling boundary, and `setPostRender()` installs a host implementation. The callback must run after the relevant render pass has committed. It should not be replaced with an arbitrary timeout whose delay merely appears to work on one device.\n\nThe layout pipeline follows a specific order:\n\n```text title=\"Rendering contract\"\nsnapshot old bounds\n→ commit the DOM change\n→ finish pending mounts\n→ measure new bounds\n→ settle projection\n```\n\n`snapshotAll()` captures projection state; `requestSettle()` requests the coordinated post-render measurement; `afterSettle()` schedules work after that pipeline. `layoutChange()` is the ordinary application-facing wrapper for a state change outside an observing layout group. `instantLayoutTransition()` is a special control for landing a layout update without animation.\n\n## Detecting Integration Failures\n\n`layoutLoopDetected()` and `resetLayoutLoopGuard()` support diagnostics and test cleanup. The guard detects a burst of repeated settlement without an intervening browser frame. It keeps the page responsive enough to diagnose the problem, but a tripped guard still means the application or adapter has a feedback loop.\n\nA common trigger is assigning a tracked property unconditionally from a per-frame callback, which causes another render, another measurement, and another callback. Guard meaningful state changes and let MotionValues carry continuous visual values.\n\nTest a new adapter with nested motion elements, shared layout, an exiting child, and interruption. A single successful opacity animation does not validate mount ordering or projection. The existing fidelity and contract suites are the relevant evidence because they exercise the temporal behavior that a host integration can silently change.\n\n## Hosting Participants\n\nA component that coordinates many motion elements at once, such as a choreography region or a shared-element transition, is a participant host. It implements `ParticipantHost`, renders `data-motion-host` (the `PARTICIPANT_HOST_ATTRIBUTE`) on its root element, and installs itself on that element with `setParticipantHost()` from a modifier. `closestParticipantHost()` is the lookup a motion element runs when it mounts. The attribute belongs in the markup rather than in the modifier, because modifiers install children-first: a marked element whose host has not installed yet resolves to no host, never to an outer one.\n\nOnly a motion element with an `id` or a `role` joins, and it joins the nearest host. The host sees it as a `MotionParticipant`, with its element, VisualElement, identity, group and presence. `register` runs on mount. On teardown the element unregisters and then asks `claim`. A host that claims a leaving element owns its unmount, and calls `release()` when it is done with it. `<Choreo>` is a participant host.\n\nA host can also add its own named arguments to the modifier. It declares them by augmenting `ParticipantArgs` and registers each one with `defineParticipantArg()`. The modifier keeps those arguments away from the engine and hands each value to the host on every pass.\n\nA host whose work outlasts the engine's own animations, such as a timeline still running between steps, registers a `BusyProbe` with `registerBusyProbe()`. The probe answers `false` at rest or a short reason while busy, and `animationsSettled()` and `whatIsBusy()` consult it alongside the frameloop and the projection tree. Registration returns a remover. A probe over one host instance's state is removed in that instance's destructor, so a torn-down host never holds a test open; a probe over module-global state, such as Choreo's far-match barrier, may stay registered for the life of the page.\n\n## Keeping Leavers as Memories\n\nA host that keeps a removed element on screen while its exit plays, as `<Choreo>` does in its orphan layer, keeps it as a memory with `keepAsMemory(element, shown, insert)`. `insert` puts the element back in the document, and `shown` describes what the element showed before the render that removed it. A memory holds that frame, and nothing in it acts. Its stylesheet animations pause where they were or jump to their end, its scroll offsets are restored, and its backdrop filters are off. It is inert and hidden from assistive technology, and its HTML elements lose their ids, `autofocus` and form-control names. Its test hooks take `MEMORY_HOOK_SUFFIX`, so `data-test-title` becomes `data-test-title-memory`, and its root carries `MEMORY_ATTRIBUTE`, which is `data-motion-memory`. `<Presence @mode=\"snapshot\">` keeps a copy of its leaver the same way, so a leaver looks and behaves alike whichever layer let it go.\n\n`Shown` holds two lookups. `readAnimations(root)` returns the `ShownAnimation`s, the stylesheet animations each element was showing, and has to run while the elements are still in the document, before the render that removes them. An element loses its scroll offsets as soon as it leaves the document, so `trackScrolls(root)` records each element's `ScrollPosition` as it scrolls, with one capture-phase listener on the host's root; its `stop()` belongs in the host's destructor. A memory keeps its classes, so one put back in its parent still matches structural selectors such as `:has()`. A rule that should see only live content excludes `[data-motion-memory]`. Rules keyed on an id no longer reach it, so a host styles its leavers by class. Its SVG elements keep their ids, and a reference resolves to the first element with its id, so a memory parked before its replacement lends the replacement its SVG definitions. A memory is also a stacking context and the containing block of its positioned descendants.\n\n## API Coverage\n\n**glimmer-motion**: `keepAsMemory`, `readAnimations`, `trackScrolls`, `MEMORY_ATTRIBUTE`, `MEMORY_HOOK_SUFFIX`, `Shown`, `ShownAnimation`, `ScrollPosition`, `BusyProbe`, `registerBusyProbe`, `afterSettle`, `instantLayoutTransition`, `layoutLoopDetected`, `requestSettle`, `resetLayoutLoopGuard`, `snapshotAll`, `MotionEl`, `MotionModifier`, `flushPendingMounts`, `MotionNode`, `MotionParticipant`, `ParticipantArgs`, `ParticipantHost`, `closestParticipantHost`, `defineParticipantArg`, `PARTICIPANT_HOST_ATTRIBUTE`, `setParticipantHost`, `postRender`, `setPostRender`.\n\nRead the implementation: [`activity.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts), [`layout.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts), [`memory.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/memory.ts), [`motion.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts), [`node.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/node.ts), [`scheduler.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scheduler.ts).\n\n---\n\n[← Slow Motion and Playback Rate](core-tempo) · [All guides](README) · [Testing Time, Gates, and Settlement →](core-test-timing)\n";
|
|
904
904
|
//#endregion
|
|
905
905
|
//#region ../choreo-gallery/realm/docs/guides/core-input.md?raw
|
|
906
906
|
var core_input_default = "# Gestures and Scroll\n\nMotion can respond directly to pointer, keyboard, and viewport activity. Start with the built-in gesture arguments before adding component state for an effect that only lasts while a gesture is active.\n\n::card[../../demos/gestures]\n\n**Live example: A spring you can feel.** Hover, press, or keyboard-focus the globe. Enable Override, then adjust bounce and press scale to compare the response. [Open the demo](../../demos/gestures) to tune it with DialKit.\n\n## Hovering and Pressing\n\nA button can lift slightly on hover and compress when pressed.\n\n```gts title=\"app/components/save-button.gts\"\nimport { motion, to } from 'glimmer-motion';\n\n<template>\n <button\n type='button'\n {{motion whileHover=(to scale=1.04) whileTap=(to scale=0.96)}}\n >\n Save changes\n </button>\n</template>\n```\n\nThese arguments describe temporary targets. When the gesture ends, the element returns to its resting target. Keep the element a real button so its action remains available from the keyboard. Add a visible focus style in your application CSS.\n\n## Dragging an Element\n\nEnable `drag` to let the pointer move an element. Pass `'x'` or `'y'` to limit the gesture to one axis.\n\n```gts title=\"A Horizontal Drag Handle\"\nimport { motion } from 'glimmer-motion';\n\n<template>\n <div {{motion drag='x'}}>Drag me horizontally</div>\n</template>\n```\n\nThis is a movement example, not a complete accessible slider. If dragging changes application data, provide buttons or another keyboard interaction for the same action. For list ordering, the library also provides `ReorderGroup` and `ReorderItem`; see the [reorder list demo](../../demos/reorder).\n\n## Responding to the Viewport\n\n`whileInView` supplies a target while an element is visible. For effects tied continuously to scrolling, use the library's scroll APIs rather than writing a tracked property on every frame.\n\nMotion values hold frequently changing values without making Glimmer rerender for each update. The [pointer follower](../../demos/pointer) and [scroll demo](../../demos/parallax) show this distinction in practice.\n\nKeep essential information readable without animation. The next guide covers [reduced motion and testing](core-testing).\n\n## Designing an Input Contract\n\nBefore tuning the response, decide what the gesture means. A hover may preview an action; a press may confirm that the control received input; a drag may select a different resting position. The action should remain available through an appropriate keyboard or discrete-control path. Test a canceled press, movement beyond a drag boundary, and a second gesture before the first spring settles. The dedicated dragging, drag-handle, reorder, and scroll guides describe the corresponding ownership and cleanup rules. They also explain why a transformed parent needs coordinate correction and why every pointer sample should not become a full component render.\n\n---\n\n[← Animating Layout](core-layout) · [All guides](README) · [Accessibility and Testing →](core-testing)\n";
|
|
@@ -915,7 +915,7 @@ var core_motion_values_default = "# Motion Values and Derived Values\n\nContinuo
|
|
|
915
915
|
var core_page_transitions_default = "# Page Transitions and Live Crossings\n\nNavigation can preserve context by connecting the previous page to the next. The library supports browser view transitions through `animateView` and `viewTransition`, as well as live crossings through Choreo. They solve related problems with different rendering behavior, so choose based on whether the content must remain interactive and animated during the transition.\n\n::card[../../demos/crossing]\n\n**Live example: Page Transitions and Live Crossings.** Change scenes while the live content is still moving. [Open the demo](../../demos/crossing) to tune it with DialKit.\n\n## Understanding the Snapshot Boundary\n\nA browser view transition captures representations of the old and new page. This is useful for a static page change, but the captured content does not continue behaving like the original controls, canvas, or video during the transition. The repository therefore uses layout motion or a live Choreo crossing when the moving content must remain live.\n\n`viewTransition` wraps the update in the browser mechanism. `animateView` adds a builder for controlling the transition animations. Read their exported `ViewTransitionOptions`, `ViewTransitionBuilder`, and `ViewTransitionUpdate` contracts when integrating with a router. The update callback is the state or route change that produces the new view; it should not be a second independent animation scheduler.\n\n## Keeping Identity Stable\n\nA shared element needs a consistent identity on both pages and compatible geometry. Decide what is genuinely the same subject: a gallery stage and its expanded demo can share identity, while a row and a trash button are different subjects. The latter needs a destination beacon rather than a shared-element morph.\n\nFor live navigation, put the changing outlet inside a persistent region:\n\n```gts title=\"Component template excerpt\"\nimport { Choreo } from '@cardstack/choreo';\nimport { spring } from 'glimmer-motion';\nconst flight = spring({ stiffness: 260, damping: 30 });\n\n<template>\n <Choreo @route={{true}} @scroll='top' as |c|>\n {{outlet}}\n <c.Crossing @spring={{flight}} />\n </Choreo>\n</template>\n```\n\nThe region applies scroll intent before measuring the arriving layout. That ordering matters: measuring the new page at one scroll position and then jumping the window produces a flight toward the wrong destination.\n\n## Reviewing Navigation\n\nTest forward navigation, back navigation, repeated clicks during the move, and a destination whose content takes time to mount. Focus should land at an appropriate heading or control, and reduced-motion settings should preserve the navigation's meaning. Avoid launching entrance animations underneath the crossing if they compete with the shared subject's movement; the arming guide explains how a host can coordinate that boundary.\n\nA successful navigation is more than a smooth camera-like move. The departing view must release ownership, the arriving controls must be usable, and no orphaned element should keep intercepting input after the transition finishes. Test those outcomes explicitly instead of judging only a recording of the first successful click.\n\n## API Coverage\n\n**glimmer-motion**: `ViewTransitionBuilder`, `ViewTransitionOptions`, `ViewTransitionUpdate`, `animateView`, `viewTransition`.\n\nRead the implementation: [`view-transition.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts).\n\n---\n\n[← Motion Configuration and Reduced Motion](core-config) · [All guides](README) · [Slow Motion and Playback Rate →](core-tempo)\n";
|
|
916
916
|
//#endregion
|
|
917
917
|
//#region ../choreo-gallery/realm/docs/guides/core-presence.md?raw
|
|
918
|
-
var core_presence_default = "# Entering and Leaving\n\nA normal conditional removes an element as soon as its condition changes. An exit animation needs the element to stay in the document a little longer. `Presence` keeps a leaving item mounted until its animation finishes.\n\n::card[../../demos/presence]\n\n**Live example: Three ways to leave.** Use the example’s controls to compare how arrivals and departures overlap. [Open the demo](../../demos/presence) to tune it with DialKit.\n\n## Animating a List\n\nSuppose a parent component passes a list of notifications as `@messages`. Each message has a stable `id` and a `text` value.\n\n```gts title=\"app/components/message-list.gts\"\nimport type { TOC } from '@ember/component/template-only';\nimport { motion, Presence, to } from 'glimmer-motion';\n\ntype Message = { id: string; text: string };\ninterface Signature {\n Args: { messages: Message[] };\n}\n\nconst messageKey = (message: Message) => message.id;\n\n<template>\n <ul>\n <Presence @items={{@messages}} @key={{messageKey}} as |message handle|>\n <li\n {{motion\n presence=handle\n initial=(to opacity=0 y=8)\n animate=(to opacity=1 y=0)\n exit=(to opacity=0 y=-8)\n }}\n >\n {{message.text}}\n </li>\n </Presence>\n </ul>\n</template> satisfies TOC<Signature>;\n```\n\nThe block yields both the message and a presence handle. Passing that handle to `presence` connects the element's exit animation to the item's lifetime. Removing a message from the array now fades it out before removing its element.\n\n## Keeping Identity Stable\n\nThe key identifies the message across updates. Use a persistent ID rather than an array index. Otherwise, removing the first message can make every later message appear to have changed identity.\n\nRead the label from the yielded `message`, as this example does. A leaving Glimmer block can render again while its exit is running. Reading its text from a selection that has already changed can replace the old label during the exit.\n\n## Choosing an Order\n\nThe default `sync` mode lets arrivals and departures animate together. `wait` holds the arriving item until the departure finishes. `popLayout` removes the leaving item from layout immediately so its siblings can close the gap.\n\nCompare these behaviors in the [presence modes demo](../../demos/presence). If you need to order exits, layout movement, and entrances across a whole region, use [a Choreo timeline](interactive-timelines).\n\n## Testing Replacement and Teardown\n\nGive each item a stable key so the presence model can distinguish a changed item from a new one. The block yields the retained item separately from its PresenceHandle, which exposes whether it is still present; render departure content from that retained item. Test replacing the selected item while the prior one is still leaving, not only removing the final item from an otherwise empty list. Confirm that the onExitComplete callback follows the intended exit lifecycle and that teardown releases the retained DOM. Nested presence and propagation should be chosen deliberately so a parent departure does not silently suppress an inner exit that the design depends on.\n\n## API Coverage\n\n**glimmer-motion**: `Presence`, `PresenceHandle`.\n\nRead the implementation: [`presence.gts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/presence.gts), [`presence-types.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/presence-types.ts).\n\n---\n\n[← Animating an Element](core-elements) · [All guides](README) · [Animating Layout →](core-layout)\n";
|
|
918
|
+
var core_presence_default = "# Entering and Leaving\n\nA normal conditional removes an element as soon as its condition changes. An exit animation needs the element to stay in the document a little longer. `Presence` keeps a leaving item mounted until its animation finishes.\n\n::card[../../demos/presence]\n\n**Live example: Three ways to leave.** Use the example’s controls to compare how arrivals and departures overlap. [Open the demo](../../demos/presence) to tune it with DialKit.\n\n## Animating a List\n\nSuppose a parent component passes a list of notifications as `@messages`. Each message has a stable `id` and a `text` value.\n\n```gts title=\"app/components/message-list.gts\"\nimport type { TOC } from '@ember/component/template-only';\nimport { motion, Presence, to } from 'glimmer-motion';\n\ntype Message = { id: string; text: string };\ninterface Signature {\n Args: { messages: Message[] };\n}\n\nconst messageKey = (message: Message) => message.id;\n\n<template>\n <ul>\n <Presence @items={{@messages}} @key={{messageKey}} as |message handle|>\n <li\n {{motion\n presence=handle\n initial=(to opacity=0 y=8)\n animate=(to opacity=1 y=0)\n exit=(to opacity=0 y=-8)\n }}\n >\n {{message.text}}\n </li>\n </Presence>\n </ul>\n</template> satisfies TOC<Signature>;\n```\n\nThe block yields both the message and a presence handle. Passing that handle to `presence` connects the element's exit animation to the item's lifetime. Removing a message from the array now fades it out before removing its element.\n\n## Keeping Identity Stable\n\nThe key identifies the message across updates. Use a persistent ID rather than an array index. Otherwise, removing the first message can make every later message appear to have changed identity.\n\nRead the label from the yielded `message`, as this example does. A leaving Glimmer block can render again while its exit is running. Reading its text from a selection that has already changed can replace the old label during the exit.\n\n## Choosing an Order\n\nThe default `sync` mode lets arrivals and departures animate together. `wait` holds the arriving item until the departure finishes. `popLayout` removes the leaving item from layout immediately so its siblings can close the gap. `snapshot` tears the leaving block down with the render that removes it, and plays its exit on a static, inert copy of its last frame, pinned where that frame showed it. Use it when the leaver's content comes from state that has already moved on, such as a component's caller blocks, which a live leaver would re-render from.\n\nCompare these behaviors in the [presence modes demo](../../demos/presence). If you need to order exits, layout movement, and entrances across a whole region, use [a Choreo timeline](interactive-timelines).\n\n## Testing Replacement and Teardown\n\nGive each item a stable key so the presence model can distinguish a changed item from a new one. The block yields the retained item separately from its PresenceHandle, which exposes whether it is still present; render departure content from that retained item. Test replacing the selected item while the prior one is still leaving, not only removing the final item from an otherwise empty list. Confirm that the onExitComplete callback follows the intended exit lifecycle and that teardown releases the retained DOM. Nested presence and propagation should be chosen deliberately so a parent departure does not silently suppress an inner exit that the design depends on.\n\n## API Coverage\n\n**glimmer-motion**: `Presence`, `PresenceHandle`.\n\nRead the implementation: [`presence.gts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/presence.gts), [`presence-types.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/presence-types.ts).\n\n---\n\n[← Animating an Element](core-elements) · [All guides](README) · [Animating Layout →](core-layout)\n";
|
|
919
919
|
//#endregion
|
|
920
920
|
//#region ../choreo-gallery/realm/docs/guides/core-reorder-grid.md?raw
|
|
921
921
|
var core_reorder_grid_default = "# Reordering a Wrapped Grid\n\nA reorderable grid asks the reader to follow one item while several neighbours change places. The Reorder grid example uses distinct covers and colours so the movement communicates which item was moved. Your goal is to keep the selected cover attached to the gesture while the collection's order becomes real application state.\n\n::card[../../demos/grid]\n\n**Live example: Reordering a Wrapped Grid.** Drag diagonally across a row boundary, reverse, and release. Compare Playful pickup and Precise pickup while following one cover's colour. [Open the demo](../../demos/grid) to tune it with DialKit.\n\n## Let values carry identity\n\nReorderGroup receives the ordered values and reports a new order through its callback. Each ReorderItem represents one stable value. Keep the same identities when moving between rows. An array index describes a position, which is exactly the thing this interaction is changing; it is therefore the wrong identity for a cover with its own state.\n\nA wrapped grid uses both axes. The example's xy mode lets a gesture cross a row boundary while neighbours project into their new positions. The final order should be understandable without the animation. Check the values your application stores rather than relying on the order in which elements happen to appear during a drag.\n\n## Separate pickup from displacement\n\nThe grabbed cover has a whileDrag treatment. Rotation and scale make it readable as the active item, while the group transition moves the surrounding covers. Those are distinct design choices. A lively pickup does not require every neighbour to bounce dramatically, and a precise pickup can still use gentle settlement.\n\nCompare Playful pickup with Precise pickup, then edit the rotation alone. Drag diagonally, stop near a row boundary, reverse direction, and release. The selected cover should retain its identity throughout. Try the same sequence after resizing the viewport, because wrapping is determined by actual layout rather than an assumed column count.\n\n## Integrate with a real collection\n\nIf a cover contains a link, text field or menu, decide where dragging is allowed to start. A separate handle can preserve normal interaction with those controls. Read [drag handles](core-drag-handles) before making the entire cover a gesture surface.\n\nRemoval is a separate lifetime question. [Presence](core-presence) can retain a departing item, but the values passed to the group must still represent the application's intended order. Check rapid removal and reorder together before assuming they compose correctly. Also preserve a non-drag way to change order when the product needs keyboard operation.\n\n---\n\n[← Testing Geometry, Identity, and Cleanup](core-test-geometry) · [All guides](README) · [Moving a Shared Selection Marker →](core-shared-layout)\n";
|
|
@@ -945,7 +945,7 @@ var core_targets_default = "# Targets, Styles, and Property Ownership\n\nAn anim
|
|
|
945
945
|
var core_tempo_default = "# Slow Motion and Playback Rate\n\nSlow motion is useful for judging a transition, but there are two different controls that can produce it. The binding's global tempo scales transitions when they start. A Choreo run's speed changes a particular running clock. Confusing those controls can make a tuning panel appear to work while changing the wrong part of the experience.\n\n::card[../../demos/path]\n\n**Live example: Slow Motion and Playback Rate.** Change Time Scale and replay to inspect the stroke at the new tempo. [Open the demo](../../demos/path) to tune it with DialKit.\n\n## Scaling Future Transitions\n\n`setMotionSpeed()` takes a duration divisor. A value of five makes newly started transitions take five times as long; one restores normal timing. Despite the name, a larger argument is slower. `motionSpeed()` returns the current divisor and `onMotionSpeed()` subscribes to changes.\n\n```ts title=\"Component logic excerpt\"\nimport { motionSpeed, onMotionSpeed, setMotionSpeed } from 'glimmer-motion';\n\nconst previous = motionSpeed();\nconst stop = onMotionSpeed((divisor) => console.log(divisor));\nsetMotionSpeed(5);\n// Trigger the interaction being inspected.\n// When this tuning session ends:\nstop();\nsetMotionSpeed(previous);\n```\n\nThe scale is applied before the engine receives a transition. It does not retime an animation that has already started. Replay the interaction after editing the setting if you want to compare its full response. The playground remounts a demo where necessary to provide that explicit replay boundary.\n\n## Retiming What Is Already Running\n\nA transition is read when an animation starts, so an edited `transition` whose target is unchanged waits for the next animation: a running spring keeps its old stiffness and an infinite loop keeps its old duration. That is the right rule for an application, and the wrong one for a tuning panel, where the edit is the thing being judged. `retime(root)` asks for the edit now. Call it after the render that delivered the new transitions.\n\n```ts title=\"Component logic excerpt\"\nimport { postRender, retime } from 'glimmer-motion';\n\n// after writing the panel's values into tracked state\npostRender(() => retime(stageElement));\n```\n\nEach element at or under `root` whose timing has changed since it mounted or was last retimed restarts the values still animating, toward the targets they already have, from where they stand. A value past its delay does not wait for it again. An infinite loop goes back to the same point of its turn, including which way a reversing loop is heading and any repeat delay, so it changes speed without a jump. A value that has finished stays where it settled, and an element whose timing is unchanged, or that is leaving, is not touched. Choreo needs no call: an edited timeline replaces its run, and the new run carries each ambient loop on from where it was. The gallery's lab does both on every edit, which is why moving a control changes a running demo at once.\n\n## Preserving the Shape\n\n`scaleTransition(transition, divisor)` provides the same calculation directly. Time-valued properties are multiplied, including per-value transition overrides. For a physical spring, mass and damping are adjusted so the response slows while retaining its shape. Simply multiplying an arbitrary spring duration would not express the same physical configuration.\n\nAvoid applying the divisor twice. A Choreo step already passes through the library's timing path, so an editor should not also multiply its seconds before handing them to Choreo. Double scaling makes a requested five-times preview last twenty-five times as long and can hide a sequencing mistake behind apparently deliberate pauses.\n\n## Controlling a Run\n\nUse the run's `speed` or `choreo-player.setPlaybackRate()` when the requirement is to control an owned transport. That rate has the ordinary playback interpretation: a larger positive rate is faster. It belongs to a selected set of runs rather than every future transition in the document.\n\nRestore global tempo when a temporary inspection tool is destroyed. Otherwise a demo opened later can inherit an unexplained slow response. Verify the normal-speed result after tuning and keep the user's reduced-motion preference separate from debugging tempo. One is an accessibility policy; the other is a temporary way to inspect the same authored motion more closely.\n\n## API Coverage\n\n**glimmer-motion**: `motionSpeed`, `onMotionSpeed`, `retime`, `scaleTransition`, `setMotionSpeed`.\n\nRead the implementation: [`speed.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/speed.ts).\n\n---\n\n[← Page Transitions and Live Crossings](core-page-transitions) · [All guides](README) · [Host Adapters and the Render Pipeline →](core-host)\n";
|
|
946
946
|
//#endregion
|
|
947
947
|
//#region ../choreo-gallery/realm/docs/guides/core-test-geometry.md?raw
|
|
948
|
-
var core_test_geometry_default = "# Testing Geometry, Identity, and Cleanup\n\nA moving interface can reach the correct endpoint while stretching its text, flashing an old skin, or losing pointer input during the journey. Geometry and ownership assertions make those failures observable. The test-support helpers account for the way QUnit positions its fixture and the way Choreo temporarily retains departing elements.\n\n## Measuring the Fixture\n\n`bounds(element)` returns the element's rectangle relative to the test container. A raw viewport rectangle includes QUnit's own placement, which can change as the runner executes. `shape(element)` composes the linear transform through ancestors, and `boundsAndShape()` combines both views.\n\n```ts title=\"Component logic excerpt\"\nimport {
|
|
948
|
+
var core_test_geometry_default = "# Testing Geometry, Identity, and Cleanup\n\nA moving interface can reach the correct endpoint while stretching its text, flashing an old skin, or losing pointer input during the journey. Geometry and ownership assertions make those failures observable. The test-support helpers account for the way QUnit positions its fixture and the way Choreo temporarily retains departing elements.\n\n## Measuring the Fixture\n\n`bounds(element)` returns the element's rectangle relative to the test container. A raw viewport rectangle includes QUnit's own placement, which can change as the runner executes. `shape(element)` composes the linear transform through ancestors, and `boundsAndShape()` combines both views.\n\n```ts title=\"Component logic excerpt\"\nimport {\n animationsSettled,\n bounds,\n live,\n shape,\n} from 'glimmer-motion/test-support';\n\nawait animationsSettled();\nconst card = live('[role=\"article\"]');\nassert.ok(card);\nassert.strictEqual(bounds(card!).width, 240);\nassert.deepEqual(shape(card!), { a: 1, b: 0, c: 0, d: 1 });\n```\n\nUse expected dimensions appropriate to the fixture. A shape assertion is useful when the contract says text must not be stretched by an ancestor's layout scale. Reading only the child's inline transform cannot detect all inherited distortion.\n\n## Selecting the Live Representation\n\nWhile an exit plays, a leaver can stay on screen as a memory: the copy a `<Presence @mode=\"snapshot\">` fades, or a departing skin in a Choreo orphan layer, which can share an identity with the arriving live element. A memory is inert, so a click the test sends it does nothing, and its box is where the old scene stood. Its test hooks carry a suffix, so a selector made of test hooks, such as `[data-test-card]`, finds only the live element, and a test that means the leaver names it as `[data-test-card-memory]`. Any other selector, such as a class, a role or a tag, can match the memory too, and a bare querySelector may answer with it first. `live()` and `liveAll()`, from `glimmer-motion/test-support` and re-exported by `@cardstack/choreo/test-support`, skip memories for those selectors.\n\nA raised participant is still live and should remain eligible. This is why excluding every element outside its original DOM position would be incorrect. Test the interaction through the same usable representation a person should see.\n\n## Inspecting Motion and Cleanup\n\n`velocityOf()` samples movement over frames when momentum is part of the contract. The Choreo invariants come from `@cardstack/choreo/test-support`: `orphanCount()` reports retained departing elements, and `strandedTransforms()` looks for unexplained transforms left after settlement. Some resting transforms are legitimate: a camera can remain zoomed, and a shared-layout follower can remain projected onto its active lead.\n\nUse these helpers at meaningful phases. Measure just before interruption, immediately after the new pass, and after settlement. A final orphan count of zero does not prove that the first arriving frame was correct, just as a good midpoint does not prove teardown succeeded.\n\n## Testing the Real Space\n\nInclude an external scale and a clipped parent in fixtures for spatial or elevated movement. Check scroll containers independently from the window. Reproduce expanded content sizes so a layout policy that works for a square card does not silently fail for a tall editor. Small focused fixtures make the failed invariant clear, while a gallery soak can then check that the same rules survive realistic repeated interaction.\n\n## API Coverage\n\n**glimmer-motion/test-support**: `Box`, `bounds`, `shape`, `boundsAndShape`, `live`, `liveAll`, `velocityOf`.\n\n**@cardstack/choreo/test-support**: `orphanCount`, `live`, `liveAll`, `strandedTransforms`.\n\nRead the implementation: [`test-support/index.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts), [`choreo/test-support/index.ts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts).\n\n---\n\n[← Testing Time, Gates, and Settlement](core-test-timing) · [All guides](README) · [Reordering a Wrapped Grid →](core-reorder-grid)\n";
|
|
949
949
|
//#endregion
|
|
950
950
|
//#region ../choreo-gallery/realm/docs/guides/core-test-timing.md?raw
|
|
951
951
|
var core_test_timing_default = "# Testing Time, Gates, and Settlement\n\nAnimation tests need to distinguish a rendered application from a settled animation. A click can finish its Ember update while a spring is still moving. Conversely, an interruption test must deliberately interact before motion ends. The test-support entrypoint gives each test an explicit choice instead of hiding all animation behind the framework's default waiter.\n\n## Setting Up Motion Tests\n\nImport from `glimmer-motion/test-support`. Call `setupMotion(hooks)` alongside the usual rendering-test setup. It resets document-level motion state between tests and reports a layout-loop guard failure with a useful explanation rather than leaving the runner to time out.\n\nA suite that renders `<Choreo>` calls `setupChoreo(hooks)` from `@cardstack/choreo/test-support` instead. It is the same setup, and it also clears Choreo's document-wide state: the beacon registry, the far-match barrier, and the gesture samples. One setup call covers both layers.\n\n```ts title=\"Component logic excerpt\"\nimport { setupMotion, animationsSettled } from 'glimmer-motion/test-support';\n\nmodule('animated notice', function (hooks) {\n setupRenderingTest(hooks);\n setupMotion(hooks);\n test('finishes its exit', async function (assert) {\n // Render the fixture and trigger its removal.\n await animationsSettled();\n assert.dom('[data-test-notice]').doesNotExist();\n });\n});\n```\n\nThis excerpt assumes QUnit and Ember test helpers are imported by the test file. The important boundary is the explicit wait after the action whose settled result is being asserted.\n\n## Waiting for the Right Condition\n\n`animationsSettled()` waits until motion is idle on consecutive checks, accounting for a completion that triggers another render or releases a leaving element. It accepts a timeout for diagnosing genuinely stuck work. `isMotionIdle()` and `whatIsBusy()` provide the underlying diagnostic view.\n\nDo not use a fixed sleep. Changing a spring configuration can make that sleep either too short or unnecessarily long. Do not globally force animations to complete instantly for the interruption suite either: doing so removes the behavior the test is supposed to observe.\n\n## Driving a Score\n\nThe score drivers come from `@cardstack/choreo/test-support`. `seekTo(seconds)` pauses and positions live test runs, producing a still for assertions. `advanceGate()` releases parked gates and waits for the released segment. A parked gate and a standing annotation count as settled states even though the score remains available for later input.\n\nFor an interruption test, trigger the second action before calling animationsSettled. Inspect intermediate geometry or velocity where the contract requires continuity. Then wait and assert the final state and cleanup.\n\n## Restoring the Test Environment\n\n`resetMotion()` clears global registries and temporary configuration. Use the setup helper for ordinary cases so cleanup remains consistent. A layer built on glimmer-motion that keeps its own document-wide state adds its reset with `registerMotionReset(reset)`, and `resetMotion()` runs it after glimmer-motion's own; Choreo's test-support adds its resets this way when it loads. A test that leaves the projection root blocked or a beacon registered can make the next test fail for reasons unrelated to its own code. Reliable tests should pass individually and in the suite without relying on a fresh browser for every fixture.\n\n## API Coverage\n\n**glimmer-motion/test-support**: `isMotionIdle`, `whatIsBusy`, `SettleOptions`, `animationsSettled`, `setupMotion`, `resetMotion`, `registerMotionReset`.\n\n**@cardstack/choreo/test-support**: `setupChoreo`, `advanceGate`, `seekTo`.\n\nRead the implementation: [`activity.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts), [`test-support/index.ts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts), [`choreo/test-support/index.ts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts).\n\n---\n\n[← Host Adapters and the Render Pipeline](core-host) · [All guides](README) · [Testing Geometry, Identity, and Cleanup →](core-test-geometry)\n";
|
|
@@ -10,11 +10,11 @@ import "./template-factory-ds9s0u8l.js";
|
|
|
10
10
|
import { t as templateOnly } from "./template-only-6nVzLWF-.js";
|
|
11
11
|
import "./template-C81fYDrq.js";
|
|
12
12
|
import { M as waitUntil, T as settled, d as click, h as render } from "./dist-BOAdzfkP.js";
|
|
13
|
-
import "./src-
|
|
14
|
-
import { t as MotionModifier } from "./motion-
|
|
15
|
-
import { t as Presence } from "./presence-
|
|
13
|
+
import "./src-CbBcj3xm.js";
|
|
14
|
+
import { t as MotionModifier } from "./motion-BiMvMS08.js";
|
|
15
|
+
import { t as Presence } from "./presence-BKkR2au7.js";
|
|
16
16
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
17
|
-
import { a as setupChoreoGalleryTest, r as frames, s as sleep } from "./choreo-gallery-stage-
|
|
17
|
+
import { a as setupChoreoGalleryTest, r as frames, s as sleep } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
18
18
|
//#region tests/integration/choreo-gallery-build-order-test.gts
|
|
19
19
|
/**
|
|
20
20
|
* The Build Order demo: as a popLayout leaver, beside a noisy neighbour, and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
3
|
-
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-
|
|
3
|
+
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
4
4
|
//#region tests/integration/choreo-gallery-compositor-test.ts
|
|
5
5
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
6
6
|
/** A run that records the transport ops the host performs on it. */
|
|
@@ -5,7 +5,7 @@ import { t as HostModeService } from "./host-mode-service-Bm-AlM1Z.js";
|
|
|
5
5
|
import { M as waitUntil, a as find, d as click, i as findAll, k as visit, l as triggerEvent, o as waitFor } from "./dist-BOAdzfkP.js";
|
|
6
6
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
7
7
|
import { F as setupLocalIndexing, I as setupOnSave, ct as setupApplicationTest, j as setupAcceptanceTestRealm, mt as setupAuthEndpoints, st as visitOperatorMode, t as setupMockMatrix, z as setupUserSubscription } from "./mock-matrix-Ci72h1Wf.js";
|
|
8
|
-
import { a as choreoGalleryRealmOf } from "./choreo-gallery-
|
|
8
|
+
import { a as choreoGalleryRealmOf } from "./choreo-gallery-DZm1KZ20.js";
|
|
9
9
|
//#region tests/acceptance/choreo-gallery-cover-test.gts
|
|
10
10
|
/**
|
|
11
11
|
* A demo card opened from the Choreo gallery covers the gallery without
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { T as settled, a as find } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { t as animationsSettled } from "./test-support-
|
|
5
|
-
import {
|
|
6
|
-
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames, t as $ } from "./choreo-gallery-stage-
|
|
4
|
+
import { t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
5
|
+
import { a as strandedTransforms, n as orphanCount } from "./test-support-xTaMuaOA.js";
|
|
6
|
+
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames, t as $ } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
7
7
|
//#region tests/integration/choreo-gallery-crossing-stage-test.gts
|
|
8
8
|
/**
|
|
9
9
|
* Crossing: three looping slides, a cut at any phase, and the matching tile
|
|
@@ -61,20 +61,20 @@ var Crossing;
|
|
|
61
61
|
await settled();
|
|
62
62
|
assert.strictEqual(root.dataset.phase, "crossing", "a cut arms the flight");
|
|
63
63
|
assert.strictEqual(root.dataset.slide, "1", "Ember is the destination");
|
|
64
|
-
const leavingTitle = document.querySelector("[data-choreo-orphans] [data-test-title]");
|
|
64
|
+
const leavingTitle = document.querySelector("[data-choreo-orphans] [data-test-title-memory]");
|
|
65
65
|
assert.ok(leavingTitle, "the leaving title rides the flight as a skin (homepage swap=during)");
|
|
66
66
|
const leavingTitleWidth = leavingTitle?.getBoundingClientRect().width ?? 0;
|
|
67
67
|
assert.true(leavingTitleWidth < stage().width * .55, `the flying Tide title stays a word (${leavingTitleWidth.toFixed(0)} in ${stage().width.toFixed(0)})`);
|
|
68
|
-
assert.ok(document.querySelector("[data-choreo-orphans] [data-test-chip]"), "the leaving chip rides the flight as a skin");
|
|
69
|
-
assert.ok(document.querySelector("[data-choreo-orphans] [data-test-kicker]"), "the leaving kicker rides the flight as a skin");
|
|
70
|
-
assert.ok(document.querySelector("[data-choreo-orphans] [data-test-inset]"), "the inset caption is a counterpart inside the plate — it orphans, the plate does not");
|
|
71
|
-
assert.strictEqual(document.querySelectorAll("[data-choreo-orphans] [data-test-hero]").length, 0, "the beige plate is the same node — it moves, it is not a counterpart skin");
|
|
72
|
-
assert.strictEqual(document.querySelectorAll("[data-choreo-orphans] [data-test-rule]").length, 0, "the hairline is kept — it Moves, it is not a skin");
|
|
68
|
+
assert.ok(document.querySelector("[data-choreo-orphans] [data-test-chip-memory]"), "the leaving chip rides the flight as a skin");
|
|
69
|
+
assert.ok(document.querySelector("[data-choreo-orphans] [data-test-kicker-memory]"), "the leaving kicker rides the flight as a skin");
|
|
70
|
+
assert.ok(document.querySelector("[data-choreo-orphans] [data-test-inset-memory]"), "the inset caption is a counterpart inside the plate — it orphans, the plate does not");
|
|
71
|
+
assert.strictEqual(document.querySelectorAll("[data-choreo-orphans] [data-test-hero-memory]").length, 0, "the beige plate is the same node — it moves, it is not a counterpart skin");
|
|
72
|
+
assert.strictEqual(document.querySelectorAll("[data-choreo-orphans] [data-test-rule-memory]").length, 0, "the hairline is kept — it Moves, it is not a skin");
|
|
73
73
|
assert.dom("[data-test-hero] [data-test-shot]").exists("the shot stays inside the flying plate (not a participant)");
|
|
74
74
|
assert.dom("[data-test-hero] [data-test-clip]").exists("the <video> stays inside the flying plate");
|
|
75
75
|
assert.dom("[data-test-hero] [data-test-scroll]").exists("the scroll pane stays inside the flying plate");
|
|
76
76
|
assert.dom("[data-test-hero] [data-test-mark]").exists("the spinning mark stays inside the flying plate");
|
|
77
|
-
assert.strictEqual(document.querySelectorAll("[data-choreo-orphans] [data-test-cast]").length, 0, "shadow casters ride inside the kept plate — they dissolve, they do not orphan");
|
|
77
|
+
assert.strictEqual(document.querySelectorAll("[data-choreo-orphans] [data-test-cast-memory]").length, 0, "shadow casters ride inside the kept plate — they dissolve, they do not orphan");
|
|
78
78
|
await animationsSettled();
|
|
79
79
|
assert.strictEqual(root.dataset.phase, "looping", "loops resume on landing");
|
|
80
80
|
assert.dom("[data-test-title]").hasText("Ember");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
3
|
-
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-
|
|
3
|
+
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
4
4
|
//#region tests/integration/choreo-gallery-demos-alive-test.gts
|
|
5
5
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
6
6
|
function rest() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
3
|
-
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-
|
|
3
|
+
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
4
4
|
//#region tests/integration/choreo-gallery-drift-test.ts
|
|
5
5
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
6
6
|
var applied;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { a as find, d as click } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames } from "./choreo-gallery-stage-
|
|
4
|
+
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
5
5
|
//#region tests/integration/choreo-gallery-escort-test.gts
|
|
6
6
|
/**
|
|
7
7
|
* Escort — the acceptance page for the opened step vocabulary
|
|
@@ -4,9 +4,9 @@ import { M as waitUntil, a as find, d as click, o as waitFor } from "./dist-BOAd
|
|
|
4
4
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
5
5
|
import { F as setupLocalIndexing, M as setupCardLogs, P as setupIntegrationTestRealm, lt as setupRenderingTest, t as setupMockMatrix } from "./mock-matrix-Ci72h1Wf.js";
|
|
6
6
|
import { r as getService } from "./dist-CPfIHBla.js";
|
|
7
|
-
import {
|
|
7
|
+
import { i as setupChoreo } from "./test-support-xTaMuaOA.js";
|
|
8
8
|
import { vt as setupBaseRealm } from "./base-realm-B17zVqh6.js";
|
|
9
|
-
import { t as choreoGalleryContents } from "./choreo-gallery-
|
|
9
|
+
import { t as choreoGalleryContents } from "./choreo-gallery-DZm1KZ20.js";
|
|
10
10
|
import { t as renderCard } from "./render-component-B15Z0e2v.js";
|
|
11
11
|
//#region tests/integration/choreo-gallery-films-test.gts
|
|
12
12
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { d as click } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { a as setupChoreoGalleryTest, i as galleryInstance, n as GALLERY_DEMOS } from "./choreo-gallery-stage-
|
|
4
|
+
import { a as setupChoreoGalleryTest, i as galleryInstance, n as GALLERY_DEMOS } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
5
5
|
//#region tests/integration/choreo-gallery-filter-test.gts
|
|
6
6
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
7
7
|
/** the catalog: every linked demo, with the group it files under */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { T as settled } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { t as animationsSettled } from "./test-support-
|
|
5
|
-
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames } from "./choreo-gallery-stage-
|
|
4
|
+
import { t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
5
|
+
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
6
6
|
//#region tests/integration/choreo-gallery-fold-test.gts
|
|
7
7
|
/**
|
|
8
8
|
* The Fold demo's argument, asserted.
|
|
@@ -5,7 +5,7 @@ import { t as HostModeService } from "./host-mode-service-Bm-AlM1Z.js";
|
|
|
5
5
|
import { k as visit, o as waitFor } from "./dist-BOAdzfkP.js";
|
|
6
6
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
7
7
|
import { F as setupLocalIndexing, I as setupOnSave, ct as setupApplicationTest, j as setupAcceptanceTestRealm, mt as setupAuthEndpoints, t as setupMockMatrix, z as setupUserSubscription } from "./mock-matrix-Ci72h1Wf.js";
|
|
8
|
-
import { a as choreoGalleryRealmOf, i as choreoGalleryGuides, r as choreoGalleryGuidePages } from "./choreo-gallery-
|
|
8
|
+
import { a as choreoGalleryRealmOf, i as choreoGalleryGuides, r as choreoGalleryGuidePages } from "./choreo-gallery-DZm1KZ20.js";
|
|
9
9
|
import { t as getPageTitle } from "./test-support-C3PTOFHZ.js";
|
|
10
10
|
//#region tests/acceptance/choreo-gallery-guide-pages-test.gts
|
|
11
11
|
/**
|
|
@@ -13,9 +13,10 @@ import { r as provide } from "./dist-Ble0L9o7.js";
|
|
|
13
13
|
import { M as waitUntil, d as click, h as render, o as waitFor } from "./dist-BOAdzfkP.js";
|
|
14
14
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
15
15
|
import "./mock-matrix-Ci72h1Wf.js";
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
16
|
+
import { a as liveAll, i as live } from "./test-support-BOFeeYuE.js";
|
|
17
|
+
import "./test-support-xTaMuaOA.js";
|
|
18
|
+
import { i as choreoGalleryGuides, n as choreoGalleryGuideIndex } from "./choreo-gallery-DZm1KZ20.js";
|
|
19
|
+
import { a as setupChoreoGalleryTest, i as galleryInstance, n as GALLERY_DEMOS } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
19
20
|
//#region tests/integration/choreo-gallery-guides-test.gts
|
|
20
21
|
/**
|
|
21
22
|
* The guides, their links and the lab: a guide renders from the realm with
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { T as settled } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { t as animationsSettled } from "./test-support-
|
|
5
|
-
import { a as setupChoreoGalleryTest, l as trigger, o as setupStageViewport, r as frames, s as sleep, t as $ } from "./choreo-gallery-stage-
|
|
4
|
+
import { t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
5
|
+
import { a as setupChoreoGalleryTest, l as trigger, o as setupStageViewport, r as frames, s as sleep, t as $ } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
6
6
|
//#region tests/integration/choreo-gallery-hang-test.gts
|
|
7
7
|
/**
|
|
8
8
|
* Hang's argument, asserted: a throw is READ, and the reading is what puts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
3
|
-
import { t as choreoGalleryContents } from "./choreo-gallery-
|
|
4
|
-
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-
|
|
3
|
+
import { t as choreoGalleryContents } from "./choreo-gallery-DZm1KZ20.js";
|
|
4
|
+
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
5
5
|
//#region tests/integration/choreo-gallery-highlight-test.ts
|
|
6
6
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
7
7
|
var highlightSample;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { a as find, d as click, s as fillIn } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { t as animationsSettled } from "./test-support-
|
|
5
|
-
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames } from "./choreo-gallery-stage-
|
|
4
|
+
import { t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
5
|
+
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
6
6
|
//#region tests/integration/choreo-gallery-inline-edit-test.gts
|
|
7
7
|
/**
|
|
8
8
|
* The Inline Edit demo: a record read, then written.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { T as settled } from "./dist-BOAdzfkP.js";
|
|
3
|
-
import "./src-
|
|
3
|
+
import "./src-CbBcj3xm.js";
|
|
4
4
|
import { i as setMotionSpeed } from "./speed-bIo0tyrM.js";
|
|
5
5
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
6
|
-
import { t as animationsSettled } from "./test-support-
|
|
7
|
-
import {
|
|
8
|
-
import { a as setupChoreoGalleryTest, o as setupStageViewport, s as sleep } from "./choreo-gallery-stage-
|
|
6
|
+
import { t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
7
|
+
import { a as strandedTransforms, n as orphanCount } from "./test-support-xTaMuaOA.js";
|
|
8
|
+
import { a as setupChoreoGalleryTest, o as setupStageViewport, s as sleep } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
9
9
|
//#region tests/integration/choreo-gallery-interruption-test.gts
|
|
10
10
|
/**
|
|
11
11
|
* Rapid interruption, across every stage in the gallery.
|
|
@@ -9,11 +9,11 @@ import { t as templateOnly } from "./template-only-6nVzLWF-.js";
|
|
|
9
9
|
import "./template-C81fYDrq.js";
|
|
10
10
|
import { T as settled } from "./dist-BOAdzfkP.js";
|
|
11
11
|
import { t as LayoutGroup } from "./layout-group-BS0gklZp.js";
|
|
12
|
-
import "./src-
|
|
13
|
-
import { t as MotionModifier } from "./motion-
|
|
14
|
-
import { t as Presence } from "./presence-
|
|
12
|
+
import "./src-CbBcj3xm.js";
|
|
13
|
+
import { t as MotionModifier } from "./motion-BiMvMS08.js";
|
|
14
|
+
import { t as Presence } from "./presence-BKkR2au7.js";
|
|
15
15
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
16
|
-
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-
|
|
16
|
+
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
17
17
|
//#region tests/integration/choreo-gallery-lone-stack-test.gts
|
|
18
18
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
19
19
|
var keyOf = (item) => item.id;
|
|
@@ -5,7 +5,7 @@ import { t as HostModeService } from "./host-mode-service-Bm-AlM1Z.js";
|
|
|
5
5
|
import { M as waitUntil, T as settled, d as click, k as visit, o as waitFor, y as currentURL } from "./dist-BOAdzfkP.js";
|
|
6
6
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
7
7
|
import { F as setupLocalIndexing, I as setupOnSave, ct as setupApplicationTest, j as setupAcceptanceTestRealm, mt as setupAuthEndpoints, st as visitOperatorMode, t as setupMockMatrix, z as setupUserSubscription } from "./mock-matrix-Ci72h1Wf.js";
|
|
8
|
-
import { a as choreoGalleryRealmOf } from "./choreo-gallery-
|
|
8
|
+
import { a as choreoGalleryRealmOf } from "./choreo-gallery-DZm1KZ20.js";
|
|
9
9
|
//#region tests/acceptance/choreo-gallery-navigation-test.gts
|
|
10
10
|
/**
|
|
11
11
|
* Moving around the Choreo gallery is the host's: each tile is the demo
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { M as waitUntil, T as settled } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { a as setupChoreoGalleryTest, r as frames } from "./choreo-gallery-stage-
|
|
4
|
+
import { a as setupChoreoGalleryTest, r as frames } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
5
5
|
//#region tests/integration/choreo-gallery-playhead-transport-test.gts
|
|
6
6
|
/**
|
|
7
7
|
* The Playhead demo on `c.run` — the score is a <c.Sequence>, the presses
|
|
@@ -10,12 +10,12 @@ import { t as templateOnly } from "./template-only-6nVzLWF-.js";
|
|
|
10
10
|
import "./template-C81fYDrq.js";
|
|
11
11
|
import { M as waitUntil, d as click, h as render } from "./dist-BOAdzfkP.js";
|
|
12
12
|
import { rn as whatIsBusy, t as LayoutGroup } from "./layout-group-BS0gklZp.js";
|
|
13
|
-
import "./src-
|
|
14
|
-
import { t as MotionModifier } from "./motion-
|
|
15
|
-
import { t as Presence } from "./presence-
|
|
13
|
+
import "./src-CbBcj3xm.js";
|
|
14
|
+
import { t as MotionModifier } from "./motion-BiMvMS08.js";
|
|
15
|
+
import { t as Presence } from "./presence-BKkR2au7.js";
|
|
16
16
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
17
|
-
import "./test-support-
|
|
18
|
-
import { a as setupChoreoGalleryTest, c as stageWellStyle, o as setupStageViewport, s as sleep } from "./choreo-gallery-stage-
|
|
17
|
+
import "./test-support-BOFeeYuE.js";
|
|
18
|
+
import { a as setupChoreoGalleryTest, c as stageWellStyle, o as setupStageViewport, s as sleep } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
19
19
|
//#region tests/integration/choreo-gallery-poplayout-subtree-test.gts
|
|
20
20
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
21
21
|
var keyOf = (demo) => demo.slug;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { a as find, d as click } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { n as bounds, t as animationsSettled } from "./test-support-
|
|
5
|
-
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-
|
|
4
|
+
import { n as bounds, t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
5
|
+
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
6
6
|
//#region tests/integration/choreo-gallery-presence-modes-test.gts
|
|
7
7
|
/**
|
|
8
8
|
* What `sync` actually does to the layout — asserted, because it reads as a
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { M as waitUntil, c as triggerKeyEvent, d as click, f as focus } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { t as animationsSettled } from "./test-support-
|
|
5
|
-
import { a as setupChoreoGalleryTest, r as frames } from "./choreo-gallery-stage-
|
|
4
|
+
import { t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
5
|
+
import { a as setupChoreoGalleryTest, r as frames } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
6
6
|
//#region tests/integration/choreo-gallery-presentation-test.gts
|
|
7
7
|
/**
|
|
8
8
|
* Presentation — gates as presenter mode (packages/choreo-gallery/realm/docs/choreo-constructs.md §8.1).
|
|
@@ -6,11 +6,12 @@ import "./template-factory-ds9s0u8l.js";
|
|
|
6
6
|
import { t as templateOnly } from "./template-only-6nVzLWF-.js";
|
|
7
7
|
import "./template-C81fYDrq.js";
|
|
8
8
|
import { M as waitUntil, T as settled, d as click, h as render, o as waitFor } from "./dist-BOAdzfkP.js";
|
|
9
|
-
import "./src-
|
|
9
|
+
import "./src-CbBcj3xm.js";
|
|
10
10
|
import { n as closestMotionConfig } from "./motion-config-BbHByW3a.js";
|
|
11
11
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
12
|
+
import { a as liveAll, i as live } from "./test-support-BOFeeYuE.js";
|
|
13
|
+
import "./test-support-xTaMuaOA.js";
|
|
14
|
+
import { a as setupChoreoGalleryTest, l as trigger } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
14
15
|
//#region tests/integration/choreo-gallery-reduced-motion-test.gts
|
|
15
16
|
/**
|
|
16
17
|
* Reduced motion in the gallery: for a viewer whose system asks for it, a
|
|
@@ -6,9 +6,9 @@ import "./template-factory-ds9s0u8l.js";
|
|
|
6
6
|
import { t as templateOnly } from "./template-only-6nVzLWF-.js";
|
|
7
7
|
import { d as click } from "./dist-BOAdzfkP.js";
|
|
8
8
|
import { t as LayoutGroup } from "./layout-group-BS0gklZp.js";
|
|
9
|
-
import "./src-
|
|
9
|
+
import "./src-CbBcj3xm.js";
|
|
10
10
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
11
|
-
import { a as setupChoreoGalleryTest, r as frames } from "./choreo-gallery-stage-
|
|
11
|
+
import { a as setupChoreoGalleryTest, r as frames } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
12
12
|
//#region tests/integration/choreo-gallery-sheet-standalone-test.gts
|
|
13
13
|
/**
|
|
14
14
|
* Every distinct reading over a wall-clock window.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { d as click } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { t as animationsSettled } from "./test-support-
|
|
5
|
-
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-
|
|
4
|
+
import { t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
5
|
+
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
6
6
|
//#region tests/integration/choreo-gallery-sheet-test.gts
|
|
7
7
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
8
8
|
/** the sheet's own y, read off the element rather than off the props */ function offset(el) {
|
|
@@ -11,8 +11,9 @@ import { r as modifier } from "./dist-nMt-N14r.js";
|
|
|
11
11
|
import { M as waitUntil, d as click, h as render, o as waitFor } from "./dist-BOAdzfkP.js";
|
|
12
12
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
13
13
|
import { nt as provide } from "./mock-matrix-Ci72h1Wf.js";
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
14
|
+
import { a as liveAll, i as live } from "./test-support-BOFeeYuE.js";
|
|
15
|
+
import "./test-support-xTaMuaOA.js";
|
|
16
|
+
import { a as setupChoreoGalleryTest, n as GALLERY_DEMOS } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
16
17
|
//#region tests/integration/choreo-gallery-site-test.gts
|
|
17
18
|
/**
|
|
18
19
|
* The gallery site, whole: the gallery card as the realm serves it — every
|
|
@@ -11,9 +11,9 @@ import "./template-C81fYDrq.js";
|
|
|
11
11
|
import { h as render } from "./dist-BOAdzfkP.js";
|
|
12
12
|
import { F as setupLocalIndexing, M as setupCardLogs, P as setupIntegrationTestRealm, lt as setupRenderingTest, nt as provide, t as setupMockMatrix } from "./mock-matrix-Ci72h1Wf.js";
|
|
13
13
|
import { r as getService } from "./dist-CPfIHBla.js";
|
|
14
|
-
import {
|
|
14
|
+
import { i as setupChoreo } from "./test-support-xTaMuaOA.js";
|
|
15
15
|
import { vt as setupBaseRealm } from "./base-realm-B17zVqh6.js";
|
|
16
|
-
import { t as choreoGalleryContents } from "./choreo-gallery-
|
|
16
|
+
import { t as choreoGalleryContents } from "./choreo-gallery-DZm1KZ20.js";
|
|
17
17
|
import { t as renderCard } from "./render-component-B15Z0e2v.js";
|
|
18
18
|
//#region tests/helpers/choreo-gallery-stage.gts
|
|
19
19
|
/** a card instance document in the gallery realm, as much as the tests read */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { M as waitUntil, c as triggerKeyEvent, d as click, f as focus } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { t as animationsSettled } from "./test-support-
|
|
5
|
-
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-
|
|
4
|
+
import { t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
5
|
+
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
6
6
|
//#region tests/integration/choreo-gallery-stage-keyboard-test.gts
|
|
7
7
|
/**
|
|
8
8
|
* The stages' keyboard paths: every focusable part of a stage shows the
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { T as settled } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
4
|
-
import { t as choreoGalleryContents } from "./choreo-gallery-
|
|
5
|
-
import { a as setupChoreoGalleryTest, r as frames } from "./choreo-gallery-stage-
|
|
4
|
+
import { t as choreoGalleryContents } from "./choreo-gallery-DZm1KZ20.js";
|
|
5
|
+
import { a as setupChoreoGalleryTest, r as frames } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
6
6
|
//#region tests/integration/choreo-gallery-stages-test.gts
|
|
7
7
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
8
8
|
/**
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { M as waitUntil, a as find, l as triggerEvent } from "./dist-BOAdzfkP.js";
|
|
3
3
|
import { rn as whatIsBusy, tn as isMotionIdle } from "./layout-group-BS0gklZp.js";
|
|
4
|
-
import "./src-
|
|
4
|
+
import "./src-CbBcj3xm.js";
|
|
5
5
|
import { i as setMotionSpeed } from "./speed-bIo0tyrM.js";
|
|
6
6
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
7
|
-
import { n as bounds, t as animationsSettled } from "./test-support-
|
|
8
|
-
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-
|
|
7
|
+
import { n as bounds, t as animationsSettled } from "./test-support-BOFeeYuE.js";
|
|
8
|
+
import { a as setupChoreoGalleryTest } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
9
9
|
//#region tests/integration/choreo-gallery-subdivision-test.gts
|
|
10
10
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
11
11
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { s as __toESM } from "./chunk-Rp0pCe6z.js";
|
|
2
2
|
import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
|
|
3
|
-
import { a as setupChoreoGalleryTest, l as trigger, o as setupStageViewport, r as frames, s as sleep, t as $ } from "./choreo-gallery-stage-
|
|
3
|
+
import { a as setupChoreoGalleryTest, l as trigger, o as setupStageViewport, r as frames, s as sleep, t as $ } from "./choreo-gallery-stage-CU8LvQqX.js";
|
|
4
4
|
//#region tests/integration/choreo-gallery-table-plan-test.gts
|
|
5
5
|
var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
|
|
6
6
|
var CARD = ".tp-card";
|