@marimo-team/frontend 0.21.2-dev56 → 0.21.2-dev58

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 (618) hide show
  1. package/dist/assets/CellStatus-C-nDPVVw.js +1 -0
  2. package/dist/assets/{ConnectedDataExplorerComponent-7yXYooWG.js → ConnectedDataExplorerComponent-B5igOqdA.js} +1 -1
  3. package/dist/assets/FiraMono-Bold-C6PDArdf.woff2 +0 -0
  4. package/dist/assets/FiraMono-Medium-D5MAsWEG.woff2 +0 -0
  5. package/dist/assets/FiraMono-Regular-CEsLFVD9.woff2 +0 -0
  6. package/dist/assets/{ImperativeModal-C3CD5-Aq.js → ImperativeModal-C5ZzjCQG.js} +1 -1
  7. package/dist/assets/{JsonOutput-DqjAyzM8.js → JsonOutput-bhD4i0Fm.js} +8 -8
  8. package/dist/assets/LazyAnyLanguageCodeMirror-C58z97yX.js +2 -0
  9. package/dist/assets/Lora-VariableFont_wght-CZceb_kH.woff2 +0 -0
  10. package/dist/assets/{MarimoErrorOutput-Dat_S09q.js → MarimoErrorOutput-BIh0hMl8.js} +5 -5
  11. package/dist/assets/PTSans-Bold-C_DwAp7Z.woff2 +0 -0
  12. package/dist/assets/PTSans-Regular-Bam3NpBI.woff2 +0 -0
  13. package/dist/assets/RenderHTML-CRY6pZVc.js +1 -0
  14. package/dist/assets/{add-cell-with-ai-y2xroEGf.js → add-cell-with-ai-BvN8AbcB.js} +15 -15
  15. package/dist/assets/{add-connection-dialog-CaIQ6Jta.js → add-connection-dialog-BvzGJCV7.js} +23 -23
  16. package/dist/assets/{agent-panel-DziFrEjJ.js → agent-panel-DLrLHhZB.js} +5 -5
  17. package/dist/assets/ai-model-dropdown-CQDhHQ1r.js +5 -0
  18. package/dist/assets/{any-language-editor-DZYnKlJB.js → any-language-editor-DwTh8fpE.js} +1 -1
  19. package/dist/assets/apl-BvMImcFf.js +1 -0
  20. package/dist/assets/{app-config-button-CpAv9Tiu.js → app-config-button-CnR7XJXP.js} +1 -1
  21. package/dist/assets/{arc-BrTIAGt4.js → arc-DUSwcTI9.js} +1 -1
  22. package/dist/assets/{architecture-7HQA4BMR-BewjmwdA.js → architecture-7HQA4BMR-DoF6afh3.js} +1 -1
  23. package/dist/assets/{architectureDiagram-VXUJARFQ-DKmk99ac.js → architectureDiagram-VXUJARFQ-d3bjsML7.js} +1 -1
  24. package/dist/assets/asciiarmor-BYYwBbrl.js +1 -0
  25. package/dist/assets/asn1-Dlt8rkAb.js +1 -0
  26. package/dist/assets/{azure-Dw5gKmUz.js → azure-DMJRLvDT.js} +1 -1
  27. package/dist/assets/{blockDiagram-VD42YOAC-TpAhP5OQ.js → blockDiagram-VD42YOAC-CjpBwM9S.js} +1 -1
  28. package/dist/assets/brainfuck-B1Z5ou__.js +1 -0
  29. package/dist/assets/{c4Diagram-YG6GDRKO-Dg8hCyKf.js → c4Diagram-YG6GDRKO-BsB04ueE.js} +1 -1
  30. package/dist/assets/{cache-panel-D0OsHk_D.js → cache-panel-B9gltP7l.js} +1 -1
  31. package/dist/assets/{cell-editor-RbAVpSFb.js → cell-editor-D5XEomtX.js} +11 -11
  32. package/dist/assets/{cell-link-CNgO3c-T.js → cell-link-Cp4c28Yf.js} +1 -1
  33. package/dist/assets/cells-DiVpbkA6.js +230 -0
  34. package/dist/assets/channel-BjUuxbyU.js +1 -0
  35. package/dist/assets/{chat-display-BPUVrlA6.js → chat-display-DhUQL9pu.js} +1 -1
  36. package/dist/assets/{chat-panel-esz5TfF-.js → chat-panel-fxitp0Hy.js} +2 -2
  37. package/dist/assets/{chunk-4BX2VUAB-DOQhLGwX.js → chunk-4BX2VUAB-DhvNmHH5.js} +1 -1
  38. package/dist/assets/chunk-55IACEB6-DPm6ES7n.js +1 -0
  39. package/dist/assets/{chunk-5FQGJX7Z-sGWxL7Ey.js → chunk-5FQGJX7Z-BSe8eGYF.js} +2 -2
  40. package/dist/assets/{chunk-ABZYJK2D-DXJ7hnjx.js → chunk-ABZYJK2D-Cw3YveaS.js} +3 -3
  41. package/dist/assets/{chunk-ATLVNIR6-CTEqcLEc.js → chunk-ATLVNIR6-ChKiaY37.js} +1 -1
  42. package/dist/assets/{chunk-B4BG7PRW-CkAIqtPf.js → chunk-B4BG7PRW-CjzWXMFh.js} +1 -1
  43. package/dist/assets/{chunk-CVBHYZKI-BmNXddyI.js → chunk-CVBHYZKI-BX0N_ipT.js} +1 -1
  44. package/dist/assets/{chunk-DI55MBZ5-C4F9vu8o.js → chunk-DI55MBZ5-BLrTiPQ-.js} +1 -1
  45. package/dist/assets/{chunk-EXTU4WIE-BT0Py-4P.js → chunk-EXTU4WIE-DEQUOsSM.js} +1 -1
  46. package/dist/assets/{chunk-FMBD7UC4-BF_CXOnN.js → chunk-FMBD7UC4-BDlH9XLH.js} +1 -1
  47. package/dist/assets/{chunk-HN2XXSSU-BstCPYtG.js → chunk-HN2XXSSU-ujlBpRMF.js} +1 -1
  48. package/dist/assets/{chunk-JA3XYJ7Z-CGd7jja_.js → chunk-JA3XYJ7Z-DVg9ra4h.js} +1 -1
  49. package/dist/assets/{chunk-JZLCHNYA-CqY-RYTj.js → chunk-JZLCHNYA-BTjSP-Yu.js} +1 -1
  50. package/dist/assets/{chunk-MI3HLSF2-BceZdyTR.js → chunk-MI3HLSF2-D9JXkg6-.js} +1 -1
  51. package/dist/assets/{chunk-N4CR4FBY-aUDjVzN7.js → chunk-N4CR4FBY-U_urcDYs.js} +2 -2
  52. package/dist/assets/{chunk-QN33PNHL-DHnCb5-U.js → chunk-QN33PNHL-rFbjvOIx.js} +1 -1
  53. package/dist/assets/{chunk-QXUST7PY-CRO5kYCE.js → chunk-QXUST7PY-BQj8er3i.js} +1 -1
  54. package/dist/assets/{chunk-QZHKN3VN-D3EIvP2i.js → chunk-QZHKN3VN-zZhG5AHT.js} +1 -1
  55. package/dist/assets/{chunk-S3R3BYOJ-CSHQgcuP.js → chunk-S3R3BYOJ-ZHSbXnZr.js} +1 -1
  56. package/dist/assets/{chunk-TZMSLE5B-CE7o9asH.js → chunk-TZMSLE5B-BAOCWmWp.js} +1 -1
  57. package/dist/assets/classDiagram-2ON5EDUG-Dk_A06Wi.js +1 -0
  58. package/dist/assets/classDiagram-v2-WZHVMYZB-CI0Lejhn.js +1 -0
  59. package/dist/assets/{clike-C3ewt06X.js → clike-D1aNLn0X.js} +1 -1
  60. package/dist/assets/clojure-DjNF1_gb.js +1 -0
  61. package/dist/assets/cmake-BDQMYLKM.js +1 -0
  62. package/dist/assets/cobol-DuPGAg14.js +1 -0
  63. package/dist/assets/{code-block-37QAKDTI-DMpe1jNG.js → code-block-37QAKDTI-BU3oxVk6.js} +1 -1
  64. package/dist/assets/coffeescript-Cpt7RKvC.js +1 -0
  65. package/dist/assets/{column-preview-BUKHsglA.js → column-preview-CWToI8XM.js} +1 -1
  66. package/dist/assets/{command-DmzEbs6L.js → command-B9VNhm0p.js} +1 -1
  67. package/dist/assets/{command-palette-AKdHOsJP.js → command-palette-ur_xyrxX.js} +1 -1
  68. package/dist/assets/{common-B4yshY-H.js → common-BqZ5L0i8.js} +1 -1
  69. package/dist/assets/commonlisp-BRjl0xya.js +1 -0
  70. package/dist/assets/{components-DCqJqyys.js → components-BouDP-tv.js} +1 -1
  71. package/dist/assets/{components-oKCjx6cN.js → components-CUetByBv.js} +1 -1
  72. package/dist/assets/{context-CRmPPhx9.js → context-CqNy_uER.js} +1 -1
  73. package/dist/assets/context-aware-panel-CD_txOWw.js +3 -0
  74. package/dist/assets/{copy-icon-P0kzz1Pr.js → copy-icon-WvgZ60QO.js} +1 -1
  75. package/dist/assets/{cose-bilkent-S5V4N54A-Bd5HJPaN.js → cose-bilkent-S5V4N54A-C4qI5Omf.js} +1 -1
  76. package/dist/assets/createReducer-Dvh64vBW.js +1 -0
  77. package/dist/assets/crystal-BJ72BOy1.js +1 -0
  78. package/dist/assets/{css-CCWfM5vT.js → css-D-8RA_n9.js} +1 -1
  79. package/dist/assets/cypher-qOLKQlRB.js +1 -0
  80. package/dist/assets/d-iOURkVzR.js +1 -0
  81. package/dist/assets/{dagre-6UL2VRFP-XqoNLMQ3.js → dagre-6UL2VRFP-CoEAbEhB.js} +1 -1
  82. package/dist/assets/{data-grid-overlay-editor-Cus1-BFN.js → data-grid-overlay-editor-DXzdnLZF.js} +1 -1
  83. package/dist/assets/{datasource-DKHG39NV.js → datasource-C5fKDIEK.js} +2 -2
  84. package/dist/assets/{dependency-graph-panel-7GKT3dyD.js → dependency-graph-panel-BCYRlR0F.js} +4 -4
  85. package/dist/assets/{diagram-PSM6KHXK-BuzKNNcN.js → diagram-PSM6KHXK-CzPUkhGz.js} +1 -1
  86. package/dist/assets/{diagram-QEK2KX5R-A5LBQS11.js → diagram-QEK2KX5R-D5RBmWAK.js} +1 -1
  87. package/dist/assets/{diagram-S2PKOQOG-dkJE8SA0.js → diagram-S2PKOQOG-C8PeRX7S.js} +1 -1
  88. package/dist/assets/{dialog-1_jIyAb_.js → dialog-C_NcD2pn.js} +1 -1
  89. package/dist/assets/diff-Cdd81Zxl.js +1 -0
  90. package/dist/assets/{dist-e6Ho4upI.js → dist-1u2or7ID.js} +1 -1
  91. package/dist/assets/{dist-DSlq5ZeQ.js → dist-BWa7crGu.js} +1 -1
  92. package/dist/assets/{dist-CsRbK9-Y.js → dist-BZOFXjSq.js} +1 -1
  93. package/dist/assets/dist-BgRFL8FO.js +1 -0
  94. package/dist/assets/{dist-Br306776.js → dist-Cj6Bv4PM.js} +1 -1
  95. package/dist/assets/dist-D6IRobNQ.js +1 -0
  96. package/dist/assets/{dist-Tk70DR_I.js → dist-DBaxVoPL.js} +1 -1
  97. package/dist/assets/{dist-f9b2H4q_.js → dist-DQg1jiNa.js} +1 -1
  98. package/dist/assets/{dist-_TwZ4tIe.js → dist-DZurUgwR.js} +1 -1
  99. package/dist/assets/{dist-C3AnARPE.js → dist-D_QUx5Gn.js} +1 -1
  100. package/dist/assets/{dist-B_buFm3B.js → dist-Dq1aTs7B.js} +1 -1
  101. package/dist/assets/{dist-ZM59OWYL.js → dist-NoS9f1Fr.js} +1 -1
  102. package/dist/assets/dist-i55eG_gB.js +1 -0
  103. package/dist/assets/dist-vu0dYsZ6.js +1 -0
  104. package/dist/assets/{dist-BWGxTsTP.js → dist-wAlLVqgL.js} +1 -1
  105. package/dist/assets/{dockerfile-ClV2Mqz8.js → dockerfile-t2fxOBWV.js} +1 -1
  106. package/dist/assets/documentation-panel-B-pPPA6b.js +1 -0
  107. package/dist/assets/{download-B1vXaivj.js → download-UmTPygP7.js} +1 -1
  108. package/dist/assets/dtd-CXebdwLo.js +1 -0
  109. package/dist/assets/dylan-YUx5_Nke.js +1 -0
  110. package/dist/assets/ecl-CktOv__x.js +1 -0
  111. package/dist/assets/{edit-page-Dt-k7cUh.js → edit-page-DKTQKmQY.js} +7 -7
  112. package/dist/assets/eiffel-Cwa25B6x.js +1 -0
  113. package/dist/assets/elm-COtRRWOj.js +1 -0
  114. package/dist/assets/{erDiagram-Q2GNP2WA-CgH6udOW.js → erDiagram-Q2GNP2WA-Bvb9X3rD.js} +1 -1
  115. package/dist/assets/erlang-Ir3c4mPd.js +1 -0
  116. package/dist/assets/{error-banner-J5F3weEj.js → error-banner-BYG94WiL.js} +1 -1
  117. package/dist/assets/{error-panel-DnhKJ5Ou.js → error-panel-CpC5W_ax.js} +1 -1
  118. package/dist/assets/{es-DYI7U61K.js → es-DKHH3Swu.js} +1 -1
  119. package/dist/assets/{esm-DKLLCu3N.js → esm-Clp2XqMu.js} +1 -1
  120. package/dist/assets/{esm-BC1J92im.js → esm-DnSMDF4m.js} +1 -1
  121. package/dist/assets/{factor-CrpY0izf.js → factor-CwMUgBOu.js} +1 -1
  122. package/dist/assets/factor-DLUSHz6o.js +1 -0
  123. package/dist/assets/{field-B08lvxnl.js → field-BEgvDIrV.js} +1 -1
  124. package/dist/assets/{file-explorer-panel-DyUl_ws9.js → file-explorer-panel-PTcIZ1Da.js} +3 -3
  125. package/dist/assets/{file-icons-3DTS8ZM7.js → file-icons-BTQcwa4T.js} +1 -1
  126. package/dist/assets/floating-outline-Dz5Wcbfw.js +1 -0
  127. package/dist/assets/{flowDiagram-NV44I4VS-D85BL4rA.js → flowDiagram-NV44I4VS-CF0XcGrZ.js} +1 -1
  128. package/dist/assets/{focus-DlJH7sfh.js → focus-BRTg8M44.js} +1 -1
  129. package/dist/assets/{form-760_EqmF.js → form-qtFXuhlh.js} +1 -1
  130. package/dist/assets/{formats-wYuh1bqp.js → formats-CQWEZHk-.js} +1 -1
  131. package/dist/assets/{formatting-CraOPe94.js → formatting-DBrNlcJ6.js} +1 -1
  132. package/dist/assets/forth-DdV4URDJ.js +1 -0
  133. package/dist/assets/fortran-rTDtSjFc.js +1 -0
  134. package/dist/assets/{gallery-page--paiPvYX.js → gallery-page-DhOJHDwV.js} +1 -1
  135. package/dist/assets/{ganttDiagram-JELNMOA3-DzCOXWlF.js → ganttDiagram-JELNMOA3-BXfHO6g0.js} +1 -1
  136. package/dist/assets/gas-B20k3keQ.js +1 -0
  137. package/dist/assets/gherkin-DdH6eiN0.js +1 -0
  138. package/dist/assets/{gitGraph-G5XIXVHT-iDzw7G2X.js → gitGraph-G5XIXVHT-D3o7km_A.js} +1 -1
  139. package/dist/assets/{gitGraphDiagram-V2S2FVAM-BUHURX6t.js → gitGraphDiagram-V2S2FVAM-Blhov9dO.js} +1 -1
  140. package/dist/assets/{glide-data-editor-DYdoQTO5.js → glide-data-editor-CO6jMjYm.js} +4 -4
  141. package/dist/assets/{globals-7M5DRsIb.js → globals-DD4XdbWe.js} +1 -1
  142. package/dist/assets/groovy-k_2ke765.js +1 -0
  143. package/dist/assets/haskell-JTqAy6cw.js +1 -0
  144. package/dist/assets/haxe-g4mjq9YQ.js +1 -0
  145. package/dist/assets/{home-page-CxQ1e98h.js → home-page-CwgtN9Ku.js} +1 -1
  146. package/dist/assets/{hooks-C3jEff2O.js → hooks-CLoML3Pf.js} +1 -1
  147. package/dist/assets/{html-to-image-DTFXm6_Z.js → html-to-image-CRCamxYo.js} +1 -1
  148. package/dist/assets/idl-CQEReZIk.js +1 -0
  149. package/dist/assets/{index-DqvjhTaJ.js → index-DC6PpQWW.js} +17 -17
  150. package/dist/assets/{index-BmoocKR0.css → index-DtdvIKY3.css} +1 -1
  151. package/dist/assets/{info-VBDWY6EO-CPHm9IfG.js → info-VBDWY6EO-CPJvjUKi.js} +1 -1
  152. package/dist/assets/infoDiagram-HS3SLOUP-CCrt0lHA.js +2 -0
  153. package/dist/assets/{input-CN1ZeRYm.js → input-lyDIN6R6.js} +1 -1
  154. package/dist/assets/javascript-Th71hKcK.js +1 -0
  155. package/dist/assets/{journeyDiagram-XKPGCS4Q-B1dvnV4D.js → journeyDiagram-XKPGCS4Q-Bs_9B9e_.js} +1 -1
  156. package/dist/assets/julia-KdjfFIx7.js +1 -0
  157. package/dist/assets/{kanban-definition-3W4ZIXB7-CefbrXQv.js → kanban-definition-3W4ZIXB7-_GEp627b.js} +1 -1
  158. package/dist/assets/katex-BalO4WMU.js +1 -0
  159. package/dist/assets/kiosk-mode-Di6uNlNd.js +1 -0
  160. package/dist/assets/{label-TNNaT1M9.js → label-CNWsXpEn.js} +1 -1
  161. package/dist/assets/{layout-3b3tzmbb.js → layout-OxzkS5En.js} +4 -4
  162. package/dist/assets/{line-BBSd2MUH.js → line-BKm-YkCh.js} +1 -1
  163. package/dist/assets/{linear-BDnrHGYO.js → linear-DG7yljSg.js} +1 -1
  164. package/dist/assets/livescript-OIMP9q9l.js +1 -0
  165. package/dist/assets/{logs-panel-C4k_2IHW.js → logs-panel-Dt4wzfgH.js} +1 -1
  166. package/dist/assets/{loro_wasm_bg-MY7PmKYj.js → loro_wasm_bg-CvVVQqkx.js} +1 -1
  167. package/dist/assets/lua-blzLZg7R.js +1 -0
  168. package/dist/assets/{markdown-renderer-DSy5IuAx.js → markdown-renderer-nMv2xwHt.js} +3 -3
  169. package/dist/assets/mathematica-CMJa84MS.js +1 -0
  170. package/dist/assets/mbox-DVlt9Sx8.js +1 -0
  171. package/dist/assets/mermaid-4DMBBIKO-gmMzGFR4.js +1 -0
  172. package/dist/assets/{mermaid-C43VbdrM.js → mermaid-DEOW_c2X.js} +3 -3
  173. package/dist/assets/{mermaid-parser.core-CdM8D_p_.js → mermaid-parser.core-ChpHatjH.js} +2 -2
  174. package/dist/assets/{mhchem-B98RQJ-y.js → mhchem-DqNBdKjC.js} +1 -1
  175. package/dist/assets/{mindmap-definition-VGOIOE7T-CcV7D-wF.js → mindmap-definition-VGOIOE7T-CsErmnfz.js} +1 -1
  176. package/dist/assets/mirc-CE9zFxnR.js +1 -0
  177. package/dist/assets/mllike-UPrOWD4R.js +1 -0
  178. package/dist/assets/modelica-CXEKMd0n.js +1 -0
  179. package/dist/assets/mscgen-CzEcWkMH.js +1 -0
  180. package/dist/assets/mumps-DNi45Qjm.js +1 -0
  181. package/dist/assets/name-cell-input-CwvGCJkg.js +1 -0
  182. package/dist/assets/{nsis-BeaU1Q2K.js → nsis-10Du03KF.js} +1 -1
  183. package/dist/assets/nsis-Cjsw1q_J.js +1 -0
  184. package/dist/assets/ntriples-ByafJqO3.js +1 -0
  185. package/dist/assets/{number-overlay-editor-BBJO1mf8.js → number-overlay-editor-zZDGu9D2.js} +1 -1
  186. package/dist/assets/octave-Bg9NfY8T.js +1 -0
  187. package/dist/assets/{ordinal-CMAUv8ku.js → ordinal-CIVqSC4M.js} +1 -1
  188. package/dist/assets/{outline-panel-D7CJwO8u.js → outline-panel-CCmk1ERZ.js} +1 -1
  189. package/dist/assets/oz-BqUh_R9x.js +1 -0
  190. package/dist/assets/{packages-panel-Bp1SYjgc.js → packages-panel-BzayhsFC.js} +1 -1
  191. package/dist/assets/{packet-DYOGHKS2-0KdzLf9c.js → packet-DYOGHKS2-0_hZggkb.js} +1 -1
  192. package/dist/assets/panels-B7hsDiui.js +1 -0
  193. package/dist/assets/pascal-T5LJ_IPG.js +1 -0
  194. package/dist/assets/perl-QB_H1sT2.js +1 -0
  195. package/dist/assets/{pie-VRWISCQL-C6EIS9iq.js → pie-VRWISCQL-QeXFV_RN.js} +1 -1
  196. package/dist/assets/{pieDiagram-ADFJNKIX-C1fBf15W.js → pieDiagram-ADFJNKIX-CHFQxGML.js} +1 -1
  197. package/dist/assets/pig-BX8GE3n0.js +1 -0
  198. package/dist/assets/powershell-CgQaEAdZ.js +1 -0
  199. package/dist/assets/{precisionRound-CCOoIlcP.js → precisionRound-NX56vp6K.js} +1 -1
  200. package/dist/assets/{process-output-BxPWHcIi.js → process-output-D_zUglHE.js} +1 -1
  201. package/dist/assets/properties-obn8TWyy.js +1 -0
  202. package/dist/assets/protobuf-C-zxlF8D.js +1 -0
  203. package/dist/assets/pug--0L5ulw9.js +1 -0
  204. package/dist/assets/{pug-v81J9ytZ.js → pug-C9pOca2F.js} +1 -1
  205. package/dist/assets/puppet-05PW0eq8.js +1 -0
  206. package/dist/assets/python-DTi_lJAD.js +1 -0
  207. package/dist/assets/q-DDewC_-L.js +1 -0
  208. package/dist/assets/{quadrantDiagram-AYHSOK5B-RVooN-fX.js → quadrantDiagram-AYHSOK5B-BWfhvbIs.js} +1 -1
  209. package/dist/assets/r-BP2yA_lV.js +1 -0
  210. package/dist/assets/{radar-ZZBFDIW7-IOV25h32.js → radar-ZZBFDIW7-CPk9iUBG.js} +1 -1
  211. package/dist/assets/{react-vega-BKRQSy0g.js → react-vega-BbTMwpa-.js} +1 -1
  212. package/dist/assets/react-vega-_CJceHW7.js +1 -0
  213. package/dist/assets/{readonly-python-code-D95oshJa.js → readonly-python-code-BQo0UqCJ.js} +1 -1
  214. package/dist/assets/{renderShortcut-BYvKm38e.js → renderShortcut-DG5sXSxr.js} +1 -1
  215. package/dist/assets/{requirementDiagram-UZGBJVZJ-DtqOYJpH.js → requirementDiagram-UZGBJVZJ-DdZsVZPu.js} +1 -1
  216. package/dist/assets/rpm-BTpPEnAJ.js +1 -0
  217. package/dist/assets/ruby-_km6sWpH.js +1 -0
  218. package/dist/assets/{run-page-B7CASued.js → run-page-BN0QZ7-c.js} +1 -1
  219. package/dist/assets/{runs-Bhy0tbWr.js → runs-CtxlyzdZ.js} +1 -1
  220. package/dist/assets/{sankeyDiagram-TZEHDZUN-DmcooLA8.js → sankeyDiagram-TZEHDZUN-BiKMK7q3.js} +1 -1
  221. package/dist/assets/sas-BV0z5M7P.js +1 -0
  222. package/dist/assets/scheme-AMw7OHvW.js +1 -0
  223. package/dist/assets/{scratchpad-panel-BIVRgYOU.js → scratchpad-panel-BpM3Nxzw.js} +1 -1
  224. package/dist/assets/{secrets-panel-C24hZEiO.js → secrets-panel-BVJ1G2-2.js} +1 -1
  225. package/dist/assets/{sequenceDiagram-WL72ISMW-S2qeLb7J.js → sequenceDiagram-WL72ISMW-B1m5IqrQ.js} +1 -1
  226. package/dist/assets/session-panel-CUtOop5w.js +1 -0
  227. package/dist/assets/shell-BepJCs0S.js +1 -0
  228. package/dist/assets/sieve-YvKFjNqY.js +1 -0
  229. package/dist/assets/{slides-component-Brm_TS4x.js → slides-component-Bg8T1XwW.js} +1 -1
  230. package/dist/assets/smalltalk-e8puLVxg.js +1 -0
  231. package/dist/assets/{snippets-panel-D1JAeJj1.js → snippets-panel-CND2QIaH.js} +1 -1
  232. package/dist/assets/sparql-IwwbUejm.js +1 -0
  233. package/dist/assets/{src-Bp_72rVO.js → src-lcGySDV2.js} +1 -1
  234. package/dist/assets/{state-Cz_wrzCz.js → state-C-thupmq.js} +1 -1
  235. package/dist/assets/{state-BagvlaEz.js → state-Cm3zkTs2.js} +1 -1
  236. package/dist/assets/{state-DMQXxemS.js → state-Dxl7WjW3.js} +1 -1
  237. package/dist/assets/{stateDiagram-FKZM4ZOC-uuQ60pIl.js → stateDiagram-FKZM4ZOC-B_fZr0Jz.js} +1 -1
  238. package/dist/assets/stateDiagram-v2-4FDKWEC3-CnaooVt9.js +1 -0
  239. package/dist/assets/{step-BkfKj3CL.js → step-B5y1YzZ4.js} +1 -1
  240. package/dist/assets/stylus-C5qHDsoA.js +1 -0
  241. package/dist/assets/swift-CD6FyF1F.js +1 -0
  242. package/dist/assets/{switch-Bwpd2AFq.js → switch-C2PmTLIx.js} +1 -1
  243. package/dist/assets/tcl-189LoKbJ.js +1 -0
  244. package/dist/assets/{terminal-Gl8Fi44y.js → terminal-8keBq1HC.js} +1 -1
  245. package/dist/assets/textile-dSHgbtG8.js +1 -0
  246. package/dist/assets/{time-Bw8f15NM.js → time-D8_flTb-.js} +1 -1
  247. package/dist/assets/{timeline-definition-IT6M3QCI-TKWeDnSQ.js → timeline-definition-IT6M3QCI-CiMZB-_n.js} +1 -1
  248. package/dist/assets/toml-CWUvzxNs.js +1 -0
  249. package/dist/assets/{tracing-DwAC7DWN.js → tracing-Cab2_N64.js} +1 -1
  250. package/dist/assets/{tracing-panel-D1iNgclL.js → tracing-panel-h6SS64Fd.js} +2 -2
  251. package/dist/assets/{tree-WVrWjdwv.js → tree-Duf22i7P.js} +1 -1
  252. package/dist/assets/{treemap-GDKQZRPO-BUa0eLeZ.js → treemap-GDKQZRPO-BqT6xXWn.js} +1 -1
  253. package/dist/assets/troff-CkFGw7sb.js +1 -0
  254. package/dist/assets/ttcn-B71Rl_FP.js +1 -0
  255. package/dist/assets/ttcn-cfg-BsJCQ8Pc.js +1 -0
  256. package/dist/assets/turtle-AJRCjN1N.js +1 -0
  257. package/dist/assets/{useAddCell-D6Q7JziZ.js → useAddCell-fzJF_CdR.js} +1 -1
  258. package/dist/assets/{useBoolean-CrltYVhE.js → useBoolean-DJdaVVhu.js} +1 -1
  259. package/dist/assets/useCellActionButton-C-mIavMW.js +1 -0
  260. package/dist/assets/{useDateFormatter-DOoVZUts.js → useDateFormatter-CYAwsqZA.js} +1 -1
  261. package/dist/assets/{useDeleteCell-d8veThW7.js → useDeleteCell-lfqkVcrN.js} +1 -1
  262. package/dist/assets/{useDependencyPanelTab-B3iIj3MO.js → useDependencyPanelTab-Nq81zNNI.js} +1 -1
  263. package/dist/assets/{useInstallPackage-CQEr5429.js → useInstallPackage-BVUUWUU8.js} +1 -1
  264. package/dist/assets/useNotebookActions-BAw99pt_.js +1 -0
  265. package/dist/assets/{useNumberFormatter-BXZcbTzH.js → useNumberFormatter-D5CeG3Kn.js} +1 -1
  266. package/dist/assets/{usePress-alQ5Crny.js → usePress-CHKiC-9E.js} +1 -1
  267. package/dist/assets/useRunCells-6ne-1pJW.js +1 -0
  268. package/dist/assets/useSplitCell-D8a8QoYd.js +1 -0
  269. package/dist/assets/{utils-C24l2A1T.js → utils-DnNnBV1N.js} +1 -1
  270. package/dist/assets/vb-gPFTxjZr.js +1 -0
  271. package/dist/assets/vbscript-CMzdZB2G.js +1 -0
  272. package/dist/assets/{vega-component-9Pf4pVZL.js → vega-component-DnJzUfQO.js} +1 -1
  273. package/dist/assets/{vega-loader.browser-BJ9oKrvH.js → vega-loader.browser-xq8miGHn.js} +1 -1
  274. package/dist/assets/velocity-DBHzqIXP.js +1 -0
  275. package/dist/assets/verilog-CrrLE4DH.js +1 -0
  276. package/dist/assets/vhdl-CcYUxt_-.js +1 -0
  277. package/dist/assets/webidl-Cx4I26Tn.js +1 -0
  278. package/dist/assets/{write-secret-modal-BFCsWMoW.js → write-secret-modal-5AT0ZoJv.js} +1 -1
  279. package/dist/assets/xquery-Cu7k_x_s.js +1 -0
  280. package/dist/assets/{xychartDiagram-PRI3JC2R-CIp-yeSa.js → xychartDiagram-PRI3JC2R-B3F_v5OL.js} +1 -1
  281. package/dist/assets/yacas-DEQ-2nrM.js +1 -0
  282. package/dist/assets/z80-D9sXBSXs.js +1 -0
  283. package/dist/index.html +90 -91
  284. package/package.json +1 -1
  285. package/src/__mocks__/requests.ts +1 -0
  286. package/src/core/cells/__tests__/apply-transaction.test.ts +279 -0
  287. package/src/core/cells/__tests__/cells.test.ts +6 -0
  288. package/src/core/cells/__tests__/document-changes.test.ts +575 -0
  289. package/src/core/cells/__tests__/document-roundtrip.test.ts +376 -0
  290. package/src/core/cells/cells.ts +28 -3
  291. package/src/core/cells/document-changes.ts +644 -0
  292. package/src/core/islands/bridge.ts +1 -0
  293. package/src/core/islands/main.ts +2 -0
  294. package/src/core/network/requests-lazy.ts +1 -0
  295. package/src/core/network/requests-network.ts +9 -0
  296. package/src/core/network/requests-static.ts +1 -0
  297. package/src/core/network/requests-toasting.tsx +1 -0
  298. package/src/core/network/types.ts +5 -0
  299. package/src/core/wasm/bridge.ts +1 -0
  300. package/src/core/websocket/useMarimoKernelConnection.tsx +19 -1
  301. package/src/css/app/fonts.css +6 -6
  302. package/src/fonts/Fira_Mono/FiraMono-Bold.woff2 +0 -0
  303. package/src/fonts/Fira_Mono/FiraMono-Medium.woff2 +0 -0
  304. package/src/fonts/Fira_Mono/FiraMono-Regular.woff2 +0 -0
  305. package/src/fonts/Lora/Lora-VariableFont_wght.woff2 +0 -0
  306. package/src/fonts/PT_Sans/PTSans-Bold.woff2 +0 -0
  307. package/src/fonts/PT_Sans/PTSans-Regular.woff2 +0 -0
  308. package/src/utils/createReducer.ts +26 -11
  309. package/dist/assets/CellStatus-DX8MnBMk.js +0 -1
  310. package/dist/assets/FiraMono-Bold-CLVRCuM9.ttf +0 -0
  311. package/dist/assets/FiraMono-Medium-DU3aDxX5.ttf +0 -0
  312. package/dist/assets/FiraMono-Regular-BTCkDNvf.ttf +0 -0
  313. package/dist/assets/LazyAnyLanguageCodeMirror-CcCHIX38.js +0 -2
  314. package/dist/assets/Lora-VariableFont_wght-B2ootaw-.ttf +0 -0
  315. package/dist/assets/PTSans-Bold-D9fedIX3.ttf +0 -0
  316. package/dist/assets/PTSans-Regular-CxL0S8W7.ttf +0 -0
  317. package/dist/assets/RenderHTML-C7XM39M2.js +0 -1
  318. package/dist/assets/ai-model-dropdown-CiJpv5wN.js +0 -5
  319. package/dist/assets/apl-CWQZjEHB.js +0 -1
  320. package/dist/assets/asciiarmor-YkqeOS7J.js +0 -1
  321. package/dist/assets/asn1-CXKIzj3m.js +0 -1
  322. package/dist/assets/brainfuck-BATyDEza.js +0 -1
  323. package/dist/assets/cells-39RE4UzS.js +0 -230
  324. package/dist/assets/channel-D1wPYhc9.js +0 -1
  325. package/dist/assets/chunk-55IACEB6-D0TKhzEY.js +0 -1
  326. package/dist/assets/classDiagram-2ON5EDUG-BDIQSKYv.js +0 -1
  327. package/dist/assets/classDiagram-v2-WZHVMYZB-Cdh4cVOB.js +0 -1
  328. package/dist/assets/clojure-DSdxtK57.js +0 -1
  329. package/dist/assets/cmake-b6COJhkL.js +0 -1
  330. package/dist/assets/cobol-0au-d4Af.js +0 -1
  331. package/dist/assets/coffeescript-CO6miDRN.js +0 -1
  332. package/dist/assets/commonlisp-ViswrHum.js +0 -1
  333. package/dist/assets/context-aware-panel-DC0Te9Hj.js +0 -3
  334. package/dist/assets/createReducer-Drh7NmIR.js +0 -1
  335. package/dist/assets/crystal-BcOI1XlU.js +0 -1
  336. package/dist/assets/cypher-BKbuDk70.js +0 -1
  337. package/dist/assets/d-4fbeW9Dj.js +0 -1
  338. package/dist/assets/diff-CV59_hp-.js +0 -1
  339. package/dist/assets/dist-BZeePkbd.js +0 -1
  340. package/dist/assets/dist-Br4KMeY4.js +0 -1
  341. package/dist/assets/dist-Cp60fE5Z.js +0 -1
  342. package/dist/assets/dist-DVbTmqCA.js +0 -1
  343. package/dist/assets/documentation-panel-D5d_BbHV.js +0 -1
  344. package/dist/assets/dtd-BAjS2EMD.js +0 -1
  345. package/dist/assets/dylan-CjAEbzAl.js +0 -1
  346. package/dist/assets/ecl-DegMF2Uo.js +0 -1
  347. package/dist/assets/eiffel-D_UXtJqE.js +0 -1
  348. package/dist/assets/elm-CV-6VdWh.js +0 -1
  349. package/dist/assets/erlang-C3Vp1oq_.js +0 -1
  350. package/dist/assets/factor-CBMQHXUW.js +0 -1
  351. package/dist/assets/floating-outline-DmugATcB.js +0 -1
  352. package/dist/assets/forth-C_TcrpRK.js +0 -1
  353. package/dist/assets/fortran-DOs2FQj2.js +0 -1
  354. package/dist/assets/gas-Cg-F3pmb.js +0 -1
  355. package/dist/assets/gherkin-CaXqq9kA.js +0 -1
  356. package/dist/assets/groovy-DmxumoMi.js +0 -1
  357. package/dist/assets/haskell-BZ-cKqgz.js +0 -1
  358. package/dist/assets/haxe-x-4elm0t.js +0 -1
  359. package/dist/assets/idl-DNkkzHKH.js +0 -1
  360. package/dist/assets/infoDiagram-HS3SLOUP-GG5r0Y5G.js +0 -2
  361. package/dist/assets/javascript-B0uQ9oZ_.js +0 -1
  362. package/dist/assets/julia-DBflXO9b.js +0 -1
  363. package/dist/assets/katex-YDobqqVd.js +0 -1
  364. package/dist/assets/kiosk-mode-CyTnrzwK.js +0 -1
  365. package/dist/assets/livescript-DRwwdQDY.js +0 -1
  366. package/dist/assets/lua-D_CRYz1e.js +0 -1
  367. package/dist/assets/mathematica-D28k0VAB.js +0 -1
  368. package/dist/assets/mbox-B74-q1nN.js +0 -1
  369. package/dist/assets/mermaid-4DMBBIKO-g7AL4SLJ.js +0 -1
  370. package/dist/assets/mirc-CW8yiVay.js +0 -1
  371. package/dist/assets/mllike-BwZpH7CZ.js +0 -1
  372. package/dist/assets/mode-D-iRbN9x.js +0 -1
  373. package/dist/assets/modelica-AhRO-ii8.js +0 -1
  374. package/dist/assets/mscgen-CJZUmlSk.js +0 -1
  375. package/dist/assets/mumps-BTPWDvZ1.js +0 -1
  376. package/dist/assets/name-cell-input-Dyb0ZO4X.js +0 -1
  377. package/dist/assets/nsis-CuVPiHG5.js +0 -1
  378. package/dist/assets/ntriples-eNmSbiOL.js +0 -1
  379. package/dist/assets/octave-BboqqX2Z.js +0 -1
  380. package/dist/assets/oz-eUT9rD_n.js +0 -1
  381. package/dist/assets/panels-D0aw6jdc.js +0 -1
  382. package/dist/assets/pascal-Bl9h-Ruv.js +0 -1
  383. package/dist/assets/perl-B1GdYx3j.js +0 -1
  384. package/dist/assets/pig-CoZHWNtw.js +0 -1
  385. package/dist/assets/powershell-B2p71KcT.js +0 -1
  386. package/dist/assets/properties-Cs9aaJGK.js +0 -1
  387. package/dist/assets/protobuf-DFCnQG_o.js +0 -1
  388. package/dist/assets/pug-BShaWOtD.js +0 -1
  389. package/dist/assets/puppet-4yIFv98Z.js +0 -1
  390. package/dist/assets/python-ByMRQ0aE.js +0 -1
  391. package/dist/assets/q-C7EgGttK.js +0 -1
  392. package/dist/assets/r-DpLLx5HE.js +0 -1
  393. package/dist/assets/react-vega-DXESF7qN.js +0 -1
  394. package/dist/assets/rpm-DlCq0FVA.js +0 -1
  395. package/dist/assets/ruby-BGmSEBWH.js +0 -1
  396. package/dist/assets/sas-CFcv5xFe.js +0 -1
  397. package/dist/assets/scheme-BgRfkNY3.js +0 -1
  398. package/dist/assets/session-panel-O68V-tv4.js +0 -1
  399. package/dist/assets/shell-CKQz0rkv.js +0 -1
  400. package/dist/assets/sieve-D0P6XnTD.js +0 -1
  401. package/dist/assets/smalltalk-Dcg9QwVr.js +0 -1
  402. package/dist/assets/sparql-f01xs6VH.js +0 -1
  403. package/dist/assets/stateDiagram-v2-4FDKWEC3-D-GWhQTG.js +0 -1
  404. package/dist/assets/stylus-BjzHGGgo.js +0 -1
  405. package/dist/assets/swift-DOptU29u.js +0 -1
  406. package/dist/assets/tcl-vC8etUeQ.js +0 -1
  407. package/dist/assets/textile-BfLqcKXP.js +0 -1
  408. package/dist/assets/toml-rX0_Isgp.js +0 -1
  409. package/dist/assets/troff-C1lPb0WN.js +0 -1
  410. package/dist/assets/ttcn-D5dxusfs.js +0 -1
  411. package/dist/assets/ttcn-cfg-Dj2ybct-.js +0 -1
  412. package/dist/assets/turtle-BiTItqZm.js +0 -1
  413. package/dist/assets/useCellActionButton-B2G9OaX9.js +0 -1
  414. package/dist/assets/useNotebookActions-CdAfjuOC.js +0 -1
  415. package/dist/assets/useRunCells-Dhl8ZTGh.js +0 -1
  416. package/dist/assets/useSplitCell-BSnFazbH.js +0 -1
  417. package/dist/assets/vb-roE2hgal.js +0 -1
  418. package/dist/assets/vbscript-2s97682t.js +0 -1
  419. package/dist/assets/velocity-D0YPg3VZ.js +0 -1
  420. package/dist/assets/verilog-Btszgjcd.js +0 -1
  421. package/dist/assets/vhdl-enS91NZh.js +0 -1
  422. package/dist/assets/webidl-DQMyFjhm.js +0 -1
  423. package/dist/assets/xquery-D5Jh9c_Z.js +0 -1
  424. package/dist/assets/yacas-CTzSIaAf.js +0 -1
  425. package/dist/assets/z80-Dt0hdUwP.js +0 -1
  426. package/src/fonts/Fira_Mono/FiraMono-Bold.ttf +0 -0
  427. package/src/fonts/Fira_Mono/FiraMono-Medium.ttf +0 -0
  428. package/src/fonts/Fira_Mono/FiraMono-Regular.ttf +0 -0
  429. package/src/fonts/Lora/Lora-Italic-VariableFont_wght.ttf +0 -0
  430. package/src/fonts/Lora/Lora-VariableFont_wght.ttf +0 -0
  431. package/src/fonts/Lora/static/Lora-Bold.ttf +0 -0
  432. package/src/fonts/Lora/static/Lora-BoldItalic.ttf +0 -0
  433. package/src/fonts/Lora/static/Lora-Italic.ttf +0 -0
  434. package/src/fonts/Lora/static/Lora-Medium.ttf +0 -0
  435. package/src/fonts/Lora/static/Lora-MediumItalic.ttf +0 -0
  436. package/src/fonts/Lora/static/Lora-Regular.ttf +0 -0
  437. package/src/fonts/Lora/static/Lora-SemiBold.ttf +0 -0
  438. package/src/fonts/Lora/static/Lora-SemiBoldItalic.ttf +0 -0
  439. package/src/fonts/PT_Sans/PTSans-Bold.ttf +0 -0
  440. package/src/fonts/PT_Sans/PTSans-BoldItalic.ttf +0 -0
  441. package/src/fonts/PT_Sans/PTSans-Italic.ttf +0 -0
  442. package/src/fonts/PT_Sans/PTSans-Regular.ttf +0 -0
  443. /package/dist/assets/{ImageComparisonComponent-DvDPDgw3.js → ImageComparisonComponent-Cw3aoN3z.js} +0 -0
  444. /package/dist/assets/{Inputs-D5kI9GwB.js → Inputs-CsxDtqlI.js} +0 -0
  445. /package/dist/assets/{Plot-DQQQ-fLA.js → Plot-eiPFedH2.js} +0 -0
  446. /package/dist/assets/{SSRProvider-CwqN9FWV.js → SSRProvider-BkypbMcb.js} +0 -0
  447. /package/dist/assets/{alert-OQZHipbB.js → alert-NjVFesQm.js} +0 -0
  448. /package/dist/assets/{alert-dialog-ebk_-wsU.js → alert-dialog-Baw3WWPa.js} +0 -0
  449. /package/dist/assets/{apl-CexVE068.js → apl-D8X_E6Wh.js} +0 -0
  450. /package/dist/assets/{array-psg969PF.js → array-CEZNxKGf.js} +0 -0
  451. /package/dist/assets/{asciiarmor-DzdXFxI-.js → asciiarmor-DeecVuRW.js} +0 -0
  452. /package/dist/assets/{asn1-lKNP6w4p.js → asn1-C9WWFN1p.js} +0 -0
  453. /package/dist/assets/{asterisk-Bjb62jej.js → asterisk-Dykb_Qas.js} +0 -0
  454. /package/dist/assets/{blob-DgooIGjS.js → blob-C3EfaMOb.js} +0 -0
  455. /package/dist/assets/{brainfuck-pTL_9bJ7.js → brainfuck-Cl6gOsOa.js} +0 -0
  456. /package/dist/assets/{bundle.esm-idScn0w0.js → bundle.esm-_LzfhNmX.js} +0 -0
  457. /package/dist/assets/{card-C-c-4jyF.js → card-OaQlvpSl.js} +0 -0
  458. /package/dist/assets/{chunk-4F5CHEZ2-BGeTOmrq.js → chunk-4F5CHEZ2-Bghwh3ep.js} +0 -0
  459. /package/dist/assets/{chunk-B2363JML-Cmh9TPpj.js → chunk-B2363JML-B3wWt_gr.js} +0 -0
  460. /package/dist/assets/{chunk-DR5Q36YT-SM9ZwAOv.js → chunk-DR5Q36YT-DOSR70sR.js} +0 -0
  461. /package/dist/assets/{chunk-FRFDVMJY-CUDE-MUX.js → chunk-FRFDVMJY-D9fs6vlF.js} +0 -0
  462. /package/dist/assets/{chunk-PL6DKKU2-DMqBvHTF.js → chunk-PL6DKKU2-CdtxnIBd.js} +0 -0
  463. /package/dist/assets/{chunk-SJTYNZTY-C9cwtT3h.js → chunk-SJTYNZTY-CMwkFD7U.js} +0 -0
  464. /package/dist/assets/{chunk-TQ3KTPDO-CUyT9lNN.js → chunk-TQ3KTPDO-0Us1NWXT.js} +0 -0
  465. /package/dist/assets/{chunk-UMXZTB3W-Bt-_br31.js → chunk-UMXZTB3W-zYd--p4q.js} +0 -0
  466. /package/dist/assets/{clear-button-DrIF5o__.js → clear-button-CsNT-Tql.js} +0 -0
  467. /package/dist/assets/{click-outside-container-CagwJLiG.js → click-outside-container-gHk0jCel.js} +0 -0
  468. /package/dist/assets/{clike-BCxd7pZ9.js → clike-BuY5U60j.js} +0 -0
  469. /package/dist/assets/{clojure-CPAS-74L.js → clojure-C8jGLyPy.js} +0 -0
  470. /package/dist/assets/{cmake-DMONEHtp.js → cmake-DcjYbevD.js} +0 -0
  471. /package/dist/assets/{cobol-0rQGzjf0.js → cobol-C-nFr8y5.js} +0 -0
  472. /package/dist/assets/{coffeescript-BHNUw4aR.js → coffeescript-VbbBP-Cm.js} +0 -0
  473. /package/dist/assets/{colors-WO6MvCS3.js → colors-Dm6L93c7.js} +0 -0
  474. /package/dist/assets/{common-keywords-D_14jCw0.js → common-keywords-sop6vXJR.js} +0 -0
  475. /package/dist/assets/{commonlisp-Cjiyl45-.js → commonlisp-mLMub2u_.js} +0 -0
  476. /package/dist/assets/{copy-KjcPgPw9.js → copy-CcUDATFX.js} +0 -0
  477. /package/dist/assets/{crystal-CUMDisY2.js → crystal-Buc8hu84.js} +0 -0
  478. /package/dist/assets/{css-B6NFOUor.js → css-DtNg2SPz.js} +0 -0
  479. /package/dist/assets/{cypher-DcWJtLBw.js → cypher-wyT0Afvt.js} +0 -0
  480. /package/dist/assets/{cytoscape.esm-DuXIsNbY.js → cytoscape.esm-CuwfIk-V.js} +0 -0
  481. /package/dist/assets/{d-CpNp8oDv.js → d-KzUzEnwn.js} +0 -0
  482. /package/dist/assets/{defaultLocale-CuYNS33t.js → defaultLocale-DPBdGRrH.js} +0 -0
  483. /package/dist/assets/{defaultLocale-CGfP-Ye3.js → defaultLocale-Lfi0pexn.js} +0 -0
  484. /package/dist/assets/{diff-BCFJsGHX.js → diff-zZX_BZ60.js} +0 -0
  485. /package/dist/assets/{dist-D9Vhptds.js → dist-2yYHES7B.js} +0 -0
  486. /package/dist/assets/{dist-CVEvQ1Ex.js → dist-4adVoHKM.js} +0 -0
  487. /package/dist/assets/{dist-ASlWkGgG.js → dist-8B3AWTCv.js} +0 -0
  488. /package/dist/assets/{dist-sVuk6mkQ.js → dist-AkjWZMeV.js} +0 -0
  489. /package/dist/assets/{dist-BhNN2V5a.js → dist-BKm9wJTB.js} +0 -0
  490. /package/dist/assets/{dist-BR9zyVPH.js → dist-BacKBlEY.js} +0 -0
  491. /package/dist/assets/{dist-OxxI-HeS.js → dist-Bi4JuBeU.js} +0 -0
  492. /package/dist/assets/{dist-COnmrAVZ.js → dist-BjCIGEdQ.js} +0 -0
  493. /package/dist/assets/{dist-Dxov2ltb.js → dist-C8sUhiRj.js} +0 -0
  494. /package/dist/assets/{dist-DxrbvUBv.js → dist-CKX5rwHQ.js} +0 -0
  495. /package/dist/assets/{dist-DkaderFA.js → dist-Cd9M8gLO.js} +0 -0
  496. /package/dist/assets/{dist-DD9ZJMK5.js → dist-CjkJ83NO.js} +0 -0
  497. /package/dist/assets/{dist-DBPtheKQ.js → dist-CybQbPjb.js} +0 -0
  498. /package/dist/assets/{dist-CYs1oP7g.js → dist-DVCqT940.js} +0 -0
  499. /package/dist/assets/{dist-feWVQ4dq.js → dist-DXjL2dGI.js} +0 -0
  500. /package/dist/assets/{dist-DXyIIB32.js → dist-DgEPWvX2.js} +0 -0
  501. /package/dist/assets/{dist-CgC048vN.js → dist-DzjL8iiW.js} +0 -0
  502. /package/dist/assets/{dist-DReDpc2z.js → dist-rrswzGsS.js} +0 -0
  503. /package/dist/assets/{dtd-D7nO7isU.js → dtd-DrorhQz9.js} +0 -0
  504. /package/dist/assets/{duckdb-keywords-CSySeB8R.js → duckdb-keywords-CEWQs1NJ.js} +0 -0
  505. /package/dist/assets/{dylan-qEhlQv4l.js → dylan-B4r5umK9.js} +0 -0
  506. /package/dist/assets/{ebnf-KJaLpQez.js → ebnf-BoS8ZFT2.js} +0 -0
  507. /package/dist/assets/{ecl-cXHEjabG.js → ecl-Chc_DmTY.js} +0 -0
  508. /package/dist/assets/{eiffel-CUTEIYa-.js → eiffel-CIYqf7wj.js} +0 -0
  509. /package/dist/assets/{elm-DOfGHeKn.js → elm-Baq4wI8e.js} +0 -0
  510. /package/dist/assets/{emotion-is-prop-valid.esm-D7FeWASw.js → emotion-is-prop-valid.esm-lG8j6oqk.js} +0 -0
  511. /package/dist/assets/{empty-state-B_US46Us.js → empty-state-BBWqzODS.js} +0 -0
  512. /package/dist/assets/{erlang-B5R7Byby.js → erlang-xHcM8uVi.js} +0 -0
  513. /package/dist/assets/{errors-0IrrdfSG.js → errors-iwK4b4VF.js} +0 -0
  514. /package/dist/assets/{esm-CX-gNDKf.js → esm-DM72gy9Q.js} +0 -0
  515. /package/dist/assets/{extends-aq1t6BkR.js → extends-B9D0JO9U.js} +0 -0
  516. /package/dist/assets/{fcl-Cf241iHu.js → fcl-JwfU5Rr4.js} +0 -0
  517. /package/dist/assets/{forth-BjV8SV3p.js → forth-j6RT-cy6.js} +0 -0
  518. /package/dist/assets/{fortran-CvNblcug.js → fortran-Z7A59UbQ.js} +0 -0
  519. /package/dist/assets/{gas-D1YrZZUY.js → gas-5kgpLqGg.js} +0 -0
  520. /package/dist/assets/{gherkin-CAUl7roi.js → gherkin-KECBIOSQ.js} +0 -0
  521. /package/dist/assets/{groovy-CnmCDhLm.js → groovy-CocWwvHR.js} +0 -0
  522. /package/dist/assets/{haskell-qdBb4h_7.js → haskell-BVRegKDO.js} +0 -0
  523. /package/dist/assets/{haxe-MQhLSFhI.js → haxe-U6x7KK2i.js} +0 -0
  524. /package/dist/assets/{http-_roNBajA.js → http-BSf7msSy.js} +0 -0
  525. /package/dist/assets/{icons-CrUXojcA.js → icons-D4U3iRHj.js} +0 -0
  526. /package/dist/assets/{idl-CcZzcWCI.js → idl-Byd3Qhyl.js} +0 -0
  527. /package/dist/assets/{init-XMA8CWhh.js → init-BpLL1fe9.js} +0 -0
  528. /package/dist/assets/{javascript-hE4QNtKl.js → javascript-D0a_TZzL.js} +0 -0
  529. /package/dist/assets/{julia-BjrvvLkp.js → julia-CaxV2pJw.js} +0 -0
  530. /package/dist/assets/{katex-rvFxOCU-.js → katex-FSdXOW5Y.js} +0 -0
  531. /package/dist/assets/{kbd-DvKpAc6K.js → kbd-zZCuQN_1.js} +0 -0
  532. /package/dist/assets/{links-DzgPOFJ-.js → links-BQHNKE3J.js} +0 -0
  533. /package/dist/assets/{links-CptYD1FP.js → links-Bfp-iNRX.js} +0 -0
  534. /package/dist/assets/{livescript-B01pNEzu.js → livescript-CfGHFsX-.js} +0 -0
  535. /package/dist/assets/{loro_wasm_bg-CcIcmNa3.js → loro_wasm_bg-Bj93RhA2.js} +0 -0
  536. /package/dist/assets/{lua-BwfRgSM6.js → lua-DwgMJ83W.js} +0 -0
  537. /package/dist/assets/{marimo-icons-C_YDiXeg.js → marimo-icons-Cb4NA8Cp.js} +0 -0
  538. /package/dist/assets/{math-CeGhAAgQ.js → math-CpvW-dlE.js} +0 -0
  539. /package/dist/assets/{mathematica-DLi5eijp.js → mathematica-CUcY8E3Z.js} +0 -0
  540. /package/dist/assets/{mbox-QweTYWJQ.js → mbox-QWIxg89f.js} +0 -0
  541. /package/dist/assets/{mirc-1J5TZ8Tf.js → mirc-PcCLOR2R.js} +0 -0
  542. /package/dist/assets/{mllike-DRzCrpbj.js → mllike-JiC27gOy.js} +0 -0
  543. /package/dist/assets/{modelica-GZKavTLw.js → modelica-BcfhGWp8.js} +0 -0
  544. /package/dist/assets/{mscgen-HMNaCHuy.js → mscgen-C2sdz_zX.js} +0 -0
  545. /package/dist/assets/{multi-icon-DEWnuZs2.js → multi-icon-BIYBHgCy.js} +0 -0
  546. /package/dist/assets/{multi-map-C8RbwBrw.js → multi-map-0vmox9BD.js} +0 -0
  547. /package/dist/assets/{mumps-CzCxfP2m.js → mumps-DTtlu7TY.js} +0 -0
  548. /package/dist/assets/{nginx-Dfd7l9Sj.js → nginx-CNcs7tVC.js} +0 -0
  549. /package/dist/assets/{node-sql-parser-BvUFblwL.js → node-sql-parser-fWuidk6P.js} +0 -0
  550. /package/dist/assets/{ntriples-DT57g_ZF.js → ntriples-CHcftTy8.js} +0 -0
  551. /package/dist/assets/{numbers-Cno6K0UF.js → numbers-Bv8m4sHE.js} +0 -0
  552. /package/dist/assets/{objectWithoutPropertiesLoose-Dxmp_Bd_.js → objectWithoutPropertiesLoose-CboCOq4o.js} +0 -0
  553. /package/dist/assets/{octave-CtuTaUjQ.js → octave-D7F4qXl_.js} +0 -0
  554. /package/dist/assets/{oz-BS8LEqKx.js → oz-VftS117C.js} +0 -0
  555. /package/dist/assets/{panel-context-BN0DQXiK.js → panel-context-CcwYw5Eq.js} +0 -0
  556. /package/dist/assets/{pascal-Db0ZEHQw.js → pascal-CxVKwA9u.js} +0 -0
  557. /package/dist/assets/{path-CkIaQHJO.js → path-DtYs9Dst.js} +0 -0
  558. /package/dist/assets/{perl-DgJKzgyz.js → perl-x4BFnPib.js} +0 -0
  559. /package/dist/assets/{pig-Dk6eYa40.js → pig-Dmhj3J78.js} +0 -0
  560. /package/dist/assets/{popover-Bvoif-Mg.js → popover-BzqPa2Au.js} +0 -0
  561. /package/dist/assets/{powershell-dW0qpS7j.js → powershell-Bg32vFxB.js} +0 -0
  562. /package/dist/assets/{prop-types-DRf51_gT.js → prop-types-C638SUfx.js} +0 -0
  563. /package/dist/assets/{properties-oMha4ix2.js → properties-DQbiKM_q.js} +0 -0
  564. /package/dist/assets/{protobuf-CfWJ4EtB.js → protobuf-Sa3BXDQ1.js} +0 -0
  565. /package/dist/assets/{puppet-O2K_n-UM.js → puppet-CnXWm8bo.js} +0 -0
  566. /package/dist/assets/{python-qMKsSr4L.js → python-B1WBAJzp.js} +0 -0
  567. /package/dist/assets/{q-ewn8d81Q.js → q-BqOVUYF0.js} +0 -0
  568. /package/dist/assets/{r-CqF-AjDv.js → r-BNvjQBjW.js} +0 -0
  569. /package/dist/assets/{range-ClqUI25v.js → range-Dk7lXDev.js} +0 -0
  570. /package/dist/assets/{react-resizable-panels.browser.esm-DDRqG5ui.js → react-resizable-panels.browser.esm-RgA6v8U3.js} +0 -0
  571. /package/dist/assets/{request-registry-XB2EzJHm.js → request-registry-BPNvKw5y.js} +0 -0
  572. /package/dist/assets/{requests-CP6q3-4O.js → requests-xhM8i_W9.js} +0 -0
  573. /package/dist/assets/{rpm-BqLq138P.js → rpm-Cdb8SyEx.js} +0 -0
  574. /package/dist/assets/{ruby-CQfbO3YY.js → ruby-Csu3wroo.js} +0 -0
  575. /package/dist/assets/{sas-BmpgVn6Q.js → sas-NClU0xuj.js} +0 -0
  576. /package/dist/assets/{scheme-rgyDg_wq.js → scheme-Hpx9xPN-.js} +0 -0
  577. /package/dist/assets/{share-NjpZ54PJ.js → share-T-ETw2Yt.js} +0 -0
  578. /package/dist/assets/{shell-Dndk6Ld6.js → shell-Cd99saJE.js} +0 -0
  579. /package/dist/assets/{sieve-bGgktpLX.js → sieve-D0zJ8TZ9.js} +0 -0
  580. /package/dist/assets/{simple-mode-oMMOWqWz.js → simple-mode-DpDBSVll.js} +0 -0
  581. /package/dist/assets/{smalltalk-CU43LrKS.js → smalltalk-BBBJczpn.js} +0 -0
  582. /package/dist/assets/{solr-CJeCgAfj.js → solr-B928KjNx.js} +0 -0
  583. /package/dist/assets/{sparql-BycKC3X4.js → sparql-uAF7_Z2_.js} +0 -0
  584. /package/dist/assets/{spreadsheet-BYYvgLKe.js → spreadsheet-CAG48M_e.js} +0 -0
  585. /package/dist/assets/{sql-B5I6FC3m.js → sql-nk70rjN1.js} +0 -0
  586. /package/dist/assets/{src-CW27-Kjl.js → src-BRLtyMKi.js} +0 -0
  587. /package/dist/assets/{stylus-CePwhvgW.js → stylus-fMZU8VtG.js} +0 -0
  588. /package/dist/assets/{swift-CfgglXjR.js → swift-CkY7kBhf.js} +0 -0
  589. /package/dist/assets/{table-BhH-Mm8O.js → table-CA8eU1EB.js} +0 -0
  590. /package/dist/assets/{tcl-D_gYSBm0.js → tcl-CS15Nqmn.js} +0 -0
  591. /package/dist/assets/{textile-BEvFU9wV.js → textile-BQsumqly.js} +0 -0
  592. /package/dist/assets/{tiddlywiki-hmNzZkq6.js → tiddlywiki-BiHxc-2_.js} +0 -0
  593. /package/dist/assets/{tiki-BL1SzuSx.js → tiki-Cwip62d7.js} +0 -0
  594. /package/dist/assets/{timer-CPT_vXom.js → timer-BEJidwwG.js} +0 -0
  595. /package/dist/assets/{toggle-C_gNjXg8.js → toggle-DjUKacjU.js} +0 -0
  596. /package/dist/assets/{toml-DGJRpV2e.js → toml-CoHiT08x.js} +0 -0
  597. /package/dist/assets/{treemap-Cf5pgJDk.js → treemap-qinQgXo1.js} +0 -0
  598. /package/dist/assets/{troff-CUlohIux.js → troff-CpFvF7Eq.js} +0 -0
  599. /package/dist/assets/{ttcn-nuQ3wCdy.js → ttcn-BjnqPnO0.js} +0 -0
  600. /package/dist/assets/{ttcn-cfg-DCxdE-sj.js → ttcn-cfg-D29EWwwv.js} +0 -0
  601. /package/dist/assets/{turtle-B2N96QpC.js → turtle-mWsfmaJW.js} +0 -0
  602. /package/dist/assets/{types-BfP_kuAY.js → types-Myu7G9iV.js} +0 -0
  603. /package/dist/assets/{useAsyncData-D-4ifFXh.js → useAsyncData-D-z1U8-c.js} +0 -0
  604. /package/dist/assets/{useDebounce-DwTO_rGp.js → useDebounce-Ccai5RO4.js} +0 -0
  605. /package/dist/assets/{useDeepCompareMemoize-yyiB9aJX.js → useDeepCompareMemoize-D1hTncYV.js} +0 -0
  606. /package/dist/assets/{useIframeCapabilities-DTN9kFDq.js → useIframeCapabilities-CouCDnwL.js} +0 -0
  607. /package/dist/assets/{useInterval-BJucVdV-.js → useInterval-BckTGVbf.js} +0 -0
  608. /package/dist/assets/{vb-CBiIL_zx.js → vb-E2EKvwgc.js} +0 -0
  609. /package/dist/assets/{vbscript-B3Y69Iw0.js → vbscript-98sn9Pr4.js} +0 -0
  610. /package/dist/assets/{velocity-B5BPA7FX.js → velocity-DUbAzJtM.js} +0 -0
  611. /package/dist/assets/{verilog-BwmYR8E3.js → verilog-DK7zLFMr.js} +0 -0
  612. /package/dist/assets/{vhdl-VXFnDy2U.js → vhdl-B9Tq3stB.js} +0 -0
  613. /package/dist/assets/{web-vitals-BaMazlva.js → web-vitals-CJ8ovao_.js} +0 -0
  614. /package/dist/assets/{webidl-Bcmf9JWd.js → webidl-C5qiIEir.js} +0 -0
  615. /package/dist/assets/{ws-CBdPISJL.js → ws-D2eS61zr.js} +0 -0
  616. /package/dist/assets/{xquery-8pWKOyFY.js → xquery-CmGczatZ.js} +0 -0
  617. /package/dist/assets/{yacas-BFcwo3Cx.js → yacas-BbepBpsT.js} +0 -0
  618. /package/dist/assets/{z80-t3SBb7Lt.js → z80-C2f-3LU8.js} +0 -0
