@marimo-team/frontend 0.21.2-dev57 → 0.21.2-dev59
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-CxaQclsT.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-CrD6YkZ_.js +26 -0
- 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-BrQynBQn.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/components/editor/file-tree/file-explorer.tsx +16 -2
- package/src/components/editor/file-tree/file-viewer.tsx +17 -3
- 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/file-explorer-panel-DyUl_ws9.js +0 -26
- 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,376 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Round-trip tests: perform actions on a primary notebook (producing changes
|
|
5
|
+
* via the middleware), then apply those changes to a replica notebook via
|
|
6
|
+
* applyTransactionChanges. The two should converge to identical document state.
|
|
7
|
+
*
|
|
8
|
+
* This catches drift between what the middleware emits and what
|
|
9
|
+
* apply-transaction consumes.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { python } from "@codemirror/lang-python";
|
|
13
|
+
import { EditorState } from "@codemirror/state";
|
|
14
|
+
import { EditorView } from "@codemirror/view";
|
|
15
|
+
import {
|
|
16
|
+
afterAll,
|
|
17
|
+
afterEach,
|
|
18
|
+
beforeAll,
|
|
19
|
+
beforeEach,
|
|
20
|
+
describe,
|
|
21
|
+
expect,
|
|
22
|
+
it,
|
|
23
|
+
} from "vitest";
|
|
24
|
+
import { cellId } from "@/__tests__/branded";
|
|
25
|
+
import type { CellHandle } from "@/components/editor/notebook-cell";
|
|
26
|
+
import { adaptiveLanguageConfiguration } from "@/core/codemirror/language/extension";
|
|
27
|
+
import { OverridingHotkeyProvider } from "@/core/hotkeys/hotkeys";
|
|
28
|
+
import { MultiColumn } from "@/utils/id-tree";
|
|
29
|
+
import { exportedForTesting, type NotebookState } from "../cells";
|
|
30
|
+
import {
|
|
31
|
+
applyTransactionChanges,
|
|
32
|
+
exportedForTesting as middlewareExports,
|
|
33
|
+
} from "../document-changes";
|
|
34
|
+
import { CellId } from "../ids";
|
|
35
|
+
|
|
36
|
+
const { initialNotebookState, reducer, createActions } = exportedForTesting;
|
|
37
|
+
const { drainChanges } = middlewareExports;
|
|
38
|
+
|
|
39
|
+
function createEditor(code: string) {
|
|
40
|
+
const state = EditorState.create({
|
|
41
|
+
doc: code,
|
|
42
|
+
extensions: [
|
|
43
|
+
python(),
|
|
44
|
+
adaptiveLanguageConfiguration({
|
|
45
|
+
cellId: cellId("cell1"),
|
|
46
|
+
completionConfig: {
|
|
47
|
+
activate_on_typing: true,
|
|
48
|
+
signature_hint_on_typing: false,
|
|
49
|
+
copilot: false,
|
|
50
|
+
codeium_api_key: null,
|
|
51
|
+
},
|
|
52
|
+
hotkeys: new OverridingHotkeyProvider({}),
|
|
53
|
+
placeholderType: "marimo-import",
|
|
54
|
+
lspConfig: {},
|
|
55
|
+
}),
|
|
56
|
+
],
|
|
57
|
+
});
|
|
58
|
+
return new EditorView({ state, parent: document.body });
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// --- Primary notebook: performs actions, middleware produces changes ---
|
|
62
|
+
|
|
63
|
+
let primary: NotebookState;
|
|
64
|
+
|
|
65
|
+
const primaryActions = createActions((action) => {
|
|
66
|
+
primary = reducer(primary, action);
|
|
67
|
+
for (const [cellIdString, handle] of Object.entries(primary.cellHandles)) {
|
|
68
|
+
// @ts-expect-error - Object.entries doesn't know keys are CellId
|
|
69
|
+
const cid: CellId = cellIdString;
|
|
70
|
+
if (!handle.current) {
|
|
71
|
+
const view = createEditor(primary.cellData[cid].code);
|
|
72
|
+
const h: CellHandle = { editorView: view, editorViewOrNull: view };
|
|
73
|
+
primary.cellHandles[cid] = { current: h };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// --- Replica notebook: receives changes via applyTransactionChanges ---
|
|
79
|
+
|
|
80
|
+
let replica: NotebookState;
|
|
81
|
+
|
|
82
|
+
const replicaActions = createActions((action) => {
|
|
83
|
+
replica = reducer(replica, action);
|
|
84
|
+
for (const [cellIdString, handle] of Object.entries(replica.cellHandles)) {
|
|
85
|
+
// @ts-expect-error - Object.entries doesn't know keys are CellId
|
|
86
|
+
const cid: CellId = cellIdString;
|
|
87
|
+
if (!handle.current) {
|
|
88
|
+
const view = createEditor(replica.cellData[cid].code);
|
|
89
|
+
const h: CellHandle = { editorView: view, editorViewOrNull: view };
|
|
90
|
+
replica.cellHandles[cid] = { current: h };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
let i = 0;
|
|
96
|
+
const originalCreate = CellId.create.bind(CellId);
|
|
97
|
+
|
|
98
|
+
beforeAll(() => {
|
|
99
|
+
CellId.create = () => cellId(`${i++}`);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
beforeEach(() => {
|
|
103
|
+
i = 0;
|
|
104
|
+
primary = initialNotebookState();
|
|
105
|
+
primary.cellIds = MultiColumn.from([]);
|
|
106
|
+
drainChanges();
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
afterEach(() => {
|
|
110
|
+
middlewareExports.cancelPendingChanges();
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
afterAll(() => {
|
|
114
|
+
CellId.create = originalCreate;
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
/** Set up both notebooks with the same initial cells. */
|
|
118
|
+
function setup(...codes: string[]) {
|
|
119
|
+
for (const code of codes) {
|
|
120
|
+
primaryActions.createNewCell({
|
|
121
|
+
cellId: "__end__",
|
|
122
|
+
before: false,
|
|
123
|
+
code,
|
|
124
|
+
newCellId: CellId.create(),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Apply the setup changes to the replica so both start identical
|
|
129
|
+
const setupChanges = drainChanges();
|
|
130
|
+
replica = initialNotebookState();
|
|
131
|
+
replica.cellIds = MultiColumn.from([]);
|
|
132
|
+
applyTransactionChanges(
|
|
133
|
+
setupChanges,
|
|
134
|
+
replicaActions,
|
|
135
|
+
() => replica.cellIds.inOrderIds,
|
|
136
|
+
);
|
|
137
|
+
// Drain any changes the replica's middleware produced
|
|
138
|
+
drainChanges();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Drain changes from the primary's middleware and apply them to the replica.
|
|
143
|
+
*/
|
|
144
|
+
function sync() {
|
|
145
|
+
const changes = drainChanges();
|
|
146
|
+
applyTransactionChanges(
|
|
147
|
+
changes,
|
|
148
|
+
replicaActions,
|
|
149
|
+
() => replica.cellIds.inOrderIds,
|
|
150
|
+
);
|
|
151
|
+
// Drain any changes the replica's middleware produced (we don't want those)
|
|
152
|
+
drainChanges();
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Extract the document-relevant state: cell ordering, code, name, config.
|
|
157
|
+
* This is the "NotebookDocument" equivalent — what the Python side tracks.
|
|
158
|
+
*
|
|
159
|
+
* TODO(column-config): config.column is excluded because the column
|
|
160
|
+
* reducers (addColumnBreakpoint, dropOverNewColumn, moveColumn, etc.)
|
|
161
|
+
* update cellIds (MultiColumn structure) but don't sync config.column
|
|
162
|
+
* on affected cells. The middleware correctly emits set-config changes with
|
|
163
|
+
* the new column index, but the primary's config.column stays stale,
|
|
164
|
+
* causing a mismatch with the replica. Fix: have the column reducers
|
|
165
|
+
* update config.column as part of their state transition, then remove
|
|
166
|
+
* the { column: _, ...config } exclusion here.
|
|
167
|
+
*/
|
|
168
|
+
function documentSnapshot(state: NotebookState) {
|
|
169
|
+
return state.cellIds.inOrderIds.map((id) => {
|
|
170
|
+
const { column: _, ...config } = state.cellData[id].config;
|
|
171
|
+
return {
|
|
172
|
+
id,
|
|
173
|
+
code: state.cellData[id].code,
|
|
174
|
+
name: state.cellData[id].name,
|
|
175
|
+
config,
|
|
176
|
+
};
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
describe("document round-trip", () => {
|
|
181
|
+
it("initial setup converges", () => {
|
|
182
|
+
setup("a", "b", "c");
|
|
183
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
it("createNewCell at end", () => {
|
|
187
|
+
setup("a", "b");
|
|
188
|
+
primaryActions.createNewCell({
|
|
189
|
+
cellId: "__end__",
|
|
190
|
+
before: false,
|
|
191
|
+
code: "c",
|
|
192
|
+
newCellId: CellId.create(),
|
|
193
|
+
});
|
|
194
|
+
sync();
|
|
195
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
it("createNewCell before first cell", () => {
|
|
199
|
+
setup("a", "b");
|
|
200
|
+
const [a] = primary.cellIds.inOrderIds;
|
|
201
|
+
primaryActions.createNewCell({
|
|
202
|
+
cellId: a,
|
|
203
|
+
before: true,
|
|
204
|
+
code: "before-a",
|
|
205
|
+
newCellId: CellId.create(),
|
|
206
|
+
});
|
|
207
|
+
sync();
|
|
208
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
it("createNewCell between cells", () => {
|
|
212
|
+
setup("a", "b", "c");
|
|
213
|
+
const [a] = primary.cellIds.inOrderIds;
|
|
214
|
+
primaryActions.createNewCell({
|
|
215
|
+
cellId: a,
|
|
216
|
+
before: false,
|
|
217
|
+
code: "between",
|
|
218
|
+
newCellId: CellId.create(),
|
|
219
|
+
});
|
|
220
|
+
sync();
|
|
221
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
it("createNewCell with hideCode config", () => {
|
|
225
|
+
setup("a");
|
|
226
|
+
primaryActions.createNewCell({
|
|
227
|
+
cellId: "__end__",
|
|
228
|
+
before: false,
|
|
229
|
+
code: "hidden",
|
|
230
|
+
newCellId: CellId.create(),
|
|
231
|
+
hideCode: true,
|
|
232
|
+
});
|
|
233
|
+
sync();
|
|
234
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
it("deleteCell", () => {
|
|
238
|
+
setup("a", "b", "c");
|
|
239
|
+
const [, b] = primary.cellIds.inOrderIds;
|
|
240
|
+
primaryActions.deleteCell({ cellId: b });
|
|
241
|
+
sync();
|
|
242
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
it("updateCellCode", () => {
|
|
246
|
+
setup("a", "b");
|
|
247
|
+
const [a] = primary.cellIds.inOrderIds;
|
|
248
|
+
primaryActions.updateCellCode({
|
|
249
|
+
cellId: a,
|
|
250
|
+
code: "updated",
|
|
251
|
+
formattingChange: false,
|
|
252
|
+
});
|
|
253
|
+
sync();
|
|
254
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
it("updateCellName", () => {
|
|
258
|
+
setup("a");
|
|
259
|
+
const [a] = primary.cellIds.inOrderIds;
|
|
260
|
+
primaryActions.updateCellName({ cellId: a, name: "my_var" });
|
|
261
|
+
sync();
|
|
262
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
it("updateCellConfig", () => {
|
|
266
|
+
setup("a");
|
|
267
|
+
const [a] = primary.cellIds.inOrderIds;
|
|
268
|
+
primaryActions.updateCellConfig({
|
|
269
|
+
cellId: a,
|
|
270
|
+
config: { hide_code: true, disabled: true },
|
|
271
|
+
});
|
|
272
|
+
sync();
|
|
273
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
it("moveCell down", () => {
|
|
277
|
+
setup("a", "b", "c");
|
|
278
|
+
const [a] = primary.cellIds.inOrderIds;
|
|
279
|
+
primaryActions.moveCell({ cellId: a, before: false });
|
|
280
|
+
sync();
|
|
281
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
it("sendToTop", () => {
|
|
285
|
+
setup("a", "b", "c");
|
|
286
|
+
const c = primary.cellIds.inOrderIds[2];
|
|
287
|
+
primaryActions.sendToTop({ cellId: c });
|
|
288
|
+
sync();
|
|
289
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
it("sendToBottom", () => {
|
|
293
|
+
setup("a", "b", "c");
|
|
294
|
+
const [a] = primary.cellIds.inOrderIds;
|
|
295
|
+
primaryActions.sendToBottom({ cellId: a });
|
|
296
|
+
sync();
|
|
297
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
it("dropCellOverCell", () => {
|
|
301
|
+
setup("a", "b", "c");
|
|
302
|
+
const [a, , c] = primary.cellIds.inOrderIds;
|
|
303
|
+
primaryActions.dropCellOverCell({ cellId: c, overCellId: a });
|
|
304
|
+
sync();
|
|
305
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
it("multiple operations in sequence", () => {
|
|
309
|
+
setup("a", "b", "c");
|
|
310
|
+
|
|
311
|
+
// Add a cell
|
|
312
|
+
const [a] = primary.cellIds.inOrderIds;
|
|
313
|
+
primaryActions.createNewCell({
|
|
314
|
+
cellId: a,
|
|
315
|
+
before: false,
|
|
316
|
+
code: "new",
|
|
317
|
+
newCellId: CellId.create(),
|
|
318
|
+
});
|
|
319
|
+
sync();
|
|
320
|
+
|
|
321
|
+
// Rename it
|
|
322
|
+
const newId = primary.cellIds.inOrderIds[1];
|
|
323
|
+
primaryActions.updateCellName({ cellId: newId, name: "inserted" });
|
|
324
|
+
sync();
|
|
325
|
+
|
|
326
|
+
// Move it to top
|
|
327
|
+
primaryActions.sendToTop({ cellId: newId });
|
|
328
|
+
sync();
|
|
329
|
+
|
|
330
|
+
// Update code on another cell
|
|
331
|
+
const last =
|
|
332
|
+
primary.cellIds.inOrderIds[primary.cellIds.inOrderIds.length - 1];
|
|
333
|
+
primaryActions.updateCellCode({
|
|
334
|
+
cellId: last,
|
|
335
|
+
code: "modified",
|
|
336
|
+
formattingChange: false,
|
|
337
|
+
});
|
|
338
|
+
sync();
|
|
339
|
+
|
|
340
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
it("create then delete", () => {
|
|
344
|
+
setup("a", "b");
|
|
345
|
+
primaryActions.createNewCell({
|
|
346
|
+
cellId: "__end__",
|
|
347
|
+
before: false,
|
|
348
|
+
code: "temporary",
|
|
349
|
+
newCellId: CellId.create(),
|
|
350
|
+
});
|
|
351
|
+
sync();
|
|
352
|
+
|
|
353
|
+
const newId =
|
|
354
|
+
primary.cellIds.inOrderIds[primary.cellIds.inOrderIds.length - 1];
|
|
355
|
+
primaryActions.deleteCell({ cellId: newId });
|
|
356
|
+
sync();
|
|
357
|
+
|
|
358
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
it("addColumnBreakpoint", () => {
|
|
362
|
+
setup("a", "b", "c");
|
|
363
|
+
const [, b] = primary.cellIds.inOrderIds;
|
|
364
|
+
primaryActions.addColumnBreakpoint({ cellId: b });
|
|
365
|
+
sync();
|
|
366
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
it("dropOverNewColumn", () => {
|
|
370
|
+
setup("a", "b", "c");
|
|
371
|
+
const [, b] = primary.cellIds.inOrderIds;
|
|
372
|
+
primaryActions.dropOverNewColumn({ cellId: b });
|
|
373
|
+
sync();
|
|
374
|
+
expect(documentSnapshot(primary)).toEqual(documentSnapshot(replica));
|
|
375
|
+
});
|
|
376
|
+
});
|
package/src/core/cells/cells.ts
CHANGED
|
@@ -29,6 +29,7 @@ import type { CellConfig } from "../network/types";
|
|
|
29
29
|
import { isRtcEnabled } from "../rtc/state";
|
|
30
30
|
import { createDeepEqualAtom, store } from "../state/jotai";
|
|
31
31
|
import { prepareCellForExecution, transitionCell } from "./cell";
|
|
32
|
+
import { documentTransactionMiddleware } from "./document-changes";
|
|
32
33
|
import { CellId, SCRATCH_CELL_ID, SETUP_CELL_ID } from "./ids";
|
|
33
34
|
import { type CellLog, getCellLogsForMessage } from "./logs";
|
|
34
35
|
import {
|
|
@@ -174,6 +175,7 @@ export interface CreateNewCellAction {
|
|
|
174
175
|
*/
|
|
175
176
|
const {
|
|
176
177
|
reducer,
|
|
178
|
+
addMiddleware,
|
|
177
179
|
createActions,
|
|
178
180
|
useActions,
|
|
179
181
|
valueAtom: notebookAtom,
|
|
@@ -756,13 +758,28 @@ const {
|
|
|
756
758
|
},
|
|
757
759
|
handleCellMessage: (state, message: CellMessage) => {
|
|
758
760
|
const cellId = message.cell_id;
|
|
759
|
-
|
|
761
|
+
let nextState = updateCellRuntimeState({
|
|
760
762
|
state,
|
|
761
763
|
cellId,
|
|
762
764
|
cellReducer: (cell) => {
|
|
763
765
|
return transitionCell(cell, message);
|
|
764
766
|
},
|
|
765
767
|
});
|
|
768
|
+
// When a cell is queued for execution, snapshot the current code
|
|
769
|
+
// as lastCodeRun. This clears staleness for cells executed by the
|
|
770
|
+
// kernel (e.g. via code_mode). If the user edits during execution,
|
|
771
|
+
// code !== lastCodeRun keeps the cell stale.
|
|
772
|
+
if (message.status === "queued") {
|
|
773
|
+
nextState = updateCellData({
|
|
774
|
+
state: nextState,
|
|
775
|
+
cellId,
|
|
776
|
+
cellReducer: (cell) => ({
|
|
777
|
+
...cell,
|
|
778
|
+
lastCodeRun: cell.code.trim(),
|
|
779
|
+
edited: false,
|
|
780
|
+
}),
|
|
781
|
+
});
|
|
782
|
+
}
|
|
766
783
|
return {
|
|
767
784
|
...nextState,
|
|
768
785
|
cellLogs: [...nextState.cellLogs, ...getCellLogsForMessage(message)],
|
|
@@ -1405,6 +1422,12 @@ const {
|
|
|
1405
1422
|
},
|
|
1406
1423
|
});
|
|
1407
1424
|
|
|
1425
|
+
// We apply the middleware here (rather than inline in createReducerAndAtoms)
|
|
1426
|
+
// so that the document transaction middleware can import CellActions and
|
|
1427
|
+
// strictly type the dispatched actions without creating a circular dependency.
|
|
1428
|
+
// @ts-expect-error - TODO: We should have better types for the middleware that are strict
|
|
1429
|
+
addMiddleware(documentTransactionMiddleware);
|
|
1430
|
+
|
|
1408
1431
|
function isCellCodeHidden(state: NotebookState, cellId: CellId): boolean {
|
|
1409
1432
|
return (
|
|
1410
1433
|
Boolean(state.cellData[cellId].config.hide_code) &&
|
|
@@ -1789,8 +1812,10 @@ export function createTracebackInfoAtom(
|
|
|
1789
1812
|
* Use this hook to dispatch cell actions. This hook will not cause a re-render
|
|
1790
1813
|
* when cells change.
|
|
1791
1814
|
*/
|
|
1792
|
-
export function useCellActions(
|
|
1793
|
-
|
|
1815
|
+
export function useCellActions(
|
|
1816
|
+
options: { skipMiddleware?: boolean } = {},
|
|
1817
|
+
): CellActions {
|
|
1818
|
+
return useActions(options);
|
|
1794
1819
|
}
|
|
1795
1820
|
|
|
1796
1821
|
/**
|