@marimo-team/frontend 0.23.3-dev43 → 0.23.3-dev45

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 (640) hide show
  1. package/dist/assets/{CellStatus-BRcxaA-Z.js → CellStatus-BTL_sgUY.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-Bxogo_Sw.js → ConnectedDataExplorerComponent-DgruBYR5.js} +1 -1
  3. package/dist/assets/{DeferredRequestRegistry-Bobqy1XF.js → DeferredRequestRegistry-DjHgMr3S.js} +1 -1
  4. package/dist/assets/{ImperativeModal-QWJWbLVR.js → ImperativeModal-BBqcKmmk.js} +1 -1
  5. package/dist/assets/{JsonOutput-zJfSu-Vk.js → JsonOutput-BDnY09YR.js} +3 -3
  6. package/dist/assets/LazyAnyLanguageCodeMirror-0gZO1asr.js +2 -0
  7. package/dist/assets/{MarimoErrorOutput-BGCTswmw.js → MarimoErrorOutput-BBD405a6.js} +1 -1
  8. package/dist/assets/{RSPContexts-Bxv3gv46.js → RSPContexts-BeHIgT4C.js} +1 -1
  9. package/dist/assets/{RenderHTML-DT8P6T1l.js → RenderHTML-BT9obKLc.js} +1 -1
  10. package/dist/assets/{add-cell-with-ai-BKhUWiT4.js → add-cell-with-ai-qEfAzC8R.js} +1 -1
  11. package/dist/assets/{add-connection-dialog-DChyqh-3.js → add-connection-dialog-B_v0AeoU.js} +2 -2
  12. package/dist/assets/{agent-panel-CcLuIYse.js → agent-panel-BMpsP2zw.js} +1 -1
  13. package/dist/assets/{ai-model-dropdown-Cq8Bx0V5.js → ai-model-dropdown-CYx9ZfdS.js} +1 -1
  14. package/dist/assets/{any-language-editor-DxmolZrV.js → any-language-editor-uGTbJddl.js} +1 -1
  15. package/dist/assets/apl-m-AMVo9Q.js +1 -0
  16. package/dist/assets/{app-config-button-DA64Zwmh.js → app-config-button-DC5UlXZA.js} +1 -1
  17. package/dist/assets/{arc-dPVZ2r1X.js → arc-ONRhTAm2.js} +1 -1
  18. package/dist/assets/{architecture-7HQA4BMR-CDlW2bIF.js → architecture-7HQA4BMR-B8Ryu75w.js} +1 -1
  19. package/dist/assets/{architectureDiagram-VXUJARFQ-BIxSxJ1n.js → architectureDiagram-VXUJARFQ-Bkuya2Lz.js} +1 -1
  20. package/dist/assets/asciiarmor-BCgPMx-s.js +1 -0
  21. package/dist/assets/asn1-f2_lxsgc.js +1 -0
  22. package/dist/assets/{blockDiagram-VD42YOAC-Bhz_qfg3.js → blockDiagram-VD42YOAC-BypAXGhs.js} +1 -1
  23. package/dist/assets/brainfuck-ZYebo2B9.js +1 -0
  24. package/dist/assets/{c4Diagram-YG6GDRKO-C2TPKPvJ.js → c4Diagram-YG6GDRKO-C8Q7ceaK.js} +1 -1
  25. package/dist/assets/{cache-panel-Ks8PpcN1.js → cache-panel-BHTrsFvx.js} +1 -1
  26. package/dist/assets/{cell-editor-BqklzNDV.js → cell-editor-CV2Fuwfi.js} +3 -3
  27. package/dist/assets/{cell-link-DiZacqDz.js → cell-link-BA7Demf0.js} +1 -1
  28. package/dist/assets/{cells-_QgKZKXb.js → cells-CJlo_hG2.js} +5 -5
  29. package/dist/assets/channel-BMMN1KqZ.js +1 -0
  30. package/dist/assets/{chat-display-7P_28VVE.js → chat-display-DbztpRD4.js} +1 -1
  31. package/dist/assets/{chat-panel-BQp1b73y.js → chat-panel-H-xFzATI.js} +1 -1
  32. package/dist/assets/{chat-ui-BNeL7YZB.js → chat-ui-CFqAy2ck.js} +1 -1
  33. package/dist/assets/{chunk-4BX2VUAB-BtkoEUm5.js → chunk-4BX2VUAB-mPGRpph5.js} +1 -1
  34. package/dist/assets/chunk-55IACEB6-DD051KDZ.js +1 -0
  35. package/dist/assets/{chunk-5FQGJX7Z-CQS0x34U.js → chunk-5FQGJX7Z-B4RvNAGm.js} +3 -3
  36. package/dist/assets/{chunk-ABZYJK2D-Djqzm08o.js → chunk-ABZYJK2D-X_7JfTbo.js} +3 -3
  37. package/dist/assets/{chunk-ATLVNIR6-BLh4jD_n.js → chunk-ATLVNIR6-BvOe4C7U.js} +1 -1
  38. package/dist/assets/{chunk-B4BG7PRW-CEbAymbQ.js → chunk-B4BG7PRW-DuJr4Vxg.js} +1 -1
  39. package/dist/assets/{chunk-CVBHYZKI-DU48rJVu.js → chunk-CVBHYZKI-Brsoob-W.js} +1 -1
  40. package/dist/assets/{chunk-DI55MBZ5-D27slPkl.js → chunk-DI55MBZ5-U7-ld--F.js} +1 -1
  41. package/dist/assets/{chunk-EXTU4WIE-CIsrjnFi.js → chunk-EXTU4WIE-B7W_a4w2.js} +1 -1
  42. package/dist/assets/{chunk-FMBD7UC4-Dt9Umy1r.js → chunk-FMBD7UC4-Bt9icXTy.js} +1 -1
  43. package/dist/assets/{chunk-HN2XXSSU-Bdbi3Mns.js → chunk-HN2XXSSU-BBxJMYrA.js} +1 -1
  44. package/dist/assets/{chunk-JA3XYJ7Z-BTrWHP3y.js → chunk-JA3XYJ7Z-EueUUcXO.js} +1 -1
  45. package/dist/assets/{chunk-JZLCHNYA-LclGfauS.js → chunk-JZLCHNYA-Bx4SqpPS.js} +1 -1
  46. package/dist/assets/{chunk-MI3HLSF2-n3vxgSbN.js → chunk-MI3HLSF2-D6we5Ftb.js} +1 -1
  47. package/dist/assets/{chunk-N4CR4FBY-w0eE8xM0.js → chunk-N4CR4FBY-DlrBiMsl.js} +2 -2
  48. package/dist/assets/{chunk-QN33PNHL-f1vj2iOo.js → chunk-QN33PNHL-DQrYk9Fj.js} +1 -1
  49. package/dist/assets/{chunk-QXUST7PY-qfZjyLmh.js → chunk-QXUST7PY-COkAFJCN.js} +1 -1
  50. package/dist/assets/{chunk-QZHKN3VN-Cp6Fo6NS.js → chunk-QZHKN3VN-CeNfSWg4.js} +1 -1
  51. package/dist/assets/{chunk-S3R3BYOJ-CcarQkcq.js → chunk-S3R3BYOJ-GS_DuFun.js} +1 -1
  52. package/dist/assets/{chunk-TZMSLE5B-CWbra1hF.js → chunk-TZMSLE5B-uYzKNbMS.js} +1 -1
  53. package/dist/assets/classDiagram-2ON5EDUG-DDa_MJVI.js +1 -0
  54. package/dist/assets/classDiagram-v2-WZHVMYZB-dZzbS5Uq.js +1 -0
  55. package/dist/assets/{clike-0Uxq7Mmj.js → clike-O99jWPIc.js} +1 -1
  56. package/dist/assets/clojure-NE6UT6b9.js +1 -0
  57. package/dist/assets/cmake-7TIUAxVu.js +1 -0
  58. package/dist/assets/cobol-BdI6-uBH.js +1 -0
  59. package/dist/assets/{code-block-37QAKDTI-DIqDJgVj.js → code-block-37QAKDTI-JYeq6pxz.js} +1 -1
  60. package/dist/assets/coffeescript-CLx5m4GS.js +1 -0
  61. package/dist/assets/{column-preview-C2_n8Cec.js → column-preview-DsiFOTwu.js} +1 -1
  62. package/dist/assets/{command-DAtXz-Gx.js → command-DbT_zkRP.js} +1 -1
  63. package/dist/assets/{command-palette-Ck1uQB30.js → command-palette-Clusi1pH.js} +1 -1
  64. package/dist/assets/{common-CP7IrRbz.js → common-CquNY-ok.js} +1 -1
  65. package/dist/assets/commonlisp-8d9AwdCm.js +1 -0
  66. package/dist/assets/{components-BHpyAs_N.js → components-BXKuiPiF.js} +1 -1
  67. package/dist/assets/{components-C7yXo-zq.js → components-BiBOcq1x.js} +1 -1
  68. package/dist/assets/{config-BwY7xK-l.js → config-ChCHm539.js} +1 -1
  69. package/dist/assets/{context-DgMiuV-M.js → context-DGqo1TbK.js} +1 -1
  70. package/dist/assets/{copy-icon-D6J-Qe0V.js → copy-icon-C67c9EwB.js} +1 -1
  71. package/dist/assets/{cose-bilkent-S5V4N54A-w2ZbuMrq.js → cose-bilkent-S5V4N54A-DWjOkKYE.js} +1 -1
  72. package/dist/assets/crystal-Bn-cOTHZ.js +1 -0
  73. package/dist/assets/{css-vLkD8PfS.js → css-Ctj1grpW.js} +1 -1
  74. package/dist/assets/cypher-DnT9gfY3.js +1 -0
  75. package/dist/assets/d-DCjbmG72.js +1 -0
  76. package/dist/assets/{dagre-6UL2VRFP-DPsGmD7I.js → dagre-6UL2VRFP-DYsFeXDU.js} +1 -1
  77. package/dist/assets/{data-grid-overlay-editor--tsDL5t_.js → data-grid-overlay-editor-BXZECgKd.js} +1 -1
  78. package/dist/assets/{datasource-BwNTnVse.js → datasource-BKDU-4D5.js} +1 -1
  79. package/dist/assets/{dates-C-8zX5--.js → dates-DhByPWH5.js} +1 -1
  80. package/dist/assets/{dependency-graph-panel-DWJUNQBd.js → dependency-graph-panel-ayo-Mm2j.js} +1 -1
  81. package/dist/assets/{diagram-PSM6KHXK-B5QExXBA.js → diagram-PSM6KHXK-B8hv9RHG.js} +1 -1
  82. package/dist/assets/{diagram-QEK2KX5R-B-41avP4.js → diagram-QEK2KX5R-G6A7hdno.js} +1 -1
  83. package/dist/assets/{diagram-S2PKOQOG-CuAoGDsR.js → diagram-S2PKOQOG-iaflbF2c.js} +1 -1
  84. package/dist/assets/diff-DtVdhdPz.js +1 -0
  85. package/dist/assets/{dist-b34Ig78W.js → dist-0xasIeT1.js} +1 -1
  86. package/dist/assets/{dist-BjR_2YCR.js → dist-BMGjzUx5.js} +1 -1
  87. package/dist/assets/{dist-Q7HIqK0H.js → dist-BMfl634h.js} +1 -1
  88. package/dist/assets/dist-BN_qisx5.js +1 -0
  89. package/dist/assets/dist-BkhaSQrg.js +1 -0
  90. package/dist/assets/{dist-CE09e8bx.js → dist-BtG3xAGt.js} +1 -1
  91. package/dist/assets/{dist-DrmtAiKa.js → dist-BvZKHNvJ.js} +1 -1
  92. package/dist/assets/dist-Bzlk7AB1.js +1 -0
  93. package/dist/assets/{dist-Sg8yY2ZO.js → dist-C46P-i95.js} +1 -1
  94. package/dist/assets/{dist-CZoX3_w7.js → dist-CEysMnMQ.js} +1 -1
  95. package/dist/assets/{dist-BCAHuLK8.js → dist-COpce3-f.js} +1 -1
  96. package/dist/assets/dist-CPCp_PIz.js +1 -0
  97. package/dist/assets/dist-CPWl1X8t.js +1 -0
  98. package/dist/assets/{dist-DwRhpGvx.js → dist-CVTRujA4.js} +1 -1
  99. package/dist/assets/{dist-C6ZECnB-.js → dist-CbOE2rpr.js} +1 -1
  100. package/dist/assets/dist-Cc_qFbl6.js +1 -0
  101. package/dist/assets/dist-Crt3qZze.js +1 -0
  102. package/dist/assets/{dist-DX7lwwkF.js → dist-D4HwuQrf.js} +1 -1
  103. package/dist/assets/{dist-78cHWCwm.js → dist-D68AVdXh.js} +1 -1
  104. package/dist/assets/{dist-B8l8kyRO.js → dist-DC5pDLoK.js} +1 -1
  105. package/dist/assets/{dist-BfwIwU8S.js → dist-DmZscTVZ.js} +1 -1
  106. package/dist/assets/{dist-Bd6jkjtM.js → dist-Ds4ite_2.js} +1 -1
  107. package/dist/assets/{dist-EeiXxq6X.js → dist-OWcDq-O3.js} +1 -1
  108. package/dist/assets/dist-_KQbcsP1.js +1 -0
  109. package/dist/assets/{dist-DrwAJH5c.js → dist-b7WC6dxf.js} +1 -1
  110. package/dist/assets/dist-bvHsEZ9m.js +1 -0
  111. package/dist/assets/{dist-D9A9VND-.js → dist-e6kaTCKJ.js} +1 -1
  112. package/dist/assets/{dist-DG5oYwLf.js → dist-gG4VZW46.js} +1 -1
  113. package/dist/assets/dist-jLyLmWUE.js +1 -0
  114. package/dist/assets/{dist-BxAV3E_D.js → dist-nYyvRYnq.js} +1 -1
  115. package/dist/assets/{dockerfile-BG4x0ExJ.js → dockerfile-DERk1oNL.js} +1 -1
  116. package/dist/assets/{documentation-panel-BJnrDC1G.js → documentation-panel-ph6755dz.js} +1 -1
  117. package/dist/assets/{download-Bc8oaRxn.js → download-mzsKQgiy.js} +1 -1
  118. package/dist/assets/dtd-CHKGQo-k.js +1 -0
  119. package/dist/assets/dylan-DKXsKw9e.js +1 -0
  120. package/dist/assets/ecl-BJuToLkm.js +1 -0
  121. package/dist/assets/{edit-page-BUArB_ce.js → edit-page-Baqw-oBh.js} +5 -5
  122. package/dist/assets/eiffel-Bs0gRCeB.js +1 -0
  123. package/dist/assets/elm-BXUbhN4m.js +1 -0
  124. package/dist/assets/{erDiagram-Q2GNP2WA-DnP7h2-r.js → erDiagram-Q2GNP2WA-DyZONgFt.js} +1 -1
  125. package/dist/assets/erlang-B9b7RAaI.js +1 -0
  126. package/dist/assets/{error-banner-B6M4W7BS.js → error-banner-CTBwdcdk.js} +1 -1
  127. package/dist/assets/{error-panel-C3s8IlRa.js → error-panel-BfG_JeMA.js} +1 -1
  128. package/dist/assets/{es-DpJU8Hx8.js → es-YQvzKo5h.js} +1 -1
  129. package/dist/assets/{esm-BGvvz4bU.js → esm-CbD72kxC.js} +1 -1
  130. package/dist/assets/{esm-B4U2RMiA.js → esm-G1JMtvxe.js} +1 -1
  131. package/dist/assets/{factor-B-0VZGQP.js → factor-BbYo7zsD.js} +1 -1
  132. package/dist/assets/factor-C2NWkG3V.js +1 -0
  133. package/dist/assets/{field-Dolqshm5.js → field-B8kJgr2A.js} +1 -1
  134. package/dist/assets/{file-explorer-panel-Dk5S33G1.js → file-explorer-panel-D2qvZtGv.js} +1 -1
  135. package/dist/assets/{file-icons-uyLXhwTt.js → file-icons-BNrh8MRG.js} +1 -1
  136. package/dist/assets/{file-name-input-Cx8sGgtD.js → file-name-input-CLlFR7p-.js} +1 -1
  137. package/dist/assets/{floating-outline-CGwx3Uc3.js → floating-outline-BMB4_phA.js} +1 -1
  138. package/dist/assets/{flowDiagram-NV44I4VS-V3Xf7aMp.js → flowDiagram-NV44I4VS-Bo2Wh9OF.js} +1 -1
  139. package/dist/assets/{focus-Ci7q4lAK.js → focus-BX3gXJxx.js} +1 -1
  140. package/dist/assets/form-BxYohyDn.js +2 -0
  141. package/dist/assets/{formats-O_Kup2es.js → formats-BvyJSIqk.js} +1 -1
  142. package/dist/assets/{formatting-cNkBQVu3.js → formatting-Cncf6ptO.js} +1 -1
  143. package/dist/assets/forth-DAh7UX6C.js +1 -0
  144. package/dist/assets/fortran-Dy64-0b5.js +1 -0
  145. package/dist/assets/{gallery-page-ry801rEh.js → gallery-page-Ddl87lwR.js} +1 -1
  146. package/dist/assets/{ganttDiagram-JELNMOA3-CpnbMA7j.js → ganttDiagram-JELNMOA3-Cc_BiCCk.js} +1 -1
  147. package/dist/assets/gas-DC-7PUFB.js +1 -0
  148. package/dist/assets/gherkin-ByiMyVl5.js +1 -0
  149. package/dist/assets/{gitGraph-G5XIXVHT-CT2LFSad.js → gitGraph-G5XIXVHT-CiMGDHpk.js} +1 -1
  150. package/dist/assets/{gitGraphDiagram-V2S2FVAM-Da6kLjST.js → gitGraphDiagram-V2S2FVAM-CGySG6ni.js} +1 -1
  151. package/dist/assets/{glide-data-editor-Bsfs3Z8D.js → glide-data-editor-Cr2RvoIz.js} +4 -4
  152. package/dist/assets/{globals-fN2Lim68.js → globals-xVhZei_S.js} +1 -1
  153. package/dist/assets/groovy-DaM0RAwa.js +1 -0
  154. package/dist/assets/haskell-BwRtIbXW.js +1 -0
  155. package/dist/assets/haxe-DFGSCjmC.js +1 -0
  156. package/dist/assets/{home-page-CUCcuheh.js → home-page-B1ELDhn8.js} +1 -1
  157. package/dist/assets/{hooks-CVOMPk9n.js → hooks-CXZf4ceF.js} +1 -1
  158. package/dist/assets/{html-to-image-s8Gi2a0d.js → html-to-image-Cz8lDF-Y.js} +1 -1
  159. package/dist/assets/idl-Ip8qszMi.js +1 -0
  160. package/dist/assets/index-BYLYJcAY.css +2 -0
  161. package/dist/assets/{index-AQQQ__hU.js → index-CyvM_FCk.js} +8 -8
  162. package/dist/assets/{info-VBDWY6EO-Dek9l4Y7.js → info-VBDWY6EO-yA01qfll.js} +1 -1
  163. package/dist/assets/infoDiagram-HS3SLOUP-Ci2MRh_P.js +2 -0
  164. package/dist/assets/{input-gOeJx-hY.js → input-DyPS_GiK.js} +1 -1
  165. package/dist/assets/javascript-DmUu6wxV.js +1 -0
  166. package/dist/assets/{journeyDiagram-XKPGCS4Q-BXrwe60A.js → journeyDiagram-XKPGCS4Q-C9-9zg54.js} +1 -1
  167. package/dist/assets/julia-C8K-9kxt.js +1 -0
  168. package/dist/assets/{kanban-definition-3W4ZIXB7-DUU5VV3y.js → kanban-definition-3W4ZIXB7-D4ivIK0L.js} +1 -1
  169. package/dist/assets/katex-S9z-JFdU.js +1 -0
  170. package/dist/assets/{kiosk-mode-PchJOoW7.js → kiosk-mode-Dxbs5i5g.js} +1 -1
  171. package/dist/assets/layout-2bm2yV7z.js +9 -0
  172. package/dist/assets/{line-BGH_46b5.js → line-j0cbFv7-.js} +1 -1
  173. package/dist/assets/{linear-DPcd3E-t.js → linear-Bn2iRj5i.js} +1 -1
  174. package/dist/assets/{links-DJCEkOLM.js → links-BHtUMVOq.js} +1 -1
  175. package/dist/assets/livescript-B3MfBDE2.js +1 -0
  176. package/dist/assets/{logs-panel-XG-10F8K.js → logs-panel-BW6S5AI1.js} +1 -1
  177. package/dist/assets/{loro_wasm_bg-BzwizXI_.js → loro_wasm_bg-DXuHQ2hl.js} +1 -1
  178. package/dist/assets/lua-B2YpVx0h.js +1 -0
  179. package/dist/assets/{markdown-renderer-Cown6yO8.js → markdown-renderer-CeHY2KoQ.js} +3 -3
  180. package/dist/assets/mathematica-D9tSC-hw.js +1 -0
  181. package/dist/assets/mbox-CjoMCyMH.js +1 -0
  182. package/dist/assets/mermaid-4DMBBIKO-BqnaUv4V.js +1 -0
  183. package/dist/assets/{mermaid-LF8PrN7e.js → mermaid-D5Aj1ujy.js} +3 -3
  184. package/dist/assets/{mermaid-parser.core-C7QPzAah.js → mermaid-parser.core-DP6UBthl.js} +2 -2
  185. package/dist/assets/{mhchem-DJIKMDhe.js → mhchem-BNLsaqjJ.js} +1 -1
  186. package/dist/assets/{mindmap-definition-VGOIOE7T-h5az-Gzm.js → mindmap-definition-VGOIOE7T-BBFkIzCl.js} +1 -1
  187. package/dist/assets/mirc-DvJdMBLZ.js +1 -0
  188. package/dist/assets/mllike-5ykSeapn.js +1 -0
  189. package/dist/assets/modelica-laYOX8Zo.js +1 -0
  190. package/dist/assets/mscgen-z_sYErek.js +1 -0
  191. package/dist/assets/mumps-BwcCoPkA.js +1 -0
  192. package/dist/assets/{name-cell-input-o3llo2cQ.js → name-cell-input-B1BCybeo.js} +1 -1
  193. package/dist/assets/nsis-CpSPdWjV.js +1 -0
  194. package/dist/assets/{nsis-DGDbP9K4.js → nsis-Cr8jf68z.js} +1 -1
  195. package/dist/assets/ntriples-D2ki9JZ6.js +1 -0
  196. package/dist/assets/{number-overlay-editor-BNttkvY4.js → number-overlay-editor-Cu1bME8q.js} +1 -1
  197. package/dist/assets/octave-D817mWs9.js +1 -0
  198. package/dist/assets/{ordinal-COKHkltN.js → ordinal-DEaY__23.js} +1 -1
  199. package/dist/assets/{outline-panel-DRIKTKZY.js → outline-panel-DgMz83Mx.js} +1 -1
  200. package/dist/assets/oz-3GS03IG4.js +1 -0
  201. package/dist/assets/{packages-panel-B6wpAt69.js → packages-panel-CbjavFh2.js} +1 -1
  202. package/dist/assets/{packet-DYOGHKS2-DlIjAe6N.js → packet-DYOGHKS2-D9yUvksZ.js} +1 -1
  203. package/dist/assets/{panels-Dp6Q1Mvz.js → panels-C5qZNX9N.js} +1 -1
  204. package/dist/assets/pascal-C08wXab2.js +1 -0
  205. package/dist/assets/{pathUtils-B1w9iv-i.js → pathUtils-CSrNy17a.js} +1 -1
  206. package/dist/assets/perl-Ija-iETI.js +1 -0
  207. package/dist/assets/{pie-VRWISCQL-CY-XhoDk.js → pie-VRWISCQL-Cz1iTD2y.js} +1 -1
  208. package/dist/assets/{pieDiagram-ADFJNKIX-C8MBDnEw.js → pieDiagram-ADFJNKIX-BYGTzW8w.js} +1 -1
  209. package/dist/assets/pig-BlBD3yVJ.js +1 -0
  210. package/dist/assets/powershell-CjOQ_PjD.js +1 -0
  211. package/dist/assets/{precisionRound-DaoicKhB.js → precisionRound-CU2C3Vxx.js} +1 -1
  212. package/dist/assets/{process-output-D2bI7SXv.js → process-output-CggRIZ6s.js} +1 -1
  213. package/dist/assets/properties-5yVGVBrw.js +1 -0
  214. package/dist/assets/protobuf-hlm5v2rk.js +1 -0
  215. package/dist/assets/{pug-5wW7Sn9S.js → pug-CKg66ZCy.js} +1 -1
  216. package/dist/assets/pug-DifRb20b.js +1 -0
  217. package/dist/assets/puppet-BpFPuj45.js +1 -0
  218. package/dist/assets/python-B_AEFhuO.js +1 -0
  219. package/dist/assets/q-BzDxfEQq.js +1 -0
  220. package/dist/assets/{quadrantDiagram-AYHSOK5B-Behe9yHt.js → quadrantDiagram-AYHSOK5B-D8NZ19FM.js} +1 -1
  221. package/dist/assets/r-BJ9VYyYa.js +1 -0
  222. package/dist/assets/{radar-ZZBFDIW7-i-Te6Y8v.js → radar-ZZBFDIW7-y2-V58qq.js} +1 -1
  223. package/dist/assets/radio-group-BtBoRbGH.js +1 -0
  224. package/dist/assets/react-vega-8VhWN23c.js +1 -0
  225. package/dist/assets/{react-vega-FSXcjjhW.js → react-vega-Dprex0g5.js} +1 -1
  226. package/dist/assets/{readonly-python-code-BahUauZ9.js → readonly-python-code-Ccd8HM-7.js} +1 -1
  227. package/dist/assets/{renderShortcut-B-72v1dC.js → renderShortcut-CkNNAheg.js} +1 -1
  228. package/dist/assets/{request-registry-BoWteoOD.js → request-registry-D-jptgP0.js} +1 -1
  229. package/dist/assets/{requirementDiagram-UZGBJVZJ-BZ7h3AoJ.js → requirementDiagram-UZGBJVZJ-lUcxJMXj.js} +1 -1
  230. package/dist/assets/reveal-component-BivIY7FY.js +91 -0
  231. package/dist/assets/{reveal-component-DlPTFz1w.css → reveal-component-LHeN9pMI.css} +1 -1
  232. package/dist/assets/rpm-Ez4HwV9T.js +1 -0
  233. package/dist/assets/ruby-BcHOM0EI.js +1 -0
  234. package/dist/assets/{run-page-DiTeOCSw.js → run-page-Cr_c3nx1.js} +1 -1
  235. package/dist/assets/{sankeyDiagram-TZEHDZUN-Co7WU0tF.js → sankeyDiagram-TZEHDZUN-BJExQFWg.js} +1 -1
  236. package/dist/assets/sas-Qmf5gHIU.js +1 -0
  237. package/dist/assets/scheme-Ctib9V77.js +1 -0
  238. package/dist/assets/{scratchpad-panel-DDqb_fyf.js → scratchpad-panel-Dbt1i218.js} +1 -1
  239. package/dist/assets/{secrets-panel-Bxz9BsLr.js → secrets-panel-DeNY3rAp.js} +1 -1
  240. package/dist/assets/{sequenceDiagram-WL72ISMW-BKeDY4nC.js → sequenceDiagram-WL72ISMW-DcfyJdc2.js} +1 -1
  241. package/dist/assets/{session-panel-NjZNmi9U.js → session-panel-BfXD_M_P.js} +1 -1
  242. package/dist/assets/{share-C7-yIyYZ.js → share-BXN2Sd1t.js} +1 -1
  243. package/dist/assets/shell-BtgVCAhn.js +1 -0
  244. package/dist/assets/sieve-CMsTkuH0.js +1 -0
  245. package/dist/assets/slide-form-D1Sy7XQE.js +1 -0
  246. package/dist/assets/smalltalk-BKSCdMTS.js +1 -0
  247. package/dist/assets/{snippets-panel-BYaK2OYv.js → snippets-panel-CdhDsAII.js} +1 -1
  248. package/dist/assets/sparql-TK6HapG4.js +1 -0
  249. package/dist/assets/{spec-C-DRirsO.js → spec-Cq8FVoTf.js} +1 -1
  250. package/dist/assets/{src-CWJKdmqu.js → src-nKy6a3tt.js} +1 -1
  251. package/dist/assets/{state-Vt0MLBrw.js → state-C5AUgyZT.js} +1 -1
  252. package/dist/assets/{state-CvCX-bpE.js → state-CoWk7q5y.js} +1 -1
  253. package/dist/assets/{state-BHl5TPGk.js → state-CzDhMoLb.js} +1 -1
  254. package/dist/assets/{state-BqtnroUI.js → state-svfaehZt.js} +1 -1
  255. package/dist/assets/{stateDiagram-FKZM4ZOC-DEmCk9Rd.js → stateDiagram-FKZM4ZOC-D379CBmo.js} +1 -1
  256. package/dist/assets/stateDiagram-v2-4FDKWEC3-c0yeJ4is.js +1 -0
  257. package/dist/assets/{step-BEsMOrhi.js → step-BE8c2ivx.js} +1 -1
  258. package/dist/assets/stex-Dn4qnyVB.js +1 -0
  259. package/dist/assets/stylus-C8FKVvgQ.js +1 -0
  260. package/dist/assets/swift-D7BZKS_y.js +1 -0
  261. package/dist/assets/{swiper-component-DL6ct72W.js → swiper-component-DLxR3y4N.js} +1 -1
  262. package/dist/assets/{switch-QpkpQKr6.js → switch-DlgpDZMk.js} +1 -1
  263. package/dist/assets/tcl-DFrjfFmM.js +1 -0
  264. package/dist/assets/{terminal-CyaX8miJ.js → terminal-D8ZS2O18.js} +1 -1
  265. package/dist/assets/{textarea-DLywVJ2b.js → textarea-BXPC1-kb.js} +1 -1
  266. package/dist/assets/textile-Bj913nF7.js +1 -0
  267. package/dist/assets/{time-C4Bk-t_8.js → time-yM1OtSdb.js} +1 -1
  268. package/dist/assets/{timeline-definition-IT6M3QCI-CNeWgYoO.js → timeline-definition-IT6M3QCI-ChCqM1Sl.js} +1 -1
  269. package/dist/assets/toml-B6qgmS36.js +1 -0
  270. package/dist/assets/tracing-panel-BO6MMAXa.js +2 -0
  271. package/dist/assets/{tracing-D5CN46rG.js → tracing-wSufGcF9.js} +1 -1
  272. package/dist/assets/{tree-actions-BEhaM9eb.js → tree-actions-oMCx6WNc.js} +1 -1
  273. package/dist/assets/{treemap-GDKQZRPO-M0PfNVm7.js → treemap-GDKQZRPO-C139r55s.js} +1 -1
  274. package/dist/assets/troff-CysSpyUG.js +1 -0
  275. package/dist/assets/ttcn-DG1k5i1B.js +1 -0
  276. package/dist/assets/ttcn-cfg-p1jV7x_I.js +1 -0
  277. package/dist/assets/turtle-DSkxUncB.js +1 -0
  278. package/dist/assets/{useAddCell-DtcrFkTf.js → useAddCell-CqBbGhrY.js} +1 -1
  279. package/dist/assets/{useBoolean-CZ3cQicK.js → useBoolean-CLFdHewv.js} +1 -1
  280. package/dist/assets/{useCellActionButton-DLUN-oPD.js → useCellActionButton-DYwx4pGE.js} +1 -1
  281. package/dist/assets/{useDateFormatter-DncW9tjn.js → useDateFormatter-BEz9SEXo.js} +1 -1
  282. package/dist/assets/{useDeleteCell-Y0BbfZjx.js → useDeleteCell-BJlGbsbV.js} +1 -1
  283. package/dist/assets/{useDependencyPanelTab-BTOhjR-l.js → useDependencyPanelTab-rkAIQ6zL.js} +1 -1
  284. package/dist/assets/{useInstallPackage-DQBOxUeJ.js → useInstallPackage-afgh7PwB.js} +1 -1
  285. package/dist/assets/useNotebookActions-DMvTIk3W.js +1 -0
  286. package/dist/assets/{useNumberFormatter-DYIfVU-H.js → useNumberFormatter-wQU1z0W_.js} +1 -1
  287. package/dist/assets/{usePress-BPoseSMY.js → usePress-CtfZXGno.js} +1 -1
  288. package/dist/assets/{useRunCells-Ce0N_5Wc.js → useRunCells-B531RIUE.js} +1 -1
  289. package/dist/assets/{useSplitCell-Dby_-BDH.js → useSplitCell-BnuJW5uo.js} +1 -1
  290. package/dist/assets/{utils-B_ZkX8f0.js → utils-Bq5kLQ87.js} +1 -1
  291. package/dist/assets/vb-BIvYC4My.js +1 -0
  292. package/dist/assets/vbscript-Coxg2EVQ.js +1 -0
  293. package/dist/assets/{vega-component-VkLCyBCX.js → vega-component-DTWLzrN1.js} +1 -1
  294. package/dist/assets/{vega-loader.browser-BlkwfOz9.js → vega-loader.browser-DXARUlxo.js} +1 -1
  295. package/dist/assets/velocity-Cy90c7hC.js +1 -0
  296. package/dist/assets/verilog-CTtn3HA0.js +1 -0
  297. package/dist/assets/vhdl-D3r3mwOF.js +1 -0
  298. package/dist/assets/webidl-CHPMhkWI.js +1 -0
  299. package/dist/assets/{write-secret-modal-Chu5xifR.js → write-secret-modal-BfflSuL6.js} +1 -1
  300. package/dist/assets/xquery-d-YlNlXH.js +1 -0
  301. package/dist/assets/{xychartDiagram-PRI3JC2R-eqzm3nQu.js → xychartDiagram-PRI3JC2R-DVMdJM5H.js} +1 -1
  302. package/dist/assets/yacas-BfZ0gs5_.js +1 -0
  303. package/dist/assets/z80-cYJ4lyZA.js +1 -0
  304. package/dist/index.html +117 -116
  305. package/package.json +1 -1
  306. package/src/components/editor/renderers/slides-layout/__tests__/compute-slide-cells.test.ts +150 -0
  307. package/src/components/editor/renderers/slides-layout/__tests__/plugin.test.ts +298 -0
  308. package/src/components/editor/renderers/slides-layout/compute-slide-cells.ts +50 -0
  309. package/src/components/editor/renderers/slides-layout/plugin.tsx +54 -9
  310. package/src/components/editor/renderers/slides-layout/slides-layout.tsx +30 -12
  311. package/src/components/editor/renderers/slides-layout/types.ts +31 -3
  312. package/src/components/editor/renderers/types.ts +2 -0
  313. package/src/components/slides/__tests__/compose-slides.test.ts +433 -0
  314. package/src/components/slides/compose-slides.ts +337 -0
  315. package/src/components/slides/minimap.tsx +133 -12
  316. package/src/components/slides/reveal-component.tsx +337 -74
  317. package/src/components/slides/reveal-slides.css +33 -1
  318. package/src/components/slides/slide-form.tsx +347 -0
  319. package/src/components/ui/radio-group.tsx +5 -3
  320. package/src/core/cells/types.ts +2 -0
  321. package/src/core/layout/layout.ts +6 -2
  322. package/dist/assets/LazyAnyLanguageCodeMirror-B4dqgtrW.js +0 -2
  323. package/dist/assets/apl-CuOurP-c.js +0 -1
  324. package/dist/assets/asciiarmor-C4q0KAuh.js +0 -1
  325. package/dist/assets/asn1-gmsDz0li.js +0 -1
  326. package/dist/assets/brainfuck-RlYwG6Xx.js +0 -1
  327. package/dist/assets/channel-DrzQ4dkV.js +0 -1
  328. package/dist/assets/chunk-55IACEB6-C0WB3ojj.js +0 -1
  329. package/dist/assets/classDiagram-2ON5EDUG-BDDARHRt.js +0 -1
  330. package/dist/assets/classDiagram-v2-WZHVMYZB-DCy5PwnC.js +0 -1
  331. package/dist/assets/clojure-DaWCBM5I.js +0 -1
  332. package/dist/assets/cmake-Nobmxv0n.js +0 -1
  333. package/dist/assets/cobol--NmnvDWE.js +0 -1
  334. package/dist/assets/coffeescript-Cv1Wf46X.js +0 -1
  335. package/dist/assets/commonlisp-8PbUodZQ.js +0 -1
  336. package/dist/assets/crystal-DOOJCjhq.js +0 -1
  337. package/dist/assets/cypher-Aazxis5r.js +0 -1
  338. package/dist/assets/d-B-5Jnu40.js +0 -1
  339. package/dist/assets/diff-8GFZiZ2V.js +0 -1
  340. package/dist/assets/dist-2R4BmaTU.js +0 -1
  341. package/dist/assets/dist-7la8MlmI.js +0 -1
  342. package/dist/assets/dist-BDO57Gzu.js +0 -1
  343. package/dist/assets/dist-CYeDRMz-.js +0 -1
  344. package/dist/assets/dist-Ct7IOnPn.js +0 -1
  345. package/dist/assets/dist-DMrvUyzG.js +0 -1
  346. package/dist/assets/dist-DbrS_VZM.js +0 -1
  347. package/dist/assets/dist-LftDLXf7.js +0 -1
  348. package/dist/assets/dist-TTJY3rXz.js +0 -1
  349. package/dist/assets/dist-u-Lxqf65.js +0 -1
  350. package/dist/assets/dtd-DbhDFQ4b.js +0 -1
  351. package/dist/assets/dylan-4K5wZgOx.js +0 -1
  352. package/dist/assets/ecl-BCQ-LzuG.js +0 -1
  353. package/dist/assets/eiffel-DjgNAio4.js +0 -1
  354. package/dist/assets/elm-BJzUTgDF.js +0 -1
  355. package/dist/assets/erlang-BMwCh1Tz.js +0 -1
  356. package/dist/assets/factor-DuQK79vi.js +0 -1
  357. package/dist/assets/form-kVlV8UJh.js +0 -2
  358. package/dist/assets/forth-CN0H2hBb.js +0 -1
  359. package/dist/assets/fortran-D-JaE1fl.js +0 -1
  360. package/dist/assets/gas-B-bID6UX.js +0 -1
  361. package/dist/assets/gherkin-JGxOpXhU.js +0 -1
  362. package/dist/assets/groovy-BHPB9Hfx.js +0 -1
  363. package/dist/assets/haskell-By6RbCCv.js +0 -1
  364. package/dist/assets/haxe-HQiVsOCF.js +0 -1
  365. package/dist/assets/idl-B2iocbwq.js +0 -1
  366. package/dist/assets/index-BuOIqA8d.css +0 -2
  367. package/dist/assets/infoDiagram-HS3SLOUP-DbESo9Nm.js +0 -2
  368. package/dist/assets/javascript-CTjlnOSz.js +0 -1
  369. package/dist/assets/julia-BiUkdI9P.js +0 -1
  370. package/dist/assets/katex-BpW3cI17.js +0 -1
  371. package/dist/assets/layout-BZFYst8S.js +0 -9
  372. package/dist/assets/livescript-uNIpKRlq.js +0 -1
  373. package/dist/assets/lua-CMIwWFMm.js +0 -1
  374. package/dist/assets/mathematica-eDJrChdG.js +0 -1
  375. package/dist/assets/mbox-zqvBlhy3.js +0 -1
  376. package/dist/assets/mermaid-4DMBBIKO-CMn6CB3M.js +0 -1
  377. package/dist/assets/mirc-DA5aApOX.js +0 -1
  378. package/dist/assets/mllike-bIsNpdn1.js +0 -1
  379. package/dist/assets/modelica-0mx6heI0.js +0 -1
  380. package/dist/assets/mscgen-BKLWiiDn.js +0 -1
  381. package/dist/assets/mumps-5_kXgafg.js +0 -1
  382. package/dist/assets/nsis-DOhuqhNG.js +0 -1
  383. package/dist/assets/ntriples-BWf6tqTo.js +0 -1
  384. package/dist/assets/octave-DmFvn7Va.js +0 -1
  385. package/dist/assets/oz-TIwA1cRs.js +0 -1
  386. package/dist/assets/pascal-BFfHjByI.js +0 -1
  387. package/dist/assets/perl-iyEBGoKl.js +0 -1
  388. package/dist/assets/pig-Du8JEd9u.js +0 -1
  389. package/dist/assets/powershell-rJPOSwVp.js +0 -1
  390. package/dist/assets/properties-B7p1o35g.js +0 -1
  391. package/dist/assets/protobuf-DSVPm4uR.js +0 -1
  392. package/dist/assets/pug-BBnJinJ-.js +0 -1
  393. package/dist/assets/puppet-CvB_7oA0.js +0 -1
  394. package/dist/assets/python-D-LGD-zO.js +0 -1
  395. package/dist/assets/q-s96Dgstm.js +0 -1
  396. package/dist/assets/r-DCKN0Q_M.js +0 -1
  397. package/dist/assets/react-vega-CPP33Ky2.js +0 -1
  398. package/dist/assets/reveal-component-DWnqsE1_.js +0 -91
  399. package/dist/assets/rpm-DKF6hj80.js +0 -1
  400. package/dist/assets/ruby-DrHWYpO-.js +0 -1
  401. package/dist/assets/sas-Bf--oEyw.js +0 -1
  402. package/dist/assets/scheme-BZSq5_CL.js +0 -1
  403. package/dist/assets/shell-C5LsobAY.js +0 -1
  404. package/dist/assets/sieve-B6cTRfjv.js +0 -1
  405. package/dist/assets/slide-C5Pp2eO8.js +0 -1
  406. package/dist/assets/smalltalk-B-ZeF8oP.js +0 -1
  407. package/dist/assets/sparql-hKgXdTt3.js +0 -1
  408. package/dist/assets/stateDiagram-v2-4FDKWEC3-BnQZW9RQ.js +0 -1
  409. package/dist/assets/stex-C5zzfAG3.js +0 -1
  410. package/dist/assets/stylus-MJ5VouuS.js +0 -1
  411. package/dist/assets/swift-jqL65uqK.js +0 -1
  412. package/dist/assets/tcl-D9FDKTky.js +0 -1
  413. package/dist/assets/textile-Ne1MkNjB.js +0 -1
  414. package/dist/assets/toml-Ba1TjbvG.js +0 -1
  415. package/dist/assets/tracing-panel-CoriopUM.js +0 -2
  416. package/dist/assets/troff-ClRZFpM8.js +0 -1
  417. package/dist/assets/ttcn-JOxk9-wl.js +0 -1
  418. package/dist/assets/ttcn-cfg-D-oWP0t7.js +0 -1
  419. package/dist/assets/turtle-CfJStbTs.js +0 -1
  420. package/dist/assets/useNotebookActions-Cg9IU5j7.js +0 -1
  421. package/dist/assets/vb-DtMAcbIy.js +0 -1
  422. package/dist/assets/vbscript-CUB17r-X.js +0 -1
  423. package/dist/assets/velocity-Dwo66olV.js +0 -1
  424. package/dist/assets/verilog-DuexQCyX.js +0 -1
  425. package/dist/assets/vhdl-Mgyyw75F.js +0 -1
  426. package/dist/assets/webidl-DZaOA0mR.js +0 -1
  427. package/dist/assets/xquery-DpQixCSm.js +0 -1
  428. package/dist/assets/yacas-B1gHpHXz.js +0 -1
  429. package/dist/assets/z80-IF9HkI5m.js +0 -1
  430. /package/dist/assets/{Deferred-CcWopv8N.js → Deferred-DxQeE5uh.js} +0 -0
  431. /package/dist/assets/{ImageComparisonComponent-BbeHudzx.js → ImageComparisonComponent-2VO41-VE.js} +0 -0
  432. /package/dist/assets/{Inputs-BJt-xWQ4.js → Inputs-BdyX096j.js} +0 -0
  433. /package/dist/assets/{Plot-NkctaBpw.js → Plot-IawheWsD.js} +0 -0
  434. /package/dist/assets/{SSRProvider-ChaJ6dv8.js → SSRProvider-D3zWcDme.js} +0 -0
  435. /package/dist/assets/{alert-DD-RU0QZ.js → alert-cDholnQq.js} +0 -0
  436. /package/dist/assets/{apl-CArdF_Ee.js → apl-T0uH_RjM.js} +0 -0
  437. /package/dist/assets/{array-vLcKmV3f.js → array-BCwZq3ts.js} +0 -0
  438. /package/dist/assets/{asciiarmor-rf6n_8YZ.js → asciiarmor-D3ol7c2G.js} +0 -0
  439. /package/dist/assets/{asn1-Bl4vlAxN.js → asn1-DA-fXXsk.js} +0 -0
  440. /package/dist/assets/{asterisk-B04IJwAt.js → asterisk-Cy-53Fu-.js} +0 -0
  441. /package/dist/assets/{azure-DZ9IQ5nj.js → azure-ZuB1zQ8Q.js} +0 -0
  442. /package/dist/assets/{badge-OeIzJ2Mo.js → badge-ChrPsdTW.js} +0 -0
  443. /package/dist/assets/{blob-Gsfvuteh.js → blob-CTort_or.js} +0 -0
  444. /package/dist/assets/{brainfuck-CWRjg_-2.js → brainfuck-exn1QR7H.js} +0 -0
  445. /package/dist/assets/{bundle.esm-sq57iaa5.js → bundle.esm-DU-4isVC.js} +0 -0
  446. /package/dist/assets/{card-CVZJbqix.js → card-BsOjr9wU.js} +0 -0
  447. /package/dist/assets/{chunk-4F5CHEZ2-Cw8YQRir.js → chunk-4F5CHEZ2-BBsStyPF.js} +0 -0
  448. /package/dist/assets/{chunk-B2363JML-BSJ4A4O7.js → chunk-B2363JML-CPCjJ6tH.js} +0 -0
  449. /package/dist/assets/{chunk-DR5Q36YT-BAovSO-b.js → chunk-DR5Q36YT-DpSMafKt.js} +0 -0
  450. /package/dist/assets/{chunk-FRFDVMJY-Ca8ZLUo3.js → chunk-FRFDVMJY-D6StbPqE.js} +0 -0
  451. /package/dist/assets/{chunk-PL6DKKU2-BjuKxBfi.js → chunk-PL6DKKU2-x3Qoia3Y.js} +0 -0
  452. /package/dist/assets/{chunk-SJTYNZTY-wqlkd3w7.js → chunk-SJTYNZTY-BNaCydHS.js} +0 -0
  453. /package/dist/assets/{chunk-TQ3KTPDO-BUikk8OW.js → chunk-TQ3KTPDO-DfYTN8Ct.js} +0 -0
  454. /package/dist/assets/{chunk-UMXZTB3W-lROkSRJ2.js → chunk-UMXZTB3W-DsE6dCbX.js} +0 -0
  455. /package/dist/assets/{clear-button-cQS2Q-bl.js → clear-button-DBrTU3uL.js} +0 -0
  456. /package/dist/assets/{click-outside-container-ChOZeHlm.js → click-outside-container-BXzp0MYr.js} +0 -0
  457. /package/dist/assets/{clike-B4xEkWXN.js → clike-BK27e5qn.js} +0 -0
  458. /package/dist/assets/{clojure-04C6o-hL.js → clojure-Df1U5nhC.js} +0 -0
  459. /package/dist/assets/{cmake-Dh64a3j4.js → cmake-DrCf0yvp.js} +0 -0
  460. /package/dist/assets/{cobol-B24ofC4q.js → cobol-BWxHqof4.js} +0 -0
  461. /package/dist/assets/{coffeescript-B0i0O-b-.js → coffeescript-nKvg8y_U.js} +0 -0
  462. /package/dist/assets/{colors-CgemTayT.js → colors-CI3VyX7X.js} +0 -0
  463. /package/dist/assets/{common-keywords-D6ImdZX8.js → common-keywords-CU-S2Vqm.js} +0 -0
  464. /package/dist/assets/{commonlisp-NXg-Bye5.js → commonlisp-Dm562cBV.js} +0 -0
  465. /package/dist/assets/{copy-MpDsCBB6.js → copy-B5qyZn5s.js} +0 -0
  466. /package/dist/assets/{copy-BwrPA9zQ.js → copy-Dk_3y0H-.js} +0 -0
  467. /package/dist/assets/{crystal-BOjNTZjx.js → crystal-CrCmK2Cb.js} +0 -0
  468. /package/dist/assets/{css-C_vknI7E.js → css-jpfGFPDE.js} +0 -0
  469. /package/dist/assets/{cypher-DwQoZmH9.js → cypher-RQ5M28al.js} +0 -0
  470. /package/dist/assets/{cytoscape.esm-BUYfy0ER.js → cytoscape.esm-BbAjzIsa.js} +0 -0
  471. /package/dist/assets/{d-xedQGhmO.js → d-CNQ_nPqU.js} +0 -0
  472. /package/dist/assets/{database-zap-kIkTfzTX.js → database-zap-BUVn5HoR.js} +0 -0
  473. /package/dist/assets/{defaultLocale-CUv_V9gw.js → defaultLocale-BLne0bXb.js} +0 -0
  474. /package/dist/assets/{defaultLocale-CIhzTQNN.js → defaultLocale-JieDVWC_.js} +0 -0
  475. /package/dist/assets/{dialog-BEgS5oXa.js → dialog-EekxpBBM.js} +0 -0
  476. /package/dist/assets/{diff-ChFnp8JW.js → diff-DOODcY7A.js} +0 -0
  477. /package/dist/assets/{dist-fKKpzSr2.js → dist-9g-_Ln9y.js} +0 -0
  478. /package/dist/assets/{dist-BNScjj64.js → dist-CRPTyqAT.js} +0 -0
  479. /package/dist/assets/{dist-SITbEFUx.js → dist-CsEqrZxx.js} +0 -0
  480. /package/dist/assets/{dist-DdzMFGlM.js → dist-D6wwIjcW.js} +0 -0
  481. /package/dist/assets/{dist-FpqIkji6.js → dist-DBBYmRY4.js} +0 -0
  482. /package/dist/assets/{dist-fOLN5Vji.js → dist-DCqWIRLq.js} +0 -0
  483. /package/dist/assets/{dist-D80LaxlS.js → dist-DGxytjtv.js} +0 -0
  484. /package/dist/assets/{dist-Cqk8HSav.js → dist-DS5RCKZO.js} +0 -0
  485. /package/dist/assets/{dist-B4jGC5bx.js → dist-DZ2qbK2N.js} +0 -0
  486. /package/dist/assets/{dist-ByJngTCJ.js → dist-DggusHaA.js} +0 -0
  487. /package/dist/assets/{dist-C1VXabOr.js → dist-DxxvVPQH.js} +0 -0
  488. /package/dist/assets/{dist-wsxxqJfJ.js → dist-HW7R98td.js} +0 -0
  489. /package/dist/assets/{dist-R9N_YrBH.js → dist-ooLAQ9IK.js} +0 -0
  490. /package/dist/assets/{dtd-KbDPyUs4.js → dtd-CRYKjxdR.js} +0 -0
  491. /package/dist/assets/{duckdb-keywords-5i8us9ML.js → duckdb-keywords-CR9f4wu5.js} +0 -0
  492. /package/dist/assets/{dylan-0KH4Nowk.js → dylan-Bg0sO2y3.js} +0 -0
  493. /package/dist/assets/{ebnf--2SLsnbd.js → ebnf-BdwTqLUx.js} +0 -0
  494. /package/dist/assets/{ecl-B5iM_b7s.js → ecl-DaBeV7OZ.js} +0 -0
  495. /package/dist/assets/{eiffel-sVM1STl5.js → eiffel-BtJc6fqQ.js} +0 -0
  496. /package/dist/assets/{ellipsis-KAhMaCIV.js → ellipsis-pk06Lq82.js} +0 -0
  497. /package/dist/assets/{ellipsis-vertical-CkwWkOQL.js → ellipsis-vertical-gxgNyR5G.js} +0 -0
  498. /package/dist/assets/{elm-BlNENVB6.js → elm-D9Rly7Qq.js} +0 -0
  499. /package/dist/assets/{emotion-is-prop-valid.esm-BvF4JMSP.js → emotion-is-prop-valid.esm-DYxi7n2b.js} +0 -0
  500. /package/dist/assets/{empty-state-CPvr0RGL.js → empty-state-CsVQSqKA.js} +0 -0
  501. /package/dist/assets/{en-US-BXVprI6a.js → en-US-BqRooSzc.js} +0 -0
  502. /package/dist/assets/{erlang-C0uOSFok.js → erlang-FZMRuv-7.js} +0 -0
  503. /package/dist/assets/{errors-pt9sYxVM.js → errors-CZb6hI2x.js} +0 -0
  504. /package/dist/assets/{esm-D6KjvJkM.js → esm-D_nSG7uo.js} +0 -0
  505. /package/dist/assets/{events-CKqlBGzI.js → events-Qeh-bHlj.js} +0 -0
  506. /package/dist/assets/{extends-DYqjHZ5t.js → extends-Co37_JfG.js} +0 -0
  507. /package/dist/assets/{eye-off-n1Li95bE.js → eye-off-BT-KOYV5.js} +0 -0
  508. /package/dist/assets/{fcl-CcJxrJDr.js → fcl-BFWIADMy.js} +0 -0
  509. /package/dist/assets/{file-BrdxGLRX.js → file-HTLbeC2b.js} +0 -0
  510. /package/dist/assets/{file-headphone-BrQspHac.js → file-headphone-B3fuktN0.js} +0 -0
  511. /package/dist/assets/{forth-Dkvgp5v0.js → forth-C6jh4lHA.js} +0 -0
  512. /package/dist/assets/{fortran-DWGt9NN5.js → fortran-DuxTe5qi.js} +0 -0
  513. /package/dist/assets/{gas-ucVnXY28.js → gas-D7RWbiQ0.js} +0 -0
  514. /package/dist/assets/{gherkin-BRjIORXo.js → gherkin-DV4l4nlf.js} +0 -0
  515. /package/dist/assets/{github-BKS_2Qwn.js → github-raQvpeuZ.js} +0 -0
  516. /package/dist/assets/{groovy-BwyAyRPC.js → groovy-Ij7mXzwd.js} +0 -0
  517. /package/dist/assets/{haskell-Cs-Andhs.js → haskell-BT_ZNgUJ.js} +0 -0
  518. /package/dist/assets/{haxe-BW46cyaq.js → haxe-DYYwGmM8.js} +0 -0
  519. /package/dist/assets/{http-BBXW5Cu0.js → http-CgzOAOXj.js} +0 -0
  520. /package/dist/assets/{icons-C66kZH_4.js → icons-BRopQwI3.js} +0 -0
  521. /package/dist/assets/{idl-BGiQ18ct.js → idl-CjBvIccU.js} +0 -0
  522. /package/dist/assets/{image-HpSc22eh.js → image-DQHXdEQn.js} +0 -0
  523. /package/dist/assets/{init-NRxdWJN-.js → init-DE_uL9Ns.js} +0 -0
  524. /package/dist/assets/{isValid-BBUyUJly.js → isValid-bmSEa3HX.js} +0 -0
  525. /package/dist/assets/{javascript-I9_Q-6Fg.js → javascript-DQz7szA1.js} +0 -0
  526. /package/dist/assets/{julia-Wfay9brY.js → julia-U0NSUEwm.js} +0 -0
  527. /package/dist/assets/{katex-BIY1ztUE.js → katex-M9SX-Gs-.js} +0 -0
  528. /package/dist/assets/{kbd-DSY6_TYl.js → kbd-CGShmG7L.js} +0 -0
  529. /package/dist/assets/{link-DlqtQzll.js → link-CfEtM3Rl.js} +0 -0
  530. /package/dist/assets/{links-D-VMsA11.js → links-C-rLiK3d.js} +0 -0
  531. /package/dist/assets/{livescript-J6EnSQWw.js → livescript-D7jeebX7.js} +0 -0
  532. /package/dist/assets/{loro_wasm_bg-BAHdi7Mz.js → loro_wasm_bg-Ds40eH8K.js} +0 -0
  533. /package/dist/assets/{lua-BO_knq_Q.js → lua-CT4vrRvN.js} +0 -0
  534. /package/dist/assets/{marimo-icons-ifBE8yqY.js → marimo-icons-BSB-Z_W3.js} +0 -0
  535. /package/dist/assets/{math-CIWU-TqO.js → math-Bf0RgaKx.js} +0 -0
  536. /package/dist/assets/{mathematica-DU8ikXHk.js → mathematica-DmzlinOc.js} +0 -0
  537. /package/dist/assets/{mbox-Dzzw6MxI.js → mbox-DYDL20A1.js} +0 -0
  538. /package/dist/assets/{message-circle-QFYtD-Lc.js → message-circle-CWm2KnSx.js} +0 -0
  539. /package/dist/assets/{micromark-factory-space-8Uk-uN5W.js → micromark-factory-space-WzovnJik.js} +0 -0
  540. /package/dist/assets/{mirc-82uLLidC.js → mirc-6LiBC6Dw.js} +0 -0
  541. /package/dist/assets/{mllike-WTbu2PGL.js → mllike-orSu1SHG.js} +0 -0
  542. /package/dist/assets/{modelica-w4uKZrXu.js → modelica-BsibU-7c.js} +0 -0
  543. /package/dist/assets/{mscgen-Bf7m7BDT.js → mscgen-vX4NsSXf.js} +0 -0
  544. /package/dist/assets/{multi-icon-CPhrdW6o.js → multi-icon-DQxqgfM2.js} +0 -0
  545. /package/dist/assets/{mumps-Bicgf-gh.js → mumps-DIZYQE11.js} +0 -0
  546. /package/dist/assets/{nginx-CiiHaY6Q.js → nginx-CFpObAqg.js} +0 -0
  547. /package/dist/assets/{node-sql-parser-DllVaz4k.js → node-sql-parser-B8vXamqL.js} +0 -0
  548. /package/dist/assets/{ntriples-CyotCBD4.js → ntriples-CwlUIE0o.js} +0 -0
  549. /package/dist/assets/{numbers-CHuwXNCA.js → numbers-OHL_xBiC.js} +0 -0
  550. /package/dist/assets/{objectWithoutPropertiesLoose-CUZPaRZf.js → objectWithoutPropertiesLoose-smPWkHxB.js} +0 -0
  551. /package/dist/assets/{octave-BP7UuRZ-.js → octave-BWtN_wao.js} +0 -0
  552. /package/dist/assets/{oz-C9dsRBsA.js → oz-CJMVKlqL.js} +0 -0
  553. /package/dist/assets/{panel-context-S-AFWBnz.js → panel-context-B3J07LRC.js} +0 -0
  554. /package/dist/assets/{pascal-Do-HizJs.js → pascal-C9rPtth-.js} +0 -0
  555. /package/dist/assets/{path-CQRzwJPY.js → path-LDcaQ64B.js} +0 -0
  556. /package/dist/assets/{paths-2eb7kMpE.js → paths-CXng2XQv.js} +0 -0
  557. /package/dist/assets/{perl-DkWjygEp.js → perl-CF7pKLbl.js} +0 -0
  558. /package/dist/assets/{pig-C5cO5Lzu.js → pig-Bu0nn8JT.js} +0 -0
  559. /package/dist/assets/{play-DSUm4sBu.js → play-C7DcCsoO.js} +0 -0
  560. /package/dist/assets/{plus-DgRbTQuK.js → plus-BgB18UzY.js} +0 -0
  561. /package/dist/assets/{powershell-B7iMkhi7.js → powershell-Bzwpi8yQ.js} +0 -0
  562. /package/dist/assets/{preload-helper-DXnewu3N.js → preload-helper-D2MJg03u.js} +0 -0
  563. /package/dist/assets/{prop-types-CMQyZoIm.js → prop-types-BFRDxSKF.js} +0 -0
  564. /package/dist/assets/{properties-BojS2wNP.js → properties-Cfh_Lj0j.js} +0 -0
  565. /package/dist/assets/{protobuf-C3jQLUT4.js → protobuf-Vz3fs9Hb.js} +0 -0
  566. /package/dist/assets/{puppet-BIu7yw7Q.js → puppet-JwSHf4DX.js} +0 -0
  567. /package/dist/assets/{purify.es-Lm0LKKB_.js → purify.es-DC4RGS9t.js} +0 -0
  568. /package/dist/assets/{python-BvK-LeGt.js → python-BRHQZrcc.js} +0 -0
  569. /package/dist/assets/{q-DxTFD_3l.js → q-DWFQ7YI_.js} +0 -0
  570. /package/dist/assets/{r-D9kMb9Pl.js → r-DHkTNFL2.js} +0 -0
  571. /package/dist/assets/{range-l5y19iar.js → range-1DwpgXvM.js} +0 -0
  572. /package/dist/assets/{react-icons.esm-CwO5-6Hf.js → react-icons.esm-BUYTQ32a.js} +0 -0
  573. /package/dist/assets/{react-resizable-panels.browser.esm-xQHRvEag.js → react-resizable-panels.browser.esm-Bcm5njwd.js} +0 -0
  574. /package/dist/assets/{refresh-ccw-B-iu4wyD.js → refresh-ccw-C-n2VFP5.js} +0 -0
  575. /package/dist/assets/{refresh-cw-C6hZr6dA.js → refresh-cw-DHwG4Mac.js} +0 -0
  576. /package/dist/assets/{requests-dD3-AncY.js → requests-BqcqF00P.js} +0 -0
  577. /package/dist/assets/{rotate-ccw-CMEpyC--.js → rotate-ccw-CNsAb2VZ.js} +0 -0
  578. /package/dist/assets/{rpm-DMBmptJ_.js → rpm-zbaZz_dk.js} +0 -0
  579. /package/dist/assets/{ruby-Bi66LQBu.js → ruby-COvM5Bj_.js} +0 -0
  580. /package/dist/assets/{runs-5FOfd9Cy.js → runs-5odJFrfi.js} +0 -0
  581. /package/dist/assets/{sas-DDMCLlZz.js → sas-Be8P6y_s.js} +0 -0
  582. /package/dist/assets/{save-B5tS7kkh.js → save-Clg5dMoP.js} +0 -0
  583. /package/dist/assets/{scheme-MngEI34z.js → scheme-B9Zors0b.js} +0 -0
  584. /package/dist/assets/{session-DI1agD5_.js → session-nmTRerwF.js} +0 -0
  585. /package/dist/assets/{settings-DDffqDzb.js → settings-DfFe0dWD.js} +0 -0
  586. /package/dist/assets/{shell-BSVgrHzY.js → shell-CaaQwZ-W.js} +0 -0
  587. /package/dist/assets/{sieve-DvUWNrPv.js → sieve-CdflT_3W.js} +0 -0
  588. /package/dist/assets/{simple-mode-DxeVZov3.js → simple-mode-BJAT_N3M.js} +0 -0
  589. /package/dist/assets/{smalltalk-CeZ66qpG.js → smalltalk-CRO88y3z.js} +0 -0
  590. /package/dist/assets/{solr-DYYuHZ7Q.js → solr-BkyoAXqg.js} +0 -0
  591. /package/dist/assets/{sparkles-C9V_hOqY.js → sparkles-CZ5WmLPA.js} +0 -0
  592. /package/dist/assets/{sparql-oFx_t7AO.js → sparql-DEker8ZS.js} +0 -0
  593. /package/dist/assets/{spinner-jEqwgi_c.js → spinner-Bhir8k53.js} +0 -0
  594. /package/dist/assets/{spreadsheet-hVThRh5Z.js → spreadsheet-7FZkhkVo.js} +0 -0
  595. /package/dist/assets/{sql-DG1AJQLP.js → sql-BNnXxKXA.js} +0 -0
  596. /package/dist/assets/{square-k2WwJdZy.js → square-Dj2Cf4ne.js} +0 -0
  597. /package/dist/assets/{square-function-iLrgnnoW.js → square-function-D1dlJvD8.js} +0 -0
  598. /package/dist/assets/{src-CsZby044.js → src-CmKhyEBC.js} +0 -0
  599. /package/dist/assets/{stex-CHLzTK9d.js → stex-jWatZkll.js} +0 -0
  600. /package/dist/assets/{stylus-KE-9LQSK.js → stylus-DAJwnVOa.js} +0 -0
  601. /package/dist/assets/{swift-A-ZhZWU8.js → swift-D5F-FU3-.js} +0 -0
  602. /package/dist/assets/{table-CZ3rujd6.js → table-23NNA1s9.js} +0 -0
  603. /package/dist/assets/{tcl-CREXWwrr.js → tcl-DirNbhYm.js} +0 -0
  604. /package/dist/assets/{textile-Cj8L4qVJ.js → textile-DhHo4rKl.js} +0 -0
  605. /package/dist/assets/{tiddlywiki-Dc8c_QaF.js → tiddlywiki-DE5lnTl3.js} +0 -0
  606. /package/dist/assets/{tiki-CwGnGueS.js → tiki-Dt9oCY2i.js} +0 -0
  607. /package/dist/assets/{timer-CEUQS2Fi.js → timer-CIInKAPS.js} +0 -0
  608. /package/dist/assets/{toml-BwSlV2Pt.js → toml-CrP9HWVu.js} +0 -0
  609. /package/dist/assets/{trash-2-3m1rZsYE.js → trash-2-D280Xiwg.js} +0 -0
  610. /package/dist/assets/{trash-D89_qya1.js → trash-uYoPsR8D.js} +0 -0
  611. /package/dist/assets/{treemap-BYvDYG1E.js → treemap-BKxvGXqJ.js} +0 -0
  612. /package/dist/assets/{triangle-alert-Bt-v8HXv.js → triangle-alert-DBoAWWKA.js} +0 -0
  613. /package/dist/assets/{troff-DWonWT6V.js → troff-BWD1WiE0.js} +0 -0
  614. /package/dist/assets/{ttcn--CHQduBW.js → ttcn-CQzcRj0D.js} +0 -0
  615. /package/dist/assets/{ttcn-cfg-Cei3Mnk3.js → ttcn-cfg-jzTcqwRW.js} +0 -0
  616. /package/dist/assets/{turtle-BaGuNPTf.js → turtle-BAqH2D2z.js} +0 -0
  617. /package/dist/assets/{types-jWhVbgX6.js → types-W8WWuumF.js} +0 -0
  618. /package/dist/assets/{types-DOdUT9LT.js → types-z6Sk3JCV.js} +0 -0
  619. /package/dist/assets/{use-toast-DZOInYtM.js → use-toast-BDYuj3zG.js} +0 -0
  620. /package/dist/assets/{useAsyncData-BRNkjHs1.js → useAsyncData-dS4Ne6pU.js} +0 -0
  621. /package/dist/assets/{useDebounce-C0E828y0.js → useDebounce-BDIglWmG.js} +0 -0
  622. /package/dist/assets/{useDeepCompareMemoize-606Ao2HX.js → useDeepCompareMemoize-D0WTlCXt.js} +0 -0
  623. /package/dist/assets/{useHotkey-DMv61Udq.js → useHotkey-Bx4wWQCL.js} +0 -0
  624. /package/dist/assets/{useIframeCapabilities-Bqipv_jK.js → useIframeCapabilities-CryCjoyY.js} +0 -0
  625. /package/dist/assets/{useInterval-zx_Q7num.js → useInterval-CG264TRB.js} +0 -0
  626. /package/dist/assets/{useTheme-DhrO1NvC.js → useTheme-DEcgJENn.js} +0 -0
  627. /package/dist/assets/{uuid-D_ujsK2Y.js → uuid-DXdzqzcr.js} +0 -0
  628. /package/dist/assets/{vb-DQgwufRi.js → vb-CrUpzy4g.js} +0 -0
  629. /package/dist/assets/{vbscript-B66XhQhu.js → vbscript-DEuHZ0Y0.js} +0 -0
  630. /package/dist/assets/{velocity-D7CxwqhZ.js → velocity-D99sTvXl.js} +0 -0
  631. /package/dist/assets/{verilog-SCT9zECa.js → verilog-XWBMMjwd.js} +0 -0
  632. /package/dist/assets/{vhdl-Bz6d75os.js → vhdl-BAGmVXDV.js} +0 -0
  633. /package/dist/assets/{web-vitals-CMDkd9l8.js → web-vitals-BaJPM15X.js} +0 -0
  634. /package/dist/assets/{webidl-B7LbwCfy.js → webidl-xagG_7hd.js} +0 -0
  635. /package/dist/assets/{workflow-CyJEIDjL.js → workflow-DYcZF-oV.js} +0 -0
  636. /package/dist/assets/{ws-Bim0WMvW.js → ws-CtTwmdal.js} +0 -0
  637. /package/dist/assets/{xquery-BOMK2ySj.js → xquery-B8Mguhly.js} +0 -0
  638. /package/dist/assets/{yacas-Yk74VuuD.js → yacas-XW2NxGKw.js} +0 -0
  639. /package/dist/assets/{youtube-CXGBiuia.js → youtube-3lRHw8NU.js} +0 -0
  640. /package/dist/assets/{z80-BQKQ7DhX.js → z80-DhICfTcL.js} +0 -0
