@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.
Files changed (177) hide show
  1. package/bundled-realms/pretui/components/agent-mark.gts +98 -0
  2. package/bundled-realms/pretui/components/agent-question.gts +340 -37
  3. package/bundled-realms/pretui/components/answer-footer.gts +249 -0
  4. package/bundled-realms/pretui/components/card-embed.gts +523 -0
  5. package/bundled-realms/pretui/components/card-pills.gts +725 -0
  6. package/bundled-realms/pretui/components/code-block.gts +87 -45
  7. package/bundled-realms/pretui/components/collapsed-turn.gts +133 -12
  8. package/bundled-realms/pretui/components/compaction-chip.gts +81 -67
  9. package/bundled-realms/pretui/components/composer-cap.gts +516 -0
  10. package/bundled-realms/pretui/components/context-ring.gts +108 -0
  11. package/bundled-realms/pretui/components/diff-block.gts +1002 -31
  12. package/bundled-realms/pretui/components/diff-stat.gts +102 -0
  13. package/bundled-realms/pretui/components/jump-chip.gts +86 -53
  14. package/bundled-realms/pretui/components/markdown-stream.gts +799 -0
  15. package/bundled-realms/pretui/components/markdown-surface.gts +71 -0
  16. package/bundled-realms/pretui/components/plan-mark.gts +147 -0
  17. package/bundled-realms/pretui/components/prose.gts +185 -8
  18. package/bundled-realms/pretui/components/prose.md +6 -8
  19. package/bundled-realms/pretui/components/quick-look.gts +377 -0
  20. package/bundled-realms/pretui/components/reactions.gts +136 -0
  21. package/bundled-realms/pretui/components/recommendation.gts +67 -36
  22. package/bundled-realms/pretui/components/result-card.gts +58 -22
  23. package/bundled-realms/pretui/components/segmented-control.gts +13 -8
  24. package/bundled-realms/pretui/components/session-prep.gts +12 -11
  25. package/bundled-realms/pretui/components/sliding-highlight.gts +8 -3
  26. package/bundled-realms/pretui/components/speaker-label.gts +132 -0
  27. package/bundled-realms/pretui/components/state-glyph.gts +121 -0
  28. package/bundled-realms/pretui/components/step-list.gts +62 -60
  29. package/bundled-realms/pretui/components/stick-to-bottom.gts +1150 -0
  30. package/bundled-realms/pretui/components/system-line.gts +143 -0
  31. package/bundled-realms/pretui/components/task-checklist.gts +184 -0
  32. package/bundled-realms/pretui/components/thinking.gts +63 -94
  33. package/bundled-realms/pretui/components/tool-change-table.gts +285 -0
  34. package/bundled-realms/pretui/components/tool-gate.gts +462 -0
  35. package/bundled-realms/pretui/components/tool-group.gts +920 -0
  36. package/bundled-realms/pretui/components/tool-icon.ts +64 -0
  37. package/bundled-realms/pretui/components/tool-meta.gts +82 -0
  38. package/bundled-realms/pretui/components/tool-plan.gts +197 -0
  39. package/bundled-realms/pretui/components/tool-row.gts +2087 -0
  40. package/bundled-realms/pretui/components/turn-changes.gts +227 -0
  41. package/bundled-realms/pretui/components/user-bubble.gts +575 -0
  42. package/bundled-realms/pretui/components/work-item.gts +185 -48
  43. package/bundled-realms/pretui/docs/scroll-anchoring-protocol.md +136 -0
  44. package/bundled-realms/pretui/internal/markdown-projection.ts +438 -0
  45. package/bundled-realms/pretui/internal/mount-queue.ts +79 -0
  46. package/bundled-realms/pretui/internal/tool-phrases.ts +168 -0
  47. package/bundled-realms/pretui/package.json +2 -1
  48. package/bundled-test-harness/assets/{ai-module-creation-test-beRNwH-e.js → ai-module-creation-test-B6FQKqIl.js} +1 -1
  49. package/bundled-test-harness/assets/{app-QAuw0l8v.js → app-KpPqdyX3.js} +4 -4
  50. package/bundled-test-harness/assets/{binary-upload-dedupe-test-bI8T0QLl.js → binary-upload-dedupe-test-DN00y1tM.js} +1 -1
  51. package/bundled-test-harness/assets/{can-invoke-test-DVaU_yRT.js → can-invoke-test-Bl-EUFM3.js} +1 -1
  52. package/bundled-test-harness/assets/{card-chooser-paging-test-DnxMnXKR.js → card-chooser-paging-test-BNuZRHX3.js} +1 -1
  53. package/bundled-test-harness/assets/{card-chooser-test-DUSnLr-u.js → card-chooser-test-wKfPOOT4.js} +1 -1
  54. package/bundled-test-harness/assets/{card-def-field-def-relationships-test-GBUr3tFK.js → card-def-field-def-relationships-test-CduQ6zan.js} +1 -1
  55. package/bundled-test-harness/assets/{card-delete-test-CQveO1VC.js → card-delete-test-DKxolj5o.js} +1 -1
  56. package/bundled-test-harness/assets/{check-correctness-test-D2M2p66N.js → check-correctness-test-B-kgHztp.js} +1 -1
  57. package/bundled-test-harness/assets/choreo-BEHW-NOc.js +2 -0
  58. package/bundled-test-harness/assets/{choreo-CJfBb_EY.js → choreo-C2cpCfhA.js} +164 -13
  59. package/bundled-test-harness/assets/{choreo-feature-reel-test-D2OrygZv.js → choreo-feature-reel-test-CPI_6nkT.js} +2 -2
  60. package/bundled-test-harness/assets/{choreo-gallery-w07xqtO-.js → choreo-gallery-BxA9cyzF.js} +3 -3
  61. package/bundled-test-harness/assets/{choreo-gallery-build-order-test-yQg4JER6.js → choreo-gallery-build-order-test-CLVoseAJ.js} +1 -1
  62. package/bundled-test-harness/assets/{choreo-gallery-compositor-test-C2THCXJN.js → choreo-gallery-compositor-test-BpT5Ia6B.js} +1 -1
  63. package/bundled-test-harness/assets/{choreo-gallery-cover-test-D4T_Tk4s.js → choreo-gallery-cover-test-DL_fdSsh.js} +1 -1
  64. package/bundled-test-harness/assets/{choreo-gallery-crossing-stage-test-tHUPJ-Hy.js → choreo-gallery-crossing-stage-test-BcKHhpOK.js} +2 -2
  65. package/bundled-test-harness/assets/{choreo-gallery-demos-alive-test-BOtBOnEZ.js → choreo-gallery-demos-alive-test-KufLhXG8.js} +1 -1
  66. package/bundled-test-harness/assets/{choreo-gallery-drift-test-D_6U1Z2c.js → choreo-gallery-drift-test-Cx58rYIA.js} +1 -1
  67. package/bundled-test-harness/assets/{choreo-gallery-escort-test-DDBU0n4C.js → choreo-gallery-escort-test-Wz-emmID.js} +1 -1
  68. package/bundled-test-harness/assets/{choreo-gallery-films-test-CgW1NSdr.js → choreo-gallery-films-test-BFrVs5WW.js} +2 -2
  69. package/bundled-test-harness/assets/{choreo-gallery-filter-test-DUIsNwdO.js → choreo-gallery-filter-test-DCKQkhwe.js} +1 -1
  70. package/bundled-test-harness/assets/{choreo-gallery-fold-test-Chzlxvdr.js → choreo-gallery-fold-test-UtpDgpG9.js} +1 -1
  71. package/bundled-test-harness/assets/{choreo-gallery-guide-pages-test-DOWnqALT.js → choreo-gallery-guide-pages-test-rXDU9JLM.js} +1 -1
  72. package/bundled-test-harness/assets/{choreo-gallery-guides-test-Dra2J4LJ.js → choreo-gallery-guides-test-DfVFdIuU.js} +3 -3
  73. package/bundled-test-harness/assets/{choreo-gallery-hang-test-zzn1eiB-.js → choreo-gallery-hang-test-Cj7MbkFf.js} +1 -1
  74. package/bundled-test-harness/assets/{choreo-gallery-highlight-test-CW99hncQ.js → choreo-gallery-highlight-test-D6CF3IYZ.js} +2 -2
  75. package/bundled-test-harness/assets/{choreo-gallery-inline-edit-test-CYFm1kUz.js → choreo-gallery-inline-edit-test-LfHWsbqc.js} +1 -1
  76. package/bundled-test-harness/assets/{choreo-gallery-interruption-test-CYIBrKV9.js → choreo-gallery-interruption-test-CvQQAgTp.js} +2 -2
  77. package/bundled-test-harness/assets/{choreo-gallery-lone-stack-test-DL8R3SG7.js → choreo-gallery-lone-stack-test-D7Zci7fm.js} +1 -1
  78. package/bundled-test-harness/assets/{choreo-gallery-navigation-test-Dcv04kDx.js → choreo-gallery-navigation-test-DB1EnBEW.js} +1 -1
  79. package/bundled-test-harness/assets/{choreo-gallery-playhead-transport-test-Cfz7GsXl.js → choreo-gallery-playhead-transport-test-CtBlc6AJ.js} +1 -1
  80. package/bundled-test-harness/assets/{choreo-gallery-poplayout-subtree-test-CwoklBkW.js → choreo-gallery-poplayout-subtree-test-BQbmjsvI.js} +1 -1
  81. package/bundled-test-harness/assets/{choreo-gallery-presence-modes-test-BDCIZzJ0.js → choreo-gallery-presence-modes-test-CIdXVG1K.js} +1 -1
  82. package/bundled-test-harness/assets/{choreo-gallery-presentation-test-DlyiHwFf.js → choreo-gallery-presentation-test-C_rPFp29.js} +1 -1
  83. package/bundled-test-harness/assets/{choreo-gallery-reduced-motion-test-DVz5SKNR.js → choreo-gallery-reduced-motion-test-CH5w8Lw-.js} +2 -2
  84. package/bundled-test-harness/assets/{choreo-gallery-sheet-standalone-test-CpD_-BvS.js → choreo-gallery-sheet-standalone-test-CDgI4mGX.js} +1 -1
  85. package/bundled-test-harness/assets/{choreo-gallery-sheet-test-BjvAKHDL.js → choreo-gallery-sheet-test-5lsFX7Rk.js} +1 -1
  86. package/bundled-test-harness/assets/{choreo-gallery-site-test-oq_7y_PN.js → choreo-gallery-site-test-DbMa2xeC.js} +2 -2
  87. package/bundled-test-harness/assets/{choreo-gallery-stage-Bzr4_8Xd.js → choreo-gallery-stage-b3Sk86hp.js} +2 -2
  88. package/bundled-test-harness/assets/{choreo-gallery-stage-keyboard-test-a83d2euJ.js → choreo-gallery-stage-keyboard-test-ds6fT5Eg.js} +1 -1
  89. package/bundled-test-harness/assets/{choreo-gallery-stages-test-C9Sl1kH6.js → choreo-gallery-stages-test-ahioKCct.js} +2 -2
  90. package/bundled-test-harness/assets/{choreo-gallery-subdivision-test-BVVnkOwk.js → choreo-gallery-subdivision-test-g7anTDhT.js} +1 -1
  91. package/bundled-test-harness/assets/{choreo-gallery-table-plan-test-B0YdYEA0.js → choreo-gallery-table-plan-test-Bozc4uUf.js} +1 -1
  92. package/bundled-test-harness/assets/{choreo-gallery-theater-test-BLA147xw.js → choreo-gallery-theater-test-kE535d-b.js} +3 -3
  93. package/bundled-test-harness/assets/{choreo-gallery-tuning-test-DSXiNzCh.js → choreo-gallery-tuning-test-6rHkQBnZ.js} +1 -1
  94. package/bundled-test-harness/assets/{choreo-gallery-widget-room-test-BI574PdO.js → choreo-gallery-widget-room-test-0Vq-uTo1.js} +2 -2
  95. package/bundled-test-harness/assets/{choreo-gallery-wires-test-B6Mz2WZl.js → choreo-gallery-wires-test-CdtnAWYO.js} +1 -1
  96. package/bundled-test-harness/assets/clip-BLfuHi8g.js +2 -0
  97. package/bundled-test-harness/assets/{clip-C_pXjVvY.js → clip-q1QE5f73.js} +1 -1
  98. package/bundled-test-harness/assets/{codeblocks-test-AdolhdCA.js → codeblocks-test-BDD7qK_V.js} +1 -1
  99. package/bundled-test-harness/assets/{compaction-test-DvyAQq56.js → compaction-test-BweolkhG.js} +1 -1
  100. package/bundled-test-harness/assets/{container-DIF_9lZ9.css → container-B5B6u-xm.css} +29 -22
  101. package/bundled-test-harness/assets/{container-DvvqmNpg.js → container-BnJjIM6J.js} +9 -6
  102. package/bundled-test-harness/assets/{create-listing-modal-test-D95JfQab.js → create-listing-modal-test-FvcAKpIa.js} +1 -1
  103. package/bundled-test-harness/assets/{debug-message-test-BcNtj7Wr.js → debug-message-test-CJ18Evt7.js} +1 -1
  104. package/bundled-test-harness/assets/{externals-6ZWftYIb.js → externals-BWjhmCD4.js} +12 -12
  105. package/bundled-test-harness/assets/{fallback-banner-live-delete-test-5lnN1pv2.js → fallback-banner-live-delete-test-C2H3BrT-.js} +1 -1
  106. package/bundled-test-harness/assets/{fallback-banner-test-DFb_m_Kq.js → fallback-banner-test-C10aYjkj.js} +1 -1
  107. package/bundled-test-harness/assets/{fallback-models-test-p3YIwj1L.js → fallback-models-test-BxoPiaGF.js} +1 -1
  108. package/bundled-test-harness/assets/{file-attachment-test-CmyjNWRR.js → file-attachment-test-DeKyzYaz.js} +1 -1
  109. package/bundled-test-harness/assets/film-B68PjRlr.js +2 -0
  110. package/bundled-test-harness/assets/{film-D7vtJO5q.js → film-CeUpnHN_.js} +6 -6
  111. package/bundled-test-harness/assets/{film-DN0A8JHx.js → film-DBZqyqW4.js} +6 -6
  112. package/bundled-test-harness/assets/{general-test-CX-TFDuX.js → general-test-BewzrpoB.js} +1 -1
  113. 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
  114. package/bundled-test-harness/assets/{glimmer-motion-and-choreo-test-BPNVeIio.js → glimmer-motion-and-choreo-test-BZ0ZuuAw.js} +3 -3
  115. package/bundled-test-harness/assets/{index-query-engine-test-Dz7Q4Xmk.js → index-query-engine-test-BtI8Y2LR.js} +1 -1
  116. package/bundled-test-harness/assets/{instance-filter-matcher-test-BoLU3bVg.js → instance-filter-matcher-test-BHXHGHjE.js} +1 -1
  117. package/bundled-test-harness/assets/{main-Dlgp8c7v.js → main-CqAHZ2kK.js} +1 -1
  118. package/bundled-test-harness/assets/{message-tool-test-CfjRSJvt.js → message-tool-test-NMaPJFsd.js} +1 -1
  119. package/bundled-test-harness/assets/{model-cost-tier-test-mZG84Uso.js → model-cost-tier-test-BgbfN2LH.js} +1 -1
  120. package/bundled-test-harness/assets/{operation-lowering-test-B0KpI1xu.js → operation-lowering-test-C4IaOjsA.js} +1 -1
  121. package/bundled-test-harness/assets/{operator-mode-card-chooser-test-KWS8lq16.js → operator-mode-card-chooser-test-Bwe47Rn7.js} +1 -1
  122. package/bundled-test-harness/assets/{operator-mode-links-test-CViFt0Ws.js → operator-mode-links-test-BU4jkC-B.js} +1 -1
  123. package/bundled-test-harness/assets/{operator-mode-test-D0gZM2yw.js → operator-mode-test-Bh0rGM9z.js} +1 -1
  124. package/bundled-test-harness/assets/{operator-mode-ui-test-CEvHJ9DS.js → operator-mode-ui-test-whgUw0ju.js} +1 -1
  125. package/bundled-test-harness/assets/{overlay-menu-items-test-Pw80RXsr.js → overlay-menu-items-test-Cwn1vr8q.js} +1 -1
  126. package/bundled-test-harness/assets/{overlays-BnOM360u.js → overlays-BOzLbVDK.js} +1 -1
  127. package/bundled-test-harness/assets/{overlays-kBVfa4i8.js → overlays-C_PuGDGh.js} +1 -1
  128. package/bundled-test-harness/assets/{past-sessions-test-CW0-Bjav.js → past-sessions-test-Bh24N-Kz.js} +1 -1
  129. package/bundled-test-harness/assets/{permission-checking-realm-test-D5uXQypS.js → permission-checking-realm-test-DKnnAy0f.js} +1 -1
  130. package/bundled-test-harness/assets/{plate-CFvCDv2t.js → plate-BL7UtyKE.js} +1 -1
  131. package/bundled-test-harness/assets/plate-CqG3igCJ.js +2 -0
  132. package/bundled-test-harness/assets/player-BJfsgdSI.js +2 -0
  133. package/bundled-test-harness/assets/{player-DzuYjrTU.js → player-Da_CIsp_.js} +1 -1
  134. package/bundled-test-harness/assets/{realm-config-policy-standing-test-Btatheni.js → realm-config-policy-standing-test-DngdYypq.js} +1 -1
  135. package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-Dh5zW13o.js → realm-config-routing-rule-edit-test-_rkFU8SN.js} +1 -1
  136. package/bundled-test-harness/assets/{realm-config-settings-test-BJa8gv_C.js → realm-config-settings-test-CR9NH0Zn.js} +1 -1
  137. package/bundled-test-harness/assets/{reasoning-test-2Zp37cQB.js → reasoning-test-0lH10kRl.js} +1 -1
  138. package/bundled-test-harness/assets/{room-message-test-BsrON13e.js → room-message-test-C-PddE4Y.js} +1 -1
  139. package/bundled-test-harness/assets/{run-BMyvn_UL.js → run-D4n4LPcK.js} +96 -6
  140. package/bundled-test-harness/assets/{run-realm-code-BxktQf6R.js → run-realm-code-C8N7DtN-.js} +1 -1
  141. package/bundled-test-harness/assets/{run-realm-code-test-7grpTos-.js → run-realm-code-test-DBdp147q.js} +1 -1
  142. package/bundled-test-harness/assets/{schema-generation-test-CM9ggQji.js → schema-generation-test-CB1Hb7GQ.js} +1 -1
  143. package/bundled-test-harness/assets/{scrolling-test-BER00htB.js → scrolling-test-3PhVin8h.js} +1 -1
  144. package/bundled-test-harness/assets/{searchable-option-test-BBr5BPow.js → searchable-option-test-BAdOiL4U.js} +1 -1
  145. package/bundled-test-harness/assets/{sending-test-BJGobs2E.js → sending-test-KSmu1tSJ.js} +1 -1
  146. package/bundled-test-harness/assets/{skills-test-GPOsHRN6.js → skills-test-D-dlcFpd.js} +1 -1
  147. package/bundled-test-harness/assets/{src-Df148w_b.js → src-B_DEhPze.js} +4 -4
  148. package/bundled-test-harness/assets/{src-Cf2wv-Le.js → src-BoTgwqUA.js} +2 -2
  149. package/bundled-test-harness/assets/{store-test-QvvHimzH.js → store-test-CEW7xQjZ.js} +1 -1
  150. package/bundled-test-harness/assets/{test-support-rNHuieEc.js → test-support-FXDPpIl3.js} +1 -1
  151. package/bundled-test-harness/assets/{test-support-C6N_2X-l.js → test-support-VX6ukQNR.js} +1 -1
  152. package/bundled-test-harness/assets/{tests-CmsQ-Z_3.js → tests-QYqqa6nv.js} +84 -84
  153. package/bundled-test-harness/assets/{text-input-validator-test-CYYH2N0L.js → text-input-validator-test-D8iNOWep.js} +1 -1
  154. package/bundled-test-harness/assets/{titles-B1pTaIfP.js → titles-DFJj5O0E.js} +1 -1
  155. package/bundled-test-harness/assets/titles-xGlgu7ys.js +2 -0
  156. package/bundled-test-harness/assets/{to-device-streaming-test-Ctqa0bVp.js → to-device-streaming-test-trCX-505.js} +1 -1
  157. package/bundled-test-harness/assets/{token-usage-test-BQVbK3X0.js → token-usage-test-C6sULooH.js} +1 -1
  158. package/bundled-test-harness/assets/{tools-DU8Rc15s.js → tools-UJfD-_al.js} +1 -1
  159. package/bundled-test-harness/assets/{tools-test-B13yvEKE.js → tools-test-Brav31AV.js} +1 -1
  160. package/bundled-test-harness/assets/{worker-DHBEBihX.js → worker-9ph9_Lpv.js} +31 -26
  161. package/bundled-test-harness/index.html +8 -8
  162. package/bundled-test-harness/tests/index.html +8 -8
  163. package/bundled-types/choreo/beacons.ts +16 -4
  164. package/bundled-types/choreo/changeset.ts +25 -5
  165. package/bundled-types/choreo/choreo.gts +245 -3
  166. package/bundled-types/choreo/far.ts +39 -0
  167. package/bundled-types/choreo/index.ts +2 -0
  168. package/bundled-types/choreo/run.ts +104 -1
  169. package/bundled-types/host-app/lib/realm-runner/worker.ts +8 -51
  170. package/bundled-types/runtime-common/realm-runner-script.d.ts +3 -0
  171. package/package.json +1 -1
  172. package/bundled-test-harness/assets/choreo-B3Z9QhDH.js +0 -2
  173. package/bundled-test-harness/assets/clip-BjcXuTwN.js +0 -2
  174. package/bundled-test-harness/assets/film-DMDPP7ma.js +0 -2
  175. package/bundled-test-harness/assets/plate-66qnQ-M9.js +0 -2
  176. package/bundled-test-harness/assets/player-pygg1PwA.js +0 -2
  177. package/bundled-test-harness/assets/titles-Ccpcl-jq.js +0 -2
