@cardstack/boxel-cli 0.11.0-unstable.1 → 0.11.0-unstable.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-realms/pretui/components/agent-mark.gts +98 -0
- package/bundled-realms/pretui/components/agent-question.gts +340 -37
- package/bundled-realms/pretui/components/answer-footer.gts +249 -0
- package/bundled-realms/pretui/components/card-embed.gts +523 -0
- package/bundled-realms/pretui/components/card-pills.gts +725 -0
- package/bundled-realms/pretui/components/code-block.gts +87 -45
- package/bundled-realms/pretui/components/collapsed-turn.gts +133 -12
- package/bundled-realms/pretui/components/compaction-chip.gts +81 -67
- package/bundled-realms/pretui/components/composer-cap.gts +516 -0
- package/bundled-realms/pretui/components/context-ring.gts +108 -0
- package/bundled-realms/pretui/components/diff-block.gts +1002 -31
- package/bundled-realms/pretui/components/diff-stat.gts +102 -0
- package/bundled-realms/pretui/components/jump-chip.gts +86 -53
- package/bundled-realms/pretui/components/markdown-stream.gts +799 -0
- package/bundled-realms/pretui/components/markdown-surface.gts +71 -0
- package/bundled-realms/pretui/components/plan-mark.gts +147 -0
- package/bundled-realms/pretui/components/prose.gts +185 -8
- package/bundled-realms/pretui/components/prose.md +6 -8
- package/bundled-realms/pretui/components/quick-look.gts +377 -0
- package/bundled-realms/pretui/components/reactions.gts +136 -0
- package/bundled-realms/pretui/components/recommendation.gts +67 -36
- package/bundled-realms/pretui/components/result-card.gts +58 -22
- package/bundled-realms/pretui/components/segmented-control.gts +13 -8
- package/bundled-realms/pretui/components/session-prep.gts +12 -11
- package/bundled-realms/pretui/components/sliding-highlight.gts +8 -3
- package/bundled-realms/pretui/components/speaker-label.gts +132 -0
- package/bundled-realms/pretui/components/state-glyph.gts +121 -0
- package/bundled-realms/pretui/components/step-list.gts +62 -60
- package/bundled-realms/pretui/components/stick-to-bottom.gts +1150 -0
- package/bundled-realms/pretui/components/system-line.gts +143 -0
- package/bundled-realms/pretui/components/task-checklist.gts +184 -0
- package/bundled-realms/pretui/components/thinking.gts +63 -94
- package/bundled-realms/pretui/components/tool-change-table.gts +285 -0
- package/bundled-realms/pretui/components/tool-gate.gts +462 -0
- package/bundled-realms/pretui/components/tool-group.gts +920 -0
- package/bundled-realms/pretui/components/tool-icon.ts +64 -0
- package/bundled-realms/pretui/components/tool-meta.gts +82 -0
- package/bundled-realms/pretui/components/tool-plan.gts +197 -0
- package/bundled-realms/pretui/components/tool-row.gts +2087 -0
- package/bundled-realms/pretui/components/turn-changes.gts +227 -0
- package/bundled-realms/pretui/components/user-bubble.gts +575 -0
- package/bundled-realms/pretui/components/work-item.gts +185 -48
- package/bundled-realms/pretui/docs/scroll-anchoring-protocol.md +136 -0
- package/bundled-realms/pretui/internal/markdown-projection.ts +438 -0
- package/bundled-realms/pretui/internal/mount-queue.ts +79 -0
- package/bundled-realms/pretui/internal/tool-phrases.ts +168 -0
- package/bundled-realms/pretui/package.json +2 -1
- package/bundled-test-harness/assets/{ai-module-creation-test-beRNwH-e.js → ai-module-creation-test-B6FQKqIl.js} +1 -1
- package/bundled-test-harness/assets/{app-QAuw0l8v.js → app-KpPqdyX3.js} +4 -4
- package/bundled-test-harness/assets/{binary-upload-dedupe-test-bI8T0QLl.js → binary-upload-dedupe-test-DN00y1tM.js} +1 -1
- package/bundled-test-harness/assets/{can-invoke-test-DVaU_yRT.js → can-invoke-test-Bl-EUFM3.js} +1 -1
- package/bundled-test-harness/assets/{card-chooser-paging-test-DnxMnXKR.js → card-chooser-paging-test-BNuZRHX3.js} +1 -1
- package/bundled-test-harness/assets/{card-chooser-test-DUSnLr-u.js → card-chooser-test-wKfPOOT4.js} +1 -1
- package/bundled-test-harness/assets/{card-def-field-def-relationships-test-GBUr3tFK.js → card-def-field-def-relationships-test-CduQ6zan.js} +1 -1
- package/bundled-test-harness/assets/{card-delete-test-CQveO1VC.js → card-delete-test-DKxolj5o.js} +1 -1
- package/bundled-test-harness/assets/{check-correctness-test-D2M2p66N.js → check-correctness-test-B-kgHztp.js} +1 -1
- package/bundled-test-harness/assets/choreo-BEHW-NOc.js +2 -0
- package/bundled-test-harness/assets/{choreo-CJfBb_EY.js → choreo-C2cpCfhA.js} +164 -13
- package/bundled-test-harness/assets/{choreo-feature-reel-test-D2OrygZv.js → choreo-feature-reel-test-CPI_6nkT.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-w07xqtO-.js → choreo-gallery-BxA9cyzF.js} +3 -3
- package/bundled-test-harness/assets/{choreo-gallery-build-order-test-yQg4JER6.js → choreo-gallery-build-order-test-CLVoseAJ.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-compositor-test-C2THCXJN.js → choreo-gallery-compositor-test-BpT5Ia6B.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-cover-test-D4T_Tk4s.js → choreo-gallery-cover-test-DL_fdSsh.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-crossing-stage-test-tHUPJ-Hy.js → choreo-gallery-crossing-stage-test-BcKHhpOK.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-demos-alive-test-BOtBOnEZ.js → choreo-gallery-demos-alive-test-KufLhXG8.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-drift-test-D_6U1Z2c.js → choreo-gallery-drift-test-Cx58rYIA.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-escort-test-DDBU0n4C.js → choreo-gallery-escort-test-Wz-emmID.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-films-test-CgW1NSdr.js → choreo-gallery-films-test-BFrVs5WW.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-filter-test-DUIsNwdO.js → choreo-gallery-filter-test-DCKQkhwe.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-fold-test-Chzlxvdr.js → choreo-gallery-fold-test-UtpDgpG9.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-guide-pages-test-DOWnqALT.js → choreo-gallery-guide-pages-test-rXDU9JLM.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-guides-test-Dra2J4LJ.js → choreo-gallery-guides-test-DfVFdIuU.js} +3 -3
- package/bundled-test-harness/assets/{choreo-gallery-hang-test-zzn1eiB-.js → choreo-gallery-hang-test-Cj7MbkFf.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-highlight-test-CW99hncQ.js → choreo-gallery-highlight-test-D6CF3IYZ.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-inline-edit-test-CYFm1kUz.js → choreo-gallery-inline-edit-test-LfHWsbqc.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-interruption-test-CYIBrKV9.js → choreo-gallery-interruption-test-CvQQAgTp.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-lone-stack-test-DL8R3SG7.js → choreo-gallery-lone-stack-test-D7Zci7fm.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-navigation-test-Dcv04kDx.js → choreo-gallery-navigation-test-DB1EnBEW.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-playhead-transport-test-Cfz7GsXl.js → choreo-gallery-playhead-transport-test-CtBlc6AJ.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-poplayout-subtree-test-CwoklBkW.js → choreo-gallery-poplayout-subtree-test-BQbmjsvI.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-presence-modes-test-BDCIZzJ0.js → choreo-gallery-presence-modes-test-CIdXVG1K.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-presentation-test-DlyiHwFf.js → choreo-gallery-presentation-test-C_rPFp29.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-reduced-motion-test-DVz5SKNR.js → choreo-gallery-reduced-motion-test-CH5w8Lw-.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-sheet-standalone-test-CpD_-BvS.js → choreo-gallery-sheet-standalone-test-CDgI4mGX.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-sheet-test-BjvAKHDL.js → choreo-gallery-sheet-test-5lsFX7Rk.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-site-test-oq_7y_PN.js → choreo-gallery-site-test-DbMa2xeC.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-stage-Bzr4_8Xd.js → choreo-gallery-stage-b3Sk86hp.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-stage-keyboard-test-a83d2euJ.js → choreo-gallery-stage-keyboard-test-ds6fT5Eg.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-stages-test-C9Sl1kH6.js → choreo-gallery-stages-test-ahioKCct.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-subdivision-test-BVVnkOwk.js → choreo-gallery-subdivision-test-g7anTDhT.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-table-plan-test-B0YdYEA0.js → choreo-gallery-table-plan-test-Bozc4uUf.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-theater-test-BLA147xw.js → choreo-gallery-theater-test-kE535d-b.js} +3 -3
- package/bundled-test-harness/assets/{choreo-gallery-tuning-test-DSXiNzCh.js → choreo-gallery-tuning-test-6rHkQBnZ.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-widget-room-test-BI574PdO.js → choreo-gallery-widget-room-test-0Vq-uTo1.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-wires-test-B6Mz2WZl.js → choreo-gallery-wires-test-CdtnAWYO.js} +1 -1
- package/bundled-test-harness/assets/clip-BLfuHi8g.js +2 -0
- package/bundled-test-harness/assets/{clip-C_pXjVvY.js → clip-q1QE5f73.js} +1 -1
- package/bundled-test-harness/assets/{codeblocks-test-AdolhdCA.js → codeblocks-test-BDD7qK_V.js} +1 -1
- package/bundled-test-harness/assets/{compaction-test-DvyAQq56.js → compaction-test-BweolkhG.js} +1 -1
- package/bundled-test-harness/assets/{container-DIF_9lZ9.css → container-B5B6u-xm.css} +29 -22
- package/bundled-test-harness/assets/{container-DvvqmNpg.js → container-BnJjIM6J.js} +9 -6
- package/bundled-test-harness/assets/{create-listing-modal-test-D95JfQab.js → create-listing-modal-test-FvcAKpIa.js} +1 -1
- package/bundled-test-harness/assets/{debug-message-test-BcNtj7Wr.js → debug-message-test-CJ18Evt7.js} +1 -1
- package/bundled-test-harness/assets/{externals-6ZWftYIb.js → externals-BWjhmCD4.js} +12 -12
- package/bundled-test-harness/assets/{fallback-banner-live-delete-test-5lnN1pv2.js → fallback-banner-live-delete-test-C2H3BrT-.js} +1 -1
- package/bundled-test-harness/assets/{fallback-banner-test-DFb_m_Kq.js → fallback-banner-test-C10aYjkj.js} +1 -1
- package/bundled-test-harness/assets/{fallback-models-test-p3YIwj1L.js → fallback-models-test-BxoPiaGF.js} +1 -1
- package/bundled-test-harness/assets/{file-attachment-test-CmyjNWRR.js → file-attachment-test-DeKyzYaz.js} +1 -1
- package/bundled-test-harness/assets/film-B68PjRlr.js +2 -0
- package/bundled-test-harness/assets/{film-D7vtJO5q.js → film-CeUpnHN_.js} +6 -6
- package/bundled-test-harness/assets/{film-DN0A8JHx.js → film-DBZqyqW4.js} +6 -6
- package/bundled-test-harness/assets/{general-test-CX-TFDuX.js → general-test-BewzrpoB.js} +1 -1
- package/bundled-test-harness/assets/{glimmer-motion-and-choreo-in-cards-test-BHte2t9G.js → glimmer-motion-and-choreo-in-cards-test-HA-INN3d.js} +14 -14
- package/bundled-test-harness/assets/{glimmer-motion-and-choreo-test-BPNVeIio.js → glimmer-motion-and-choreo-test-BZ0ZuuAw.js} +3 -3
- package/bundled-test-harness/assets/{index-query-engine-test-Dz7Q4Xmk.js → index-query-engine-test-BtI8Y2LR.js} +1 -1
- package/bundled-test-harness/assets/{instance-filter-matcher-test-BoLU3bVg.js → instance-filter-matcher-test-BHXHGHjE.js} +1 -1
- package/bundled-test-harness/assets/{main-Dlgp8c7v.js → main-CqAHZ2kK.js} +1 -1
- package/bundled-test-harness/assets/{message-tool-test-CfjRSJvt.js → message-tool-test-NMaPJFsd.js} +1 -1
- package/bundled-test-harness/assets/{model-cost-tier-test-mZG84Uso.js → model-cost-tier-test-BgbfN2LH.js} +1 -1
- package/bundled-test-harness/assets/{operation-lowering-test-B0KpI1xu.js → operation-lowering-test-C4IaOjsA.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-card-chooser-test-KWS8lq16.js → operator-mode-card-chooser-test-Bwe47Rn7.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-links-test-CViFt0Ws.js → operator-mode-links-test-BU4jkC-B.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-test-D0gZM2yw.js → operator-mode-test-Bh0rGM9z.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-ui-test-CEvHJ9DS.js → operator-mode-ui-test-whgUw0ju.js} +1 -1
- package/bundled-test-harness/assets/{overlay-menu-items-test-Pw80RXsr.js → overlay-menu-items-test-Cwn1vr8q.js} +1 -1
- package/bundled-test-harness/assets/{overlays-BnOM360u.js → overlays-BOzLbVDK.js} +1 -1
- package/bundled-test-harness/assets/{overlays-kBVfa4i8.js → overlays-C_PuGDGh.js} +1 -1
- package/bundled-test-harness/assets/{past-sessions-test-CW0-Bjav.js → past-sessions-test-Bh24N-Kz.js} +1 -1
- package/bundled-test-harness/assets/{permission-checking-realm-test-D5uXQypS.js → permission-checking-realm-test-DKnnAy0f.js} +1 -1
- package/bundled-test-harness/assets/{plate-CFvCDv2t.js → plate-BL7UtyKE.js} +1 -1
- package/bundled-test-harness/assets/plate-CqG3igCJ.js +2 -0
- package/bundled-test-harness/assets/player-BJfsgdSI.js +2 -0
- package/bundled-test-harness/assets/{player-DzuYjrTU.js → player-Da_CIsp_.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-policy-standing-test-Btatheni.js → realm-config-policy-standing-test-DngdYypq.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-Dh5zW13o.js → realm-config-routing-rule-edit-test-_rkFU8SN.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-settings-test-BJa8gv_C.js → realm-config-settings-test-CR9NH0Zn.js} +1 -1
- package/bundled-test-harness/assets/{reasoning-test-2Zp37cQB.js → reasoning-test-0lH10kRl.js} +1 -1
- package/bundled-test-harness/assets/{room-message-test-BsrON13e.js → room-message-test-C-PddE4Y.js} +1 -1
- package/bundled-test-harness/assets/{run-BMyvn_UL.js → run-D4n4LPcK.js} +96 -6
- package/bundled-test-harness/assets/{run-realm-code-BxktQf6R.js → run-realm-code-C8N7DtN-.js} +1 -1
- package/bundled-test-harness/assets/{run-realm-code-test-7grpTos-.js → run-realm-code-test-DBdp147q.js} +1 -1
- package/bundled-test-harness/assets/{schema-generation-test-CM9ggQji.js → schema-generation-test-CB1Hb7GQ.js} +1 -1
- package/bundled-test-harness/assets/{scrolling-test-BER00htB.js → scrolling-test-3PhVin8h.js} +1 -1
- package/bundled-test-harness/assets/{searchable-option-test-BBr5BPow.js → searchable-option-test-BAdOiL4U.js} +1 -1
- package/bundled-test-harness/assets/{sending-test-BJGobs2E.js → sending-test-KSmu1tSJ.js} +1 -1
- package/bundled-test-harness/assets/{skills-test-GPOsHRN6.js → skills-test-D-dlcFpd.js} +1 -1
- package/bundled-test-harness/assets/{src-Df148w_b.js → src-B_DEhPze.js} +4 -4
- package/bundled-test-harness/assets/{src-Cf2wv-Le.js → src-BoTgwqUA.js} +2 -2
- package/bundled-test-harness/assets/{store-test-QvvHimzH.js → store-test-CEW7xQjZ.js} +1 -1
- package/bundled-test-harness/assets/{test-support-rNHuieEc.js → test-support-FXDPpIl3.js} +1 -1
- package/bundled-test-harness/assets/{test-support-C6N_2X-l.js → test-support-VX6ukQNR.js} +1 -1
- package/bundled-test-harness/assets/{tests-CmsQ-Z_3.js → tests-QYqqa6nv.js} +84 -84
- package/bundled-test-harness/assets/{text-input-validator-test-CYYH2N0L.js → text-input-validator-test-D8iNOWep.js} +1 -1
- package/bundled-test-harness/assets/{titles-B1pTaIfP.js → titles-DFJj5O0E.js} +1 -1
- package/bundled-test-harness/assets/titles-xGlgu7ys.js +2 -0
- package/bundled-test-harness/assets/{to-device-streaming-test-Ctqa0bVp.js → to-device-streaming-test-trCX-505.js} +1 -1
- package/bundled-test-harness/assets/{token-usage-test-BQVbK3X0.js → token-usage-test-C6sULooH.js} +1 -1
- package/bundled-test-harness/assets/{tools-DU8Rc15s.js → tools-UJfD-_al.js} +1 -1
- package/bundled-test-harness/assets/{tools-test-B13yvEKE.js → tools-test-Brav31AV.js} +1 -1
- package/bundled-test-harness/assets/{worker-DHBEBihX.js → worker-9ph9_Lpv.js} +31 -26
- package/bundled-test-harness/index.html +8 -8
- package/bundled-test-harness/tests/index.html +8 -8
- package/bundled-types/choreo/beacons.ts +16 -4
- package/bundled-types/choreo/changeset.ts +25 -5
- package/bundled-types/choreo/choreo.gts +245 -3
- package/bundled-types/choreo/far.ts +39 -0
- package/bundled-types/choreo/index.ts +2 -0
- package/bundled-types/choreo/run.ts +104 -1
- package/bundled-types/host-app/lib/realm-runner/worker.ts +8 -51
- package/bundled-types/runtime-common/realm-runner-script.d.ts +3 -0
- package/package.json +1 -1
- package/bundled-test-harness/assets/choreo-B3Z9QhDH.js +0 -2
- package/bundled-test-harness/assets/clip-BjcXuTwN.js +0 -2
- package/bundled-test-harness/assets/film-DMDPP7ma.js +0 -2
- package/bundled-test-harness/assets/plate-66qnQ-M9.js +0 -2
- package/bundled-test-harness/assets/player-pygg1PwA.js +0 -2
- package/bundled-test-harness/assets/titles-Ccpcl-jq.js +0 -2
package/bundled-test-harness/assets/{choreo-gallery-w07xqtO-.js → choreo-gallery-BxA9cyzF.js}
RENAMED
|
@@ -876,7 +876,7 @@ var widget_room_default = "{\n \"data\": {\n \"type\": \"card\",\n \"attr
|
|
|
876
876
|
var README_default = "# The Choreo guides\n\nStart with one element. Coordinate an interaction. Bring it into space. Then direct a film. The guides cover four connected areas of the same motion system, with live demos you can tune, and every public API with the concepts behind it. [API and Concept Inventory](core-api-inventory) maps each export to the guide that teaches it.\n\n## 01 Core glimmer-motion\n\nAnimate the elements you already have. Learn targets, springs, presence, layout, and gestures. Start with [Getting Started](core-start).\n\n- [Getting Started](core-start): Install the library and make your first element appear.\n- [Build Your First Choreo Application](core-first-app): Create a clean Ember app and build an interruptible task board.\n- [Animating an Element](core-elements): Connect tracked state to targets and choose a transition.\n- [Entering and Leaving](core-presence): Keep leaving items mounted until their exit finishes.\n- [Animating Layout](core-layout): Animate changes to bounds and connect shared identities.\n- [Gestures and Scroll](core-input): Respond to hover, press, drag, and scroll.\n- [Accessibility and Testing](core-testing): Honor reduced motion and test observable outcomes.\n- [Diagnose Motion Problems](core-troubleshooting): Diagnose ownership, geometry, readiness, audio, and recording failures.\n- [API and Concept Inventory](core-api-inventory): Find every public API and its substantial concept guide.\n- [Targets, Styles, and Property Ownership](core-targets): Use to, styles, and perValue without competing with the renderer.\n- [Spring Transitions](core-springs): Choose physical parameters or a perceived duration, and preserve continuity.\n- [Tweens, Easing, and Keyframes](core-tweens): Author a timed journey and give each property its own curve.\n- [Variants and Staggered Children](core-variants): Name visual states and propagate them through a component tree.\n- [Motion Values and Derived Values](core-motion-values): Keep continuous input outside the Glimmer render loop.\n- [Dragging, Constraints, and Momentum](core-drag): Design a drag interaction that hands off cleanly at release.\n- [Drag Handles and Coordinate Correction](core-drag-handles): Start a drag from a handle and account for scaled or SVG surfaces.\n- [Reordering Lists and Grids](core-reorder): Keep visual order and application order in agreement.\n- [Scroll Progress and Viewport Observation](core-scroll): Choose continuous progress or a discrete visibility state.\n- [Motion Configuration and Reduced Motion](core-config): Establish defaults at a DOM boundary and preserve user preferences.\n- [Page Transitions and Live Crossings](core-page-transitions): Choose a snapshot transition or a live scene based on the content.\n- [Slow Motion and Playback Rate](core-tempo): Distinguish transition duration scaling from a running clock.\n- [Host Adapters and the Render Pipeline](core-host): Understand MotionNode, scheduling, and layout settlement.\n- [Testing Time, Gates, and Settlement](core-test-timing): Wait for the behavior under test instead of guessing a duration.\n- [Testing Geometry, Identity, and Cleanup](core-test-geometry): Assert the live subject and inspect intermediate frames.\n- [Reordering a Wrapped Grid](core-reorder-grid): Reordering preserves a tile while neighbours move\n- [Moving a Shared Selection Marker](core-shared-layout): One visual marker can travel between distinct nodes\n- [Revealing Data on Arrival](core-reveal): An arrival should reveal the meaning of a value\n- [Responding to Scroll Direction](core-header): Direction needs hysteresis and boundary handling\n\n## 02 Interactive Choreo\n\nGive an interaction a shared timeline. Coordinate changesets, regions, semantic actions, and interactive timelines. Start with [Understanding a Choreo Scene](interactive-start).\n\n- [Understanding a Choreo Scene](interactive-start): Understand participants, identity, roles, and changesets.\n- [Writing a Timeline](interactive-timelines): Compose sequences and parallel steps over a render pass.\n- [Connecting Regions and Destinations](interactive-beacons): Move to a destination and transfer identity between regions.\n- [Changesets, Sprites, and Queries](interactive-queries): Select participants by identity, role, and what changed.\n- [Sequences and Parallel Blocks](interactive-blocks): Build timing relationships that survive edits.\n- [Gates, Advance, and Retreat](interactive-gates): Let a presenter control builds without losing the timeline.\n- [Named Anchors and Overlap](interactive-anchors): Place work relative to another step or block.\n- [Tween and Spring Steps](interactive-property-steps): Animate selected properties over a changeset.\n- [Measured Movement, Size, and Paths](interactive-move): Move between real layouts without confusing shape with identity.\n- [Holds, Waits, and Standing Steps](interactive-holds): Give temporary properties and persistent annotations explicit lifetimes.\n- [Elevation and Directed Scrolling](interactive-raise-scroll): Move above local clipping and reveal a subject in its container.\n- [Text Delivery and Stagger](interactive-delivery): Reveal words, characters, paragraphs, or objects on one score.\n- [Derived Motion With Follow](interactive-follow): Compute a follower from captured geometry and the current score.\n- [Tethers and Connector Geometry](interactive-tethers): Draw a relationship between moving participants.\n- [Nested Regions and Far Matching](interactive-regions): Coordinate independent scenes without flattening their ownership.\n- [Live Scene Crossings](interactive-crossings): Preserve real content while the surrounding scene changes.\n- [Arming and Reliable Activation](interactive-arming): Watch a crossing before its run exists and through replacements.\n- [The Run and Interruption](interactive-run): Own transport state and distinguish completion from replacement.\n- [Perform Commands and Backward Folding](interactive-commands): Reconstruct application state from semantic timeline actions.\n- [Creating Composite Steps](interactive-composites): Extend the vocabulary through public timeline nodes.\n- [Region Lookup and External Providers](interactive-registry): Find an owned region without treating the document as one timeline.\n- [Composing a Continuous Loop](interactive-circle-loop): Keyframe timing connects cluster, field, and grid\n- [Composing Slide Changes](interactive-slides): Stable roles connect changing compositions\n- [Keeping Simulation and Choreography Separate](interactive-drift): A simulation and a transition have different responsibilities\n- [Turning a Gesture into a Scored Throw](interactive-hang): Release velocity is information that layout cannot provide\n\n## 03 Spatial & 3D Choreo\n\nPut real interfaces in space. Work with cameras, live DOM planes, room design, and interactive exhibits. Start with [Spatial & 3D Choreo](spatial-start).\n\n- [Spatial & 3D Choreo](spatial-start): Place live DOM in a camera-directed three-dimensional scene.\n- [Build Your First Spatial Scene](spatial-first-scene): Build a small live HTML plane before adding a WebGL model.\n- [Directing a 3D Camera](spatial-cameras): Direct a camera without introducing a second animation clock.\n- [Keeping the Interface Live](spatial-dom): Project real controls into the scene and keep their hit targets aligned.\n- [Building a Spatial Gallery](spatial-gallery): Design a room, allocate exhibit sizes, and manage active rendering work.\n- [Framing and Aiming a DOM Camera](spatial-frame): Fit a subject or recenter it without changing magnification.\n- [Relative Pans and Slow Zooms](spatial-relative): Continue a shot from the pose already in force.\n- [The Camera3D Renderer Contract](spatial-camera3d): Let Choreo direct the pose while the host renders the scene.\n- [Camera Paths, Cuts, and Smoothing](spatial-paths): Author a continuous tour that can also be rendered exactly.\n- [Plane Coordinates and Hit Testing](spatial-coordinates): Convert rectangles through a camera without measuring the output again.\n- [DOM and WebGL Compositing](spatial-compositing): Preserve crisp controls while placing them in a rendered scene.\n\n## 04 Recorded & Film Choreo\n\nTurn a scene into a repeatable presentation. Direct the camera, connect narration, and render a film. Start with [Recorded & Film Choreo](film-start).\n\n- [Recorded & Film Choreo](film-start): Choose a transport or a complete film composition.\n- [Render Your First MP4](film-first-export): Capture deterministic frames, mix audio, and encode a playable MP4.\n- [Driving an External Clock](film-clock): Give an external clock explicit ownership of selected runs.\n- [Building a Film](film-shots): Organize a picture into shots, chapters, and camera moves.\n- [Narration and Overlays](film-audio): Connect separate narration clips and readable overlays.\n- [Recording and Deployment](film-delivery): Review deterministic frames and deploy the complete experience.\n- [Authoring a Film Graph](film-graph): Describe chapters and shots in the template that renders them.\n- [Shots, Tail Poses, and Eye-Level Views](film-poses): State what the lens sees at the beginning and end of a shot.\n- [The Headless Film Schedule](film-schedule): Inspect timing without launching a renderer.\n- [Film Handles, Playback, and Exact Rendering](film-transport): Choose the correct operation for interaction or export.\n- [Attaching Another Region to a Clock](film-attachments): Drive a child run through an explicit window.\n- [The Standalone Choreo Player](film-player): Control selected runs without taking over the document.\n- [Registering a Picture and Its Capabilities](film-picture): Connect the film to the renderer that actually draws it.\n- [Clip Windows, Lanes, and Source Time](film-clips): Place video, images, and freezes on the film clock.\n- [Media Attachments and Picture-in-Picture](film-media-graph): Author inserts as graph components with clear placement and lifetime.\n- [Joins and Transition Presentations](film-joins): Make the outgoing frame and incoming shot agree at an edit.\n- [Seam Readiness and Exact Capture](film-seam-readiness): Prevent the incoming frame from flashing before the outgoing still.\n- [Picture Adjustments, Grades, and Filters](film-adjustments): Hold renderer settings at the group or shot that owns them.\n- [World Annotations and Construction Cues](film-world-annotations): Connect labels and reveals to the subject they explain.\n- [Lower Thirds, Captions, and Screen Overlays](film-typography): Give explanatory text its own readable interval.\n- [Voice Cues, Mixing, and Browser Playback](film-audio-mix): Keep separate narration clips aligned with the tour.\n- [Posters, Menus, Rails, and Player Controls](film-interface): Make the film usable before, during, and after playback.\n- [Graph Compilation and Custom Adjustments](film-graph-extension): Extend authoring through typed nodes and patches.\n- [Film Math and Formatting Utilities](film-utilities): Reuse small calculations without confusing them with a rendering engine.\n";
|
|
877
877
|
//#endregion
|
|
878
878
|
//#region ../choreo-gallery/realm/docs/guides/core-api-inventory.md?raw
|
|
879
|
-
var core_api_inventory_default = "# API and Concept Inventory\n\nChoreo has four connected areas: an element binding over Motion, interactive scene choreography, spatial direction, and recorded film composition. This inventory maps the public entrypoints and yielded vocabularies to the guides that explain their behavior. Use it when you know an API name, when you are planning an application, or when you want to check whether a concept has been documented beyond an introductory example.\n\n## Scope and Reading Depth\n\nThe inventory covers the `glimmer-motion` root and its `glimmer-motion/test-support` subpath, the `@cardstack/choreo` root and its `@cardstack/choreo/film` and `@cardstack/choreo/test-support` subpaths, and the separate `@cardstack/choreo-player` package. It also includes the components and queries yielded by ChoreoContext and FilmVocabulary. Each entry links to a substantial concept chapter with motivation, behavior, examples, and relevant constraints.\n\nRelated helpers, compatibility aliases, and supporting TypeScript types share the chapter about the behavior they describe. For example, a spring configuration and its argument type belong with spring transitions; the several query selectors belong with the changeset model. This avoids pretending that a type alias is an independent feature while still making every exported name discoverable.\n\nEach guide contains at least 300 words of explanatory prose, approximately three-quarters of a conventional documentation page, excluding code blocks and API tables. This is a minimum depth check rather than a measure of completeness by itself. Complex concepts include additional examples and links to adjacent contracts. A longer page should add useful explanation, not repeat the same introduction in different words.\n\n## Implementation and Integration Boundaries\n\nThe inventory reflects the checked-in implementation. Historical design notes can include proposals or older signatures, so the source links beside an API are the authority for its current shape. Advanced host APIs and the external-provider lane surface are identified as integration work rather than required application patterns. Wildcard deep imports expose implementation modules, but the inventory does not promise every internal helper as a supported standalone application API.\n\nThe library uses the engine's own MotionValues. `glimmer-motion` re-exports a small, curated set of engine functions (`motionValue`, `transformValue`, `styleEffect`, `frame`, `animate`) rather than wrapping them, and the continuous-value guide explains that integration. Similarly, the spatial guides distinguish camera direction from renderer capabilities, and the film guides distinguish a compiled graph from decoded, paintable media. Those boundaries are part of learning the system, not details to skip when assembling a demonstration.\n\n## Maintaining Coverage\n\nRun `pnpm lint:realm` in `packages/choreo-gallery` after changing an export or a guide. The check compares this inventory with the actual source declarations, verifies guide destinations and preambles, and enforces the minimum prose depth. A new public symbol fails that check until its documentation mapping is reviewed. Browser verification still matters for examples, controls, and renderer behavior; a coverage table alone cannot prove that a demonstration works.\n\n## Find an API\n\n### glimmer-motion\n\n| API | Guide | Source |\n| ---------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |\n| `BusyProbe` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts) |\n| `registerBusyProbe` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts) |\n| `scroll` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `scrollInfo` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `ScrollInfo` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `ScrollOffset` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `ScrollOptions` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `InViewOptions` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `inView` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `createDragControls` | [core-drag-handles](core-drag-handles) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/gestures/drag-controls.ts) |\n| `DragControls` | [core-drag-handles](core-drag-handles) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/gestures/drag-controls.ts) |\n| `correctParentTransform` | [core-drag-handles](core-drag-handles) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/gestures/transform-page-point.ts) |\n| `transformViewBoxPoint` | [core-drag-handles](core-drag-handles) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/gestures/transform-page-point.ts) |\n| `InertiaArgs` | [core-drag](core-drag) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `SpringArgs` | [core-springs](core-springs) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `TweenArgs` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `ease` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `inertia` | [core-drag](core-drag) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `perValue` | [core-targets](core-targets) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `spring` | [core-springs](core-springs) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `stagger` | [core-variants](core-variants) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `styles` | [core-targets](core-targets) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `to` | [core-targets](core-targets) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `tween` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `afterSettle` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `instantLayoutTransition` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `layoutChange` | [core-layout](core-layout) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `layoutLoopDetected` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `requestSettle` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `resetLayoutLoopGuard` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `snapshotAll` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `closestLayoutGroup` | [core-layout](core-layout) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout-group.gts) |\n| `LayoutGroup` | [core-layout](core-layout) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout-group.gts) |\n| `snapshotOnRender` | [core-layout](core-layout) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout-group.gts) |\n| `MotionEl` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts) |\n| `MotionProps` | [core-elements](core-elements) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts) |\n| `motion` | [core-elements](core-elements) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts) |\n| `MotionModifier` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts) |\n| `MotionConfigContext` | [core-config](core-config) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion-config.gts) |\n| `closestMotionConfig` | [core-config](core-config) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion-config.gts) |\n| `MotionConfig` | [core-config](core-config) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion-config.gts) |\n| `flushPendingMounts` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/node.ts) |\n| `MotionNode` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/node.ts) |\n| `MotionParticipant` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `ParticipantArgs` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `ParticipantHost` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `closestParticipantHost` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `defineParticipantArg` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `PARTICIPANT_HOST_ATTRIBUTE` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `setParticipantHost` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `Presence` | [core-presence](core-presence) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/presence.gts) |\n| `PresenceHandle` | [core-presence](core-presence) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/presence-types.ts) |\n| `ReorderGroup` | [core-reorder](core-reorder) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/reorder/group.gts) |\n| `ReorderItem` | [core-reorder](core-reorder) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/reorder/item.gts) |\n| `ReorderAxis` | [core-reorder](core-reorder) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/reorder/types.ts) |\n| `ReorderContextProps` | [core-reorder](core-reorder) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/reorder/types.ts) |\n| `postRender` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scheduler.ts) |\n| `setPostRender` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scheduler.ts) |\n| `ScrollValues` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `UseInViewOptions` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `UseScrollOptions` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `InView` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `scrollProgress` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `useInView` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `useScroll` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `motionSpeed` | [core-tempo](core-tempo) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/speed.ts) |\n| `onMotionSpeed` | [core-tempo](core-tempo) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/speed.ts) |\n| `scaleTransition` | [core-tempo](core-tempo) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/speed.ts) |\n| `setMotionSpeed` | [core-tempo](core-tempo) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/speed.ts) |\n| `ViewTransitionBuilder` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `ViewTransitionOptions` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `ViewTransitionUpdate` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `animateView` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `viewTransition` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `animate` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `frame` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `MotionValue` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `motionValue` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `styleEffect` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `transformValue` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n\n### @cardstack/choreo\n\n| API | Guide | Source |\n| ------------------ | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |\n| `beacon` | [interactive-beacons](interactive-beacons) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/beacon.ts) |\n| `ChoreoContext` | [interactive-start](interactive-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `Choreo` | [interactive-start](interactive-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `AnchorRef` | [interactive-anchors](interactive-anchors) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/anchors.ts) |\n| `after` | [interactive-anchors](interactive-anchors) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/anchors.ts) |\n| `at` | [interactive-anchors](interactive-anchors) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/anchors.ts) |\n| `Arming` | [interactive-arming](interactive-arming) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/arming.ts) |\n| `ArmingOptions` | [interactive-arming](interactive-arming) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/arming.ts) |\n| `ArmingRegion` | [interactive-arming](interactive-arming) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/arming.ts) |\n| `createArming` | [interactive-arming](interactive-arming) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/arming.ts) |\n| `BeaconRef` | [interactive-beacons](interactive-beacons) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/beacons.ts) |\n| `Changeset` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/changeset.ts) |\n| `easeIn` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/easings.ts) |\n| `easeInAndOut` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/easings.ts) |\n| `easeOut` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/easings.ts) |\n| `GestureRef` | [core-drag](core-drag) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/gesture.ts) |\n| `ChoreoHost` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `choreoHostAt` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `choreoHostById` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `ChoreoProvider` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `closestChoreo` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `ChoreoRun` | [interactive-run](interactive-run) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/run.ts) |\n| `PlanePoint` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/space.ts) |\n| `appliedCamera` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/space.ts) |\n| `toLocal` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/space.ts) |\n| `toPage` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/space.ts) |\n| `StepArgs` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/steps.gts) |\n| `StepArgsBase` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/steps.gts) |\n| `StepComponent` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/steps.gts) |\n| `toMs` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/steps.gts) |\n| `Block` | [interactive-blocks](interactive-blocks) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Bounds` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Camera3DState` | [spatial-camera3d](spatial-camera3d) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Camera3DWaypoint` | [spatial-paths](spatial-paths) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `CameraState` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `DeliveryBy` | [interactive-delivery](interactive-delivery) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `DeliveryOrder` | [interactive-delivery](interactive-delivery) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `DeriveContext` | [interactive-follow](interactive-follow) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Easing` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `FollowSource` | [interactive-follow](interactive-follow) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `GateNode` | [interactive-gates](interactive-gates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `PerformCommand` | [interactive-commands](interactive-commands) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `PropSource` | [interactive-property-steps](interactive-property-steps) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `PropValue` | [interactive-property-steps](interactive-property-steps) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Query` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Rect` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `SpringSpec` | [core-springs](core-springs) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Sprite` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Step` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `TimelineNode` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n\n### @cardstack/choreo/film\n\n| API | Guide | Source |\n| ------------------------ | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------- |\n| `Clip` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clip.gts) |\n| `ClipEnd` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ClipKind` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `clipLanes` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ClipLook` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ClipSpec` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ClipState` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `clipWindow` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `resolveClip` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `resolveClips` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ResolvedClip` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `Film` | [film-start](film-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/film.gts) |\n| `FilmContext` | [film-start](film-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/film.gts) |\n| `FilmSignature` | [film-start](film-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/film.gts) |\n| `TICK` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/film.gts) |\n| `Adjustment` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Build` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Filter` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `IFRAME_PICTURE` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Light` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Look` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Mix` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Set` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `SOUND` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Sun` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Weather` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Winter` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `AttachNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `CompiledGraph` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `compileGraph` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `EyeNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `GraphNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `GroupNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `JoinNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `Patch` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `PatchNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `ShotNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `ToNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `VoiceNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `FilmGraph` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `FilmGraphSignature` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `FilmVocabulary` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `VOCABULARY` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `collectGraph` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Eye` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Freeze` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphAttach` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphChapter` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphInsert` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphNodeComponent` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphProvider` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphStamp` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `JoinInto` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Lineup` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Mark` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `PatchComponent` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Sequence` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Shot` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Sky` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Spine` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `To` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Trace` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Type` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Video` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Voice` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Blend` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Blur` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Dip` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Flash` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `inGlass` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Iris` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `JOIN_SECS` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Joins` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Luma` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Melt` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Presentation` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `PresentationComponent` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `PRESENTATIONS` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `PresentationSignature` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `retire` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `seamShape` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `STILL_JOINS` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Wipe` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `clamp01` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `hex` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `lerp` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `luminance` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `mmss` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `RAD` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `rgba` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `smooth` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `Captions` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/overlays.gts) |\n| `Insert` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/overlays.gts) |\n| `Stamp` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/overlays.gts) |\n| `Track` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/overlays.gts) |\n| `IframePicture` | [film-picture](film-picture) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/picture.gts) |\n| `IframePictureSignature` | [film-picture](film-picture) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/picture.gts) |\n| `PictureSpec` | [film-picture](film-picture) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/picture.gts) |\n| `Plate` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/plate.gts) |\n| `Burst` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `Menu` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `MenuEntry` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `PlaybarSegment` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `Player` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `Rail` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/rail.gts) |\n| `RailMark` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/rail.gts) |\n| `beatStart` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `chapterHeads` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Content` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `contents` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Cue` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `cues` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `joinInto` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Schedule` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `schedule` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `secsBefore` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `tailFor` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `totalSecs` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Waypoint` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `waypoints` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Seam` | [film-seam-readiness](film-seam-readiness) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/seam.ts) |\n| `EndCard` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/titles.gts) |\n| `Gate` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/titles.gts) |\n| `Beat` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Cam` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Chapter` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `FilmClock` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `FilmGrade` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `FilmHandle` | [film-transport](film-transport) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Join` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `JoinName` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `LookFx` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Over` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Picture` | [film-picture](film-picture) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `PlateMode` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Pt3` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `SeamSpec` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `ShotState` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n\n### glimmer-motion/test-support\n\n| API | Guide | Source |\n| --------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |\n| `isMotionIdle` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts) |\n| `whatIsBusy` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts) |\n| `Box` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `bounds` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `shape` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `boundsAndShape` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `SettleOptions` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `animationsSettled` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `velocityOf` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `setupMotion` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `resetMotion` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `registerMotionReset` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n\n### @cardstack/choreo/test-support\n\n| API | Guide | Source |\n| -------------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------- |\n| `setupChoreo` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `advanceGate` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `seekTo` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `orphanCount` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `live` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `liveAll` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `strandedTransforms` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n\n### @cardstack/choreo-player\n\n| API | Guide | Source |\n| --------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------- |\n| `ChoreoRun` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n| `ChoreoPlayer` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n| `ChoreoPlayerUpdateOptions` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n| `ChoreoPlayerOptions` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n| `createChoreoPlayer` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n\n### ChoreoContext\n\n| API | Guide | Source |\n| --------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------- |\n| `c.Aim` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Attach` | [film-attachments](film-attachments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Camera` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Camera3D` | [spatial-camera3d](spatial-camera3d) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Crossing` | [interactive-crossings](interactive-crossings) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Follow` | [interactive-follow](interactive-follow) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Frame` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Gate` | [interactive-gates](interactive-gates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Hold` | [interactive-holds](interactive-holds) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Move` | [interactive-move](interactive-move) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Pan` | [spatial-relative](spatial-relative) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Parallel` | [interactive-blocks](interactive-blocks) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Perform` | [interactive-commands](interactive-commands) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Raise` | [interactive-raise-scroll](interactive-raise-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Scroll` | [interactive-raise-scroll](interactive-raise-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Sequence` | [interactive-blocks](interactive-blocks) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.SlowZoom` | [spatial-relative](spatial-relative) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Spring` | [interactive-property-steps](interactive-property-steps) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Tether` | [interactive-tethers](interactive-tethers) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Tween` | [interactive-property-steps](interactive-property-steps) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Wait` | [interactive-holds](interactive-holds) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.advance` | [interactive-gates](interactive-gates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.all` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.beacon` | [interactive-beacons](interactive-beacons) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.camera` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.counterpart` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.gesture` | [core-drag](core-drag) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.id` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.inserted` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.kept` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.moved` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.onstage` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.received` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.removed` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.role` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.run` | [interactive-run](interactive-run) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.still` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n\n### FilmVocabulary\n\n| API | Guide | Source |\n| ------------ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |\n| `f.Attach` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Chapter` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Eye` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Freeze` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Insert` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Inset` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Join` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Lineup` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Mark` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Sequence` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Shot` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Sky` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Spine` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Stamp` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.To` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Trace` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Type` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Video` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Voice` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.clip` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.picture` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.sound` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n\n---\n\n[← Diagnose Motion Problems](core-troubleshooting) · [All guides](README) · [Targets, Styles, and Property Ownership →](core-targets)\n";
|
|
879
|
+
var core_api_inventory_default = "# API and Concept Inventory\n\nChoreo has four connected areas: an element binding over Motion, interactive scene choreography, spatial direction, and recorded film composition. This inventory maps the public entrypoints and yielded vocabularies to the guides that explain their behavior. Use it when you know an API name, when you are planning an application, or when you want to check whether a concept has been documented beyond an introductory example.\n\n## Scope and Reading Depth\n\nThe inventory covers the `glimmer-motion` root and its `glimmer-motion/test-support` subpath, the `@cardstack/choreo` root and its `@cardstack/choreo/film` and `@cardstack/choreo/test-support` subpaths, and the separate `@cardstack/choreo-player` package. It also includes the components and queries yielded by ChoreoContext and FilmVocabulary. Each entry links to a substantial concept chapter with motivation, behavior, examples, and relevant constraints.\n\nRelated helpers, compatibility aliases, and supporting TypeScript types share the chapter about the behavior they describe. For example, a spring configuration and its argument type belong with spring transitions; the several query selectors belong with the changeset model. This avoids pretending that a type alias is an independent feature while still making every exported name discoverable.\n\nEach guide contains at least 300 words of explanatory prose, approximately three-quarters of a conventional documentation page, excluding code blocks and API tables. This is a minimum depth check rather than a measure of completeness by itself. Complex concepts include additional examples and links to adjacent contracts. A longer page should add useful explanation, not repeat the same introduction in different words.\n\n## Implementation and Integration Boundaries\n\nThe inventory reflects the checked-in implementation. Historical design notes can include proposals or older signatures, so the source links beside an API are the authority for its current shape. Advanced host APIs and the external-provider lane surface are identified as integration work rather than required application patterns. Wildcard deep imports expose implementation modules, but the inventory does not promise every internal helper as a supported standalone application API.\n\nThe library uses the engine's own MotionValues. `glimmer-motion` re-exports a small, curated set of engine functions (`motionValue`, `transformValue`, `styleEffect`, `frame`, `animate`) rather than wrapping them, and the continuous-value guide explains that integration. Similarly, the spatial guides distinguish camera direction from renderer capabilities, and the film guides distinguish a compiled graph from decoded, paintable media. Those boundaries are part of learning the system, not details to skip when assembling a demonstration.\n\n## Maintaining Coverage\n\nRun `pnpm lint:realm` in `packages/choreo-gallery` after changing an export or a guide. The check compares this inventory with the actual source declarations, verifies guide destinations and preambles, and enforces the minimum prose depth. A new public symbol fails that check until its documentation mapping is reviewed. Browser verification still matters for examples, controls, and renderer behavior; a coverage table alone cannot prove that a demonstration works.\n\n## Find an API\n\n### glimmer-motion\n\n| API | Guide | Source |\n| ---------------------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |\n| `BusyProbe` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts) |\n| `registerBusyProbe` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts) |\n| `scroll` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `scrollInfo` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `ScrollInfo` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `ScrollOffset` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `ScrollOptions` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `InViewOptions` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `inView` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `createDragControls` | [core-drag-handles](core-drag-handles) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/gestures/drag-controls.ts) |\n| `DragControls` | [core-drag-handles](core-drag-handles) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/gestures/drag-controls.ts) |\n| `correctParentTransform` | [core-drag-handles](core-drag-handles) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/gestures/transform-page-point.ts) |\n| `transformViewBoxPoint` | [core-drag-handles](core-drag-handles) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/gestures/transform-page-point.ts) |\n| `InertiaArgs` | [core-drag](core-drag) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `SpringArgs` | [core-springs](core-springs) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `TweenArgs` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `ease` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `inertia` | [core-drag](core-drag) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `perValue` | [core-targets](core-targets) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `spring` | [core-springs](core-springs) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `stagger` | [core-variants](core-variants) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `styles` | [core-targets](core-targets) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `to` | [core-targets](core-targets) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `tween` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/helpers.ts) |\n| `afterSettle` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `instantLayoutTransition` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `layoutChange` | [core-layout](core-layout) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `layoutLoopDetected` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `requestSettle` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `resetLayoutLoopGuard` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `snapshotAll` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout.ts) |\n| `closestLayoutGroup` | [core-layout](core-layout) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout-group.gts) |\n| `LayoutGroup` | [core-layout](core-layout) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout-group.gts) |\n| `snapshotOnRender` | [core-layout](core-layout) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/layout-group.gts) |\n| `MotionEl` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts) |\n| `MotionProps` | [core-elements](core-elements) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts) |\n| `motion` | [core-elements](core-elements) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts) |\n| `MotionModifier` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion.ts) |\n| `MotionConfigContext` | [core-config](core-config) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion-config.gts) |\n| `closestMotionConfig` | [core-config](core-config) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion-config.gts) |\n| `MotionConfig` | [core-config](core-config) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion-config.gts) |\n| `flushPendingMounts` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/node.ts) |\n| `MotionNode` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/node.ts) |\n| `MotionParticipant` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `ParticipantArgs` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `ParticipantHost` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `closestParticipantHost` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `defineParticipantArg` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `PARTICIPANT_HOST_ATTRIBUTE` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `setParticipantHost` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/participant.ts) |\n| `Presence` | [core-presence](core-presence) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/presence.gts) |\n| `PresenceHandle` | [core-presence](core-presence) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/presence-types.ts) |\n| `ReorderGroup` | [core-reorder](core-reorder) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/reorder/group.gts) |\n| `ReorderItem` | [core-reorder](core-reorder) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/reorder/item.gts) |\n| `ReorderAxis` | [core-reorder](core-reorder) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/reorder/types.ts) |\n| `ReorderContextProps` | [core-reorder](core-reorder) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/reorder/types.ts) |\n| `postRender` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scheduler.ts) |\n| `setPostRender` | [core-host](core-host) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scheduler.ts) |\n| `ScrollValues` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `UseInViewOptions` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `UseScrollOptions` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `InView` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `scrollProgress` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `useInView` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `useScroll` | [core-scroll](core-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/scroll.ts) |\n| `motionSpeed` | [core-tempo](core-tempo) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/speed.ts) |\n| `onMotionSpeed` | [core-tempo](core-tempo) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/speed.ts) |\n| `scaleTransition` | [core-tempo](core-tempo) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/speed.ts) |\n| `setMotionSpeed` | [core-tempo](core-tempo) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/speed.ts) |\n| `ViewTransitionBuilder` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `ViewTransitionOptions` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `ViewTransitionUpdate` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `animateView` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `viewTransition` | [core-page-transitions](core-page-transitions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/view-transition.ts) |\n| `animate` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `frame` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `MotionValue` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `motionValue` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `styleEffect` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n| `transformValue` | [core-motion-values](core-motion-values) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/index.ts) |\n\n### @cardstack/choreo\n\n| API | Guide | Source |\n| ------------------ | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |\n| `beacon` | [interactive-beacons](interactive-beacons) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/beacon.ts) |\n| `ChoreoContext` | [interactive-start](interactive-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `Choreo` | [interactive-start](interactive-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `AnchorRef` | [interactive-anchors](interactive-anchors) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/anchors.ts) |\n| `after` | [interactive-anchors](interactive-anchors) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/anchors.ts) |\n| `at` | [interactive-anchors](interactive-anchors) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/anchors.ts) |\n| `Arming` | [interactive-arming](interactive-arming) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/arming.ts) |\n| `ArmingOptions` | [interactive-arming](interactive-arming) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/arming.ts) |\n| `ArmingRegion` | [interactive-arming](interactive-arming) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/arming.ts) |\n| `createArming` | [interactive-arming](interactive-arming) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/arming.ts) |\n| `BeaconRef` | [interactive-beacons](interactive-beacons) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/beacons.ts) |\n| `registerBeacon` | [interactive-beacons](interactive-beacons) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/beacons.ts) |\n| `Changeset` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/changeset.ts) |\n| `easeIn` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/easings.ts) |\n| `easeInAndOut` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/easings.ts) |\n| `easeOut` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/easings.ts) |\n| `registerSettle` | [interactive-regions](interactive-regions) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/far.ts) |\n| `GestureRef` | [core-drag](core-drag) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/gesture.ts) |\n| `ChoreoHost` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `choreoHostAt` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `choreoHostById` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `ChoreoProvider` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `closestChoreo` | [interactive-registry](interactive-registry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts) |\n| `ChoreoRun` | [interactive-run](interactive-run) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/run.ts) |\n| `PlanePoint` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/space.ts) |\n| `appliedCamera` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/space.ts) |\n| `toLocal` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/space.ts) |\n| `toPage` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/space.ts) |\n| `StepArgs` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/steps.gts) |\n| `StepArgsBase` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/steps.gts) |\n| `StepComponent` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/steps.gts) |\n| `toMs` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/steps.gts) |\n| `Block` | [interactive-blocks](interactive-blocks) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Bounds` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Camera3DState` | [spatial-camera3d](spatial-camera3d) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Camera3DWaypoint` | [spatial-paths](spatial-paths) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `CameraState` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `DeliveryBy` | [interactive-delivery](interactive-delivery) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `DeliveryOrder` | [interactive-delivery](interactive-delivery) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `DeriveContext` | [interactive-follow](interactive-follow) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Easing` | [core-tweens](core-tweens) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `FollowSource` | [interactive-follow](interactive-follow) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `GateNode` | [interactive-gates](interactive-gates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `PerformCommand` | [interactive-commands](interactive-commands) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `PropSource` | [interactive-property-steps](interactive-property-steps) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `PropValue` | [interactive-property-steps](interactive-property-steps) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Query` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Rect` | [spatial-coordinates](spatial-coordinates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `SpringSpec` | [core-springs](core-springs) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Sprite` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `Step` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n| `TimelineNode` | [interactive-composites](interactive-composites) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts) |\n\n### @cardstack/choreo/film\n\n| API | Guide | Source |\n| ------------------------ | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------- |\n| `Clip` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clip.gts) |\n| `ClipEnd` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ClipKind` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `clipLanes` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ClipLook` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ClipSpec` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ClipState` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `clipWindow` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `resolveClip` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `resolveClips` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `ResolvedClip` | [film-clips](film-clips) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/clips.ts) |\n| `Film` | [film-start](film-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/film.gts) |\n| `FilmContext` | [film-start](film-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/film.gts) |\n| `FilmSignature` | [film-start](film-start) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/film.gts) |\n| `TICK` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/film.gts) |\n| `Adjustment` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Build` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Filter` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `IFRAME_PICTURE` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Light` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Look` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Mix` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Set` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `SOUND` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Sun` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Weather` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `Winter` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/adjust.gts) |\n| `AttachNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `CompiledGraph` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `compileGraph` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `EyeNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `GraphNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `GroupNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `JoinNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `Patch` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `PatchNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `ShotNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `ToNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `VoiceNode` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/compile.ts) |\n| `FilmGraph` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `FilmGraphSignature` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `FilmVocabulary` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `VOCABULARY` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `collectGraph` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Eye` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Freeze` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphAttach` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphChapter` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphInsert` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphNodeComponent` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphProvider` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `GraphStamp` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `JoinInto` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Lineup` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Mark` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `PatchComponent` | [film-graph-extension](film-graph-extension) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Sequence` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Shot` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Sky` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Spine` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `To` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Trace` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Type` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Video` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Voice` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/nodes.gts) |\n| `Blend` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Blur` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Dip` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Flash` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `inGlass` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Iris` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `JOIN_SECS` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Joins` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Luma` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Melt` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Presentation` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `PresentationComponent` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `PRESENTATIONS` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `PresentationSignature` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `retire` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `seamShape` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `STILL_JOINS` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `Wipe` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/joins.gts) |\n| `clamp01` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `hex` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `lerp` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `luminance` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `mmss` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `RAD` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `rgba` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `smooth` | [film-utilities](film-utilities) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/math.ts) |\n| `Captions` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/overlays.gts) |\n| `Insert` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/overlays.gts) |\n| `Stamp` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/overlays.gts) |\n| `Track` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/overlays.gts) |\n| `IframePicture` | [film-picture](film-picture) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/picture.gts) |\n| `IframePictureSignature` | [film-picture](film-picture) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/picture.gts) |\n| `PictureSpec` | [film-picture](film-picture) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/picture.gts) |\n| `Plate` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/plate.gts) |\n| `Burst` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `Menu` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `MenuEntry` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `PlaybarSegment` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `Player` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/player.gts) |\n| `Rail` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/rail.gts) |\n| `RailMark` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/rail.gts) |\n| `beatStart` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `chapterHeads` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Content` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `contents` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Cue` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `cues` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `joinInto` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Schedule` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `schedule` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `secsBefore` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `tailFor` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `totalSecs` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Waypoint` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `waypoints` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/schedule.ts) |\n| `Seam` | [film-seam-readiness](film-seam-readiness) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/seam.ts) |\n| `EndCard` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/titles.gts) |\n| `Gate` | [film-interface](film-interface) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/titles.gts) |\n| `Beat` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Cam` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Chapter` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `FilmClock` | [film-schedule](film-schedule) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `FilmGrade` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `FilmHandle` | [film-transport](film-transport) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Join` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `JoinName` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `LookFx` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Over` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Picture` | [film-picture](film-picture) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `PlateMode` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `Pt3` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `SeamSpec` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n| `ShotState` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/types.ts) |\n\n### glimmer-motion/test-support\n\n| API | Guide | Source |\n| --------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |\n| `isMotionIdle` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts) |\n| `whatIsBusy` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/activity.ts) |\n| `Box` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `bounds` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `shape` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `boundsAndShape` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `SettleOptions` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `animationsSettled` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `velocityOf` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `setupMotion` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `resetMotion` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n| `registerMotionReset` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/test-support/index.ts) |\n\n### @cardstack/choreo/test-support\n\n| API | Guide | Source |\n| -------------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------- |\n| `setupChoreo` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `advanceGate` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `seekTo` | [core-test-timing](core-test-timing) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `orphanCount` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `live` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `liveAll` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n| `strandedTransforms` | [core-test-geometry](core-test-geometry) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/test-support/index.ts) |\n\n### @cardstack/choreo-player\n\n| API | Guide | Source |\n| --------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------- |\n| `ChoreoRun` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n| `ChoreoPlayer` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n| `ChoreoPlayerUpdateOptions` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n| `ChoreoPlayerOptions` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n| `createChoreoPlayer` | [film-player](film-player) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo-player/src/index.ts) |\n\n### ChoreoContext\n\n| API | Guide | Source |\n| --------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------- |\n| `c.Aim` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Attach` | [film-attachments](film-attachments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Camera` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Camera3D` | [spatial-camera3d](spatial-camera3d) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Crossing` | [interactive-crossings](interactive-crossings) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Follow` | [interactive-follow](interactive-follow) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Frame` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Gate` | [interactive-gates](interactive-gates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Hold` | [interactive-holds](interactive-holds) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Move` | [interactive-move](interactive-move) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Pan` | [spatial-relative](spatial-relative) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Parallel` | [interactive-blocks](interactive-blocks) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Perform` | [interactive-commands](interactive-commands) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Raise` | [interactive-raise-scroll](interactive-raise-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Scroll` | [interactive-raise-scroll](interactive-raise-scroll) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Sequence` | [interactive-blocks](interactive-blocks) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.SlowZoom` | [spatial-relative](spatial-relative) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Spring` | [interactive-property-steps](interactive-property-steps) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Tether` | [interactive-tethers](interactive-tethers) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Tween` | [interactive-property-steps](interactive-property-steps) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.Wait` | [interactive-holds](interactive-holds) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.advance` | [interactive-gates](interactive-gates) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.all` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.beacon` | [interactive-beacons](interactive-beacons) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.camera` | [spatial-frame](spatial-frame) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.counterpart` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.gesture` | [core-drag](core-drag) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.id` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.inserted` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.kept` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.moved` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.onstage` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.received` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.removed` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.role` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.run` | [interactive-run](interactive-run) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n| `c.still` | [interactive-queries](interactive-queries) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts) |\n\n### FilmVocabulary\n\n| API | Guide | Source |\n| ------------ | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |\n| `f.Attach` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Chapter` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Eye` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Freeze` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Insert` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Inset` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Join` | [film-joins](film-joins) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Lineup` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Mark` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Sequence` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Shot` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Sky` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Spine` | [film-graph](film-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Stamp` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.To` | [film-poses](film-poses) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Trace` | [film-world-annotations](film-world-annotations) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Type` | [film-typography](film-typography) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Video` | [film-media-graph](film-media-graph) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.Voice` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.clip` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.picture` | [film-adjustments](film-adjustments) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n| `f.sound` | [film-audio-mix](film-audio-mix) | [Implementation](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/film/graph/host.gts) |\n\n---\n\n[← Diagnose Motion Problems](core-troubleshooting) · [All guides](README) · [Targets, Styles, and Property Ownership →](core-targets)\n";
|
|
880
880
|
//#endregion
|
|
881
881
|
//#region ../choreo-gallery/realm/docs/guides/core-config.md?raw
|
|
882
882
|
var core_config_default = "# Motion Configuration and Reduced Motion\n\nA motion system needs a common response without requiring every element to repeat the same configuration. `MotionConfig` supplies defaults to the elements beneath it, including transition settings and reduced-motion policy. It is also the right boundary for pointer-coordinate correction shared by a transformed subtree.\n\n::card[../../demos/gestures]\n\n**Live example: Motion Configuration and Reduced Motion.** Hover or press the globe and compare the configured response. [Open the demo](../../demos/gestures) to tune it with DialKit.\n\n## Supplying Defaults\n\nThe component registers itself in the DOM and descendants use the closest configuration. Nested configurations inherit the surrounding values and apply their own explicitly supplied arguments. An individual modifier can still provide its own transition for an interaction that needs a different response.\n\n```gts title=\"Component template excerpt\"\nimport { MotionConfig, motion, spring, to } from 'glimmer-motion';\nconst response = spring({ stiffness: 280, damping: 28 });\n\n<template>\n <MotionConfig @transition={{response}} @reducedMotion='user'>\n <button {{motion whileHover=(to scale=1.02)}}>Continue</button>\n </MotionConfig>\n</template>\n```\n\nThe transition resolver supports inheritance rules from the engine; use a transition with `inherit: true` when you intend its fields to merge with the parent's transition. Treat a nested configuration as a design boundary, not as an invisible global setting. `closestMotionConfig(element)` exposes the resolved context for integrations that need to inspect the same boundary.\n\n## Respecting Motion Preferences\n\nThis binding defaults to the user's reduced-motion preference. Keep `@reducedMotion='user'` unless a product requirement calls for a stricter policy. `always` forces reduced motion. Do not use `never` merely to make a showcase more dramatic. The interaction must still communicate state when large spatial motion is reduced.\n\n`skipAnimations` is a separate control for immediate completion, useful in some end-to-end or visual checks. It does not replace tests of interruption and continuity. Those tests need real intermediate frames; making every animation instant would remove the behavior they are supposed to verify.\n\n## Additional Host Settings\n\n`transformPagePoint` corrects pointer coordinates for all relevant descendants. Supply it at the narrowest boundary that shares a transform. `nonce` provides the CSP nonce used by styles injected for features such as popLayout. These are host integration settings rather than artistic timing controls, but they belong in the same inherited context.\n\nCheck nested configurations in the actual DOM structure. A component hierarchy that renders into a different DOM location may not have the ancestor you expected. Keep the resolved behavior visible in a small fixture, then verify one ordinary transition, one reduced-motion transition, and a transformed drag. The result should be consistent without requiring the page to rewrite every modifier argument.\n\n## API Coverage\n\n**glimmer-motion**: `MotionConfigContext`, `closestMotionConfig`, `MotionConfig`.\n\nRead the implementation: [`motion-config.gts`](https://github.com/cardstack/boxel/blob/main/packages/glimmer-motion/src/motion-config.gts).\n\n---\n\n[← Scroll Progress and Viewport Observation](core-scroll) · [All guides](README) · [Page Transitions and Live Crossings →](core-page-transitions)\n";
|
|
@@ -1038,7 +1038,7 @@ var interactive_anchors_default = "# Named Anchors and Overlap\n\nSequential ord
|
|
|
1038
1038
|
var interactive_arming_default = "# Arming and Reliable Activation\n\nA host often needs to know that a scene change is underway before Choreo has compiled the resulting run. It may suppress entrance effects, hold an expensive renderer, or keep a preview visible until the landing. `createArming()` provides that lifecycle signal without coupling the library to a router.\n\n::card[../../demos/lightbox]\n\n**Live example: Arming and Reliable Activation.** Open and close the detail quickly to inspect repeated activation and teardown. [Open the demo](../../demos/lightbox) to tune it with DialKit.\n\n## Beginning Before Render\n\nCreate an arming instance and call `begin(region)` when the host commits to the change. The region argument only needs to expose its current run through the `ArmingRegion` contract. `active()` is tracked, so a template can read it, and `settled()` resolves when the watch stands down.\n\n```ts title=\"Component logic excerpt\"\nimport { createArming } from '@cardstack/choreo';\n\nconst crossing = createArming({ deadline: 4000 });\n// After obtaining the region instance:\n// crossing.begin(region);\n// perform the application state change\n// await crossing.settled();\n// activate the expensive content if this request is still current\n```\n\nThe deadline is in milliseconds, unlike step durations in seconds. It is a backstop for an aborted or identical change that never produces a run. It is not a replacement for the run's actual duration and should not be tuned as a cinematic delay.\n\n## Following the Surviving Run\n\nA crossing can be interrupted and replaced. The old run's `finished` promise can resolve while its successor is still moving, so waiting on that one promise is insufficient. Arming follows the current surviving run and uses generations to prevent an older completion from standing down a newer crossing.\n\n`end()` lets the host stand down explicitly, and `onStandDown` provides a cleanup hook. A parked or standing run represents a settled condition rather than motion that must eventually finish. The helper accounts for that distinction so an annotation does not block activation forever.\n\n## Keeping Readiness Separate\n\nArming describes the crossing lifecycle. It does not prove that an iframe, texture, font, or audio asset has loaded. A tile handoff still needs a separate readiness signal from the incoming content. Keep the static preview visible until that content has actually painted, then switch ownership without revealing a blank layer.\n\nAfter awaiting a watch, confirm the activation request is still current. A user may have selected another tile while the first was waiting. The helper protects its own watch generations; the host remains responsible for the identity of its pending mount or data request.\n\nTest no-op navigation, aborted changes, repeated selections, and a successor run started before the prior one settles. These are the cases where a boolean set at the beginning and cleared by a fixed timeout becomes unreliable. The helper exists to encode those cases once rather than reproduce them in every gallery or application shell.\n\n## API Coverage\n\n**@cardstack/choreo**: `Arming`, `ArmingOptions`, `ArmingRegion`, `createArming`.\n\nRead the implementation: [`arming.ts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/arming.ts).\n\n---\n\n[← Live Scene Crossings](interactive-crossings) · [All guides](README) · [The Run and Interruption →](interactive-run)\n";
|
|
1039
1039
|
//#endregion
|
|
1040
1040
|
//#region ../choreo-gallery/realm/docs/guides/interactive-beacons.md?raw
|
|
1041
|
-
var interactive_beacons_default = "# Connecting Regions and Destinations\n\nSome movements have a destination outside the item being animated. A message can fly to an archive button. A card can move from one panel to another. Choreo provides different tools for these two relationships.\n\n::card[../../demos/inbox]\n\n**Live example: A destination, not a replacement.** Archive a message and watch it travel toward the destination while other rows move. [Open the demo](../../demos/inbox) to tune it with DialKit.\n\n## Naming a Destination\n\nA **beacon** names a place on the page. Register it on the element whose bounds define the destination.\n\n```gts title=\"An Archive Destination — Template Excerpt\"\n<button type=\"button\" {{beacon 'archive'}}>Archive</button>\n\n<Choreo as |c|>\n {{#each @messages key=\"id\" as |message|}}\n <article {{motion id=message.id role='message'}}>\n {{message.subject}}\n </article>\n {{/each}}\n\n <c.Move\n @of={{c.removed 'message'}}\n @to={{c.beacon 'archive'}}\n @duration={{0.45}}\n />\n</Choreo>\n```\n\nImport `beacon` and `Choreo` from `@cardstack/choreo`, and `motion` from `glimmer-motion`. This excerpt describes what happens when application code removes a message. The parent still owns the archive action and updates the messages array.\n\nThe button remains a button. It does not become another representation of the message, and it does not need to stretch into the message's shape. Use this pattern when a destination is a place rather than a shared identity.\n\n## Giving a Region Its Own Timeline\n\nA nested `Choreo` establishes a separate region. Its timeline selects its own participants, so a local interaction can run without the parent selecting those same elements again.\n\nFor movement between regions, keep the item's identity stable as application state transfers it. Choreo's far matching can connect a participant leaving one region with its counterpart arriving in another during the same render pass.\n\nUpdate the source and destination state together. Splitting the removal and insertion across unrelated asynchronous updates prevents that pass from describing the complete transfer.\n\n## Seeing the Difference\n\nThe [inbox demo](../../demos/inbox) demonstrates movement toward a destination. The [far match demo](../../demos/far) demonstrates an item changing regions. Compare their state changes before choosing a pattern.\n\nRead the [nested Choreo reference](../nested-choreo.md) for selection boundaries and cross-region matching rules.\n\n## Owning the Destination\n\nA BeaconRef identifies measured geometry; it does not transfer ownership of the element that supplied it. The beacon modifier registers the destination for its lifetime and removes that registration on teardown. Test a destination in persistent chrome while the sending region is replaced, and test removing the destination before another command tries to use it. Use a clear name that describes the place, then inspect the changeset and beacon measurements before compensating for a wrong landing with arbitrary offsets.\n\n## API Coverage\n\n**@cardstack/choreo**: `beacon`, `BeaconRef`.\n\n**ChoreoContext**: `c.beacon`.\n\nRead the implementation: [`beacon.ts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/beacon.ts), [`beacons.ts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/beacons.ts), [`choreo.gts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts).\n\n---\n\n[← Writing a Timeline](interactive-timelines) · [All guides](README) · [Changesets, Sprites, and Queries →](interactive-queries)\n";
|
|
1041
|
+
var interactive_beacons_default = "# Connecting Regions and Destinations\n\nSome movements have a destination outside the item being animated. A message can fly to an archive button. A card can move from one panel to another. Choreo provides different tools for these two relationships.\n\n::card[../../demos/inbox]\n\n**Live example: A destination, not a replacement.** Archive a message and watch it travel toward the destination while other rows move. [Open the demo](../../demos/inbox) to tune it with DialKit.\n\n## Naming a Destination\n\nA **beacon** names a place on the page. Register it on the element whose bounds define the destination.\n\n```gts title=\"An Archive Destination — Template Excerpt\"\n<button type=\"button\" {{beacon 'archive'}}>Archive</button>\n\n<Choreo as |c|>\n {{#each @messages key=\"id\" as |message|}}\n <article {{motion id=message.id role='message'}}>\n {{message.subject}}\n </article>\n {{/each}}\n\n <c.Move\n @of={{c.removed 'message'}}\n @to={{c.beacon 'archive'}}\n @duration={{0.45}}\n />\n</Choreo>\n```\n\nImport `beacon` and `Choreo` from `@cardstack/choreo`, and `motion` from `glimmer-motion`. This excerpt describes what happens when application code removes a message. The parent still owns the archive action and updates the messages array.\n\nThe button remains a button. It does not become another representation of the message, and it does not need to stretch into the message's shape. Use this pattern when a destination is a place rather than a shared identity.\n\n## Giving a Region Its Own Timeline\n\nA nested `Choreo` establishes a separate region. Its timeline selects its own participants, so a local interaction can run without the parent selecting those same elements again.\n\nFor movement between regions, keep the item's identity stable as application state transfers it. Choreo's far matching can connect a participant leaving one region with its counterpart arriving in another during the same render pass.\n\nUpdate the source and destination state together. Splitting the removal and insertion across unrelated asynchronous updates prevents that pass from describing the complete transfer.\n\n## Seeing the Difference\n\nThe [inbox demo](../../demos/inbox) demonstrates movement toward a destination. The [far match demo](../../demos/far) demonstrates an item changing regions. Compare their state changes before choosing a pattern.\n\nRead the [nested Choreo reference](../nested-choreo.md) for selection boundaries and cross-region matching rules.\n\n## Owning the Destination\n\nA BeaconRef identifies measured geometry; it does not transfer ownership of the element that supplied it. The beacon modifier registers the destination for its lifetime and removes that registration on teardown. Test a destination in persistent chrome while the sending region is replaced, and test removing the destination before another command tries to use it. Use a clear name that describes the place, then inspect the changeset and beacon measurements before compensating for a wrong landing with arbitrary offsets.\nCode that owns an element outside a template can call `registerBeacon(name, element)` directly. It registers the same destination the modifier does and returns the function that removes it.\n\n## API Coverage\n\n**@cardstack/choreo**: `beacon`, `BeaconRef`, `registerBeacon`.\n\n**ChoreoContext**: `c.beacon`.\n\nRead the implementation: [`beacon.ts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/beacon.ts), [`beacons.ts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/beacons.ts), [`choreo.gts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts).\n\n---\n\n[← Writing a Timeline](interactive-timelines) · [All guides](README) · [Changesets, Sprites, and Queries →](interactive-queries)\n";
|
|
1042
1042
|
//#endregion
|
|
1043
1043
|
//#region ../choreo-gallery/realm/docs/guides/interactive-blocks.md?raw
|
|
1044
1044
|
var interactive_blocks_default = "# Sequences and Parallel Blocks\n\nA timeline should express why one action follows another. `c.Sequence` and `c.Parallel` provide the two basic relationships: wait for preceding work, or let work share an interval. Nesting them creates an explicit structure that remains correct when a spring or fade duration changes.\n\n::card[../../demos/sequence]\n\n**Live example: Sequences and Parallel Blocks.** Change the selected card and watch the ordered phases. [Open the demo](../../demos/sequence) to tune it with DialKit.\n\n## Composing an Interaction\n\nIn a sequence, each ordinary child contributes its duration before the next child begins. In a parallel block, children begin together unless their own delay or anchor says otherwise, and the longest child determines the block's span. A sequence can contain a parallel block, so a visual hold or elevation can last for the same interval as a movement.\n\n```gts title=\"Component template excerpt\"\n<c.Sequence>\n <c.Tween @of={{c.removed 'detail'}} @opacity={{0}} @duration={{0.15}} />\n <c.Parallel @name='flight'>\n <c.Move @of={{c.moved 'card'}} @spring={{response}} />\n <c.Hold @of={{c.moved 'card'}} @zIndex={{2}} />\n </c.Parallel>\n <c.Tween @of={{c.inserted 'detail'}} @opacity={{array 0 1}} @duration={{0.2}} />\n</c.Sequence>\n```\n\nThe hold takes the block's span when it has no independent duration. This is more reliable than choosing a timeout that happens to match the spring today. The compiler resolves the movement's actual duration and the surrounding structure follows it.\n\n## Naming a Block\n\nBoth blocks accept `@name`, `@at`, and `@delay`. An anchor can address the whole block, whose duration is derived from its contents. This lets a reusable composite expose a meaningful boundary such as an introduction or flight instead of forcing callers to know every inner step.\n\nAn anchored child is lifted out of its parent's sequential flow, but it remains part of the score. If it ends later than all the unanchored children, it still extends the run. Read the anchors guide before mixing block order and named overlap, because treating the last written child as the end of the run is an easy mistake.\n\n## Keeping the Timeline Declarative\n\nThe block components produce `TimelineNode` data; they are not independent browser timers. Do not supplement them with `setTimeout` calls to release an overlay or start the next action. Those timers cannot adapt to a new spring duration, a paused run, or a seek.\n\nGates belong to an ordered sequence and cannot be placed under a parallel context. When two branches must finish before the next user-controlled build, put the parallel block before a gate in the enclosing sequence. Test the structure by changing the movement duration and by advancing while a segment is still moving. A sound composition preserves its ordering under both changes.\n\n## API Coverage\n\n**@cardstack/choreo**: `Block`.\n\n**ChoreoContext**: `c.Parallel`, `c.Sequence`.\n\nRead the implementation: [`types.ts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/types.ts), [`choreo.gts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts).\n\n---\n\n[← Changesets, Sprites, and Queries](interactive-queries) · [All guides](README) · [Gates, Advance, and Retreat →](interactive-gates)\n";
|
|
@@ -1086,7 +1086,7 @@ var interactive_queries_default = "# Changesets, Sprites, and Queries\n\nA Chore
|
|
|
1086
1086
|
var interactive_raise_scroll_default = "# Elevation and Directed Scrolling\n\nA timeline can move the correct object toward the correct place and still fail visually because an ancestor clips the flight or the destination is outside the visible scroll area. `c.Raise` and `c.Scroll` address those two presentation problems without changing the logical identity of the subject.\n\n::card[../../demos/jump]\n\n**Live example: Elevation and Directed Scrolling.** Advance to another failure and watch the selected row come into view. [Open the demo](../../demos/jump) to tune it with DialKit.\n\n## Elevating a Live Participant\n\n`c.Raise` promotes selected participants to the region's elevated layer for a defined window. It preserves the real element, which matters for a card containing controls. It is more than setting z-index: a high z-index inside a clipped stacking context cannot escape that context by itself.\n\n```gts title=\"Component template excerpt\"\n<c.Parallel>\n <c.Move @of={{c.moved 'card'}} />\n <c.Raise @of={{c.moved 'card'}} @shadow={{true}} />\n</c.Parallel>\n```\n\nThe raise can use its own duration or share its block's span. `@shadow` adds the elevation treatment supplied by the runtime. The element must preserve measured continuity when entering and leaving the elevated layer; changing its DOM parent must not make it jump or lose the coordinate relationship to its flight.\n\n## Bringing a Target Into View\n\n`c.Scroll` moves the selected sprite's scroll container toward an alignment such as start, center, or end. It occupies time in the sequence, so another step can wait for the reveal or overlap it through an anchor. This is useful for a triage list or a guided explanation that needs to expose a specific item.\n\nThe target is a participant query, not a hard-coded scrollTop value. That lets the step use the captured geometry and the actual container. Test with the content sizes the product uses, especially when items expand or headers occupy part of the available viewport.\n\n## Keeping User Control\n\nDirected scrolling should help the user locate the subject without fighting their own input. If a person starts scrolling during the movement, inspect the runtime's interruption behavior and ensure the interface remains usable. Do not repeatedly reset scroll position from unrelated renders after the step has finished.\n\n## Testing the Boundaries\n\nUse fixtures with overflow clipping and an external scale, then inspect intermediate frames. A final-state assertion can miss an element that disappeared behind its parent for most of the journey. After settlement, verify that elevated elements returned to the intended live tree and that no orphan intercepts input. For scroll, assert the subject's position relative to the container rather than assuming the window is the scroller.\n\nKeep these operations separate from a 3D camera. Raising a DOM participant changes its compositing layer within a region; it does not create a physical world-space object or solve arbitrary WebGL occlusion.\n\n## API Coverage\n\n**ChoreoContext**: `c.Raise`, `c.Scroll`.\n\nRead the implementation: [`choreo.gts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/choreo.gts).\n\n---\n\n[← Holds, Waits, and Standing Steps](interactive-holds) · [All guides](README) · [Text Delivery and Stagger →](interactive-delivery)\n";
|
|
1087
1087
|
//#endregion
|
|
1088
1088
|
//#region ../choreo-gallery/realm/docs/guides/interactive-regions.md?raw
|
|
1089
|
-
var interactive_regions_default = "# Nested Regions and Far Matching\n\nA complex interface contains several motion systems: a shell, an editor, a list, perhaps a floating inspector. Nesting Choreo regions lets each system retain its own participants and timeline. A region is a scene boundary, not a global provider that should automatically collect every animation in the application.\n\n::card[../../demos/far]\n\n**Live example: Nested Regions and Far Matching.** Move a card across regions and watch the receiving scene preserve its identity. [Open the demo](../../demos/far) to tune it with DialKit.\n\n## Discovering the Owner\n\nA motion participant belongs to its nearest Choreo ancestor in the DOM. The parent region does not collect the child region's steps, and the child's participants do not silently become part of the parent's changeset. This keeps a local editor transition independent from a shell rearrangement.\n\n```gts title=\"Component template excerpt\"\n<Choreo @id='workspace' as |shell|>\n <aside {{motion id='navigation' role='chrome'}}>Navigation</aside>\n <Choreo @id='editor' as |panel|>\n <article {{motion id='document' role='card'}}>Document</article>\n <panel.Move @of={{panel.moved 'card'}} />\n </Choreo>\n <shell.Move @of={{shell.moved 'chrome'}} />\n</Choreo>\n```\n\nThe region identifiers make host lookup and explicit attachment possible, while participant identifiers describe the subjects moving inside or between regions. Keep those namespaces meaningful; a region identifier is not the same thing as the identity of a card it contains.\n\n## Transferring an Identity\n\nFar matching connects a departing participant in one region with an arriving participant of the same identity in another region during the coordinated pass. The receiving region owns the arriving motion. This allows a card to move between panels while the panels retain independent timelines.\n\nA beacon solves a different problem: it lends geometry without transferring identity. Use a beacon for a compose button, trash destination, or other named place. A row sent toward a trash button should not claim that it has become the button.\n\n## Coordinating the Pass\n\nMake the data change that transfers the item as one coherent application operation. If removal and insertion happen in unrelated later turns, the system may no longer see the same pairing opportunity. Read the far-match demo alongside its contract tests when implementing a multi-panel transfer, especially if an enclosing region also moves.\n\n## Verifying Independence\n\nTest local changes in each region before testing the cross-region flight. The editor's ordinary update should not replay every shell animation. Then test interruption halfway through a transfer, movement of both containers, and a scaled outer frame. Check that the arriving item is the usable live representation and that the departing skin is released when its work ends.\n\nNesting does not automatically synchronize clocks. When a parent film needs to drive another region's time, use an explicit attachment or an explicitly owned player. Spatial hierarchy and temporal ownership are related design choices, but neither should be inferred from the other.\n\n---\n\n[← Tethers and Connector Geometry](interactive-tethers) · [All guides](README) · [Live Scene Crossings →](interactive-crossings)\n";
|
|
1089
|
+
var interactive_regions_default = "# Nested Regions and Far Matching\n\nA complex interface contains several motion systems: a shell, an editor, a list, perhaps a floating inspector. Nesting Choreo regions lets each system retain its own participants and timeline. A region is a scene boundary, not a global provider that should automatically collect every animation in the application.\n\n::card[../../demos/far]\n\n**Live example: Nested Regions and Far Matching.** Move a card across regions and watch the receiving scene preserve its identity. [Open the demo](../../demos/far) to tune it with DialKit.\n\n## Discovering the Owner\n\nA motion participant belongs to its nearest Choreo ancestor in the DOM. The parent region does not collect the child region's steps, and the child's participants do not silently become part of the parent's changeset. This keeps a local editor transition independent from a shell rearrangement.\n\n```gts title=\"Component template excerpt\"\n<Choreo @id='workspace' as |shell|>\n <aside {{motion id='navigation' role='chrome'}}>Navigation</aside>\n <Choreo @id='editor' as |panel|>\n <article {{motion id='document' role='card'}}>Document</article>\n <panel.Move @of={{panel.moved 'card'}} />\n </Choreo>\n <shell.Move @of={{shell.moved 'chrome'}} />\n</Choreo>\n```\n\nThe region identifiers make host lookup and explicit attachment possible, while participant identifiers describe the subjects moving inside or between regions. Keep those namespaces meaningful; a region identifier is not the same thing as the identity of a card it contains.\n\n## Transferring an Identity\n\nFar matching connects a departing participant in one region with an arriving participant of the same identity in another region during the coordinated pass. The receiving region owns the arriving motion. This allows a card to move between panels while the panels retain independent timelines.\n\nA beacon solves a different problem: it lends geometry without transferring identity. Use a beacon for a compose button, trash destination, or other named place. A row sent toward a trash button should not claim that it has become the button.\n\n## Coordinating the Pass\n\nMake the data change that transfers the item as one coherent application operation. If removal and insertion happen in unrelated later turns, the system may no longer see the same pairing opportunity. Read the far-match demo alongside its contract tests when implementing a multi-panel transfer, especially if an enclosing region also moves.\n\nA region over a long scrolling list can pass `@inView={{true}}`. It then measures and animates only the participants inside the nearest vertical scroller's view, or within `@inViewMargin` views of it (default 1). The rest are left to layout, and a participant that comes near the view, or leaves it, counts as neither an arrival nor a removal. A pass that moves something farther than the margin is a jump: it lands as layout puts it, with no animation. A page with many regions of which few can change at once can also keep the others `@idle`, so they sit render passes out.\n\nSome state that a pass changes is not markup. A scroll position is the usual example: a list that follows new content moves its scroll offset in the same pass as the content. `registerSettle(fn)` registers a function that runs after the pass's mounts and before any region measures, so that state lands first and every region measures the page as the reader will see it. An element that the scroll kept still then reads as not moved. Settlers run in registration order, and the call returns the function that removes the settler. A settler that throws is reported, and the pass goes on.\n\nA settler runs only inside a pass, and a pass runs only when a region joins one: with no region on the page, every region `@idle`, or motion off, no settler runs. So the scroll owner also sets its scroll through its own path, as it would with no Choreo on the page, and its settler only makes that happen before regions measure. The page then ends in the same state with motion on or off.\n\n## Verifying Independence\n\nTest local changes in each region before testing the cross-region flight. The editor's ordinary update should not replay every shell animation. Then test interruption halfway through a transfer, movement of both containers, and a scaled outer frame. Check that the arriving item is the usable live representation and that the departing skin is released when its work ends.\n\nNesting does not automatically synchronize clocks. When a parent film needs to drive another region's time, use an explicit attachment or an explicitly owned player. Spatial hierarchy and temporal ownership are related design choices, but neither should be inferred from the other.\n\n---\n\n[← Tethers and Connector Geometry](interactive-tethers) · [All guides](README) · [Live Scene Crossings →](interactive-crossings)\n";
|
|
1090
1090
|
//#endregion
|
|
1091
1091
|
//#region ../choreo-gallery/realm/docs/guides/interactive-registry.md?raw
|
|
1092
1092
|
var interactive_registry_default = "# Region Lookup and External Providers\n\nMost templates receive their Choreo context directly from the region. Integrations such as an external player or a host-controlled lane need to locate a region after it mounts. The registry APIs provide explicit lookup while retaining the distinction between a region and its participants.\n\n## Choosing a Lookup\n\n`closestChoreo(element)` finds the nearest ancestor host for a participant. `choreoHostAt(element)` looks up the host registered on a region element itself. `choreoHostById(id)` finds a region declared with that identifier. These functions answer different questions; passing a region element to an ancestor lookup can select its parent instead of the region you intended.\n\n```ts title=\"Component logic excerpt\"\nimport { choreoHostById } from '@cardstack/choreo';\n\nconst host = choreoHostById('presentation');\nconst run = host?.currentRun();\nrun?.pause();\n```\n\nLookup can return nothing before mount or after destruction. A host's `currentRun()` can also return null between runs. Treat these as normal lifecycle states, not as a reason to scan every animation in the document or start a polling timer with no cleanup.\n\n## Understanding the Host Contract\n\n`ChoreoHost` includes participant registration and claiming removed nodes, plus current-run access. Those methods are adapter responsibilities. Ordinary application code should not manually register the same element that the modifier already owns. Double ownership can lead to duplicate measurements or a departing element being released at the wrong time.\n\n`ChoreoProvider` is the structural interface for something that supplies a `node()`. The host's `contribute()` method accepts an external provider and returns a removal function. The source marks this lane-oriented surface as a spike, so use it as an advanced integration boundary and pin its behavior with local tests rather than presenting it as a required application pattern.\n\n## Preserving Lifecycle Ownership\n\nKeep the remover returned by contribution and call it when the integration ends. Use a stable provider object whose node method is pure. An external provider joins the region's score; it does not receive permission to run another independent animation clock over the same elements.\n\nFor transport, prefer a function that resolves the current owned run on every operation. A region can be re-keyed under the same identifier while the prior instance is being destroyed. The registry guards replacement ownership, but a cached reference to the old host still points to old work.\n\nTest lookup before mount, after replacement, and after teardown. Verify that destroying one of two regions does not remove the surviving region's registration. Explicit identity and cleanup are what make cross-region tools reliable as the application changes shape.\n\n## API Coverage\n\n**@cardstack/choreo**: `ChoreoHost`, `choreoHostAt`, `choreoHostById`, `ChoreoProvider`, `closestChoreo`.\n\nRead the implementation: [`registry.ts`](https://github.com/cardstack/boxel/blob/main/packages/choreo/src/registry.ts).\n\n---\n\n[← Creating Composite Steps](interactive-composites) · [All guides](README) · [Composing a Continuous Loop →](interactive-circle-loop)\n";
|
|
@@ -14,7 +14,7 @@ import "./src-Ds_gxjJo.js";
|
|
|
14
14
|
import { t as MotionModifier } from "./motion-BNbXVpox.js";
|
|
15
15
|
import { t as Presence } from "./presence-D39pnMIf.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-b3Sk86hp.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-b3Sk86hp.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-CV8pBhBq.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-rxYRI9xw.js";
|
|
8
|
-
import { a as choreoGalleryRealmOf } from "./choreo-gallery-
|
|
8
|
+
import { a as choreoGalleryRealmOf } from "./choreo-gallery-BxA9cyzF.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
|
|
@@ -2,8 +2,8 @@ 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
4
|
import { t as animationsSettled } from "./test-support-CqqONO2I.js";
|
|
5
|
-
import { i as orphanCount, s as strandedTransforms } from "./test-support-
|
|
6
|
-
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames, t as $ } from "./choreo-gallery-stage-
|
|
5
|
+
import { i as orphanCount, s as strandedTransforms } from "./test-support-VX6ukQNR.js";
|
|
6
|
+
import { a as setupChoreoGalleryTest, o as setupStageViewport, r as frames, t as $ } from "./choreo-gallery-stage-b3Sk86hp.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
|