@marimo-team/frontend 0.21.2-dev57 → 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.
- package/dist/assets/CellStatus-C-nDPVVw.js +1 -0
- package/dist/assets/{ConnectedDataExplorerComponent-7yXYooWG.js → ConnectedDataExplorerComponent-B5igOqdA.js} +1 -1
- package/dist/assets/{ImperativeModal-C3CD5-Aq.js → ImperativeModal-C5ZzjCQG.js} +1 -1
- package/dist/assets/{JsonOutput-DqjAyzM8.js → JsonOutput-bhD4i0Fm.js} +8 -8
- package/dist/assets/LazyAnyLanguageCodeMirror-C58z97yX.js +2 -0
- package/dist/assets/{MarimoErrorOutput-Dat_S09q.js → MarimoErrorOutput-BIh0hMl8.js} +5 -5
- package/dist/assets/RenderHTML-CRY6pZVc.js +1 -0
- package/dist/assets/{add-cell-with-ai-y2xroEGf.js → add-cell-with-ai-BvN8AbcB.js} +15 -15
- package/dist/assets/{add-connection-dialog-CaIQ6Jta.js → add-connection-dialog-BvzGJCV7.js} +23 -23
- package/dist/assets/{agent-panel-DziFrEjJ.js → agent-panel-DLrLHhZB.js} +5 -5
- package/dist/assets/ai-model-dropdown-CQDhHQ1r.js +5 -0
- package/dist/assets/{any-language-editor-DZYnKlJB.js → any-language-editor-DwTh8fpE.js} +1 -1
- package/dist/assets/apl-BvMImcFf.js +1 -0
- package/dist/assets/{app-config-button-CpAv9Tiu.js → app-config-button-CnR7XJXP.js} +1 -1
- package/dist/assets/{arc-BrTIAGt4.js → arc-DUSwcTI9.js} +1 -1
- package/dist/assets/{architecture-7HQA4BMR-BewjmwdA.js → architecture-7HQA4BMR-DoF6afh3.js} +1 -1
- package/dist/assets/{architectureDiagram-VXUJARFQ-DKmk99ac.js → architectureDiagram-VXUJARFQ-d3bjsML7.js} +1 -1
- package/dist/assets/asciiarmor-BYYwBbrl.js +1 -0
- package/dist/assets/asn1-Dlt8rkAb.js +1 -0
- package/dist/assets/{azure-Dw5gKmUz.js → azure-DMJRLvDT.js} +1 -1
- package/dist/assets/{blockDiagram-VD42YOAC-TpAhP5OQ.js → blockDiagram-VD42YOAC-CjpBwM9S.js} +1 -1
- package/dist/assets/brainfuck-B1Z5ou__.js +1 -0
- package/dist/assets/{c4Diagram-YG6GDRKO-Dg8hCyKf.js → c4Diagram-YG6GDRKO-BsB04ueE.js} +1 -1
- package/dist/assets/{cache-panel-D0OsHk_D.js → cache-panel-B9gltP7l.js} +1 -1
- package/dist/assets/{cell-editor-RbAVpSFb.js → cell-editor-D5XEomtX.js} +11 -11
- package/dist/assets/{cell-link-CNgO3c-T.js → cell-link-Cp4c28Yf.js} +1 -1
- package/dist/assets/cells-DiVpbkA6.js +230 -0
- package/dist/assets/channel-BjUuxbyU.js +1 -0
- package/dist/assets/{chat-display-BPUVrlA6.js → chat-display-DhUQL9pu.js} +1 -1
- package/dist/assets/{chat-panel-esz5TfF-.js → chat-panel-fxitp0Hy.js} +2 -2
- package/dist/assets/{chunk-4BX2VUAB-DOQhLGwX.js → chunk-4BX2VUAB-DhvNmHH5.js} +1 -1
- package/dist/assets/chunk-55IACEB6-DPm6ES7n.js +1 -0
- package/dist/assets/{chunk-5FQGJX7Z-sGWxL7Ey.js → chunk-5FQGJX7Z-BSe8eGYF.js} +2 -2
- package/dist/assets/{chunk-ABZYJK2D-DXJ7hnjx.js → chunk-ABZYJK2D-Cw3YveaS.js} +3 -3
- package/dist/assets/{chunk-ATLVNIR6-CTEqcLEc.js → chunk-ATLVNIR6-ChKiaY37.js} +1 -1
- package/dist/assets/{chunk-B4BG7PRW-CkAIqtPf.js → chunk-B4BG7PRW-CjzWXMFh.js} +1 -1
- package/dist/assets/{chunk-CVBHYZKI-BmNXddyI.js → chunk-CVBHYZKI-BX0N_ipT.js} +1 -1
- package/dist/assets/{chunk-DI55MBZ5-C4F9vu8o.js → chunk-DI55MBZ5-BLrTiPQ-.js} +1 -1
- package/dist/assets/{chunk-EXTU4WIE-BT0Py-4P.js → chunk-EXTU4WIE-DEQUOsSM.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-BF_CXOnN.js → chunk-FMBD7UC4-BDlH9XLH.js} +1 -1
- package/dist/assets/{chunk-HN2XXSSU-BstCPYtG.js → chunk-HN2XXSSU-ujlBpRMF.js} +1 -1
- package/dist/assets/{chunk-JA3XYJ7Z-CGd7jja_.js → chunk-JA3XYJ7Z-DVg9ra4h.js} +1 -1
- package/dist/assets/{chunk-JZLCHNYA-CqY-RYTj.js → chunk-JZLCHNYA-BTjSP-Yu.js} +1 -1
- package/dist/assets/{chunk-MI3HLSF2-BceZdyTR.js → chunk-MI3HLSF2-D9JXkg6-.js} +1 -1
- package/dist/assets/{chunk-N4CR4FBY-aUDjVzN7.js → chunk-N4CR4FBY-U_urcDYs.js} +2 -2
- package/dist/assets/{chunk-QN33PNHL-DHnCb5-U.js → chunk-QN33PNHL-rFbjvOIx.js} +1 -1
- package/dist/assets/{chunk-QXUST7PY-CRO5kYCE.js → chunk-QXUST7PY-BQj8er3i.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-D3EIvP2i.js → chunk-QZHKN3VN-zZhG5AHT.js} +1 -1
- package/dist/assets/{chunk-S3R3BYOJ-CSHQgcuP.js → chunk-S3R3BYOJ-ZHSbXnZr.js} +1 -1
- package/dist/assets/{chunk-TZMSLE5B-CE7o9asH.js → chunk-TZMSLE5B-BAOCWmWp.js} +1 -1
- package/dist/assets/classDiagram-2ON5EDUG-Dk_A06Wi.js +1 -0
- package/dist/assets/classDiagram-v2-WZHVMYZB-CI0Lejhn.js +1 -0
- package/dist/assets/{clike-C3ewt06X.js → clike-D1aNLn0X.js} +1 -1
- package/dist/assets/clojure-DjNF1_gb.js +1 -0
- package/dist/assets/cmake-BDQMYLKM.js +1 -0
- package/dist/assets/cobol-DuPGAg14.js +1 -0
- package/dist/assets/{code-block-37QAKDTI-DMpe1jNG.js → code-block-37QAKDTI-BU3oxVk6.js} +1 -1
- package/dist/assets/coffeescript-Cpt7RKvC.js +1 -0
- package/dist/assets/{column-preview-BUKHsglA.js → column-preview-CWToI8XM.js} +1 -1
- package/dist/assets/{command-DmzEbs6L.js → command-B9VNhm0p.js} +1 -1
- package/dist/assets/{command-palette-AKdHOsJP.js → command-palette-ur_xyrxX.js} +1 -1
- package/dist/assets/{common-B4yshY-H.js → common-BqZ5L0i8.js} +1 -1
- package/dist/assets/commonlisp-BRjl0xya.js +1 -0
- package/dist/assets/{components-DCqJqyys.js → components-BouDP-tv.js} +1 -1
- package/dist/assets/{components-oKCjx6cN.js → components-CUetByBv.js} +1 -1
- package/dist/assets/{context-CRmPPhx9.js → context-CqNy_uER.js} +1 -1
- package/dist/assets/context-aware-panel-CD_txOWw.js +3 -0
- package/dist/assets/{copy-icon-P0kzz1Pr.js → copy-icon-WvgZ60QO.js} +1 -1
- package/dist/assets/{cose-bilkent-S5V4N54A-Bd5HJPaN.js → cose-bilkent-S5V4N54A-C4qI5Omf.js} +1 -1
- package/dist/assets/createReducer-Dvh64vBW.js +1 -0
- package/dist/assets/crystal-BJ72BOy1.js +1 -0
- package/dist/assets/{css-CCWfM5vT.js → css-D-8RA_n9.js} +1 -1
- package/dist/assets/cypher-qOLKQlRB.js +1 -0
- package/dist/assets/d-iOURkVzR.js +1 -0
- package/dist/assets/{dagre-6UL2VRFP-XqoNLMQ3.js → dagre-6UL2VRFP-CoEAbEhB.js} +1 -1
- package/dist/assets/{data-grid-overlay-editor-Cus1-BFN.js → data-grid-overlay-editor-DXzdnLZF.js} +1 -1
- package/dist/assets/{datasource-DKHG39NV.js → datasource-C5fKDIEK.js} +2 -2
- package/dist/assets/{dependency-graph-panel-7GKT3dyD.js → dependency-graph-panel-BCYRlR0F.js} +4 -4
- package/dist/assets/{diagram-PSM6KHXK-BuzKNNcN.js → diagram-PSM6KHXK-CzPUkhGz.js} +1 -1
- package/dist/assets/{diagram-QEK2KX5R-A5LBQS11.js → diagram-QEK2KX5R-D5RBmWAK.js} +1 -1
- package/dist/assets/{diagram-S2PKOQOG-dkJE8SA0.js → diagram-S2PKOQOG-C8PeRX7S.js} +1 -1
- package/dist/assets/{dialog-1_jIyAb_.js → dialog-C_NcD2pn.js} +1 -1
- package/dist/assets/diff-Cdd81Zxl.js +1 -0
- package/dist/assets/{dist-e6Ho4upI.js → dist-1u2or7ID.js} +1 -1
- package/dist/assets/{dist-DSlq5ZeQ.js → dist-BWa7crGu.js} +1 -1
- package/dist/assets/{dist-CsRbK9-Y.js → dist-BZOFXjSq.js} +1 -1
- package/dist/assets/dist-BgRFL8FO.js +1 -0
- package/dist/assets/{dist-Br306776.js → dist-Cj6Bv4PM.js} +1 -1
- package/dist/assets/dist-D6IRobNQ.js +1 -0
- package/dist/assets/{dist-Tk70DR_I.js → dist-DBaxVoPL.js} +1 -1
- package/dist/assets/{dist-f9b2H4q_.js → dist-DQg1jiNa.js} +1 -1
- package/dist/assets/{dist-_TwZ4tIe.js → dist-DZurUgwR.js} +1 -1
- package/dist/assets/{dist-C3AnARPE.js → dist-D_QUx5Gn.js} +1 -1
- package/dist/assets/{dist-B_buFm3B.js → dist-Dq1aTs7B.js} +1 -1
- package/dist/assets/{dist-ZM59OWYL.js → dist-NoS9f1Fr.js} +1 -1
- package/dist/assets/dist-i55eG_gB.js +1 -0
- package/dist/assets/dist-vu0dYsZ6.js +1 -0
- package/dist/assets/{dist-BWGxTsTP.js → dist-wAlLVqgL.js} +1 -1
- package/dist/assets/{dockerfile-ClV2Mqz8.js → dockerfile-t2fxOBWV.js} +1 -1
- package/dist/assets/documentation-panel-B-pPPA6b.js +1 -0
- package/dist/assets/{download-B1vXaivj.js → download-UmTPygP7.js} +1 -1
- package/dist/assets/dtd-CXebdwLo.js +1 -0
- package/dist/assets/dylan-YUx5_Nke.js +1 -0
- package/dist/assets/ecl-CktOv__x.js +1 -0
- package/dist/assets/{edit-page-Dt-k7cUh.js → edit-page-DKTQKmQY.js} +7 -7
- package/dist/assets/eiffel-Cwa25B6x.js +1 -0
- package/dist/assets/elm-COtRRWOj.js +1 -0
- package/dist/assets/{erDiagram-Q2GNP2WA-CgH6udOW.js → erDiagram-Q2GNP2WA-Bvb9X3rD.js} +1 -1
- package/dist/assets/erlang-Ir3c4mPd.js +1 -0
- package/dist/assets/{error-banner-J5F3weEj.js → error-banner-BYG94WiL.js} +1 -1
- package/dist/assets/{error-panel-DnhKJ5Ou.js → error-panel-CpC5W_ax.js} +1 -1
- package/dist/assets/{es-DYI7U61K.js → es-DKHH3Swu.js} +1 -1
- package/dist/assets/{esm-DKLLCu3N.js → esm-Clp2XqMu.js} +1 -1
- package/dist/assets/{esm-BC1J92im.js → esm-DnSMDF4m.js} +1 -1
- package/dist/assets/{factor-CrpY0izf.js → factor-CwMUgBOu.js} +1 -1
- package/dist/assets/factor-DLUSHz6o.js +1 -0
- package/dist/assets/{field-B08lvxnl.js → field-BEgvDIrV.js} +1 -1
- package/dist/assets/{file-explorer-panel-DyUl_ws9.js → file-explorer-panel-PTcIZ1Da.js} +3 -3
- package/dist/assets/{file-icons-3DTS8ZM7.js → file-icons-BTQcwa4T.js} +1 -1
- package/dist/assets/floating-outline-Dz5Wcbfw.js +1 -0
- package/dist/assets/{flowDiagram-NV44I4VS-D85BL4rA.js → flowDiagram-NV44I4VS-CF0XcGrZ.js} +1 -1
- package/dist/assets/{focus-DlJH7sfh.js → focus-BRTg8M44.js} +1 -1
- package/dist/assets/{form-760_EqmF.js → form-qtFXuhlh.js} +1 -1
- package/dist/assets/{formats-wYuh1bqp.js → formats-CQWEZHk-.js} +1 -1
- package/dist/assets/{formatting-CraOPe94.js → formatting-DBrNlcJ6.js} +1 -1
- package/dist/assets/forth-DdV4URDJ.js +1 -0
- package/dist/assets/fortran-rTDtSjFc.js +1 -0
- package/dist/assets/{gallery-page--paiPvYX.js → gallery-page-DhOJHDwV.js} +1 -1
- package/dist/assets/{ganttDiagram-JELNMOA3-DzCOXWlF.js → ganttDiagram-JELNMOA3-BXfHO6g0.js} +1 -1
- package/dist/assets/gas-B20k3keQ.js +1 -0
- package/dist/assets/gherkin-DdH6eiN0.js +1 -0
- package/dist/assets/{gitGraph-G5XIXVHT-iDzw7G2X.js → gitGraph-G5XIXVHT-D3o7km_A.js} +1 -1
- package/dist/assets/{gitGraphDiagram-V2S2FVAM-BUHURX6t.js → gitGraphDiagram-V2S2FVAM-Blhov9dO.js} +1 -1
- package/dist/assets/{glide-data-editor-DYdoQTO5.js → glide-data-editor-CO6jMjYm.js} +4 -4
- package/dist/assets/{globals-7M5DRsIb.js → globals-DD4XdbWe.js} +1 -1
- package/dist/assets/groovy-k_2ke765.js +1 -0
- package/dist/assets/haskell-JTqAy6cw.js +1 -0
- package/dist/assets/haxe-g4mjq9YQ.js +1 -0
- package/dist/assets/{home-page-CxQ1e98h.js → home-page-CwgtN9Ku.js} +1 -1
- package/dist/assets/{hooks-C3jEff2O.js → hooks-CLoML3Pf.js} +1 -1
- package/dist/assets/{html-to-image-DTFXm6_Z.js → html-to-image-CRCamxYo.js} +1 -1
- package/dist/assets/idl-CQEReZIk.js +1 -0
- package/dist/assets/{index-7PDAWVlZ.js → index-DC6PpQWW.js} +17 -17
- package/dist/assets/{info-VBDWY6EO-CPHm9IfG.js → info-VBDWY6EO-CPJvjUKi.js} +1 -1
- package/dist/assets/infoDiagram-HS3SLOUP-CCrt0lHA.js +2 -0
- package/dist/assets/{input-CN1ZeRYm.js → input-lyDIN6R6.js} +1 -1
- package/dist/assets/javascript-Th71hKcK.js +1 -0
- package/dist/assets/{journeyDiagram-XKPGCS4Q-B1dvnV4D.js → journeyDiagram-XKPGCS4Q-Bs_9B9e_.js} +1 -1
- package/dist/assets/julia-KdjfFIx7.js +1 -0
- package/dist/assets/{kanban-definition-3W4ZIXB7-CefbrXQv.js → kanban-definition-3W4ZIXB7-_GEp627b.js} +1 -1
- package/dist/assets/katex-BalO4WMU.js +1 -0
- package/dist/assets/kiosk-mode-Di6uNlNd.js +1 -0
- package/dist/assets/{label-TNNaT1M9.js → label-CNWsXpEn.js} +1 -1
- package/dist/assets/{layout-3b3tzmbb.js → layout-OxzkS5En.js} +4 -4
- package/dist/assets/{line-BBSd2MUH.js → line-BKm-YkCh.js} +1 -1
- package/dist/assets/{linear-BDnrHGYO.js → linear-DG7yljSg.js} +1 -1
- package/dist/assets/livescript-OIMP9q9l.js +1 -0
- package/dist/assets/{logs-panel-C4k_2IHW.js → logs-panel-Dt4wzfgH.js} +1 -1
- package/dist/assets/{loro_wasm_bg-MY7PmKYj.js → loro_wasm_bg-CvVVQqkx.js} +1 -1
- package/dist/assets/lua-blzLZg7R.js +1 -0
- package/dist/assets/{markdown-renderer-DSy5IuAx.js → markdown-renderer-nMv2xwHt.js} +3 -3
- package/dist/assets/mathematica-CMJa84MS.js +1 -0
- package/dist/assets/mbox-DVlt9Sx8.js +1 -0
- package/dist/assets/mermaid-4DMBBIKO-gmMzGFR4.js +1 -0
- package/dist/assets/{mermaid-C43VbdrM.js → mermaid-DEOW_c2X.js} +3 -3
- package/dist/assets/{mermaid-parser.core-CdM8D_p_.js → mermaid-parser.core-ChpHatjH.js} +2 -2
- package/dist/assets/{mhchem-B98RQJ-y.js → mhchem-DqNBdKjC.js} +1 -1
- package/dist/assets/{mindmap-definition-VGOIOE7T-CcV7D-wF.js → mindmap-definition-VGOIOE7T-CsErmnfz.js} +1 -1
- package/dist/assets/mirc-CE9zFxnR.js +1 -0
- package/dist/assets/mllike-UPrOWD4R.js +1 -0
- package/dist/assets/modelica-CXEKMd0n.js +1 -0
- package/dist/assets/mscgen-CzEcWkMH.js +1 -0
- package/dist/assets/mumps-DNi45Qjm.js +1 -0
- package/dist/assets/name-cell-input-CwvGCJkg.js +1 -0
- package/dist/assets/{nsis-BeaU1Q2K.js → nsis-10Du03KF.js} +1 -1
- package/dist/assets/nsis-Cjsw1q_J.js +1 -0
- package/dist/assets/ntriples-ByafJqO3.js +1 -0
- package/dist/assets/{number-overlay-editor-BBJO1mf8.js → number-overlay-editor-zZDGu9D2.js} +1 -1
- package/dist/assets/octave-Bg9NfY8T.js +1 -0
- package/dist/assets/{ordinal-CMAUv8ku.js → ordinal-CIVqSC4M.js} +1 -1
- package/dist/assets/{outline-panel-D7CJwO8u.js → outline-panel-CCmk1ERZ.js} +1 -1
- package/dist/assets/oz-BqUh_R9x.js +1 -0
- package/dist/assets/{packages-panel-Bp1SYjgc.js → packages-panel-BzayhsFC.js} +1 -1
- package/dist/assets/{packet-DYOGHKS2-0KdzLf9c.js → packet-DYOGHKS2-0_hZggkb.js} +1 -1
- package/dist/assets/panels-B7hsDiui.js +1 -0
- package/dist/assets/pascal-T5LJ_IPG.js +1 -0
- package/dist/assets/perl-QB_H1sT2.js +1 -0
- package/dist/assets/{pie-VRWISCQL-C6EIS9iq.js → pie-VRWISCQL-QeXFV_RN.js} +1 -1
- package/dist/assets/{pieDiagram-ADFJNKIX-C1fBf15W.js → pieDiagram-ADFJNKIX-CHFQxGML.js} +1 -1
- package/dist/assets/pig-BX8GE3n0.js +1 -0
- package/dist/assets/powershell-CgQaEAdZ.js +1 -0
- package/dist/assets/{precisionRound-CCOoIlcP.js → precisionRound-NX56vp6K.js} +1 -1
- package/dist/assets/{process-output-BxPWHcIi.js → process-output-D_zUglHE.js} +1 -1
- package/dist/assets/properties-obn8TWyy.js +1 -0
- package/dist/assets/protobuf-C-zxlF8D.js +1 -0
- package/dist/assets/pug--0L5ulw9.js +1 -0
- package/dist/assets/{pug-v81J9ytZ.js → pug-C9pOca2F.js} +1 -1
- package/dist/assets/puppet-05PW0eq8.js +1 -0
- package/dist/assets/python-DTi_lJAD.js +1 -0
- package/dist/assets/q-DDewC_-L.js +1 -0
- package/dist/assets/{quadrantDiagram-AYHSOK5B-RVooN-fX.js → quadrantDiagram-AYHSOK5B-BWfhvbIs.js} +1 -1
- package/dist/assets/r-BP2yA_lV.js +1 -0
- package/dist/assets/{radar-ZZBFDIW7-IOV25h32.js → radar-ZZBFDIW7-CPk9iUBG.js} +1 -1
- package/dist/assets/{react-vega-BKRQSy0g.js → react-vega-BbTMwpa-.js} +1 -1
- package/dist/assets/react-vega-_CJceHW7.js +1 -0
- package/dist/assets/{readonly-python-code-D95oshJa.js → readonly-python-code-BQo0UqCJ.js} +1 -1
- package/dist/assets/{renderShortcut-BYvKm38e.js → renderShortcut-DG5sXSxr.js} +1 -1
- package/dist/assets/{requirementDiagram-UZGBJVZJ-DtqOYJpH.js → requirementDiagram-UZGBJVZJ-DdZsVZPu.js} +1 -1
- package/dist/assets/rpm-BTpPEnAJ.js +1 -0
- package/dist/assets/ruby-_km6sWpH.js +1 -0
- package/dist/assets/{run-page-B7CASued.js → run-page-BN0QZ7-c.js} +1 -1
- package/dist/assets/{runs-Bhy0tbWr.js → runs-CtxlyzdZ.js} +1 -1
- package/dist/assets/{sankeyDiagram-TZEHDZUN-DmcooLA8.js → sankeyDiagram-TZEHDZUN-BiKMK7q3.js} +1 -1
- package/dist/assets/sas-BV0z5M7P.js +1 -0
- package/dist/assets/scheme-AMw7OHvW.js +1 -0
- package/dist/assets/{scratchpad-panel-BIVRgYOU.js → scratchpad-panel-BpM3Nxzw.js} +1 -1
- package/dist/assets/{secrets-panel-C24hZEiO.js → secrets-panel-BVJ1G2-2.js} +1 -1
- package/dist/assets/{sequenceDiagram-WL72ISMW-S2qeLb7J.js → sequenceDiagram-WL72ISMW-B1m5IqrQ.js} +1 -1
- package/dist/assets/session-panel-CUtOop5w.js +1 -0
- package/dist/assets/shell-BepJCs0S.js +1 -0
- package/dist/assets/sieve-YvKFjNqY.js +1 -0
- package/dist/assets/{slides-component-Brm_TS4x.js → slides-component-Bg8T1XwW.js} +1 -1
- package/dist/assets/smalltalk-e8puLVxg.js +1 -0
- package/dist/assets/{snippets-panel-D1JAeJj1.js → snippets-panel-CND2QIaH.js} +1 -1
- package/dist/assets/sparql-IwwbUejm.js +1 -0
- package/dist/assets/{src-Bp_72rVO.js → src-lcGySDV2.js} +1 -1
- package/dist/assets/{state-Cz_wrzCz.js → state-C-thupmq.js} +1 -1
- package/dist/assets/{state-BagvlaEz.js → state-Cm3zkTs2.js} +1 -1
- package/dist/assets/{state-DMQXxemS.js → state-Dxl7WjW3.js} +1 -1
- package/dist/assets/{stateDiagram-FKZM4ZOC-uuQ60pIl.js → stateDiagram-FKZM4ZOC-B_fZr0Jz.js} +1 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-CnaooVt9.js +1 -0
- package/dist/assets/{step-BkfKj3CL.js → step-B5y1YzZ4.js} +1 -1
- package/dist/assets/stylus-C5qHDsoA.js +1 -0
- package/dist/assets/swift-CD6FyF1F.js +1 -0
- package/dist/assets/{switch-Bwpd2AFq.js → switch-C2PmTLIx.js} +1 -1
- package/dist/assets/tcl-189LoKbJ.js +1 -0
- package/dist/assets/{terminal-Gl8Fi44y.js → terminal-8keBq1HC.js} +1 -1
- package/dist/assets/textile-dSHgbtG8.js +1 -0
- package/dist/assets/{time-Bw8f15NM.js → time-D8_flTb-.js} +1 -1
- package/dist/assets/{timeline-definition-IT6M3QCI-TKWeDnSQ.js → timeline-definition-IT6M3QCI-CiMZB-_n.js} +1 -1
- package/dist/assets/toml-CWUvzxNs.js +1 -0
- package/dist/assets/{tracing-DwAC7DWN.js → tracing-Cab2_N64.js} +1 -1
- package/dist/assets/{tracing-panel-D1iNgclL.js → tracing-panel-h6SS64Fd.js} +2 -2
- package/dist/assets/{tree-WVrWjdwv.js → tree-Duf22i7P.js} +1 -1
- package/dist/assets/{treemap-GDKQZRPO-BUa0eLeZ.js → treemap-GDKQZRPO-BqT6xXWn.js} +1 -1
- package/dist/assets/troff-CkFGw7sb.js +1 -0
- package/dist/assets/ttcn-B71Rl_FP.js +1 -0
- package/dist/assets/ttcn-cfg-BsJCQ8Pc.js +1 -0
- package/dist/assets/turtle-AJRCjN1N.js +1 -0
- package/dist/assets/{useAddCell-D6Q7JziZ.js → useAddCell-fzJF_CdR.js} +1 -1
- package/dist/assets/{useBoolean-CrltYVhE.js → useBoolean-DJdaVVhu.js} +1 -1
- package/dist/assets/useCellActionButton-C-mIavMW.js +1 -0
- package/dist/assets/{useDateFormatter-DOoVZUts.js → useDateFormatter-CYAwsqZA.js} +1 -1
- package/dist/assets/{useDeleteCell-d8veThW7.js → useDeleteCell-lfqkVcrN.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-B3iIj3MO.js → useDependencyPanelTab-Nq81zNNI.js} +1 -1
- package/dist/assets/{useInstallPackage-CQEr5429.js → useInstallPackage-BVUUWUU8.js} +1 -1
- package/dist/assets/useNotebookActions-BAw99pt_.js +1 -0
- package/dist/assets/{useNumberFormatter-BXZcbTzH.js → useNumberFormatter-D5CeG3Kn.js} +1 -1
- package/dist/assets/{usePress-alQ5Crny.js → usePress-CHKiC-9E.js} +1 -1
- package/dist/assets/useRunCells-6ne-1pJW.js +1 -0
- package/dist/assets/useSplitCell-D8a8QoYd.js +1 -0
- package/dist/assets/{utils-C24l2A1T.js → utils-DnNnBV1N.js} +1 -1
- package/dist/assets/vb-gPFTxjZr.js +1 -0
- package/dist/assets/vbscript-CMzdZB2G.js +1 -0
- package/dist/assets/{vega-component-9Pf4pVZL.js → vega-component-DnJzUfQO.js} +1 -1
- package/dist/assets/{vega-loader.browser-BJ9oKrvH.js → vega-loader.browser-xq8miGHn.js} +1 -1
- package/dist/assets/velocity-DBHzqIXP.js +1 -0
- package/dist/assets/verilog-CrrLE4DH.js +1 -0
- package/dist/assets/vhdl-CcYUxt_-.js +1 -0
- package/dist/assets/webidl-Cx4I26Tn.js +1 -0
- package/dist/assets/{write-secret-modal-BFCsWMoW.js → write-secret-modal-5AT0ZoJv.js} +1 -1
- package/dist/assets/xquery-Cu7k_x_s.js +1 -0
- package/dist/assets/{xychartDiagram-PRI3JC2R-CIp-yeSa.js → xychartDiagram-PRI3JC2R-B3F_v5OL.js} +1 -1
- package/dist/assets/yacas-DEQ-2nrM.js +1 -0
- package/dist/assets/z80-D9sXBSXs.js +1 -0
- package/dist/index.html +83 -84
- package/package.json +1 -1
- package/src/__mocks__/requests.ts +1 -0
- package/src/core/cells/__tests__/apply-transaction.test.ts +279 -0
- package/src/core/cells/__tests__/cells.test.ts +6 -0
- package/src/core/cells/__tests__/document-changes.test.ts +575 -0
- package/src/core/cells/__tests__/document-roundtrip.test.ts +376 -0
- package/src/core/cells/cells.ts +28 -3
- package/src/core/cells/document-changes.ts +644 -0
- package/src/core/islands/bridge.ts +1 -0
- package/src/core/islands/main.ts +2 -0
- package/src/core/network/requests-lazy.ts +1 -0
- package/src/core/network/requests-network.ts +9 -0
- package/src/core/network/requests-static.ts +1 -0
- package/src/core/network/requests-toasting.tsx +1 -0
- package/src/core/network/types.ts +5 -0
- package/src/core/wasm/bridge.ts +1 -0
- package/src/core/websocket/useMarimoKernelConnection.tsx +19 -1
- package/src/utils/createReducer.ts +26 -11
- package/dist/assets/CellStatus-DX8MnBMk.js +0 -1
- package/dist/assets/LazyAnyLanguageCodeMirror-CcCHIX38.js +0 -2
- package/dist/assets/RenderHTML-C7XM39M2.js +0 -1
- package/dist/assets/ai-model-dropdown-CiJpv5wN.js +0 -5
- package/dist/assets/apl-CWQZjEHB.js +0 -1
- package/dist/assets/asciiarmor-YkqeOS7J.js +0 -1
- package/dist/assets/asn1-CXKIzj3m.js +0 -1
- package/dist/assets/brainfuck-BATyDEza.js +0 -1
- package/dist/assets/cells-39RE4UzS.js +0 -230
- package/dist/assets/channel-D1wPYhc9.js +0 -1
- package/dist/assets/chunk-55IACEB6-D0TKhzEY.js +0 -1
- package/dist/assets/classDiagram-2ON5EDUG-BDIQSKYv.js +0 -1
- package/dist/assets/classDiagram-v2-WZHVMYZB-Cdh4cVOB.js +0 -1
- package/dist/assets/clojure-DSdxtK57.js +0 -1
- package/dist/assets/cmake-b6COJhkL.js +0 -1
- package/dist/assets/cobol-0au-d4Af.js +0 -1
- package/dist/assets/coffeescript-CO6miDRN.js +0 -1
- package/dist/assets/commonlisp-ViswrHum.js +0 -1
- package/dist/assets/context-aware-panel-DC0Te9Hj.js +0 -3
- package/dist/assets/createReducer-Drh7NmIR.js +0 -1
- package/dist/assets/crystal-BcOI1XlU.js +0 -1
- package/dist/assets/cypher-BKbuDk70.js +0 -1
- package/dist/assets/d-4fbeW9Dj.js +0 -1
- package/dist/assets/diff-CV59_hp-.js +0 -1
- package/dist/assets/dist-BZeePkbd.js +0 -1
- package/dist/assets/dist-Br4KMeY4.js +0 -1
- package/dist/assets/dist-Cp60fE5Z.js +0 -1
- package/dist/assets/dist-DVbTmqCA.js +0 -1
- package/dist/assets/documentation-panel-D5d_BbHV.js +0 -1
- package/dist/assets/dtd-BAjS2EMD.js +0 -1
- package/dist/assets/dylan-CjAEbzAl.js +0 -1
- package/dist/assets/ecl-DegMF2Uo.js +0 -1
- package/dist/assets/eiffel-D_UXtJqE.js +0 -1
- package/dist/assets/elm-CV-6VdWh.js +0 -1
- package/dist/assets/erlang-C3Vp1oq_.js +0 -1
- package/dist/assets/factor-CBMQHXUW.js +0 -1
- package/dist/assets/floating-outline-DmugATcB.js +0 -1
- package/dist/assets/forth-C_TcrpRK.js +0 -1
- package/dist/assets/fortran-DOs2FQj2.js +0 -1
- package/dist/assets/gas-Cg-F3pmb.js +0 -1
- package/dist/assets/gherkin-CaXqq9kA.js +0 -1
- package/dist/assets/groovy-DmxumoMi.js +0 -1
- package/dist/assets/haskell-BZ-cKqgz.js +0 -1
- package/dist/assets/haxe-x-4elm0t.js +0 -1
- package/dist/assets/idl-DNkkzHKH.js +0 -1
- package/dist/assets/infoDiagram-HS3SLOUP-GG5r0Y5G.js +0 -2
- package/dist/assets/javascript-B0uQ9oZ_.js +0 -1
- package/dist/assets/julia-DBflXO9b.js +0 -1
- package/dist/assets/katex-YDobqqVd.js +0 -1
- package/dist/assets/kiosk-mode-CyTnrzwK.js +0 -1
- package/dist/assets/livescript-DRwwdQDY.js +0 -1
- package/dist/assets/lua-D_CRYz1e.js +0 -1
- package/dist/assets/mathematica-D28k0VAB.js +0 -1
- package/dist/assets/mbox-B74-q1nN.js +0 -1
- package/dist/assets/mermaid-4DMBBIKO-g7AL4SLJ.js +0 -1
- package/dist/assets/mirc-CW8yiVay.js +0 -1
- package/dist/assets/mllike-BwZpH7CZ.js +0 -1
- package/dist/assets/mode-D-iRbN9x.js +0 -1
- package/dist/assets/modelica-AhRO-ii8.js +0 -1
- package/dist/assets/mscgen-CJZUmlSk.js +0 -1
- package/dist/assets/mumps-BTPWDvZ1.js +0 -1
- package/dist/assets/name-cell-input-Dyb0ZO4X.js +0 -1
- package/dist/assets/nsis-CuVPiHG5.js +0 -1
- package/dist/assets/ntriples-eNmSbiOL.js +0 -1
- package/dist/assets/octave-BboqqX2Z.js +0 -1
- package/dist/assets/oz-eUT9rD_n.js +0 -1
- package/dist/assets/panels-D0aw6jdc.js +0 -1
- package/dist/assets/pascal-Bl9h-Ruv.js +0 -1
- package/dist/assets/perl-B1GdYx3j.js +0 -1
- package/dist/assets/pig-CoZHWNtw.js +0 -1
- package/dist/assets/powershell-B2p71KcT.js +0 -1
- package/dist/assets/properties-Cs9aaJGK.js +0 -1
- package/dist/assets/protobuf-DFCnQG_o.js +0 -1
- package/dist/assets/pug-BShaWOtD.js +0 -1
- package/dist/assets/puppet-4yIFv98Z.js +0 -1
- package/dist/assets/python-ByMRQ0aE.js +0 -1
- package/dist/assets/q-C7EgGttK.js +0 -1
- package/dist/assets/r-DpLLx5HE.js +0 -1
- package/dist/assets/react-vega-DXESF7qN.js +0 -1
- package/dist/assets/rpm-DlCq0FVA.js +0 -1
- package/dist/assets/ruby-BGmSEBWH.js +0 -1
- package/dist/assets/sas-CFcv5xFe.js +0 -1
- package/dist/assets/scheme-BgRfkNY3.js +0 -1
- package/dist/assets/session-panel-O68V-tv4.js +0 -1
- package/dist/assets/shell-CKQz0rkv.js +0 -1
- package/dist/assets/sieve-D0P6XnTD.js +0 -1
- package/dist/assets/smalltalk-Dcg9QwVr.js +0 -1
- package/dist/assets/sparql-f01xs6VH.js +0 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-D-GWhQTG.js +0 -1
- package/dist/assets/stylus-BjzHGGgo.js +0 -1
- package/dist/assets/swift-DOptU29u.js +0 -1
- package/dist/assets/tcl-vC8etUeQ.js +0 -1
- package/dist/assets/textile-BfLqcKXP.js +0 -1
- package/dist/assets/toml-rX0_Isgp.js +0 -1
- package/dist/assets/troff-C1lPb0WN.js +0 -1
- package/dist/assets/ttcn-D5dxusfs.js +0 -1
- package/dist/assets/ttcn-cfg-Dj2ybct-.js +0 -1
- package/dist/assets/turtle-BiTItqZm.js +0 -1
- package/dist/assets/useCellActionButton-B2G9OaX9.js +0 -1
- package/dist/assets/useNotebookActions-CdAfjuOC.js +0 -1
- package/dist/assets/useRunCells-Dhl8ZTGh.js +0 -1
- package/dist/assets/useSplitCell-BSnFazbH.js +0 -1
- package/dist/assets/vb-roE2hgal.js +0 -1
- package/dist/assets/vbscript-2s97682t.js +0 -1
- package/dist/assets/velocity-D0YPg3VZ.js +0 -1
- package/dist/assets/verilog-Btszgjcd.js +0 -1
- package/dist/assets/vhdl-enS91NZh.js +0 -1
- package/dist/assets/webidl-DQMyFjhm.js +0 -1
- package/dist/assets/xquery-D5Jh9c_Z.js +0 -1
- package/dist/assets/yacas-CTzSIaAf.js +0 -1
- package/dist/assets/z80-Dt0hdUwP.js +0 -1
- /package/dist/assets/{ImageComparisonComponent-DvDPDgw3.js → ImageComparisonComponent-Cw3aoN3z.js} +0 -0
- /package/dist/assets/{Inputs-D5kI9GwB.js → Inputs-CsxDtqlI.js} +0 -0
- /package/dist/assets/{Plot-DQQQ-fLA.js → Plot-eiPFedH2.js} +0 -0
- /package/dist/assets/{SSRProvider-CwqN9FWV.js → SSRProvider-BkypbMcb.js} +0 -0
- /package/dist/assets/{alert-OQZHipbB.js → alert-NjVFesQm.js} +0 -0
- /package/dist/assets/{alert-dialog-ebk_-wsU.js → alert-dialog-Baw3WWPa.js} +0 -0
- /package/dist/assets/{apl-CexVE068.js → apl-D8X_E6Wh.js} +0 -0
- /package/dist/assets/{array-psg969PF.js → array-CEZNxKGf.js} +0 -0
- /package/dist/assets/{asciiarmor-DzdXFxI-.js → asciiarmor-DeecVuRW.js} +0 -0
- /package/dist/assets/{asn1-lKNP6w4p.js → asn1-C9WWFN1p.js} +0 -0
- /package/dist/assets/{asterisk-Bjb62jej.js → asterisk-Dykb_Qas.js} +0 -0
- /package/dist/assets/{blob-DgooIGjS.js → blob-C3EfaMOb.js} +0 -0
- /package/dist/assets/{brainfuck-pTL_9bJ7.js → brainfuck-Cl6gOsOa.js} +0 -0
- /package/dist/assets/{bundle.esm-idScn0w0.js → bundle.esm-_LzfhNmX.js} +0 -0
- /package/dist/assets/{card-C-c-4jyF.js → card-OaQlvpSl.js} +0 -0
- /package/dist/assets/{chunk-4F5CHEZ2-BGeTOmrq.js → chunk-4F5CHEZ2-Bghwh3ep.js} +0 -0
- /package/dist/assets/{chunk-B2363JML-Cmh9TPpj.js → chunk-B2363JML-B3wWt_gr.js} +0 -0
- /package/dist/assets/{chunk-DR5Q36YT-SM9ZwAOv.js → chunk-DR5Q36YT-DOSR70sR.js} +0 -0
- /package/dist/assets/{chunk-FRFDVMJY-CUDE-MUX.js → chunk-FRFDVMJY-D9fs6vlF.js} +0 -0
- /package/dist/assets/{chunk-PL6DKKU2-DMqBvHTF.js → chunk-PL6DKKU2-CdtxnIBd.js} +0 -0
- /package/dist/assets/{chunk-SJTYNZTY-C9cwtT3h.js → chunk-SJTYNZTY-CMwkFD7U.js} +0 -0
- /package/dist/assets/{chunk-TQ3KTPDO-CUyT9lNN.js → chunk-TQ3KTPDO-0Us1NWXT.js} +0 -0
- /package/dist/assets/{chunk-UMXZTB3W-Bt-_br31.js → chunk-UMXZTB3W-zYd--p4q.js} +0 -0
- /package/dist/assets/{clear-button-DrIF5o__.js → clear-button-CsNT-Tql.js} +0 -0
- /package/dist/assets/{click-outside-container-CagwJLiG.js → click-outside-container-gHk0jCel.js} +0 -0
- /package/dist/assets/{clike-BCxd7pZ9.js → clike-BuY5U60j.js} +0 -0
- /package/dist/assets/{clojure-CPAS-74L.js → clojure-C8jGLyPy.js} +0 -0
- /package/dist/assets/{cmake-DMONEHtp.js → cmake-DcjYbevD.js} +0 -0
- /package/dist/assets/{cobol-0rQGzjf0.js → cobol-C-nFr8y5.js} +0 -0
- /package/dist/assets/{coffeescript-BHNUw4aR.js → coffeescript-VbbBP-Cm.js} +0 -0
- /package/dist/assets/{colors-WO6MvCS3.js → colors-Dm6L93c7.js} +0 -0
- /package/dist/assets/{common-keywords-D_14jCw0.js → common-keywords-sop6vXJR.js} +0 -0
- /package/dist/assets/{commonlisp-Cjiyl45-.js → commonlisp-mLMub2u_.js} +0 -0
- /package/dist/assets/{copy-KjcPgPw9.js → copy-CcUDATFX.js} +0 -0
- /package/dist/assets/{crystal-CUMDisY2.js → crystal-Buc8hu84.js} +0 -0
- /package/dist/assets/{css-B6NFOUor.js → css-DtNg2SPz.js} +0 -0
- /package/dist/assets/{cypher-DcWJtLBw.js → cypher-wyT0Afvt.js} +0 -0
- /package/dist/assets/{cytoscape.esm-DuXIsNbY.js → cytoscape.esm-CuwfIk-V.js} +0 -0
- /package/dist/assets/{d-CpNp8oDv.js → d-KzUzEnwn.js} +0 -0
- /package/dist/assets/{defaultLocale-CuYNS33t.js → defaultLocale-DPBdGRrH.js} +0 -0
- /package/dist/assets/{defaultLocale-CGfP-Ye3.js → defaultLocale-Lfi0pexn.js} +0 -0
- /package/dist/assets/{diff-BCFJsGHX.js → diff-zZX_BZ60.js} +0 -0
- /package/dist/assets/{dist-D9Vhptds.js → dist-2yYHES7B.js} +0 -0
- /package/dist/assets/{dist-CVEvQ1Ex.js → dist-4adVoHKM.js} +0 -0
- /package/dist/assets/{dist-ASlWkGgG.js → dist-8B3AWTCv.js} +0 -0
- /package/dist/assets/{dist-sVuk6mkQ.js → dist-AkjWZMeV.js} +0 -0
- /package/dist/assets/{dist-BhNN2V5a.js → dist-BKm9wJTB.js} +0 -0
- /package/dist/assets/{dist-BR9zyVPH.js → dist-BacKBlEY.js} +0 -0
- /package/dist/assets/{dist-OxxI-HeS.js → dist-Bi4JuBeU.js} +0 -0
- /package/dist/assets/{dist-COnmrAVZ.js → dist-BjCIGEdQ.js} +0 -0
- /package/dist/assets/{dist-Dxov2ltb.js → dist-C8sUhiRj.js} +0 -0
- /package/dist/assets/{dist-DxrbvUBv.js → dist-CKX5rwHQ.js} +0 -0
- /package/dist/assets/{dist-DkaderFA.js → dist-Cd9M8gLO.js} +0 -0
- /package/dist/assets/{dist-DD9ZJMK5.js → dist-CjkJ83NO.js} +0 -0
- /package/dist/assets/{dist-DBPtheKQ.js → dist-CybQbPjb.js} +0 -0
- /package/dist/assets/{dist-CYs1oP7g.js → dist-DVCqT940.js} +0 -0
- /package/dist/assets/{dist-feWVQ4dq.js → dist-DXjL2dGI.js} +0 -0
- /package/dist/assets/{dist-DXyIIB32.js → dist-DgEPWvX2.js} +0 -0
- /package/dist/assets/{dist-CgC048vN.js → dist-DzjL8iiW.js} +0 -0
- /package/dist/assets/{dist-DReDpc2z.js → dist-rrswzGsS.js} +0 -0
- /package/dist/assets/{dtd-D7nO7isU.js → dtd-DrorhQz9.js} +0 -0
- /package/dist/assets/{duckdb-keywords-CSySeB8R.js → duckdb-keywords-CEWQs1NJ.js} +0 -0
- /package/dist/assets/{dylan-qEhlQv4l.js → dylan-B4r5umK9.js} +0 -0
- /package/dist/assets/{ebnf-KJaLpQez.js → ebnf-BoS8ZFT2.js} +0 -0
- /package/dist/assets/{ecl-cXHEjabG.js → ecl-Chc_DmTY.js} +0 -0
- /package/dist/assets/{eiffel-CUTEIYa-.js → eiffel-CIYqf7wj.js} +0 -0
- /package/dist/assets/{elm-DOfGHeKn.js → elm-Baq4wI8e.js} +0 -0
- /package/dist/assets/{emotion-is-prop-valid.esm-D7FeWASw.js → emotion-is-prop-valid.esm-lG8j6oqk.js} +0 -0
- /package/dist/assets/{empty-state-B_US46Us.js → empty-state-BBWqzODS.js} +0 -0
- /package/dist/assets/{erlang-B5R7Byby.js → erlang-xHcM8uVi.js} +0 -0
- /package/dist/assets/{errors-0IrrdfSG.js → errors-iwK4b4VF.js} +0 -0
- /package/dist/assets/{esm-CX-gNDKf.js → esm-DM72gy9Q.js} +0 -0
- /package/dist/assets/{extends-aq1t6BkR.js → extends-B9D0JO9U.js} +0 -0
- /package/dist/assets/{fcl-Cf241iHu.js → fcl-JwfU5Rr4.js} +0 -0
- /package/dist/assets/{forth-BjV8SV3p.js → forth-j6RT-cy6.js} +0 -0
- /package/dist/assets/{fortran-CvNblcug.js → fortran-Z7A59UbQ.js} +0 -0
- /package/dist/assets/{gas-D1YrZZUY.js → gas-5kgpLqGg.js} +0 -0
- /package/dist/assets/{gherkin-CAUl7roi.js → gherkin-KECBIOSQ.js} +0 -0
- /package/dist/assets/{groovy-CnmCDhLm.js → groovy-CocWwvHR.js} +0 -0
- /package/dist/assets/{haskell-qdBb4h_7.js → haskell-BVRegKDO.js} +0 -0
- /package/dist/assets/{haxe-MQhLSFhI.js → haxe-U6x7KK2i.js} +0 -0
- /package/dist/assets/{http-_roNBajA.js → http-BSf7msSy.js} +0 -0
- /package/dist/assets/{icons-CrUXojcA.js → icons-D4U3iRHj.js} +0 -0
- /package/dist/assets/{idl-CcZzcWCI.js → idl-Byd3Qhyl.js} +0 -0
- /package/dist/assets/{init-XMA8CWhh.js → init-BpLL1fe9.js} +0 -0
- /package/dist/assets/{javascript-hE4QNtKl.js → javascript-D0a_TZzL.js} +0 -0
- /package/dist/assets/{julia-BjrvvLkp.js → julia-CaxV2pJw.js} +0 -0
- /package/dist/assets/{katex-rvFxOCU-.js → katex-FSdXOW5Y.js} +0 -0
- /package/dist/assets/{kbd-DvKpAc6K.js → kbd-zZCuQN_1.js} +0 -0
- /package/dist/assets/{links-DzgPOFJ-.js → links-BQHNKE3J.js} +0 -0
- /package/dist/assets/{links-CptYD1FP.js → links-Bfp-iNRX.js} +0 -0
- /package/dist/assets/{livescript-B01pNEzu.js → livescript-CfGHFsX-.js} +0 -0
- /package/dist/assets/{loro_wasm_bg-CcIcmNa3.js → loro_wasm_bg-Bj93RhA2.js} +0 -0
- /package/dist/assets/{lua-BwfRgSM6.js → lua-DwgMJ83W.js} +0 -0
- /package/dist/assets/{marimo-icons-C_YDiXeg.js → marimo-icons-Cb4NA8Cp.js} +0 -0
- /package/dist/assets/{math-CeGhAAgQ.js → math-CpvW-dlE.js} +0 -0
- /package/dist/assets/{mathematica-DLi5eijp.js → mathematica-CUcY8E3Z.js} +0 -0
- /package/dist/assets/{mbox-QweTYWJQ.js → mbox-QWIxg89f.js} +0 -0
- /package/dist/assets/{mirc-1J5TZ8Tf.js → mirc-PcCLOR2R.js} +0 -0
- /package/dist/assets/{mllike-DRzCrpbj.js → mllike-JiC27gOy.js} +0 -0
- /package/dist/assets/{modelica-GZKavTLw.js → modelica-BcfhGWp8.js} +0 -0
- /package/dist/assets/{mscgen-HMNaCHuy.js → mscgen-C2sdz_zX.js} +0 -0
- /package/dist/assets/{multi-icon-DEWnuZs2.js → multi-icon-BIYBHgCy.js} +0 -0
- /package/dist/assets/{multi-map-C8RbwBrw.js → multi-map-0vmox9BD.js} +0 -0
- /package/dist/assets/{mumps-CzCxfP2m.js → mumps-DTtlu7TY.js} +0 -0
- /package/dist/assets/{nginx-Dfd7l9Sj.js → nginx-CNcs7tVC.js} +0 -0
- /package/dist/assets/{node-sql-parser-BvUFblwL.js → node-sql-parser-fWuidk6P.js} +0 -0
- /package/dist/assets/{ntriples-DT57g_ZF.js → ntriples-CHcftTy8.js} +0 -0
- /package/dist/assets/{numbers-Cno6K0UF.js → numbers-Bv8m4sHE.js} +0 -0
- /package/dist/assets/{objectWithoutPropertiesLoose-Dxmp_Bd_.js → objectWithoutPropertiesLoose-CboCOq4o.js} +0 -0
- /package/dist/assets/{octave-CtuTaUjQ.js → octave-D7F4qXl_.js} +0 -0
- /package/dist/assets/{oz-BS8LEqKx.js → oz-VftS117C.js} +0 -0
- /package/dist/assets/{panel-context-BN0DQXiK.js → panel-context-CcwYw5Eq.js} +0 -0
- /package/dist/assets/{pascal-Db0ZEHQw.js → pascal-CxVKwA9u.js} +0 -0
- /package/dist/assets/{path-CkIaQHJO.js → path-DtYs9Dst.js} +0 -0
- /package/dist/assets/{perl-DgJKzgyz.js → perl-x4BFnPib.js} +0 -0
- /package/dist/assets/{pig-Dk6eYa40.js → pig-Dmhj3J78.js} +0 -0
- /package/dist/assets/{popover-Bvoif-Mg.js → popover-BzqPa2Au.js} +0 -0
- /package/dist/assets/{powershell-dW0qpS7j.js → powershell-Bg32vFxB.js} +0 -0
- /package/dist/assets/{prop-types-DRf51_gT.js → prop-types-C638SUfx.js} +0 -0
- /package/dist/assets/{properties-oMha4ix2.js → properties-DQbiKM_q.js} +0 -0
- /package/dist/assets/{protobuf-CfWJ4EtB.js → protobuf-Sa3BXDQ1.js} +0 -0
- /package/dist/assets/{puppet-O2K_n-UM.js → puppet-CnXWm8bo.js} +0 -0
- /package/dist/assets/{python-qMKsSr4L.js → python-B1WBAJzp.js} +0 -0
- /package/dist/assets/{q-ewn8d81Q.js → q-BqOVUYF0.js} +0 -0
- /package/dist/assets/{r-CqF-AjDv.js → r-BNvjQBjW.js} +0 -0
- /package/dist/assets/{range-ClqUI25v.js → range-Dk7lXDev.js} +0 -0
- /package/dist/assets/{react-resizable-panels.browser.esm-DDRqG5ui.js → react-resizable-panels.browser.esm-RgA6v8U3.js} +0 -0
- /package/dist/assets/{request-registry-XB2EzJHm.js → request-registry-BPNvKw5y.js} +0 -0
- /package/dist/assets/{requests-CP6q3-4O.js → requests-xhM8i_W9.js} +0 -0
- /package/dist/assets/{rpm-BqLq138P.js → rpm-Cdb8SyEx.js} +0 -0
- /package/dist/assets/{ruby-CQfbO3YY.js → ruby-Csu3wroo.js} +0 -0
- /package/dist/assets/{sas-BmpgVn6Q.js → sas-NClU0xuj.js} +0 -0
- /package/dist/assets/{scheme-rgyDg_wq.js → scheme-Hpx9xPN-.js} +0 -0
- /package/dist/assets/{share-NjpZ54PJ.js → share-T-ETw2Yt.js} +0 -0
- /package/dist/assets/{shell-Dndk6Ld6.js → shell-Cd99saJE.js} +0 -0
- /package/dist/assets/{sieve-bGgktpLX.js → sieve-D0zJ8TZ9.js} +0 -0
- /package/dist/assets/{simple-mode-oMMOWqWz.js → simple-mode-DpDBSVll.js} +0 -0
- /package/dist/assets/{smalltalk-CU43LrKS.js → smalltalk-BBBJczpn.js} +0 -0
- /package/dist/assets/{solr-CJeCgAfj.js → solr-B928KjNx.js} +0 -0
- /package/dist/assets/{sparql-BycKC3X4.js → sparql-uAF7_Z2_.js} +0 -0
- /package/dist/assets/{spreadsheet-BYYvgLKe.js → spreadsheet-CAG48M_e.js} +0 -0
- /package/dist/assets/{sql-B5I6FC3m.js → sql-nk70rjN1.js} +0 -0
- /package/dist/assets/{src-CW27-Kjl.js → src-BRLtyMKi.js} +0 -0
- /package/dist/assets/{stylus-CePwhvgW.js → stylus-fMZU8VtG.js} +0 -0
- /package/dist/assets/{swift-CfgglXjR.js → swift-CkY7kBhf.js} +0 -0
- /package/dist/assets/{table-BhH-Mm8O.js → table-CA8eU1EB.js} +0 -0
- /package/dist/assets/{tcl-D_gYSBm0.js → tcl-CS15Nqmn.js} +0 -0
- /package/dist/assets/{textile-BEvFU9wV.js → textile-BQsumqly.js} +0 -0
- /package/dist/assets/{tiddlywiki-hmNzZkq6.js → tiddlywiki-BiHxc-2_.js} +0 -0
- /package/dist/assets/{tiki-BL1SzuSx.js → tiki-Cwip62d7.js} +0 -0
- /package/dist/assets/{timer-CPT_vXom.js → timer-BEJidwwG.js} +0 -0
- /package/dist/assets/{toggle-C_gNjXg8.js → toggle-DjUKacjU.js} +0 -0
- /package/dist/assets/{toml-DGJRpV2e.js → toml-CoHiT08x.js} +0 -0
- /package/dist/assets/{treemap-Cf5pgJDk.js → treemap-qinQgXo1.js} +0 -0
- /package/dist/assets/{troff-CUlohIux.js → troff-CpFvF7Eq.js} +0 -0
- /package/dist/assets/{ttcn-nuQ3wCdy.js → ttcn-BjnqPnO0.js} +0 -0
- /package/dist/assets/{ttcn-cfg-DCxdE-sj.js → ttcn-cfg-D29EWwwv.js} +0 -0
- /package/dist/assets/{turtle-B2N96QpC.js → turtle-mWsfmaJW.js} +0 -0
- /package/dist/assets/{types-BfP_kuAY.js → types-Myu7G9iV.js} +0 -0
- /package/dist/assets/{useAsyncData-D-4ifFXh.js → useAsyncData-D-z1U8-c.js} +0 -0
- /package/dist/assets/{useDebounce-DwTO_rGp.js → useDebounce-Ccai5RO4.js} +0 -0
- /package/dist/assets/{useDeepCompareMemoize-yyiB9aJX.js → useDeepCompareMemoize-D1hTncYV.js} +0 -0
- /package/dist/assets/{useIframeCapabilities-DTN9kFDq.js → useIframeCapabilities-CouCDnwL.js} +0 -0
- /package/dist/assets/{useInterval-BJucVdV-.js → useInterval-BckTGVbf.js} +0 -0
- /package/dist/assets/{vb-CBiIL_zx.js → vb-E2EKvwgc.js} +0 -0
- /package/dist/assets/{vbscript-B3Y69Iw0.js → vbscript-98sn9Pr4.js} +0 -0
- /package/dist/assets/{velocity-B5BPA7FX.js → velocity-DUbAzJtM.js} +0 -0
- /package/dist/assets/{verilog-BwmYR8E3.js → verilog-DK7zLFMr.js} +0 -0
- /package/dist/assets/{vhdl-VXFnDy2U.js → vhdl-B9Tq3stB.js} +0 -0
- /package/dist/assets/{web-vitals-BaMazlva.js → web-vitals-CJ8ovao_.js} +0 -0
- /package/dist/assets/{webidl-Bcmf9JWd.js → webidl-C5qiIEir.js} +0 -0
- /package/dist/assets/{ws-CBdPISJL.js → ws-D2eS61zr.js} +0 -0
- /package/dist/assets/{xquery-8pWKOyFY.js → xquery-CmGczatZ.js} +0 -0
- /package/dist/assets/{yacas-BFcwo3Cx.js → yacas-BbepBpsT.js} +0 -0
- /package/dist/assets/{z80-t3SBb7Lt.js → z80-C2f-3LU8.js} +0 -0
|
@@ -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
|
+
});
|