@@ -53,7 +53,7 @@ import { t as buildWaiter } from "./dist-CSQ-y1Ft.js";
53
53
  import { _ as auto_attached_card_exports, c as PillMenu, d as AiAssistantMessage, f as FocusPill, g as AiAssistantActionBar, m as AiAssistantAttachmentPicker, o as ai_assist_icon_2x_default, p as AiAssistantChatInput, s as AiAssistantSkillMenu, u as AiAssistantConversation } from "./panel-BLDiX3k7.js";
54
54
  import { n as getCardCollection, t as card_collection_exports } from "./card-collection-BRIq3G88.js";
55
55
  import { n as getCard, t as card_resource_exports } from "./card-resource-SMiI6mQe.js";
56
- import { S as card_type_exports, _ as stack_backgrounds_exports, a as SearchSheet, b as inheritance_chain_exports, c as stack_item_focus_exports, d as publish_progress_exports, f as idFromCardOrURL, g as url_bar_exports, h as card_type_service_exports, i as HostModeContent, l as schema_editor_exports, m as search_sheet_state_exports, n as RegisterUser, o as SearchSheetModes, p as id_from_card_or_url_exports, r as ForgotPassword, s as CardChooserModal, t as OperatorModeContainer, u as run_while_active_exports, v as moduleContentsResource, x as directory_exports, y as module_contents_exports } from "./container-DvvqmNpg.js";
56
+ import { S as card_type_exports, _ as stack_backgrounds_exports, a as SearchSheet, b as inheritance_chain_exports, c as stack_item_focus_exports, d as publish_progress_exports, f as idFromCardOrURL, g as url_bar_exports, h as card_type_service_exports, i as HostModeContent, l as schema_editor_exports, m as search_sheet_state_exports, n as RegisterUser, o as SearchSheetModes, p as id_from_card_or_url_exports, r as ForgotPassword, s as CardChooserModal, t as OperatorModeContainer, u as run_while_active_exports, v as moduleContentsResource, x as directory_exports, y as module_contents_exports } from "./container-BnJjIM6J.js";
57
57
  import { n as element_tracker_exports } from "./element-tracker-CT_tRvjz.js";