@@ -6,6 +6,7 @@ import { EditorView } from "@codemirror/view";
6
6
  import { createStore } from "jotai";
7
7
  import {
8
8
  afterAll,
9
+ afterEach,
9
10
  beforeAll,
10
11
  beforeEach,
11
12
  describe,
@@ -29,6 +30,7 @@ import {
29
30
  type NotebookState,
30
31
  notebookAtom,
31
32
  } from "../cells";
33
+ import { exportedForTesting as documentTransactionTestExports } from "../document-changes";
32
34
  import {
33
35
  focusAndScrollCellIntoView,
34
36
  scrollToBottom,
@@ -147,6 +149,10 @@ describe("cell reducer", () => {
147
149
  firstCellId = state.cellIds.inOrderIds[0];
148
150
  });
149
151
 
152
+ afterEach(() => {
153
+ documentTransactionTestExports.cancelPendingChanges();
154
+ });
155
+
150
156
  afterAll(() => {
151
157
  CellId.create = originalCreate;
152
158
  });
@@ -0,0 +1,575 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ /**
4
+ * Tests for toDocumentChanges (action → change mapping) as a pure function.
5
+ *
6
+ * Each test calls the reducer to produce prevState/newState, then calls
7
+ * toDocumentChanges directly — no middleware, no side effects. Basic round-trip
8
+ * correctness is covered by document-roundtrip.test.ts. This file focuses on:
9
+ *
10
+ * - anchorOf edge cases (before vs after, first cell, __end__)
11
+ * - Field name mapping (hide_code → hideCode)
12
+ * - Column structure actions emitting reorder-cells
13
+ * - Actions that should NOT emit changes
14
+ */
15
+
16
+ import { python } from "@codemirror/lang-python";
17
+ import { EditorState } from "@codemirror/state";
18
+ import { EditorView } from "@codemirror/view";
19
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest";
20
+ import { cellId } from "@/__tests__/branded";
21
+ import type { CellHandle } from "@/components/editor/notebook-cell";
22
+ import { adaptiveLanguageConfiguration } from "@/core/codemirror/language/extension";
23
+ import { OverridingHotkeyProvider } from "@/core/hotkeys/hotkeys";
24
+ import { MultiColumn } from "@/utils/id-tree";
25
+ import { exportedForTesting, type NotebookState } from "../cells";
26
+ import { type CellAction, toDocumentChanges } from "../document-changes";
27
+ import { CellId } from "../ids";
28
+
29
+ const { initialNotebookState, reducer } = exportedForTesting;
30
+
31
+ function createEditor(code: string) {
32
+ const state = EditorState.create({
33
+ doc: code,
34
+ extensions: [
35
+ python(),
36
+ adaptiveLanguageConfiguration({
37
+ cellId: cellId("cell1"),
38
+ completionConfig: {
39
+ activate_on_typing: true,
40
+ signature_hint_on_typing: false,
41
+ copilot: false,
42
+ codeium_api_key: null,
43
+ },
44
+ hotkeys: new OverridingHotkeyProvider({}),
45
+ placeholderType: "marimo-import",
46
+ lspConfig: {},
47
+ }),
48
+ ],
49
+ });
50
+ return new EditorView({ state, parent: document.body });
51
+ }
52
+
53
+ /** Dispatch an action through the reducer and auto-create editor handles. */
54
+ function dispatch(
55
+ state: NotebookState,
56
+ action: { type: string; payload: unknown },
57
+ ): NotebookState {
58
+ const next = reducer(state, action);
59
+ for (const [cellIdString, handle] of Object.entries(next.cellHandles)) {
60
+ const cid = cellIdString as CellId;
61
+ if (!handle.current) {
62
+ const view = createEditor(next.cellData[cid].code);
63
+ const h: CellHandle = { editorView: view, editorViewOrNull: view };
64
+ next.cellHandles[cid] = { current: h };
65
+ }
66
+ }
67
+ return next;
68
+ }
69
+
70
+ /** Dispatch an action and return the changes it produces. */
71
+ function resolve(state: NotebookState, action: CellAction) {
72
+ const next = dispatch(state, action);
73
+ const changes = toDocumentChanges(state, next, action);
74
+ return { next, changes };
75
+ }
76
+
77
+ let state: NotebookState;
78
+
79
+ let i = 0;
80
+ const originalCreate = CellId.create.bind(CellId);
81
+
82
+ beforeAll(() => {
83
+ CellId.create = () => cellId(`${i++}`);
84
+ });
85
+
86
+ beforeEach(() => {
87
+ i = 0;
88
+ state = initialNotebookState();
89
+ state.cellIds = MultiColumn.from([]);
90
+ });
91
+
92
+ afterAll(() => {
93
+ CellId.create = originalCreate;
94
+ });
95
+
96
+ function setup(...codes: string[]) {
97
+ for (const code of codes) {
98
+ state = dispatch(state, {
99
+ type: "createNewCell",
100
+ payload: {
101
+ cellId: "__end__",
102
+ before: false,
103
+ code,
104
+ newCellId: CellId.create(),
105
+ },
106
+ });
107
+ }
108
+ }
109
+
110
+ describe("toDocumentChanges", () => {
111
+ describe("anchorOf edge cases", () => {
112
+ it("uses before anchor when new cell is first", () => {
113
+ setup("a");
114
+ const [a] = state.cellIds.inOrderIds;
115
+
116
+ const { changes } = resolve(state, {
117
+ type: "createNewCell",
118
+ payload: {
119
+ cellId: a,
120
+ before: true,
121
+ code: "first",
122
+ newCellId: CellId.create(),
123
+ },
124
+ });
125
+
126
+ expect(changes).toMatchInlineSnapshot(`
127
+ [
128
+ {
129
+ "before": "0",
130
+ "cellId": "1",
131
+ "code": "first",
132
+ "config": {
133
+ "column": null,
134
+ "disabled": false,
135
+ "hide_code": false,
136
+ },
137
+ "name": "_",
138
+ "type": "create-cell",
139
+ },
140
+ ]
141
+ `);
142
+ });
143
+
144
+ it("uses after anchor for __end__ insertion", () => {
145
+ setup("a");
146
+ const { changes } = resolve(state, {
147
+ type: "createNewCell",
148
+ payload: {
149
+ cellId: "__end__",
150
+ before: false,
151
+ code: "last",
152
+ newCellId: CellId.create(),
153
+ },
154
+ });
155
+
156
+ expect(changes).toMatchInlineSnapshot(`
157
+ [
158
+ {
159
+ "after": "0",
160
+ "cellId": "1",
161
+ "code": "last",
162
+ "config": {
163
+ "column": null,
164
+ "disabled": false,
165
+ "hide_code": false,
166
+ },
167
+ "name": "_",
168
+ "type": "create-cell",
169
+ },
170
+ ]
171
+ `);
172
+ });
173
+
174
+ it("uses before when sendToTop moves cell to first position", () => {
175
+ setup("a", "b", "c");
176
+ const [, b] = state.cellIds.inOrderIds;
177
+
178
+ const { changes } = resolve(state, {
179
+ type: "sendToTop",
180
+ payload: { cellId: b },
181
+ });
182
+
183
+ expect(changes).toMatchInlineSnapshot(`
184
+ [
185
+ {
186
+ "before": "0",
187
+ "cellId": "1",
188
+ "type": "move-cell",
189
+ },
190
+ ]
191
+ `);
192
+ });
193
+ });
194
+
195
+ describe("field name mapping", () => {
196
+ it("maps hide_code to hideCode in set-config", () => {
197
+ setup("a");
198
+ const [a] = state.cellIds.inOrderIds;
199
+
200
+ const { changes } = resolve(state, {
201
+ type: "updateCellConfig",
202
+ payload: { cellId: a, config: { hide_code: true } },
203
+ });
204
+
205
+ expect(changes).toMatchInlineSnapshot(`
206
+ [
207
+ {
208
+ "cellId": "0",
209
+ "hideCode": true,
210
+ "type": "set-config",
211
+ },
212
+ ]
213
+ `);
214
+ });
215
+
216
+ it("includes full CellConfig in create-cell", () => {
217
+ setup("a");
218
+
219
+ const { changes } = resolve(state, {
220
+ type: "createNewCell",
221
+ payload: {
222
+ cellId: "__end__",
223
+ before: false,
224
+ code: "hidden",
225
+ newCellId: CellId.create(),
226
+ hideCode: true,
227
+ },
228
+ });
229
+
230
+ expect(changes[0]).toMatchObject({
231
+ type: "create-cell",
232
+ config: { hide_code: true },
233
+ });
234
+ });
235
+ });
236
+
237
+ describe("column structure actions", () => {
238
+ it("dropOverNewColumn emits set-config + reorder-cells", () => {
239
+ setup("a", "b");
240
+ const [, b] = state.cellIds.inOrderIds;
241
+
242
+ const { changes } = resolve(state, {
243
+ type: "dropOverNewColumn",
244
+ payload: { cellId: b },
245
+ });
246
+
247
+ expect(changes).toMatchInlineSnapshot(`
248
+ [
249
+ {
250
+ "cellId": "1",
251
+ "column": 1,
252
+ "type": "set-config",
253
+ },
254
+ {
255
+ "cellIds": [
256
+ "0",
257
+ "1",
258
+ ],
259
+ "type": "reorder-cells",
260
+ },
261
+ ]
262
+ `);
263
+ });
264
+
265
+ it("addColumnBreakpoint emits set-config + reorder-cells", () => {
266
+ setup("a", "b", "c");
267
+ const [, b] = state.cellIds.inOrderIds;
268
+
269
+ const { changes } = resolve(state, {
270
+ type: "addColumnBreakpoint",
271
+ payload: { cellId: b },
272
+ });
273
+
274
+ expect(changes).toMatchInlineSnapshot(`
275
+ [
276
+ {
277
+ "cellId": "1",
278
+ "column": 1,
279
+ "type": "set-config",
280
+ },
281
+ {
282
+ "cellId": "2",
283
+ "column": 1,
284
+ "type": "set-config",
285
+ },
286
+ {
287
+ "cellIds": [
288
+ "0",
289
+ "1",
290
+ "2",
291
+ ],
292
+ "type": "reorder-cells",
293
+ },
294
+ ]
295
+ `);
296
+ });
297
+
298
+ it("mergeAllColumns emits set-config + reorder-cells", () => {
299
+ setup("a", "b", "c");
300
+ const [, b] = state.cellIds.inOrderIds;
301
+ state = dispatch(state, {
302
+ type: "addColumnBreakpoint",
303
+ payload: { cellId: b },
304
+ });
305
+
306
+ const { changes } = resolve(state, {
307
+ type: "mergeAllColumns",
308
+ payload: {},
309
+ });
310
+
311
+ expect(changes).toMatchInlineSnapshot(`
312
+ [
313
+ {
314
+ "cellId": "1",
315
+ "column": 0,
316
+ "type": "set-config",
317
+ },
318
+ {
319
+ "cellId": "2",
320
+ "column": 0,
321
+ "type": "set-config",
322
+ },
323
+ {
324
+ "cellIds": [
325
+ "0",
326
+ "1",
327
+ "2",
328
+ ],
329
+ "type": "reorder-cells",
330
+ },
331
+ ]
332
+ `);
333
+ });
334
+ });
335
+
336
+ describe("cell lifecycle actions", () => {
337
+ it("addColumn emits create-cell + column layout changes", () => {
338
+ setup("a");
339
+ const [a] = state.cellIds.inOrderIds;
340
+ const columnId = state.cellIds.findWithId(a).id;
341
+
342
+ const { changes } = resolve(state, {
343
+ type: "addColumn",
344
+ payload: { columnId },
345
+ });
346
+
347
+ expect(changes).toMatchInlineSnapshot(`
348
+ [
349
+ {
350
+ "after": "0",
351
+ "cellId": "1",
352
+ "code": "",
353
+ "config": {
354
+ "column": null,
355
+ "disabled": false,
356
+ "hide_code": false,
357
+ },
358
+ "name": "_",
359
+ "type": "create-cell",
360
+ },
361
+ {
362
+ "cellId": "1",
363
+ "column": 1,
364
+ "type": "set-config",
365
+ },
366
+ {
367
+ "cellIds": [
368
+ "0",
369
+ "1",
370
+ ],
371
+ "type": "reorder-cells",
372
+ },
373
+ ]
374
+ `);
375
+ });
376
+
377
+ it("undoDeleteCell emits create-cell for restored cell", () => {
378
+ setup("a", "b");
379
+ const [, b] = state.cellIds.inOrderIds;
380
+
381
+ // Delete cell b, then undo
382
+ state = dispatch(state, {
383
+ type: "deleteCell",
384
+ payload: { cellId: b },
385
+ });
386
+
387
+ const { changes } = resolve(state, {
388
+ type: "undoDeleteCell",
389
+ payload: {},
390
+ });
391
+
392
+ // Restored cell should have original code
393
+ expect(changes[0]).toMatchObject({
394
+ type: "create-cell",
395
+ code: "b",
396
+ });
397
+ });
398
+
399
+ it("splitCell emits set-code + create-cell", () => {
400
+ setup("line1\nline2");
401
+ const [a] = state.cellIds.inOrderIds;
402
+
403
+ // Position cursor at end of "line1" (position 5)
404
+ const view = state.cellHandles[a].current!.editorView;
405
+ view.dispatch({ selection: { anchor: 5 } });
406
+
407
+ const { changes } = resolve(state, {
408
+ type: "splitCell",
409
+ payload: { cellId: a },
410
+ });
411
+
412
+ expect(changes).toMatchInlineSnapshot(`
413
+ [
414
+ {
415
+ "cellId": "0",
416
+ "code": "line1",
417
+ "type": "set-code",
418
+ },
419
+ {
420
+ "after": "0",
421
+ "cellId": "1",
422
+ "code": "line2",
423
+ "config": {
424
+ "column": null,
425
+ "disabled": false,
426
+ "hide_code": false,
427
+ },
428
+ "name": "_",
429
+ "type": "create-cell",
430
+ },
431
+ ]
432
+ `);
433
+ });
434
+
435
+ it("undoSplitCell emits set-code + delete-cell", () => {
436
+ setup("line1\nline2");
437
+ const [a] = state.cellIds.inOrderIds;
438
+
439
+ // Split the cell first
440
+ const view = state.cellHandles[a].current!.editorView;
441
+ view.dispatch({ selection: { anchor: 5 } });
442
+ const snapshot = view.state.doc.toString();
443
+ state = dispatch(state, {
444
+ type: "splitCell",
445
+ payload: { cellId: a },
446
+ });
447
+ const [, newCell] = state.cellIds.inOrderIds;
448
+
449
+ // Now undo the split
450
+ const { changes } = resolve(state, {
451
+ type: "undoSplitCell",
452
+ payload: { cellId: a, snapshot },
453
+ });
454
+
455
+ expect(changes).toMatchInlineSnapshot(`
456
+ [
457
+ {
458
+ "cellId": "0",
459
+ "code": "line1
460
+ line2",
461
+ "type": "set-code",
462
+ },
463
+ {
464
+ "cellId": "${newCell}",
465
+ "type": "delete-cell",
466
+ },
467
+ ]
468
+ `);
469
+ });
470
+
471
+ it("moveToNextCell emits create-cell when past last cell", () => {
472
+ setup("a");
473
+ const [a] = state.cellIds.inOrderIds;
474
+
475
+ const { changes } = resolve(state, {
476
+ type: "moveToNextCell",
477
+ payload: { cellId: a, before: false },
478
+ });
479
+
480
+ expect(changes).toMatchInlineSnapshot(`
481
+ [
482
+ {
483
+ "after": "0",
484
+ "cellId": "1",
485
+ "code": "",
486
+ "config": {
487
+ "column": null,
488
+ "disabled": false,
489
+ "hide_code": false,
490
+ },
491
+ "name": "_",
492
+ "type": "create-cell",
493
+ },
494
+ ]
495
+ `);
496
+ });
497
+
498
+ it("moveToNextCell emits nothing when moving within bounds", () => {
499
+ setup("a", "b");
500
+ const [a] = state.cellIds.inOrderIds;
501
+
502
+ const { changes } = resolve(state, {
503
+ type: "moveToNextCell",
504
+ payload: { cellId: a, before: false },
505
+ });
506
+
507
+ expect(changes).toHaveLength(0);
508
+ });
509
+
510
+ it("addSetupCellIfDoesntExist emits create-cell when new", () => {
511
+ setup("a");
512
+
513
+ const { changes } = resolve(state, {
514
+ type: "addSetupCellIfDoesntExist",
515
+ payload: { code: "import marimo as mo" },
516
+ });
517
+
518
+ expect(changes).toMatchInlineSnapshot(`
519
+ [
520
+ {
521
+ "before": "0",
522
+ "cellId": "setup",
523
+ "code": "import marimo as mo",
524
+ "config": {
525
+ "column": null,
526
+ "disabled": false,
527
+ "hide_code": false,
528
+ },
529
+ "name": "setup",
530
+ "type": "create-cell",
531
+ },
532
+ ]
533
+ `);
534
+ });
535
+
536
+ it("addSetupCellIfDoesntExist emits nothing when already exists", () => {
537
+ setup("a");
538
+ // Add setup cell first
539
+ state = dispatch(state, {
540
+ type: "addSetupCellIfDoesntExist",
541
+ payload: { code: "import marimo as mo" },
542
+ });
543
+
544
+ // Try to add again — should just focus
545
+ const { changes } = resolve(state, {
546
+ type: "addSetupCellIfDoesntExist",
547
+ payload: {},
548
+ });
549
+
550
+ expect(changes).toHaveLength(0);
551
+ });
552
+ });
553
+
554
+ describe("actions that should NOT emit changes", () => {
555
+ it("focusCell returns empty", () => {
556
+ setup("a", "b");
557
+ const [a] = state.cellIds.inOrderIds;
558
+ const { changes } = resolve(state, {
559
+ type: "focusCell",
560
+ payload: { cellId: a, where: "after" },
561
+ });
562
+ expect(changes).toHaveLength(0);
563
+ });
564
+
565
+ it("prepareForRun returns empty", () => {
566
+ setup("a");
567
+ const [a] = state.cellIds.inOrderIds;
568
+ const { changes } = resolve(state, {
569
+ type: "prepareForRun",
570
+ payload: { cellId: a },
571
+ });
572
+ expect(changes).toHaveLength(0);
573
+ });
574
+ });
575
+ });