@@ -0,0 +1,433 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { describe, it, expect } from "vitest";
4
+ import {
5
+ buildSlideIndices,
6
+ composeSlides,
7
+ computeDeckNavigation,
8
+ resolveDeckNavigationTarget,
9
+ resolveActiveCellIndex,
10
+ } from "../compose-slides";
11
+ import type { SlideType } from "@/components/editor/renderers/slides-layout/types";
12
+
13
+ interface Cell {
14
+ id: string;
15
+ /**
16
+ * Optional for ergonomics; mirrors the on-disk shape where a missing
17
+ * `type` means "use the default slide type". The `compose` helper below
18
+ * normalizes this to `"slide"` before passing through.
19
+ */
20
+ type?: SlideType;
21
+ }
22
+
23
+ const compose = (cells: Cell[]) =>
24
+ composeSlides({
25
+ cells,
26
+ getType: (c) => c.type ?? "slide",
27
+ });
28
+
29
+ /**
30
+ * Collapse the tree to a readable shape so failures produce tiny, obvious
31
+ * diffs:
32
+ * stacks -> subslides -> blocks -> { f: isFragment, ids: [...] }
33
+ */
34
+ const shape = (cells: Cell[]) =>
35
+ compose(cells).stacks.map((s) =>
36
+ s.subslides.map((sub) =>
37
+ sub.blocks.map((b) => ({
38
+ f: b.isFragment,
39
+ ids: b.cells.map((x) => x.id),
40
+ })),
41
+ ),
42
+ );
43
+
44
+ describe("composeSlides", () => {
45
+ it("returns an empty composition for empty input", () => {
46
+ expect(compose([])).toEqual({ stacks: [] });
47
+ });
48
+
49
+ it("treats each 'slide' cell as its own stack", () => {
50
+ expect(
51
+ shape([
52
+ { id: "a", type: "slide" },
53
+ { id: "b", type: "slide" },
54
+ { id: "c", type: "slide" },
55
+ ]),
56
+ ).toEqual([
57
+ [[{ f: false, ids: ["a"] }]],
58
+ [[{ f: false, ids: ["b"] }]],
59
+ [[{ f: false, ids: ["c"] }]],
60
+ ]);
61
+ });
62
+
63
+ it("nests 'sub-slide' cells under the current slide (vertical stack)", () => {
64
+ expect(
65
+ shape([
66
+ { id: "a", type: "slide" },
67
+ { id: "b", type: "sub-slide" },
68
+ { id: "c", type: "sub-slide" },
69
+ { id: "d", type: "slide" },
70
+ ]),
71
+ ).toEqual([
72
+ [
73
+ [{ f: false, ids: ["a"] }],
74
+ [{ f: false, ids: ["b"] }],
75
+ [{ f: false, ids: ["c"] }],
76
+ ],
77
+ [[{ f: false, ids: ["d"] }]],
78
+ ]);
79
+ });
80
+
81
+ it("wraps fragments in their own block on the current subslide", () => {
82
+ expect(
83
+ shape([
84
+ { id: "a", type: "slide" },
85
+ { id: "b", type: "fragment" },
86
+ { id: "c", type: "fragment" },
87
+ ]),
88
+ ).toEqual([
89
+ [
90
+ [
91
+ { f: false, ids: ["a"] },
92
+ { f: true, ids: ["b"] },
93
+ { f: true, ids: ["c"] },
94
+ ],
95
+ ],
96
+ ]);
97
+ });
98
+
99
+ it("treats cells with no type as their own new slide (the default)", () => {
100
+ expect(
101
+ shape([
102
+ { id: "a", type: "slide" },
103
+ { id: "b" },
104
+ { id: "c", type: "fragment" },
105
+ { id: "d" },
106
+ ]),
107
+ ).toEqual([
108
+ [[{ f: false, ids: ["a"] }]],
109
+ [
110
+ [
111
+ { f: false, ids: ["b"] },
112
+ { f: true, ids: ["c"] },
113
+ ],
114
+ ],
115
+ [[{ f: false, ids: ["d"] }]],
116
+ ]);
117
+ });
118
+
119
+ it("creates an implicit initial subslide when the first cell is a fragment", () => {
120
+ expect(shape([{ id: "a", type: "fragment" }])).toEqual([
121
+ [[{ f: true, ids: ["a"] }]],
122
+ ]);
123
+ });
124
+
125
+ it("creates an implicit initial stack when the first cell is a sub-slide", () => {
126
+ expect(
127
+ shape([
128
+ { id: "a", type: "sub-slide" },
129
+ { id: "b", type: "sub-slide" },
130
+ ]),
131
+ ).toEqual([[[{ f: false, ids: ["a"] }], [{ f: false, ids: ["b"] }]]]);
132
+ });
133
+
134
+ it("drops 'skip' cells from the deck", () => {
135
+ expect(
136
+ shape([
137
+ { id: "a", type: "slide" },
138
+ { id: "b", type: "skip" },
139
+ { id: "c", type: "fragment" },
140
+ ]),
141
+ ).toEqual([
142
+ [
143
+ [
144
+ { f: false, ids: ["a"] },
145
+ { f: true, ids: ["c"] },
146
+ ],
147
+ ],
148
+ ]);
149
+ });
150
+
151
+ it("skip at the very start does not create an empty leading stack", () => {
152
+ expect(
153
+ shape([
154
+ { id: "a", type: "skip" },
155
+ { id: "b", type: "slide" },
156
+ ]),
157
+ ).toEqual([[[{ f: false, ids: ["b"] }]]]);
158
+ });
159
+
160
+ it("opens a fresh fragment block for each consecutive fragment cell", () => {
161
+ expect(
162
+ shape([
163
+ { id: "a", type: "slide" },
164
+ { id: "b", type: "fragment" },
165
+ { id: "c", type: "fragment" },
166
+ { id: "d", type: "fragment" },
167
+ ]),
168
+ ).toEqual([
169
+ [
170
+ [
171
+ { f: false, ids: ["a"] },
172
+ { f: true, ids: ["b"] },
173
+ { f: true, ids: ["c"] },
174
+ { f: true, ids: ["d"] },
175
+ ],
176
+ ],
177
+ ]);
178
+ });
179
+
180
+ it("resets fragment context when a new subslide opens", () => {
181
+ expect(
182
+ shape([
183
+ { id: "a", type: "slide" },
184
+ { id: "b", type: "fragment" },
185
+ { id: "c", type: "sub-slide" },
186
+ { id: "d", type: "fragment" },
187
+ ]),
188
+ ).toEqual([
189
+ [
190
+ [
191
+ { f: false, ids: ["a"] },
192
+ { f: true, ids: ["b"] },
193
+ ],
194
+ [
195
+ { f: false, ids: ["c"] },
196
+ { f: true, ids: ["d"] },
197
+ ],
198
+ ],
199
+ ]);
200
+ });
201
+
202
+ it("handles a realistic mixed sequence", () => {
203
+ expect(
204
+ shape([
205
+ { id: "title", type: "slide" },
206
+ { id: "intro", type: "fragment" },
207
+ { id: "deep", type: "sub-slide" },
208
+ { id: "deep-body", type: "fragment" },
209
+ { id: "debug", type: "skip" },
210
+ { id: "outro", type: "slide" },
211
+ ]),
212
+ ).toEqual([
213
+ [
214
+ [
215
+ { f: false, ids: ["title"] },
216
+ { f: true, ids: ["intro"] },
217
+ ],
218
+ [
219
+ { f: false, ids: ["deep"] },
220
+ { f: true, ids: ["deep-body"] },
221
+ ],
222
+ ],
223
+ [[{ f: false, ids: ["outro"] }]],
224
+ ]);
225
+ });
226
+
227
+ it("is generic over cell shape (preserves object identity)", () => {
228
+ const a = { id: "a", type: "slide" as const, extra: 42 };
229
+ const b = { id: "b", type: "fragment" as const, extra: 7 };
230
+ const result = composeSlides({ cells: [a, b], getType: (c) => c.type });
231
+ expect(result.stacks[0].subslides[0].blocks[0].cells[0]).toBe(a);
232
+ expect(result.stacks[0].subslides[0].blocks[1].cells[0]).toBe(b);
233
+ });
234
+ });
235
+
236
+ describe("buildSlideIndices", () => {
237
+ const build = (cells: Cell[]) => {
238
+ const composition = composeSlides({
239
+ cells,
240
+ getType: (c) => c.type ?? "slide",
241
+ });
242
+ return buildSlideIndices({ composition, cells, getId: (c) => c.id });
243
+ };
244
+
245
+ it("maps each cell to its {h, v, f} location", () => {
246
+ const cells: Cell[] = [
247
+ { id: "a", type: "slide" },
248
+ { id: "b", type: "fragment" },
249
+ { id: "c", type: "sub-slide" },
250
+ { id: "d", type: "slide" },
251
+ { id: "e", type: "fragment" },
252
+ { id: "f", type: "fragment" },
253
+ ];
254
+ const { cellToTarget } = build(cells);
255
+ expect(cellToTarget.get("a")).toEqual({ h: 0, v: 0, f: -1 });
256
+ expect(cellToTarget.get("b")).toEqual({ h: 0, v: 0, f: 0 });
257
+ expect(cellToTarget.get("c")).toEqual({ h: 0, v: 1, f: -1 });
258
+ expect(cellToTarget.get("d")).toEqual({ h: 1, v: 0, f: -1 });
259
+ expect(cellToTarget.get("e")).toEqual({ h: 1, v: 0, f: 0 });
260
+ expect(cellToTarget.get("f")).toEqual({ h: 1, v: 0, f: 1 });
261
+ });
262
+
263
+ it("maps {h, v, f} back to the flat index of the last visible cell", () => {
264
+ const cells: Cell[] = [
265
+ { id: "a", type: "slide" },
266
+ { id: "b", type: "fragment" },
267
+ { id: "c", type: "fragment" },
268
+ ];
269
+ const { targetToCellIndex } = build(cells);
270
+ // Before any fragment is revealed, the active cell is the last pre-fragment cell.
271
+ expect(targetToCellIndex.get("0,0,-1")).toBe(0); // "a"
272
+ // After fragment 0 is shown, active advances to "b".
273
+ expect(targetToCellIndex.get("0,0,0")).toBe(1); // "b"
274
+ // After fragment 1 is shown, active advances to "c".
275
+ expect(targetToCellIndex.get("0,0,1")).toBe(2); // "c"
276
+ });
277
+
278
+ it("populates f=-1 with the first cell when the subslide starts with a fragment", () => {
279
+ const cells: Cell[] = [{ id: "a", type: "fragment" }];
280
+ const { targetToCellIndex } = build(cells);
281
+ expect(targetToCellIndex.get("0,0,-1")).toBe(0);
282
+ expect(targetToCellIndex.get("0,0,0")).toBe(0);
283
+ });
284
+
285
+ it("drops skipped cells from the index entirely", () => {
286
+ const cells: Cell[] = [
287
+ { id: "a", type: "slide" },
288
+ { id: "b", type: "skip" },
289
+ ];
290
+ const { cellToTarget } = build(cells);
291
+ expect(cellToTarget.has("a")).toBe(true);
292
+ expect(cellToTarget.has("b")).toBe(false);
293
+ });
294
+ });
295
+
296
+ describe("resolveActiveCellIndex", () => {
297
+ const map = new Map<string, number>([
298
+ ["0,0,-1", 0],
299
+ ["0,0,0", 1],
300
+ ["0,0,1", 2],
301
+ ["1,0,-1", 3],
302
+ ]);
303
+
304
+ it("returns the exact match when one exists", () => {
305
+ expect(resolveActiveCellIndex(map, { h: 0, v: 0, f: 1 })).toBe(2);
306
+ });
307
+
308
+ it("falls back to f=-1 when there is no fragment-specific entry", () => {
309
+ // reveal may report f=0 for slides without any fragments
310
+ expect(resolveActiveCellIndex(map, { h: 1, v: 0, f: 0 })).toBe(3);
311
+ });
312
+
313
+ it("returns undefined for unknown stacks", () => {
314
+ expect(resolveActiveCellIndex(map, { h: 9, v: 0, f: 0 })).toBeUndefined();
315
+ });
316
+ });
317
+
318
+ describe("resolveDeckNavigationTarget", () => {
319
+ const resolve = (cells: Cell[], activeIndex: number | undefined) => {
320
+ const composition = compose(cells);
321
+ const { cellToTarget } = buildSlideIndices({
322
+ composition,
323
+ cells,
324
+ getId: (cell) => cell.id,
325
+ });
326
+ return resolveDeckNavigationTarget({
327
+ activeIndex,
328
+ cells,
329
+ cellToTarget,
330
+ getId: (cell) => cell.id,
331
+ });
332
+ };
333
+
334
+ it("returns the selected cell target when the cell is part of the deck", () => {
335
+ expect(
336
+ resolve(
337
+ [
338
+ { id: "a", type: "slide" },
339
+ { id: "b", type: "fragment" },
340
+ ],
341
+ 1,
342
+ ),
343
+ ).toEqual({ h: 0, v: 0, f: 0 });
344
+ });
345
+
346
+ it("parks a skipped cell on the closest earlier deck cell", () => {
347
+ expect(
348
+ resolve(
349
+ [
350
+ { id: "a", type: "slide" },
351
+ { id: "skip", type: "skip" },
352
+ { id: "b", type: "slide" },
353
+ ],
354
+ 1,
355
+ ),
356
+ ).toEqual({ h: 0, v: 0, f: -1 });
357
+ });
358
+
359
+ it("falls forward when a skipped cell appears before any real slide", () => {
360
+ expect(
361
+ resolve(
362
+ [
363
+ { id: "skip", type: "skip" },
364
+ { id: "a", type: "slide" },
365
+ ],
366
+ 0,
367
+ ),
368
+ ).toEqual({ h: 0, v: 0, f: -1 });
369
+ });
370
+
371
+ it("returns undefined when there is no real slide to park on", () => {
372
+ expect(resolve([{ id: "skip", type: "skip" }], 0)).toBeUndefined();
373
+ });
374
+ });
375
+
376
+ describe("computeDeckNavigation", () => {
377
+ it("returns null when the deck is already on a non-fragment target", () => {
378
+ expect(
379
+ computeDeckNavigation({ h: 0, v: 0, f: -1 }, { h: 0, v: 0, f: -1 }),
380
+ ).toBeNull();
381
+ });
382
+
383
+ it("returns null when the deck is already on the target fragment", () => {
384
+ expect(
385
+ computeDeckNavigation({ h: 0, v: 0, f: 1 }, { h: 0, v: 0, f: 1 }),
386
+ ).toBeNull();
387
+ });
388
+
389
+ it("navigates to a different stack", () => {
390
+ expect(
391
+ computeDeckNavigation({ h: 0, v: 0, f: -1 }, { h: 2, v: 0, f: -1 }),
392
+ ).toEqual({ h: 2, v: 0, f: -1 });
393
+ });
394
+
395
+ it("navigates to a different subslide within the same stack", () => {
396
+ expect(
397
+ computeDeckNavigation({ h: 1, v: 0, f: -1 }, { h: 1, v: 2, f: -1 }),
398
+ ).toEqual({ h: 1, v: 2, f: -1 });
399
+ });
400
+
401
+ it("collapses revealed fragments when jumping to the parent slide", () => {
402
+ // Regression: previously left `f` unchanged, so the deck would stay on
403
+ // the last-revealed fragment when the user clicked the parent slide in
404
+ // the minimap.
405
+ expect(
406
+ computeDeckNavigation({ h: 0, v: 0, f: 2 }, { h: 0, v: 0, f: -1 }),
407
+ ).toEqual({ h: 0, v: 0, f: -1 });
408
+ });
409
+
410
+ it("collapses fragments when jumping to a parent slide in a different stack", () => {
411
+ expect(
412
+ computeDeckNavigation({ h: 1, v: 0, f: 3 }, { h: 0, v: 0, f: -1 }),
413
+ ).toEqual({ h: 0, v: 0, f: -1 });
414
+ });
415
+
416
+ it("advances to a specific fragment on the same slide", () => {
417
+ expect(
418
+ computeDeckNavigation({ h: 0, v: 0, f: -1 }, { h: 0, v: 0, f: 2 }),
419
+ ).toEqual({ h: 0, v: 0, f: 2 });
420
+ });
421
+
422
+ it("rewinds to an earlier fragment on the same slide", () => {
423
+ expect(
424
+ computeDeckNavigation({ h: 0, v: 0, f: 3 }, { h: 0, v: 0, f: 1 }),
425
+ ).toEqual({ h: 0, v: 0, f: 1 });
426
+ });
427
+
428
+ it("jumps across stacks directly to a fragment", () => {
429
+ expect(
430
+ computeDeckNavigation({ h: 0, v: 0, f: -1 }, { h: 2, v: 1, f: 0 }),
431
+ ).toEqual({ h: 2, v: 1, f: 0 });
432
+ });
433
+ });