58
58
  import { n as file_tree_from_index_exports } from "./file-tree-from-index-4LRQvd78.js";
59
59
  import { a as normalized_dir_path_exports, c as isReady, o as maybe_exports, r as operator_mode_state_service_exports, s as file_exports } from "./operator-mode-state-service-D_b1fNOW.js";
@@ -97,7 +97,7 @@ import { t as getUniqueValidToolDefinitions } from "./tool-definitions-Bhcf5vKh.
97
97
  import { n as monaco_test_waiter_exports, t as createMonacoWaiterManager } from "./monaco-test-waiter-lvFEYpFj.js";
98
98
  import { r as shimBundledBase } from "./bundled-base-3cXf7vDf.js";
99
99
  import "./dist-BOAdzfkP.js";
100
- import { a as microwait, i as allSettled$1, n as task, o as rAF, r as afterRender, t as shimExternals } from "./externals-6ZWftYIb.js";
100
+ import { a as microwait, i as allSettled$1, n as task, o as rAF, r as afterRender, t as shimExternals } from "./externals-BWjhmCD4.js";
101
101
  import { t as file_name_exports } from "./file-name-BBWa-sfG.js";
102
102
  import { n as write_text_file_exports } from "./write-text-file-BA4nc7Oc.js";
103
103
  import { n as add_field_to_card_definition_exports } from "./add-field-to-card-definition-DICeZA-y.js";
@@ -112,7 +112,7 @@ import { n as create_listing_pr_request_exports } from "./create-listing-pr-requ
112
112
  import { n as can_read_realm_exports } from "./can-read-realm-EXrxJitI.js";
113
113
  import { n as cancel_indexing_job_exports } from "./cancel-indexing-job-zrL9AhaI.js";
114
114
  import { n as capture_exports$2 } from "./capture-B55Hlfu6.js";
115
- import { a as update_code_path_with_selection_exports, c as read_binary_file_exports, d as generate_thumbnail_exports, f as generate_theme_example_exports, i as update_playground_selection_exports, l as listing_action_build_exports, m as capture_card_exports, o as serialize_card_exports, p as create_and_open_submission_workflow_card_exports, r as tools_exports, s as retry_submission_workflow_exports, u as get_card_type_schema_exports } from "./tools-DU8Rc15s.js";
115
+ import { a as update_code_path_with_selection_exports, c as read_binary_file_exports, d as generate_thumbnail_exports, f as generate_theme_example_exports, i as update_playground_selection_exports, l as listing_action_build_exports, m as capture_card_exports, o as serialize_card_exports, p as create_and_open_submission_workflow_card_exports, r as tools_exports, s as retry_submission_workflow_exports, u as get_card_type_schema_exports } from "./tools-UJfD-_al.js";
116
116
  import { n as check_correctness_exports, t as CheckCorrectnessTool } from "./check-correctness-BjaXBqYi.js";
117
117
  import { n as check_domain_availability_exports } from "./check-domain-availability-BVowi2nf.js";
118
118
  import { n as copy_card_exports } from "./copy-card-Cg0o_rph.js";
@@ -138,7 +138,7 @@ import { n as execute_atomic_operations_exports } from "./execute-atomic-operati
138
138
  import { n as fetch_card_json_exports } from "./fetch-card-json-CLJ9xNYf.js";
139
139
  import { n as full_reindex_realm_exports } from "./full-reindex-realm-DXROHZYc.js";
140
140
  import { i as generate_example_cards_exports } from "./generate-example-cards-BRKM4hHt.js";
141
- import { n as run_realm_code_exports } from "./run-realm-code-BxktQf6R.js";
141
+ import { n as run_realm_code_exports } from "./run-realm-code-C8N7DtN-.js";
142
142
  import { n as get_all_realm_metas_exports } from "./get-all-realm-metas-CUJCVCIV.js";
143
143
  import { n as get_available_realm_identifiers_exports } from "./get-available-realm-identifiers-ww6bQrex.js";
144
144
  import { n as get_catalog_realm_identifiers_exports } from "./get-catalog-realm-identifiers-CUJV9l7D.js";
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
6
6
  import "./component-BJO47HTh.js";
7
7
  import { t as Component } from "./dist-CkA1rgqO.js";
8
8
  import "./template-factory-ds9s0u8l.js";
9
- import { t as OperatorModeContainer } from "./container-DvvqmNpg.js";
9
+ import { t as OperatorModeContainer } from "./container-BnJjIM6J.js";
10
10
  import { T as settled, d as click, o as waitFor, s as fillIn } from "./dist-BOAdzfkP.js";
11
11
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
12
12
  import { D as realmConfigCardJSON, F as setupLocalIndexing, I as setupOnSave, M as setupCardLogs, P as setupIntegrationTestRealm, St as getTestRealmRegistry, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-rxYRI9xw.js";
@@ -8,7 +8,7 @@ import "./component-BJO47HTh.js";
8
8
  import { t as Component } from "./dist-CkA1rgqO.js";
9
9
  import "./template-factory-ds9s0u8l.js";
10
10
  import { t as templateOnly } from "./template-only-6nVzLWF-.js";
11
- import { t as OperatorModeContainer } from "./container-DvvqmNpg.js";
11
+ import { t as OperatorModeContainer } from "./container-BnJjIM6J.js";
12
12
  import { M as waitUntil, T as settled, h as render, o as waitFor } from "./dist-BOAdzfkP.js";
13
13
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
14
14
  import { D as realmConfigCardJSON, F as setupLocalIndexing, P as setupIntegrationTestRealm, a as SYSTEM_CARD_FIXTURE_CONTENTS, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-rxYRI9xw.js";
@@ -8,7 +8,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
8
8
  import "./component-BJO47HTh.js";
9
9
  import { t as Component } from "./dist-CkA1rgqO.js";
10
10
  import "./template-factory-ds9s0u8l.js";
11
- import { t as OperatorModeContainer } from "./container-DvvqmNpg.js";
11
+ import { t as OperatorModeContainer } from "./container-BnJjIM6J.js";
12
12
  import { M as waitUntil, T as settled, d as click, o as waitFor, s as fillIn } from "./dist-BOAdzfkP.js";
13
13
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
14
14
  import { D as realmConfigCardJSON, F as setupLocalIndexing, P as setupIntegrationTestRealm, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-rxYRI9xw.js";
@@ -7,7 +7,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
7
7
  import "./component-BJO47HTh.js";
8
8
  import { t as Component } from "./dist-CkA1rgqO.js";
9
9
  import "./template-factory-ds9s0u8l.js";
10
- import { t as OperatorModeContainer } from "./container-DvvqmNpg.js";
10
+ import { t as OperatorModeContainer } from "./container-BnJjIM6J.js";
11
11
  import { c as triggerKeyEvent, d as click, f as focus, o as waitFor, r as typeIn, s as fillIn, u as doubleClick } from "./dist-BOAdzfkP.js";
12
12
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
13
13
  import { D as realmConfigCardJSON, F as setupLocalIndexing, P as setupIntegrationTestRealm, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-rxYRI9xw.js";
@@ -7,7 +7,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
7
7
  import "./component-BJO47HTh.js";
8
8
  import "./template-factory-ds9s0u8l.js";
9
9
  import { t as templateOnly } from "./template-only-6nVzLWF-.js";
10
- import { t as OperatorModeContainer } from "./container-DvvqmNpg.js";
10
+ import { t as OperatorModeContainer } from "./container-BnJjIM6J.js";
11
11
  import { d as click, l as triggerEvent, o as waitFor } from "./dist-BOAdzfkP.js";
12
12
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
13
13
  import { D as realmConfigCardJSON, F as setupLocalIndexing, M as setupCardLogs, P as setupIntegrationTestRealm, Tt as percySnapshot, lt as setupRenderingTest, nt as provide, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-rxYRI9xw.js";
@@ -7,7 +7,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
7
7
  import "./component-BJO47HTh.js";
8
8
  import { t as Component } from "./dist-CkA1rgqO.js";
9
9
  import "./template-factory-ds9s0u8l.js";
10
- import { t as OperatorModeContainer } from "./container-DvvqmNpg.js";
10
+ import { t as OperatorModeContainer } from "./container-BnJjIM6J.js";
11
11
  import { M as waitUntil, d as click, l as triggerEvent, o as waitFor } from "./dist-BOAdzfkP.js";
12
12
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
13
13
  import { D as realmConfigCardJSON, F as setupLocalIndexing, H as testModuleRealm, I as setupOnSave, M as setupCardLogs, P as setupIntegrationTestRealm, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-rxYRI9xw.js";
@@ -3,7 +3,7 @@ import { Pr as testRealmURL } from "./runtime-common-CGizQV0A.js";
3
3
  import { M as waitUntil } from "./dist-BOAdzfkP.js";
4
4
  import { t as CheckCorrectnessTool } from "./check-correctness-BjaXBqYi.js";
5
5
  import { t as PatchCardInstanceTool } from "./patch-card-instance-syGEz5Nx.js";
6
- import { t as RunRealmCodeTool } from "./run-realm-code-BxktQf6R.js";
6
+ import { t as RunRealmCodeTool } from "./run-realm-code-C8N7DtN-.js";
7
7
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
8
8
  import { F as setupLocalIndexing, L as setupRealmCacheTeardown, P as setupIntegrationTestRealm, Z as withCachedRealmSetup, lt as setupRenderingTest, t as setupMockMatrix } from "./mock-matrix-rxYRI9xw.js";
9
9
  import { r as getService } from "./dist-CPfIHBla.js";
@@ -0,0 +1,2 @@
1
+ import { t as Choreo } from "./choreo-C2cpCfhA.js";
2
+ export { Choreo, Choreo as default };
@@ -15,7 +15,7 @@ import "./src-Ds_gxjJo.js";
15
15
  import { i as snapshotOnRender } from "./layout-group-BNMtOT8O.js";
16
16
  import { n as closestMotionConfig } from "./motion-config-BbHByW3a.js";
17
17
  import { t as motionSpeed } from "./speed-bIo0tyrM.js";
18
- import { C as measure, S as boundsOf, c as leave, d as setPassScheduler, f as compile, g as GESTURE, h as sameScore, m as fadeOn, n as execute, o as setChoreoHost, p as continuation, s as join, u as setBeforeMeasure, v as trackGestures, y as measureBeacons } from "./run-BMyvn_UL.js";
18
+ import { C as boundsOf, _ as GESTURE, b as measureBeacons, c as leave, d as setBeforeMeasure, f as setPassScheduler, g as sameScore, h as fadeOn, m as continuation, n as execute, o as setChoreoHost, p as compile, s as join, w as measure, y as trackGestures } from "./run-D4n4LPcK.js";
19
19
  import { C as collect, S as Wait, _ as SlowZoom, a as Crossing, b as Tether, c as Gate, d as Pan, f as Parallel, g as Sequence, h as Scroll, i as Camera3D, l as Hold, m as Raise, n as Attach, o as Follow, p as Perform, r as Camera, s as Frame, t as Aim, u as Move, v as Spring, x as Tween } from "./steps-D0xobKkB.js";
20
20
  //#region ../choreo/src/changeset.ts
21
21
  /**
@@ -61,16 +61,29 @@ var Changeset = class {
61
61
  measureZoom;
62
62
  /** the frame's own size in local pixels, from the same final layout */
63
63
  frame;
64
- /** what the page shows behind this region — see ChangesetLike.ground */
65
- ground;
66
- constructor(inserted, removed, kept, beacons = /* @__PURE__ */ new Map(), measureZoom = 1, frame, ground) {
64
+ /** what the page shows behind this region — see ChangesetLike.ground.
65
+ * Read on first use: finding it walks the region's ancestors' computed
66
+ * styles, and most passes never crossfade a skin that needs it. */
67
+ get ground() {
68
+ if (typeof this.groundSource === "function") this.groundSource = this.groundSource();
69
+ return this.groundSource;
70
+ }
71
+ groundSource;
72
+ constructor(inserted, removed, kept, beacons = /* @__PURE__ */ new Map(), measureZoom = 1, frame, ground, measureBeacon) {
67
73
  this.inserted = inserted;
68
74
  this.removed = removed;
69
75
  this.kept = kept;
70
- this.beacon = (name) => beacons.get(name) ?? null;
76
+ this.beacon = (name) => {
77
+ if (!beacons.has(name) && measureBeacon) {
78
+ const bounds = measureBeacon(name);
79
+ if (bounds) beacons.set(name, bounds);
80
+ return bounds;
81
+ }
82
+ return beacons.get(name) ?? null;
83
+ };
71
84
  this.measureZoom = measureZoom;
72
85
  this.frame = frame;
73
- this.ground = ground;
86
+ this.groundSource = ground;
74
87
  }
75
88
  get all() {
76
89
  return [
@@ -273,6 +286,19 @@ function reducesMotion(root) {
273
286
  if (policy !== "user") return policy === "always";
274
287
  return typeof matchMedia === "function" && matchMedia("(prefers-reduced-motion: reduce)").matches;
275
288
  }
289
+ /** whether an element scrolls its content on either axis */
290
+ function scrolls(el) {
291
+ const { overflowX, overflowY } = getComputedStyle(el);
292
+ return [overflowX, overflowY].some((o) => o === "auto" || o === "scroll" || o === "overlay");
293
+ }
294
+ /** the nearest ancestor that scrolls vertically: what `@inView` calls the view */
295
+ function scrollerOf(el) {
296
+ for (let p = el.parentElement; p; p = p.parentElement) {
297
+ const overflow = getComputedStyle(p).overflowY;
298
+ if (overflow === "auto" || overflow === "scroll" || overflow === "overlay") return p;
299
+ }
300
+ return null;
301
+ }
276
302
  /**
277
303
  * The barrier books one post-render callback for every region taking part in a
278
304
  * pass. `joinPass(this)` is where the region's PassHost contract (measurePass /
@@ -321,6 +347,9 @@ var Choreo = class extends Component {
321
347
  arrived = /* @__PURE__ */ new Set();
322
348
  /** destroyed before the pass that removed them has been processed */
323
349
  claimed = /* @__PURE__ */ new Set();
350
+ /** every beacon name this region's score has read, so a pass measures
351
+ * those beacons and not the whole page's */
352
+ beaconNames = /* @__PURE__ */ new Set();
324
353
  /** removed participants this region is keeping alive in its orphan layer */
325
354
  orphans = /* @__PURE__ */ new Set();
326
355
  /** participants whose Presence is letting them go: removed once, not on every pass while they leave */
@@ -348,6 +377,7 @@ var Choreo = class extends Component {
348
377
  this.run?.cancel();
349
378
  this.run = void 0;
350
379
  this.unquiet();
380
+ this.viewObserver?.disconnect();
351
381
  for (const node of [...this.orphans, ...this.claimed]) this.drop(node);
352
382
  });
353
383
  }
@@ -372,6 +402,7 @@ var Choreo = class extends Component {
372
402
  register(node) {
373
403
  this.participants.add(node);
374
404
  this.arrived.add(node);
405
+ this.watchView(node);
375
406
  if (this.args.debug && node.element) {
376
407
  node.element.style.outline = "1px dotted #16a34a";
377
408
  if (node.ownAnimation) console.warn(`choreo: participant '${node.id ?? node.role}' carries its own animate/exit/initial — a second scheduler beside the timeline`);
@@ -380,6 +411,90 @@ var Choreo = class extends Component {
380
411
  return () => {
381
412
  this.participants.delete(node);
382
413
  this.arrived.delete(node);
414
+ this.unwatchView(node);
415
+ };
416
+ }
417
+ /** sat out a pass since the last one it watched (`@idle`) */
418
+ slept = false;
419
+ /** participants inside the view or its margin, as the observer last saw them */
420
+ nearView = /* @__PURE__ */ new Set();
421
+ /** what the last pass animated: kept wired until a pass lets it go, so a
422
+ * block that leaves the margin mid-flight is not cut loose halfway */
423
+ flying = /* @__PURE__ */ new Set();
424
+ viewNodes = /* @__PURE__ */ new WeakMap();
425
+ viewObserver;
426
+ viewRoot = null;
427
+ /** the `@inViewMargin` the current observer was made with */
428
+ viewMarginUsed;
429
+ get viewMargin() {
430
+ return this.args.inViewMargin ?? 1;
431
+ }
432
+ watchView(node) {
433
+ const el = node.element;
434
+ if (!this.args.inView || !el) return;
435
+ if (!this.viewObserver) {
436
+ this.viewRoot = this.element ? scrollerOf(this.element) : null;
437
+ this.viewMarginUsed = this.viewMargin;
438
+ this.viewObserver = new IntersectionObserver((entries) => {
439
+ for (const entry of entries) {
440
+ const seen = this.viewNodes.get(entry.target);
441
+ if (!seen) continue;
442
+ if (entry.isIntersecting) this.nearView.add(seen);
443
+ else this.nearView.delete(seen);
444
+ }
445
+ }, {
446
+ root: this.viewRoot,
447
+ rootMargin: `${this.viewMargin * 100}% 0px`
448
+ });
449
+ }
450
+ this.viewNodes.set(el, node);
451
+ this.viewObserver.observe(el);
452
+ }
453
+ /**
454
+ * `@inView` and `@inViewMargin` can change after participants registered:
455
+ * switched on (or given a new margin), the region observes every current
456
+ * participant and wires the ones already near the view now (the observer
457
+ * reports only after the next frame); switched off, it lets the observer
458
+ * go and wires everything again.
459
+ */
460
+ syncViewWatch() {
461
+ if (this.args.inView && this.viewObserver && this.viewMarginUsed !== this.viewMargin) {
462
+ this.viewObserver.disconnect();
463
+ this.viewObserver = void 0;
464
+ this.nearView.clear();
465
+ }
466
+ if (this.args.inView && !this.viewObserver) {
467
+ for (const node of this.participants) this.watchView(node);
468
+ if (this.viewObserver) {
469
+ const near = this.nearViewBand();
470
+ for (const node of this.participants) {
471
+ const r = node.element?.getBoundingClientRect();
472
+ if (r && r.bottom >= near.top && r.top <= near.bottom) this.nearView.add(node);
473
+ }
474
+ }
475
+ } else if (!this.args.inView && this.viewObserver) {
476
+ this.viewObserver.disconnect();
477
+ this.viewObserver = void 0;
478
+ this.viewRoot = null;
479
+ this.nearView.clear();
480
+ this.flying.clear();
481
+ }
482
+ }
483
+ unwatchView(node) {
484
+ this.nearView.delete(node);
485
+ if (node.element) this.viewObserver?.unobserve(node.element);
486
+ }
487
+ /** the view and its margin, in viewport px; read once per pass */
488
+ nearViewBand() {
489
+ const r = this.viewRoot ? this.viewRoot.getBoundingClientRect() : {
490
+ bottom: window.innerHeight,
491
+ top: 0
492
+ };
493
+ const margin = (r.bottom - r.top) * this.viewMargin;
494
+ return {
495
+ bottom: r.bottom + margin,
496
+ margin,
497
+ top: r.top - margin
383
498
  };
384
499
  }
385
500
  claim(node) {
@@ -393,8 +508,17 @@ var Choreo = class extends Component {
393
508
  get renderDetector() {
394
509
  consumeTag(VOLATILE_TAG);
395
510
  snapshotOnRender();
511
+ if (this.args.idle) {
512
+ this.slept = true;
513
+ return;
514
+ }
515
+ if (this.slept) {
516
+ this.slept = false;
517
+ this.arrived.clear();
518
+ }
396
519
  if (!this.passPending) {
397
520
  this.passPending = true;
521
+ this.syncViewWatch();
398
522
  this.snapshot();
399
523
  join(this);
400
524
  }
@@ -402,9 +526,10 @@ var Choreo = class extends Component {
402
526
  snapshot() {
403
527
  this.snapshots.clear();
404
528
  this.rootSnapshot = this.element?.getBoundingClientRect();
529
+ const wired = this.args.inView ? this.nearView : void 0;
405
530
  for (const node of this.participants) {
406
531
  const el = node.element;
407
- if (el?.isConnected && !this.orphans.has(node)) this.snapshots.set(node, measure(el));
532
+ if (el?.isConnected && !this.orphans.has(node) && (!wired || wired.has(node) || this.flying.has(node))) this.snapshots.set(node, measure(el));
408
533
  }
409
534
  }
410
535
  /** phase 1: what changed this pass, measured — nothing is played yet */
@@ -439,6 +564,7 @@ var Choreo = class extends Component {
439
564
  role: node.role,
440
565
  type
441
566
  });
567
+ const near = this.args.inView ? this.nearViewBand() : void 0;
442
568
  const candidates = new Set([
443
569
  ...this.participants,
444
570
  ...this.claimed,
@@ -451,8 +577,14 @@ var Choreo = class extends Component {
451
577
  if (this.orphans.has(node)) {
452
578
  const prior = this.orphanBounds.get(node);
453
579
  removed.push(sprite(node, "removed", prior));
454
- } else if (this.arrived.has(node)) inserted.push(sprite(node, "inserted", void 0, boundsOf(measure(el), after)));
455
- else if (!el.isConnected || this.claimed.has(node)) {
580
+ } else if (this.arrived.has(node)) {
581
+ if (near) {
582
+ const r = el.getBoundingClientRect();
583
+ if (r.bottom < near.top || r.top > near.bottom) continue;
584
+ this.nearView.add(node);
585
+ }
586
+ inserted.push(sprite(node, "inserted", void 0, boundsOf(measure(el), after)));
587
+ } else if (!el.isConnected || this.claimed.has(node)) {
456
588
  if (this.leaving.has(node)) {
457
589
  this.leaving.delete(node);
458
590
  this.drop(node);
@@ -484,6 +616,13 @@ var Choreo = class extends Component {
484
616
  };
485
617
  }
486
618
  }
619
+ if (near && kept.some((s) => Math.abs(s.delta?.y ?? 0) > near.margin)) {
620
+ for (const s of removed) this.drop(s.node);
621
+ inserted.length = 0;
622
+ kept.length = 0;
623
+ removed.length = 0;
624
+ }
625
+ if (near) this.flying = new Set([...inserted, ...kept.filter((s) => s.delta && (s.delta.x || s.delta.y))].map((s) => s.node));
487
626
  this.arrived.clear();
488
627
  this.snapshots.clear();
489
628
  const claimed = [...this.claimed];
@@ -507,10 +646,13 @@ var Choreo = class extends Component {
507
646
  const shadow = this.run?.camera.zoom ?? this.restingCamera.zoom;
508
647
  const painted = layoutWidth > 0 ? after.width / layoutWidth : 0;
509
648
  const measureZoom = !painted || Math.abs(painted - shadow) < .004 ? shadow : painted;
510
- const changeset = new Changeset(inserted.filter((s) => s.type === "inserted"), removed, [...kept, ...inserted.filter((s) => s.type === "kept")], measureBeacons(after), measureZoom, {
649
+ const changeset = new Changeset(inserted.filter((s) => s.type === "inserted"), removed, [...kept, ...inserted.filter((s) => s.type === "kept")], measureBeacons(after, this.beaconNames), measureZoom, {
511
650
  height: after.height / measureZoom,
512
651
  width: after.width / measureZoom
513
- }, groundOf(root));
652
+ }, () => groundOf(root), (name) => {
653
+ this.beaconNames.add(name);
654
+ return measureBeacons(after, [name]).get(name) ?? null;
655
+ });
514
656
  this.changeset = changeset;
515
657
  const firstRender = !this.rendered;
516
658
  this.rendered = true;
@@ -556,7 +698,7 @@ var Choreo = class extends Component {
556
698
  return;
557
699
  }
558
700
  const print = treePrint(tree);
559
- const nothingNew = !inserted.length && pass.removed.every((s) => this.orphans.has(s.node)) && (this.orphans.size > 0 || !changeset.sprites({ type: "moved" }).length) && print === this.scorePrint;
701
+ const nothingNew = !inserted.length && pass.removed.every((s) => this.orphans.has(s.node)) && (this.orphans.size > 0 || !changeset.sprites({ type: "moved" }).length) && this.layoutOf() === this.layoutPrint && print === this.scorePrint;
560
702
  if (this.run && !this.run.isDone() && nothingNew) {
561
703
  for (const node of claimed) this.drop(node);
562
704
  this.run.reassert();
@@ -615,7 +757,8 @@ var Choreo = class extends Component {
615
757
  onPerformReset: this.args.onPerformReset,
616
758
  onSpriteDone: (s) => this.finish(s),
617
759
  removed: removed.filter((s) => named.has(s)),
618
- doomed: !kept.length && !inserted.length && removed.length > 0
760
+ doomed: !kept.length && !inserted.length && removed.length > 0,
761
+ maxFrameStep: this.args.maxFrameStep
619
762
  });
620
763
  if (this.args.quiet) {
621
764
  const run = this.run;
@@ -672,6 +815,14 @@ var Choreo = class extends Component {
672
815
  }
673
816
  parts.push(`${node.id ?? node.role ?? ""}@${x},${y},${el.offsetWidth},${el.offsetHeight}`);
674
817
  }
818
+ let sx = 0;
819
+ let sy = 0;
820
+ for (let a = root?.parentElement; a; a = a.parentElement) {
821
+ sx += a.scrollLeft;
822
+ sy += a.scrollTop;
823
+ if (a !== document.documentElement && scrolls(a)) break;
824
+ }
825
+ parts.push(`scroll@${Math.round(sx)},${Math.round(sy)}`);
675
826
  return parts.join("|");
676
827
  }
677
828
  /**
@@ -4,9 +4,9 @@ import { M as waitUntil, a as find } from "./dist-BOAdzfkP.js";
4
4
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
5
5
  import { F as setupLocalIndexing, M as setupCardLogs, P as setupIntegrationTestRealm, lt as setupRenderingTest, t as setupMockMatrix } from "./mock-matrix-rxYRI9xw.js";
6
6
  import { r as getService } from "./dist-CPfIHBla.js";
7
- import { o as setupChoreo } from "./test-support-C6N_2X-l.js";
7
+ import { o as setupChoreo } from "./test-support-VX6ukQNR.js";
8
8
  import { vt as setupBaseRealm } from "./base-realm-B17zVqh6.js";
9
- import { t as choreoGalleryContents } from "./choreo-gallery-w07xqtO-.js";
9
+ import { t as choreoGalleryContents } from "./choreo-gallery-BxA9cyzF.js";
10
10
  import { t as renderCard } from "./render-component-B15Z0e2v.js";
11
11
  //#region tests/integration/choreo-feature-reel-test.gts
12
12
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());