@marimo-team/frontend 0.21.2-dev63 → 0.21.2-dev69
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-CSyn_YBv.js → CellStatus-BWh3L8zx.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-Dl5LOVOh.js → ConnectedDataExplorerComponent-BUeDbkXy.js} +1 -1
- package/dist/assets/JsonOutput-Bmx1vme7.js +46 -0
- package/dist/assets/LazyAnyLanguageCodeMirror-BTEcIffn.js +2 -0
- package/dist/assets/{MarimoErrorOutput-DocWeKjV.js → MarimoErrorOutput-3snr3JrQ.js} +4 -4
- package/dist/assets/{RenderHTML-26aAKQ-8.js → RenderHTML-C9ZqxJ8H.js} +1 -1
- package/dist/assets/{add-cell-with-ai-BSWYMy0y.js → add-cell-with-ai-u_AX7UAd.js} +9 -9
- package/dist/assets/{add-connection-dialog-S-Hiw5Sn.js → add-connection-dialog-COHTxTf9.js} +1 -1
- package/dist/assets/{agent-panel-lhTAqQ2T.js → agent-panel-DiqyaNm8.js} +5 -5
- package/dist/assets/{ai-model-dropdown-C_T_oAXa.js → ai-model-dropdown-Dybmv5gR.js} +4 -4
- package/dist/assets/{any-language-editor-Dx3VFLbz.js → any-language-editor-DVOJvjS_.js} +1 -1
- package/dist/assets/apl-EWXxdJ89.js +1 -0
- package/dist/assets/{app-config-button-CEpYCUvC.js → app-config-button-BldM7HZH.js} +1 -1
- package/dist/assets/{arc-CFxCF0f6.js → arc-CM3JIGAK.js} +1 -1
- package/dist/assets/{architecture-7HQA4BMR-3vsMDKTP.js → architecture-7HQA4BMR-CjBWfzkw.js} +1 -1
- package/dist/assets/{architectureDiagram-VXUJARFQ-D9kPM0z9.js → architectureDiagram-VXUJARFQ-Bj7Il1tu.js} +1 -1
- package/dist/assets/asciiarmor-DSR32lM3.js +1 -0
- package/dist/assets/asn1-CzLTElTA.js +1 -0
- package/dist/assets/{blockDiagram-VD42YOAC-BAyg1LmM.js → blockDiagram-VD42YOAC-oQ23Vi0_.js} +1 -1
- package/dist/assets/brainfuck-C9KAsPxY.js +1 -0
- package/dist/assets/{c4Diagram-YG6GDRKO--4bijtys.js → c4Diagram-YG6GDRKO-BmG_s0MV.js} +1 -1
- package/dist/assets/{cache-panel-tss6GZ39.js → cache-panel-CcvLLOUr.js} +1 -1
- package/dist/assets/{cell-editor-DlHW5qr3.js → cell-editor-D6-drdh3.js} +8 -8
- package/dist/assets/{cell-link-BgNPg6FR.js → cell-link-DV3G9zVQ.js} +1 -1
- package/dist/assets/{cells-BZ2tqr8k.js → cells-B8rT_yJt.js} +54 -54
- package/dist/assets/channel-Ce6sVGv4.js +1 -0
- package/dist/assets/{chat-display-2RrXeUHQ.js → chat-display-DSlMdLnv.js} +1 -1
- package/dist/assets/chat-panel-BhurwxDK.js +3 -0
- package/dist/assets/{chat-ui-gqaOvAn5.js → chat-ui-BL1vsaOH.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-DF0hGcQN.js → chunk-4BX2VUAB-B189RnQe.js} +1 -1
- package/dist/assets/chunk-55IACEB6-BKJUfbeh.js +1 -0
- package/dist/assets/chunk-5FQGJX7Z-KaqPPQRg.js +113 -0
- package/dist/assets/{chunk-ABZYJK2D-YAqD84U8.js → chunk-ABZYJK2D-B25ZPF-K.js} +3 -3
- package/dist/assets/{chunk-ATLVNIR6-DbiqnFFy.js → chunk-ATLVNIR6-B45gjfoT.js} +1 -1
- package/dist/assets/{chunk-B4BG7PRW-CPghmS_2.js → chunk-B4BG7PRW-uViI8VWN.js} +1 -1
- package/dist/assets/{chunk-CVBHYZKI-5HVb4Wim.js → chunk-CVBHYZKI-DDPYtx7T.js} +1 -1
- package/dist/assets/{chunk-DI55MBZ5-CfK3aKqu.js → chunk-DI55MBZ5-DLM1fyq0.js} +1 -1
- package/dist/assets/{chunk-EXTU4WIE-Ce4YyDo3.js → chunk-EXTU4WIE-se83eFLa.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-BeZPwy7p.js → chunk-FMBD7UC4-DVUAz4cp.js} +1 -1
- package/dist/assets/{chunk-HN2XXSSU-DjhZVPDs.js → chunk-HN2XXSSU-Bm9ByQAV.js} +1 -1
- package/dist/assets/{chunk-JA3XYJ7Z-DZPNtCK-.js → chunk-JA3XYJ7Z-Bf9EPUd3.js} +1 -1
- package/dist/assets/{chunk-JZLCHNYA-Dpe2M-yf.js → chunk-JZLCHNYA-CgH-oTl4.js} +1 -1
- package/dist/assets/{chunk-MI3HLSF2-pZk5-wBb.js → chunk-MI3HLSF2-BjSxv-Tb.js} +1 -1
- package/dist/assets/{chunk-N4CR4FBY-DUuhotFe.js → chunk-N4CR4FBY-DggtmLIl.js} +2 -2
- package/dist/assets/{chunk-QN33PNHL-DOzVADWo.js → chunk-QN33PNHL-BieKJXyS.js} +1 -1
- package/dist/assets/{chunk-QXUST7PY-Bs7vzMFW.js → chunk-QXUST7PY-8icnqUGK.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-iAvgjPDy.js → chunk-QZHKN3VN-CETeUy72.js} +1 -1
- package/dist/assets/{chunk-S3R3BYOJ-CmOcQqk_.js → chunk-S3R3BYOJ-Czh1h7v6.js} +1 -1
- package/dist/assets/{chunk-TZMSLE5B-C1A4ubRR.js → chunk-TZMSLE5B-jYelYMXU.js} +1 -1
- package/dist/assets/classDiagram-2ON5EDUG-hMIK1Zdj.js +1 -0
- package/dist/assets/classDiagram-v2-WZHVMYZB-CoXOcl4J.js +1 -0
- package/dist/assets/{clike-BbrvoIeH.js → clike-OJZcTpQL.js} +1 -1
- package/dist/assets/clojure-DQhuUUMF.js +1 -0
- package/dist/assets/cmake-CH_Sxc86.js +1 -0
- package/dist/assets/cobol-CUc3YqiS.js +1 -0
- package/dist/assets/{code-block-37QAKDTI-DlumEtkK.js → code-block-37QAKDTI-OmWrUFvA.js} +1 -1
- package/dist/assets/coffeescript-jkPo-KDH.js +1 -0
- package/dist/assets/{column-preview-ClCjoT33.js → column-preview-MbViuzSN.js} +1 -1
- package/dist/assets/{command-BeKqRjOY.js → command-DvKBTmQJ.js} +1 -1
- package/dist/assets/command-palette-D1yVCClb.js +1 -0
- package/dist/assets/{common-D8-arIFt.js → common-MJu6yCEK.js} +1 -1
- package/dist/assets/commonlisp-Da0K5kk2.js +1 -0
- package/dist/assets/{components-4-hSIFip.js → components-CWfQv9p5.js} +1 -1
- package/dist/assets/components-fIfcCZSp.js +1 -0
- package/dist/assets/context-aware-panel-BPlijhXd.js +3 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-Dc-Xjmtt.js → cose-bilkent-S5V4N54A-Bi0_d7cB.js} +1 -1
- package/dist/assets/crystal-BNWfY9C_.js +1 -0
- package/dist/assets/{css-D6ibtNcd.js → css-Cupd7xng.js} +1 -1
- package/dist/assets/cypher--c26tz0e.js +1 -0
- package/dist/assets/d-Byku2dmh.js +1 -0
- package/dist/assets/{dagre-6UL2VRFP-CwgYeOyd.js → dagre-6UL2VRFP-Cj7QD8QV.js} +1 -1
- package/dist/assets/{data-grid-overlay-editor-DGw11cpx.js → data-grid-overlay-editor-CrDdi6s3.js} +1 -1
- package/dist/assets/{datasource-xu50qvjI.js → datasource-xomiPYKd.js} +2 -2
- package/dist/assets/{dependency-graph-panel-_khCuhB-.js → dependency-graph-panel-B24Gr6L4.js} +3 -3
- package/dist/assets/{diagram-PSM6KHXK-DSWsukz1.js → diagram-PSM6KHXK-f8hiJ27Z.js} +1 -1
- package/dist/assets/{diagram-QEK2KX5R-CUGL1lw-.js → diagram-QEK2KX5R-DhD0I0gb.js} +1 -1
- package/dist/assets/{diagram-S2PKOQOG-CNDV3U9h.js → diagram-S2PKOQOG-CMxSsKXF.js} +1 -1
- package/dist/assets/diff-a9CLcKdR.js +1 -0
- package/dist/assets/dist-BBGASQNR.js +1 -0
- package/dist/assets/{dist-DoTdV6qI.js → dist-BRCCPMsT.js} +1 -1
- package/dist/assets/{dist-BGKOvmq0.js → dist-CJ8RtgvK.js} +1 -1
- package/dist/assets/{dist-3Yb9jUpo.js → dist-COABhHhr.js} +1 -1
- package/dist/assets/dist-Cp7t_Bws.js +1 -0
- package/dist/assets/{dist-CtXmSZyI.js → dist-DROvTz9O.js} +1 -1
- package/dist/assets/dist-DWBTB8aa.js +1 -0
- package/dist/assets/{dist-DaPIfS-Q.js → dist-DeX768Hg.js} +1 -1
- package/dist/assets/{dist-p1_vuZ9R.js → dist-DrDZNjDr.js} +1 -1
- package/dist/assets/dist-Hf_DuPpM.js +7 -0
- package/dist/assets/{dist-Dhl1En-E.js → dist-LxLdJkvD.js} +1 -1
- package/dist/assets/{dist-DMoYJC-G.js → dist-VjWmUZA0.js} +1 -1
- package/dist/assets/{dist-Cgj9ydRR.js → dist-X-byYzEZ.js} +1 -1
- package/dist/assets/dist-Xnna0a3m.js +1 -0
- package/dist/assets/{dist-CgQ63H-M.js → dist-y02bFELW.js} +1 -1
- package/dist/assets/{dockerfile-bIFruQXZ.js → dockerfile-Cgz0GlPW.js} +1 -1
- package/dist/assets/{documentation-panel-B9z_DT6E.js → documentation-panel-DHLN-LCs.js} +1 -1
- package/dist/assets/{download-BX5RBVL8.js → download-CNJtCoWG.js} +4 -4
- package/dist/assets/dtd-CmqpGLbC.js +1 -0
- package/dist/assets/dylan-Cihtx9iT.js +1 -0
- package/dist/assets/ecl-CZoQOU3U.js +1 -0
- package/dist/assets/{edit-page-CZshKgxH.js → edit-page-DSclvhsD.js} +7 -7
- package/dist/assets/eiffel-Br4OQEbu.js +1 -0
- package/dist/assets/elm-BPOnYPcO.js +1 -0
- package/dist/assets/{erDiagram-Q2GNP2WA-DfiRRg2v.js → erDiagram-Q2GNP2WA-BZbca8vs.js} +1 -1
- package/dist/assets/erlang-DuwMV84m.js +1 -0
- package/dist/assets/{error-panel-B-L35J0Q.js → error-panel-BprMlRWd.js} +1 -1
- package/dist/assets/{esm-Uis3U2sE.js → esm-BjKAkBIt.js} +1 -1
- package/dist/assets/factor-6YAhArFy.js +1 -0
- package/dist/assets/{factor-COZKt8xO.js → factor-ByjtQqb6.js} +1 -1
- package/dist/assets/{file-explorer-panel-DSpZ25B3.js → file-explorer-panel-m1TdIRXI.js} +2 -2
- package/dist/assets/{file-icons-zT5xSrpN.js → file-icons-I3TgHXBH.js} +1 -1
- package/dist/assets/{floating-outline-DlCEpJuo.js → floating-outline-BUsBWnrz.js} +1 -1
- package/dist/assets/{flowDiagram-NV44I4VS-Dnt7RRaD.js → flowDiagram-NV44I4VS-ffFKaqut.js} +1 -1
- package/dist/assets/{focus-CpM6NAz2.js → focus-DWfOBGUg.js} +1 -1
- package/dist/assets/{form-DqfJycRl.js → form-DNvI4VkE.js} +1 -1
- package/dist/assets/forth-2Nj_EUdH.js +1 -0
- package/dist/assets/fortran-CCKPCngf.js +1 -0
- package/dist/assets/{gallery-page-plavkcxH.js → gallery-page-C-cbnxxr.js} +1 -1
- package/dist/assets/{ganttDiagram-JELNMOA3-DzaeerR-.js → ganttDiagram-JELNMOA3-fI3e8q9G.js} +1 -1
- package/dist/assets/gas-DQfJyQA6.js +1 -0
- package/dist/assets/gherkin-CtG4Rl1f.js +1 -0
- package/dist/assets/{gitGraph-G5XIXVHT-DX1Iaeeg.js → gitGraph-G5XIXVHT-Dr_vttV5.js} +1 -1
- package/dist/assets/{gitGraphDiagram-V2S2FVAM-BwL84Mis.js → gitGraphDiagram-V2S2FVAM-B9zkU5OL.js} +1 -1
- package/dist/assets/{glide-data-editor-BoppQYWx.js → glide-data-editor-BUABnEhp.js} +4 -4
- package/dist/assets/{globals-zG_ueqN3.js → globals-B7uZUVXG.js} +1 -1
- package/dist/assets/groovy-DmN1hhD-.js +1 -0
- package/dist/assets/haskell-Bv99dcka.js +1 -0
- package/dist/assets/haxe-C4SwAtv2.js +1 -0
- package/dist/assets/{home-page-CPKakvcY.js → home-page-B1ioyqaQ.js} +2 -2
- package/dist/assets/{hooks-CpTBKWcv.js → hooks-BamtnkZu.js} +1 -1
- package/dist/assets/{html-to-image-D_3oFpSp.js → html-to-image-BtnUxAf2.js} +1 -1
- package/dist/assets/idl-Cip3qUaw.js +1 -0
- package/dist/assets/index-ZQyELpNQ.js +35 -0
- package/dist/assets/{info-VBDWY6EO-DI87Cx_N.js → info-VBDWY6EO-_MKnIvva.js} +1 -1
- package/dist/assets/infoDiagram-HS3SLOUP-DcmWVuHy.js +2 -0
- package/dist/assets/javascript-D01OZFLf.js +1 -0
- package/dist/assets/{journeyDiagram-XKPGCS4Q-KRjBx01o.js → journeyDiagram-XKPGCS4Q-Bi3SDkGt.js} +1 -1
- package/dist/assets/julia-CdUg5Gin.js +1 -0
- package/dist/assets/{kanban-definition-3W4ZIXB7-C9LSOY6_.js → kanban-definition-3W4ZIXB7-DHPI88SO.js} +1 -1
- package/dist/assets/katex-CKMiPDPy.js +1 -0
- package/dist/assets/{kiosk-mode-PvGxCz81.js → kiosk-mode-DvjY7Q8k.js} +1 -1
- package/dist/assets/{layout-am3J4ZNA.js → layout-BprbwmmO.js} +4 -4
- package/dist/assets/{line-vDGbKzUj.js → line-BX1v8gkY.js} +1 -1
- package/dist/assets/{linear-JR9qrU26.js → linear-_5G-OhLA.js} +1 -1
- package/dist/assets/livescript-CmA_pEQi.js +1 -0
- package/dist/assets/{logs-panel-CIdtLrmS.js → logs-panel-Iivn5vVF.js} +1 -1
- package/dist/assets/{loro_wasm_bg-BYni_6Sh.js → loro_wasm_bg-C9dMIWjp.js} +1 -1
- package/dist/assets/lua-BBGGibto.js +1 -0
- package/dist/assets/markdown-renderer-f7AvSa1a.js +5 -0
- package/dist/assets/mathematica-EVwiHsb7.js +1 -0
- package/dist/assets/mbox-f9FpJMps.js +1 -0
- package/dist/assets/mermaid-4DMBBIKO-CsD09XZ_.js +1 -0
- package/dist/assets/{mermaid-g45SBZs4.js → mermaid-BdekQaCQ.js} +3 -3
- package/dist/assets/{mermaid-parser.core-D2CUV57N.js → mermaid-parser.core-hTN4xwYK.js} +2 -2
- package/dist/assets/{mhchem-eTdlE0-_.js → mhchem-CgESkxWV.js} +1 -1
- package/dist/assets/micromark-factory-space-4isUgE6w.js +1 -0
- package/dist/assets/{mindmap-definition-VGOIOE7T-DbAsaD82.js → mindmap-definition-VGOIOE7T-DEN1Ym_B.js} +1 -1
- package/dist/assets/mirc-CKQuidRI.js +1 -0
- package/dist/assets/mllike-DSE7K0L_.js +1 -0
- package/dist/assets/modelica-BLWpmE6J.js +1 -0
- package/dist/assets/mscgen-DUGTvav7.js +1 -0
- package/dist/assets/mumps-De-aL68G.js +1 -0
- package/dist/assets/{name-cell-input-CFXvT7wQ.js → name-cell-input-CzVNuMqK.js} +1 -1
- package/dist/assets/{nsis-CQJx4ihu.js → nsis-BKA2hITd.js} +1 -1
- package/dist/assets/nsis-GZVZ8s9U.js +1 -0
- package/dist/assets/ntriples-8e_qYaH4.js +1 -0
- package/dist/assets/{number-overlay-editor-BIXBlRQQ.js → number-overlay-editor-CDWHq1mJ.js} +1 -1
- package/dist/assets/octave-BV_-gmS1.js +1 -0
- package/dist/assets/{ordinal-vRIIH2-b.js → ordinal-BL0TAfDQ.js} +1 -1
- package/dist/assets/{outline-panel-Dbp5O4xk.js → outline-panel-QyE6tr_2.js} +1 -1
- package/dist/assets/oz-B0uIrvBT.js +1 -0
- package/dist/assets/{packages-panel-C6Cj2Dox.js → packages-panel-D9pbtgFY.js} +1 -1
- package/dist/assets/{packet-DYOGHKS2-tVzgtQkA.js → packet-DYOGHKS2-Cr8AvEnH.js} +1 -1
- package/dist/assets/panels-CIHy1Jh4.js +1 -0
- package/dist/assets/pascal-P8oljycx.js +1 -0
- package/dist/assets/perl-C9B7mnkS.js +1 -0
- package/dist/assets/{pie-VRWISCQL-QmTjjdah.js → pie-VRWISCQL-18iiky4b.js} +1 -1
- package/dist/assets/{pieDiagram-ADFJNKIX-DPlhC-O4.js → pieDiagram-ADFJNKIX-BY90tkn0.js} +1 -1
- package/dist/assets/pig-CrydCWlQ.js +1 -0
- package/dist/assets/powershell-BNzz8aRp.js +1 -0
- package/dist/assets/{process-output-CgWMJc-C.js → process-output-5fC8hAfT.js} +1 -1
- package/dist/assets/properties-C81OZegg.js +1 -0
- package/dist/assets/protobuf-DXcVcUng.js +1 -0
- package/dist/assets/{pug-Yt6Urxo2.js → pug-Bc3B5zy9.js} +1 -1
- package/dist/assets/pug-D2oI7kNu.js +1 -0
- package/dist/assets/puppet-DNlzsFMc.js +1 -0
- package/dist/assets/python-CdBemvol.js +1 -0
- package/dist/assets/q-CB51ViwQ.js +1 -0
- package/dist/assets/{quadrantDiagram-AYHSOK5B-jnE3mG3Y.js → quadrantDiagram-AYHSOK5B-DscgxREu.js} +1 -1
- package/dist/assets/r-lEjVwdCN.js +1 -0
- package/dist/assets/{radar-ZZBFDIW7-2_FgLRzo.js → radar-ZZBFDIW7-DP-828em.js} +1 -1
- package/dist/assets/{react-vega-_sDwqIeC.js → react-vega-CFucxlM_.js} +1 -1
- package/dist/assets/{react-vega-Bg7wgNWC.js → react-vega-C_nbap4W.js} +1 -1
- package/dist/assets/{readonly-python-code-CjHN1YzV.js → readonly-python-code-CvuT43MO.js} +1 -1
- package/dist/assets/{requirementDiagram-UZGBJVZJ-BwnFZdZm.js → requirementDiagram-UZGBJVZJ-DuOL6ww3.js} +1 -1
- package/dist/assets/rpm-DDM5IEHy.js +1 -0
- package/dist/assets/ruby-93dn3nLg.js +1 -0
- package/dist/assets/run-page-DMxwtlBe.js +1 -0
- package/dist/assets/{sankeyDiagram-TZEHDZUN-G8bGgtok.js → sankeyDiagram-TZEHDZUN-CrhC3Xh7.js} +1 -1
- package/dist/assets/sas-CbG03D2N.js +1 -0
- package/dist/assets/scheme-B2cyUK_0.js +1 -0
- package/dist/assets/scratchpad-panel-Bkco4w7y.js +1 -0
- package/dist/assets/{secrets-panel-v_peqjs9.js → secrets-panel-ByDa4skC.js} +1 -1
- package/dist/assets/{sequenceDiagram-WL72ISMW-CVokZRk6.js → sequenceDiagram-WL72ISMW-DNBtGacp.js} +1 -1
- package/dist/assets/session-panel-Bg7Zvg3Y.js +1 -0
- package/dist/assets/shell-BUKevxDL.js +1 -0
- package/dist/assets/sieve-DBd5VCju.js +1 -0
- package/dist/assets/smalltalk-DEMxPY2H.js +1 -0
- package/dist/assets/{snippets-panel-wGOEVyqu.js → snippets-panel-Cn-0B9yk.js} +1 -1
- package/dist/assets/sparql-CuX1PPeN.js +1 -0
- package/dist/assets/{src-aBHYsoaw.js → src-BNdxo5s1.js} +1 -1
- package/dist/assets/{state-CI4FLWoL.js → state-DLmIk5GZ.js} +1 -1
- package/dist/assets/{stateDiagram-FKZM4ZOC-M7FBTKFZ.js → stateDiagram-FKZM4ZOC-Krq7gbW2.js} +1 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-Cw5LDI5M.js +1 -0
- package/dist/assets/{step-B_iSQA2q.js → step-OYH2hb7p.js} +1 -1
- package/dist/assets/stylus-aDxbv1u4.js +1 -0
- package/dist/assets/swift-OTokpssg.js +1 -0
- package/dist/assets/{switch-SqaUg_Rv.js → switch-CdyDieX7.js} +1 -1
- package/dist/assets/tcl-DJhWqArt.js +1 -0
- package/dist/assets/{terminal-C9H1AYRi.js → terminal-Cdh7bzOl.js} +1 -1
- package/dist/assets/{textarea-7F6-nuwz.js → textarea-y9GCP54I.js} +1 -1
- package/dist/assets/textile-DpS9C_zY.js +1 -0
- package/dist/assets/{time-Dl8wmbMf.js → time-LzCXNX8h.js} +1 -1
- package/dist/assets/{timeline-definition-IT6M3QCI-CfGh-Wfj.js → timeline-definition-IT6M3QCI-DOl0hCPz.js} +1 -1
- package/dist/assets/toml-kj-ibVms.js +1 -0
- package/dist/assets/{tracing-DxuknZTG.js → tracing-CggYKKpk.js} +1 -1
- package/dist/assets/{tracing-panel-yQoYble5.js → tracing-panel-BYfwYVLg.js} +2 -2
- package/dist/assets/{treemap-GDKQZRPO-Cnt0pazm.js → treemap-GDKQZRPO-CWmDSzQU.js} +1 -1
- package/dist/assets/troff-DLJL07gk.js +1 -0
- package/dist/assets/ttcn-cfg-DuCZQ2Km.js +1 -0
- package/dist/assets/ttcn-twc1Q5xq.js +1 -0
- package/dist/assets/turtle-BiLqIa2_.js +1 -0
- package/dist/assets/{useAddCell-Dluq9z9F.js → useAddCell-BGHDEB1g.js} +1 -1
- package/dist/assets/useCellActionButton-BbGQe83V.js +1 -0
- package/dist/assets/{useDeleteCell-B-MR7EAI.js → useDeleteCell-DG1VBfwX.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-D39ukyvA.js → useDependencyPanelTab-luj9RYTO.js} +1 -1
- package/dist/assets/{useNotebookActions-DH_ihkjl.js → useNotebookActions-D_r5jyXa.js} +1 -1
- package/dist/assets/useRunCells--USKPEQy.js +1 -0
- package/dist/assets/{useSplitCell-BwJPHVng.js → useSplitCell-DGXfa81A.js} +1 -1
- package/dist/assets/vb-BYvNbVBU.js +1 -0
- package/dist/assets/vbscript-CE30tjpc.js +1 -0
- package/dist/assets/{vega-component-BlvDymW4.js → vega-component-C3vNdTdH.js} +1 -1
- package/dist/assets/velocity-k2jshUC1.js +1 -0
- package/dist/assets/verilog-D-u-JakI.js +1 -0
- package/dist/assets/vhdl-CdNH8uWZ.js +1 -0
- package/dist/assets/webidl-CdMZNGiF.js +1 -0
- package/dist/assets/{write-secret-modal-xvi72o3J.js → write-secret-modal-BlZo70J1.js} +1 -1
- package/dist/assets/xquery-XKE48gN2.js +1 -0
- package/dist/assets/{xychartDiagram-PRI3JC2R-BjJjKS-4.js → xychartDiagram-PRI3JC2R-sn3q6uOF.js} +1 -1
- package/dist/assets/yacas-DbyKcdb9.js +1 -0
- package/dist/assets/z80-F2-i3nLg.js +1 -0
- package/dist/index.html +39 -39
- package/package.json +1 -1
- package/src/__mocks__/requests.ts +1 -0
- package/src/components/data-table/__tests__/columns.test.tsx +138 -0
- package/src/components/data-table/columns.tsx +44 -4
- package/src/components/data-table/filters.ts +1 -0
- package/src/components/datasources/datasources.tsx +45 -0
- package/src/components/markdown/markdown-renderer.tsx +18 -2
- package/src/core/datasets/__tests__/data-source.test.ts +88 -1
- package/src/core/datasets/data-source-connections.ts +44 -0
- package/src/core/datasets/request-registry.ts +13 -0
- package/src/core/islands/bridge.ts +1 -0
- package/src/core/islands/main.ts +1 -0
- package/src/core/kernel/messages.ts +2 -0
- package/src/core/network/requests-lazy.ts +1 -0
- package/src/core/network/requests-network.ts +8 -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 +2 -0
- package/src/core/wasm/bridge.ts +10 -0
- package/src/core/websocket/useMarimoKernelConnection.tsx +4 -0
- package/src/plugins/impl/DataTablePlugin.tsx +27 -0
- package/dist/assets/JsonOutput-Ca8qF0Zd.js +0 -46
- package/dist/assets/LazyAnyLanguageCodeMirror-BLyxzRTe.js +0 -2
- package/dist/assets/apl-DmIuLoM5.js +0 -1
- package/dist/assets/asciiarmor-Dw7r6FD5.js +0 -1
- package/dist/assets/asn1-49M6dOZ5.js +0 -1
- package/dist/assets/brainfuck-Dzb-bFPz.js +0 -1
- package/dist/assets/channel-8md9AqRV.js +0 -1
- package/dist/assets/chat-panel-DTfbqRHb.js +0 -3
- package/dist/assets/chunk-55IACEB6-DxdbD43d.js +0 -1
- package/dist/assets/chunk-5FQGJX7Z-Fb8WLBdo.js +0 -113
- package/dist/assets/classDiagram-2ON5EDUG-Ds4AwoP7.js +0 -1
- package/dist/assets/classDiagram-v2-WZHVMYZB-BmeOa_lI.js +0 -1
- package/dist/assets/clojure-D3f46AOj.js +0 -1
- package/dist/assets/cmake-CRns6FWA.js +0 -1
- package/dist/assets/cobol-tD7VjYkY.js +0 -1
- package/dist/assets/coffeescript-BMoHntr0.js +0 -1
- package/dist/assets/command-palette-CF05xO-u.js +0 -1
- package/dist/assets/commonlisp-tEbZ2txa.js +0 -1
- package/dist/assets/components-DlVdNzZL.js +0 -1
- package/dist/assets/context-aware-panel-BNcqd7JQ.js +0 -3
- package/dist/assets/crystal-tXxqRSmg.js +0 -1
- package/dist/assets/cypher-Clgr1THu.js +0 -1
- package/dist/assets/d-DGpF2gtm.js +0 -1
- package/dist/assets/diff-DQ8hzfLT.js +0 -1
- package/dist/assets/dist-BqsOX_yK.js +0 -1
- package/dist/assets/dist-CBYsx1lD.js +0 -1
- package/dist/assets/dist-CkG7HeJJ.js +0 -1
- package/dist/assets/dist-DkNQl8fU.js +0 -1
- package/dist/assets/dtd-9XKjDaRs.js +0 -1
- package/dist/assets/dylan-DQ7WSVaJ.js +0 -1
- package/dist/assets/ecl-_b3Ij92M.js +0 -1
- package/dist/assets/eiffel-v705-6sV.js +0 -1
- package/dist/assets/elm-kOjuB_fu.js +0 -1
- package/dist/assets/erlang-BKLrKn97.js +0 -1
- package/dist/assets/factor-CKv1cDHM.js +0 -1
- package/dist/assets/forth-BeW6w9NP.js +0 -1
- package/dist/assets/fortran-B8S6_jJw.js +0 -1
- package/dist/assets/gas-T2YF_8DP.js +0 -1
- package/dist/assets/gherkin-CCQo3jOa.js +0 -1
- package/dist/assets/groovy-D_aCkoaG.js +0 -1
- package/dist/assets/haskell-CVb05Hdq.js +0 -1
- package/dist/assets/haxe-BETJ4Q1p.js +0 -1
- package/dist/assets/idl-C9DSrKQo.js +0 -1
- package/dist/assets/index-DIqPLE1R.js +0 -35
- package/dist/assets/infoDiagram-HS3SLOUP-D-RQJqJ1.js +0 -2
- package/dist/assets/javascript-kMjsCkN0.js +0 -1
- package/dist/assets/julia-BP2iEwTU.js +0 -1
- package/dist/assets/katex-BPQZrIDk.js +0 -1
- package/dist/assets/livescript-DldCoAUO.js +0 -1
- package/dist/assets/lua-CZVER5WL.js +0 -1
- package/dist/assets/markdown-renderer-CGLrhCH1.js +0 -10
- package/dist/assets/mathematica-CyS1-stp.js +0 -1
- package/dist/assets/mbox-m36f2d6F.js +0 -1
- package/dist/assets/mermaid-4DMBBIKO-BDW1wyAE.js +0 -1
- package/dist/assets/mirc-1VmF-8bO.js +0 -1
- package/dist/assets/mllike-C03wQNgL.js +0 -1
- package/dist/assets/modelica-DIzukV30.js +0 -1
- package/dist/assets/mscgen-DWz8dZ6d.js +0 -1
- package/dist/assets/mumps-CYbIrX8J.js +0 -1
- package/dist/assets/nsis-CTQ0yRGk.js +0 -1
- package/dist/assets/ntriples-DSrrK8pU.js +0 -1
- package/dist/assets/octave-DMlW_nfV.js +0 -1
- package/dist/assets/oz-D3yFc57L.js +0 -1
- package/dist/assets/panels-cRpwb1m4.js +0 -1
- package/dist/assets/pascal-CQlQ3IN5.js +0 -1
- package/dist/assets/perl-DTZU_RzN.js +0 -1
- package/dist/assets/pig-Bhpnxpuq.js +0 -1
- package/dist/assets/powershell-NPR7ALKW.js +0 -1
- package/dist/assets/properties-vlTR87QN.js +0 -1
- package/dist/assets/protobuf-ByJ2pOLE.js +0 -1
- package/dist/assets/pug-CvW2XR0Z.js +0 -1
- package/dist/assets/puppet-Cq5I7FGe.js +0 -1
- package/dist/assets/python-BIseM0wl.js +0 -1
- package/dist/assets/q-Cxw6-L9w.js +0 -1
- package/dist/assets/r-BCPAUffd.js +0 -1
- package/dist/assets/rpm-axYHg47r.js +0 -1
- package/dist/assets/ruby-C3FVRZdA.js +0 -1
- package/dist/assets/run-page-CUq8ZpoZ.js +0 -1
- package/dist/assets/sas-CN65u8vG.js +0 -1
- package/dist/assets/scheme-CbiUNoDs.js +0 -1
- package/dist/assets/scratchpad-panel-CaZOnp24.js +0 -1
- package/dist/assets/session-panel-B5exQEib.js +0 -1
- package/dist/assets/shell-YEnz9M61.js +0 -1
- package/dist/assets/sieve-C-HxQpVW.js +0 -1
- package/dist/assets/smalltalk-CzvuDqf0.js +0 -1
- package/dist/assets/sparql-Djedbp-5.js +0 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-BKLDpEGo.js +0 -1
- package/dist/assets/stylus-BpnZbov-.js +0 -1
- package/dist/assets/swift-DAHNa7bf.js +0 -1
- package/dist/assets/tcl-DTQfPx3q.js +0 -1
- package/dist/assets/textile-DXtfasKT.js +0 -1
- package/dist/assets/toml-BjmTwkhj.js +0 -1
- package/dist/assets/troff-Bc3qMmWc.js +0 -1
- package/dist/assets/ttcn-Bh7caDZp.js +0 -1
- package/dist/assets/ttcn-cfg-D18s1FKk.js +0 -1
- package/dist/assets/turtle-B1l6GoUm.js +0 -1
- package/dist/assets/useCellActionButton-DBXavVBJ.js +0 -1
- package/dist/assets/useRunCells-CwObo_j4.js +0 -1
- package/dist/assets/vb-OtZQD18A.js +0 -1
- package/dist/assets/vbscript-CMGATyY1.js +0 -1
- package/dist/assets/velocity-OiAuGLJe.js +0 -1
- package/dist/assets/verilog-S0G4VOpd.js +0 -1
- package/dist/assets/vhdl-CXVV79Yf.js +0 -1
- package/dist/assets/webidl-y1Tmj9tM.js +0 -1
- package/dist/assets/xquery-CwVKvibA.js +0 -1
- package/dist/assets/yacas-DR-AnMl3.js +0 -1
- package/dist/assets/z80-Lzkm5uuH.js +0 -1
- /package/dist/assets/{ImageComparisonComponent-B5E3m5MZ.js → ImageComparisonComponent-DxLwmmB2.js} +0 -0
- /package/dist/assets/{Inputs-eZfYMYYP.js → Inputs-W60db12_.js} +0 -0
- /package/dist/assets/{Plot-Dmxt4wRt.js → Plot-I39ar7fU.js} +0 -0
- /package/dist/assets/{apl-BHRaMaxV.js → apl-lvMF4O0c.js} +0 -0
- /package/dist/assets/{array-DU5T25JX.js → array-CRE2-wlR.js} +0 -0
- /package/dist/assets/{asciiarmor-Drw3Y_jV.js → asciiarmor-NoSIZ2RH.js} +0 -0
- /package/dist/assets/{asn1-B3Ivdxp7.js → asn1-Bn2zPmGi.js} +0 -0
- /package/dist/assets/{asterisk-GbGHf9GU.js → asterisk-1BK_fEUT.js} +0 -0
- /package/dist/assets/{azure-DElN0h0I.js → azure-BMhMRXAG.js} +0 -0
- /package/dist/assets/{brainfuck-Bmwix9UB.js → brainfuck-CyXrVlbF.js} +0 -0
- /package/dist/assets/{bundle.esm-idScn0w0.js → bundle.esm-_LzfhNmX.js} +0 -0
- /package/dist/assets/{card-kQvf6H4E.js → card-CBqenxaU.js} +0 -0
- /package/dist/assets/{chunk-4F5CHEZ2-B4VRPZ37.js → chunk-4F5CHEZ2-CvMYQKai.js} +0 -0
- /package/dist/assets/{chunk-B2363JML-CjIajB1P.js → chunk-B2363JML-oWpkFXOG.js} +0 -0
- /package/dist/assets/{chunk-DR5Q36YT-Bjmp_CNY.js → chunk-DR5Q36YT-DSjZQa_3.js} +0 -0
- /package/dist/assets/{chunk-FRFDVMJY-BfDKbo_T.js → chunk-FRFDVMJY-DxIaf4yl.js} +0 -0
- /package/dist/assets/{chunk-PL6DKKU2-pYEFWkPZ.js → chunk-PL6DKKU2-DwnNxWA0.js} +0 -0
- /package/dist/assets/{chunk-SJTYNZTY-VcrI9yao.js → chunk-SJTYNZTY-DBAl0fNt.js} +0 -0
- /package/dist/assets/{chunk-TQ3KTPDO-tIPcwIpX.js → chunk-TQ3KTPDO-B7j-UFPQ.js} +0 -0
- /package/dist/assets/{chunk-UMXZTB3W-Cpwtyir-.js → chunk-UMXZTB3W-BGNdYqf-.js} +0 -0
- /package/dist/assets/{clear-button-Cw33rRmg.js → clear-button-CuSHRx11.js} +0 -0
- /package/dist/assets/{click-outside-container-CsPwIqYr.js → click-outside-container-CiRBqxMF.js} +0 -0
- /package/dist/assets/{clike-E6D0qPLZ.js → clike-DKMmTh42.js} +0 -0
- /package/dist/assets/{clojure-D2u7A17s.js → clojure-PSUkitBX.js} +0 -0
- /package/dist/assets/{cmake-BAcX9pfJ.js → cmake-DzLpRry9.js} +0 -0
- /package/dist/assets/{cobol-Blv8cOIQ.js → cobol-DAqlVpNy.js} +0 -0
- /package/dist/assets/{coffeescript-Bd0runsx.js → coffeescript-CVRVei5N.js} +0 -0
- /package/dist/assets/{colors-Dtrl_rUb.js → colors-k4pzE1JC.js} +0 -0
- /package/dist/assets/{common-keywords-DpBQRN1C.js → common-keywords-CL5lDC0w.js} +0 -0
- /package/dist/assets/{commonlisp-B_IfCLCi.js → commonlisp-DGLna-nK.js} +0 -0
- /package/dist/assets/{crystal-BPH2tGA2.js → crystal-D1je9SnX.js} +0 -0
- /package/dist/assets/{css-DWR7mhwJ.js → css-CpgzfyW4.js} +0 -0
- /package/dist/assets/{cypher-S-rGklkM.js → cypher-SIaJhgm6.js} +0 -0
- /package/dist/assets/{cytoscape.esm-CVhOSlMZ.js → cytoscape.esm-0erX9Txj.js} +0 -0
- /package/dist/assets/{d-C128j5m6.js → d-BQbC3v5b.js} +0 -0
- /package/dist/assets/{diff-CThVlVra.js → diff-Du4D-Lj4.js} +0 -0
- /package/dist/assets/{dist-21ZHvMu-.js → dist-BKkfH6MG.js} +0 -0
- /package/dist/assets/{dist-uEEVcSIS.js → dist-BZJrw9vI.js} +0 -0
- /package/dist/assets/{dist-DniPQ7Qm.js → dist-BrZ_53nc.js} +0 -0
- /package/dist/assets/{dist-Cy2hdQdy.js → dist-C8Dcw0WD.js} +0 -0
- /package/dist/assets/{dist-BxyvBCI5.js → dist-C9G2F7Z1.js} +0 -0
- /package/dist/assets/{dist-DUGSlPOG.js → dist-CRmIdrta.js} +0 -0
- /package/dist/assets/{dist-Rq9HjYxD.js → dist-CTTKEfeu.js} +0 -0
- /package/dist/assets/{dist-CIhoH-X1.js → dist-CwHZ5Z_A.js} +0 -0
- /package/dist/assets/{dist-C9z0M-mT.js → dist-CwjzLMbM.js} +0 -0
- /package/dist/assets/{dist--yGrqaJH.js → dist-D699xT6P.js} +0 -0
- /package/dist/assets/{dist-D8g9Gob3.js → dist-DBBqNJ3C.js} +0 -0
- /package/dist/assets/{dist-BZXUFc1L.js → dist-DKnn_Tta.js} +0 -0
- /package/dist/assets/{dist-DVEj2fgt.js → dist-DbWhwe76.js} +0 -0
- /package/dist/assets/{dist-BHxWDjO3.js → dist-DmMcU97h.js} +0 -0
- /package/dist/assets/{dist-BbueVrZr.js → dist-DvbdggRI.js} +0 -0
- /package/dist/assets/{dist-lnKPBMeZ.js → dist-SDxzhwJU.js} +0 -0
- /package/dist/assets/{dist-BmUQz5fw.js → dist-Sjq7q5Ez.js} +0 -0
- /package/dist/assets/{dist-CmNOQaWE.js → dist-epQooxQL.js} +0 -0
- /package/dist/assets/{dtd-BloyElsS.js → dtd-C8APvYNQ.js} +0 -0
- /package/dist/assets/{duckdb-keywords-DrrKcwLz.js → duckdb-keywords-CKBoTxEb.js} +0 -0
- /package/dist/assets/{dylan-BpjltVYk.js → dylan-CTr_RHNL.js} +0 -0
- /package/dist/assets/{ebnf-DuKzoTsP.js → ebnf-CviyCkP7.js} +0 -0
- /package/dist/assets/{ecl-DIGfXI2n.js → ecl-BVnD0OAx.js} +0 -0
- /package/dist/assets/{eiffel-Nuvt3i0o.js → eiffel-9mt0KSLh.js} +0 -0
- /package/dist/assets/{elm-khTI8oMm.js → elm-CItjDkKL.js} +0 -0
- /package/dist/assets/{empty-state-GQ-H0WrT.js → empty-state-DUEogWxf.js} +0 -0
- /package/dist/assets/{erlang-Bz0rifYN.js → erlang-D8gZbSC3.js} +0 -0
- /package/dist/assets/{esm-DXwI6ZUw.js → esm-BMWduMhT.js} +0 -0
- /package/dist/assets/{esm-DZILy413.js → esm-BQO8KtRU.js} +0 -0
- /package/dist/assets/{fcl-DopXl_Cb.js → fcl-DjfeL5F6.js} +0 -0
- /package/dist/assets/{field-BpgzO1qL.js → field-BEG4O-GE.js} +0 -0
- /package/dist/assets/{formatting-D99dzYue.js → formatting-8sgDjIAp.js} +0 -0
- /package/dist/assets/{forth-SxB4ZE9Q.js → forth-DgH1dN75.js} +0 -0
- /package/dist/assets/{fortran-DzfX8wbd.js → fortran-DueLTtxK.js} +0 -0
- /package/dist/assets/{gas-DBFUG9nK.js → gas-BtO1qNqf.js} +0 -0
- /package/dist/assets/{gherkin-6FC2E3f3.js → gherkin-Byo7wP7t.js} +0 -0
- /package/dist/assets/{groovy-p_lTFq3O.js → groovy-wqVc62K1.js} +0 -0
- /package/dist/assets/{haskell-BEXqDWIp.js → haskell-t8q2n4aR.js} +0 -0
- /package/dist/assets/{haxe-CzFMbUhy.js → haxe-I2Ep_IKg.js} +0 -0
- /package/dist/assets/{http-BxcKXOao.js → http-VleqgIZJ.js} +0 -0
- /package/dist/assets/{icons-CIUvkMzI.js → icons-CAcY8GzB.js} +0 -0
- /package/dist/assets/{idl-CuZt9Cr8.js → idl-zLnMWGy-.js} +0 -0
- /package/dist/assets/{init-_0O8gaZg.js → init-C5GnArQr.js} +0 -0
- /package/dist/assets/{javascript-CULX8PvY.js → javascript-Z0GGm0j8.js} +0 -0
- /package/dist/assets/{julia-DowlkI_L.js → julia-iSGDYIgg.js} +0 -0
- /package/dist/assets/{katex-BrOUG02-.js → katex-BUjpoqH9.js} +0 -0
- /package/dist/assets/{label-CNKB6XuV.js → label-KlZhD0Wz.js} +0 -0
- /package/dist/assets/{links-BpU-Tgoi.js → links-BwkQr4sn.js} +0 -0
- /package/dist/assets/{livescript-DwfI62L3.js → livescript-BFHCYYQr.js} +0 -0
- /package/dist/assets/{loro_wasm_bg-G5oJHASf.js → loro_wasm_bg-DbCRx7th.js} +0 -0
- /package/dist/assets/{lua-TCNDuI3W.js → lua-CReDSu5T.js} +0 -0
- /package/dist/assets/{marimo-icons-xeZXdanj.js → marimo-icons-DyCeIvCg.js} +0 -0
- /package/dist/assets/{math-BSPSgcD8.js → math-D5yoTCoa.js} +0 -0
- /package/dist/assets/{mathematica-hf3OzlV6.js → mathematica-Zm2C8amS.js} +0 -0
- /package/dist/assets/{mbox-CpM9PyZY.js → mbox-WgafSHjo.js} +0 -0
- /package/dist/assets/{mirc-CocHA0SZ.js → mirc-BYSZ-Sqw.js} +0 -0
- /package/dist/assets/{mllike-CPBcvlCk.js → mllike-oFV79iRi.js} +0 -0
- /package/dist/assets/{modelica--OnAmDkI.js → modelica-Kw0oZiZv.js} +0 -0
- /package/dist/assets/{mscgen-CtSx20C4.js → mscgen-zIXnH6Xb.js} +0 -0
- /package/dist/assets/{multi-icon-DQ0zErpq.js → multi-icon-CDO-SrVQ.js} +0 -0
- /package/dist/assets/{mumps-BavaVlaQ.js → mumps-CpHKxUaP.js} +0 -0
- /package/dist/assets/{nginx-BFZZWp0k.js → nginx-D7OKXoUe.js} +0 -0
- /package/dist/assets/{node-sql-parser-Bb3JynSW.js → node-sql-parser-GMJwIlZ5.js} +0 -0
- /package/dist/assets/{ntriples-B5NSxx1D.js → ntriples-CKdsn4A2.js} +0 -0
- /package/dist/assets/{octave-jVWS5ZX5.js → octave-C2KzGqDI.js} +0 -0
- /package/dist/assets/{oz-Ci6i2p3E.js → oz-DjI17vbg.js} +0 -0
- /package/dist/assets/{panel-context--v5sYr8m.js → panel-context-DsLB_70p.js} +0 -0
- /package/dist/assets/{pascal-BI-nobSy.js → pascal-DkEHIeYy.js} +0 -0
- /package/dist/assets/{path-Bve_rTap.js → path-CK3C5L0Q.js} +0 -0
- /package/dist/assets/{perl-DQPnX7YE.js → perl-awUeMoRf.js} +0 -0
- /package/dist/assets/{pig-Bh76ij4R.js → pig-4piEzRGm.js} +0 -0
- /package/dist/assets/{powershell-uUfnWMx0.js → powershell-BcdXyDpe.js} +0 -0
- /package/dist/assets/{properties-Br22JNZV.js → properties-BCPnyAME.js} +0 -0
- /package/dist/assets/{protobuf-DaigdXrD.js → protobuf-UUgrcPiO.js} +0 -0
- /package/dist/assets/{puppet-BGGCC9ZJ.js → puppet-CK_Jbc3D.js} +0 -0
- /package/dist/assets/{python-DuwDWlpq.js → python-87A6eX9C.js} +0 -0
- /package/dist/assets/{q-BbDtxSzU.js → q-JHqp7Nwz.js} +0 -0
- /package/dist/assets/{r-CB416o25.js → r-c8ebDReJ.js} +0 -0
- /package/dist/assets/{react-resizable-panels.browser.esm-CHZt2sgR.js → react-resizable-panels.browser.esm-Dmf4Xg1J.js} +0 -0
- /package/dist/assets/{renderShortcut-DKHsNYY8.js → renderShortcut-BcNNtnIV.js} +0 -0
- /package/dist/assets/{request-registry-kkWOuc4m.js → request-registry-5S3nI4D-.js} +0 -0
- /package/dist/assets/{requests-ELfSRZg2.js → requests-A6SCIaF6.js} +0 -0
- /package/dist/assets/{rpm-DgDcBXHy.js → rpm-CHLEEyak.js} +0 -0
- /package/dist/assets/{ruby-ASZz88uL.js → ruby-Y-uPbf0g.js} +0 -0
- /package/dist/assets/{runs-ClVtrGLV.js → runs-B_mJSod5.js} +0 -0
- /package/dist/assets/{sas-r-6e1yzr.js → sas-Mox1fRNZ.js} +0 -0
- /package/dist/assets/{scheme-Zi7xVoso.js → scheme-BnTHsLZG.js} +0 -0
- /package/dist/assets/{shell-pXDc9W8j.js → shell-C8EAw2yh.js} +0 -0
- /package/dist/assets/{sieve-DMn8OnOt.js → sieve-Dd1bnzub.js} +0 -0
- /package/dist/assets/{simple-mode-Bcot9qoq.js → simple-mode-BGiIHaLF.js} +0 -0
- /package/dist/assets/{slides-component-BhJkZVhE.js → slides-component-Da4ws_2P.js} +0 -0
- /package/dist/assets/{smalltalk-kxU8S6r5.js → smalltalk-BUSkf3e4.js} +0 -0
- /package/dist/assets/{solr-BCnpA4mK.js → solr-CDPrSrj5.js} +0 -0
- /package/dist/assets/{sparql-CA3NQZJW.js → sparql-DeaDxQi8.js} +0 -0
- /package/dist/assets/{spreadsheet-C39QEIvH.js → spreadsheet-BsJYzkOI.js} +0 -0
- /package/dist/assets/{sql-CE9Btgz4.js → sql-F2Gt8FSJ.js} +0 -0
- /package/dist/assets/{src-cSe6DUft.js → src-BgRVyE5A.js} +0 -0
- /package/dist/assets/{state-JpzFxtY6.js → state-DnmL6F-D.js} +0 -0
- /package/dist/assets/{stylus-DRN2WCqM.js → stylus-DYCEsZr5.js} +0 -0
- /package/dist/assets/{swift-BCXokZ3z.js → swift-Duztmfb3.js} +0 -0
- /package/dist/assets/{table-BX1kXOsy.js → table-C-4zXNgf.js} +0 -0
- /package/dist/assets/{tcl-CHeLjBFR.js → tcl-DI2Tsoc-.js} +0 -0
- /package/dist/assets/{textile-B9G88G2h.js → textile-Bu0-gYeb.js} +0 -0
- /package/dist/assets/{tiddlywiki-CIp8hgce.js → tiddlywiki-BiVbsin5.js} +0 -0
- /package/dist/assets/{tiki-C22wqq7_.js → tiki-BjQr6gnj.js} +0 -0
- /package/dist/assets/{timer-DolQqlHY.js → timer-ubTuPSiq.js} +0 -0
- /package/dist/assets/{toggle-iY_IwLg6.js → toggle-wwEdkCCQ.js} +0 -0
- /package/dist/assets/{toml-C5eRG8KV.js → toml-DS7p65H0.js} +0 -0
- /package/dist/assets/{treemap-wGELRPvg.js → treemap-D7anCkBi.js} +0 -0
- /package/dist/assets/{troff-CynCaHoK.js → troff-CmiSltql.js} +0 -0
- /package/dist/assets/{ttcn-B5PzIipG.js → ttcn-BcG2XAz0.js} +0 -0
- /package/dist/assets/{ttcn-cfg-Cboa6Jff.js → ttcn-cfg-rI2k2_Cz.js} +0 -0
- /package/dist/assets/{turtle-DqWnTCnP.js → turtle-7DaLnk-7.js} +0 -0
- /package/dist/assets/{types-DQ8fCbJK.js → types-CzVV1kKu.js} +0 -0
- /package/dist/assets/{useDeepCompareMemoize-BeNvU69i.js → useDeepCompareMemoize-Boltfl1B.js} +0 -0
- /package/dist/assets/{useInterval-THXC3A8S.js → useInterval-B8uaa6vj.js} +0 -0
- /package/dist/assets/{vb-D8y-MYBx.js → vb-B69cws1B.js} +0 -0
- /package/dist/assets/{vbscript-BnxMJuyI.js → vbscript-oR9jLSFn.js} +0 -0
- /package/dist/assets/{velocity-BxU4epmQ.js → velocity-CC4QjE_N.js} +0 -0
- /package/dist/assets/{verilog-BgK37K4c.js → verilog-DbzXDa_i.js} +0 -0
- /package/dist/assets/{vhdl-BV4w9W-F.js → vhdl-qbVPPYo_.js} +0 -0
- /package/dist/assets/{web-vitals-Q0-_CtWm.js → web-vitals--izkZsoM.js} +0 -0
- /package/dist/assets/{webidl-DaaapXpa.js → webidl-BkN24yvL.js} +0 -0
- /package/dist/assets/{ws-CnD6N6WA.js → ws-BYrDQlXa.js} +0 -0
- /package/dist/assets/{xquery-CXfthI-4.js → xquery-B3G1Qm2c.js} +0 -0
- /package/dist/assets/{yacas-DNslH_e4.js → yacas-DWdEPLXb.js} +0 -0
- /package/dist/assets/{z80-BrPJ63JS.js → z80-cCig3JnZ.js} +0 -0
|
@@ -112,6 +112,7 @@ export function generateColumns<T>({
|
|
|
112
112
|
headerTooltip,
|
|
113
113
|
showDataTypes,
|
|
114
114
|
calculateTopKRows,
|
|
115
|
+
fractionDigitsByColumn,
|
|
115
116
|
}: {
|
|
116
117
|
rowHeaders: FieldTypesWithExternalType;
|
|
117
118
|
selection: DataTableSelection;
|
|
@@ -122,6 +123,7 @@ export function generateColumns<T>({
|
|
|
122
123
|
headerTooltip?: Record<string, string>;
|
|
123
124
|
showDataTypes?: boolean;
|
|
124
125
|
calculateTopKRows?: CalculateTopKRows;
|
|
126
|
+
fractionDigitsByColumn?: Record<string, number>;
|
|
125
127
|
}): ColumnDef<T>[] {
|
|
126
128
|
// Row-headers are typically index columns
|
|
127
129
|
const rowHeadersSet = new Set(rowHeaders.map(([columnName]) => columnName));
|
|
@@ -138,6 +140,7 @@ export function generateColumns<T>({
|
|
|
138
140
|
rowHeader: isRowHeader,
|
|
139
141
|
dtype: types?.[1],
|
|
140
142
|
dataType: types?.[0],
|
|
143
|
+
minFractionDigits: fractionDigitsByColumn?.[key],
|
|
141
144
|
};
|
|
142
145
|
}
|
|
143
146
|
|
|
@@ -146,9 +149,23 @@ export function generateColumns<T>({
|
|
|
146
149
|
filterType: getFilterTypeForFieldType(types[0]),
|
|
147
150
|
dtype: types[1],
|
|
148
151
|
dataType: types[0],
|
|
152
|
+
minFractionDigits: fractionDigitsByColumn?.[key],
|
|
149
153
|
};
|
|
150
154
|
};
|
|
151
155
|
|
|
156
|
+
const getJustify = (key: string): "left" | "center" | "right" | undefined => {
|
|
157
|
+
// Explicit user override takes precedence
|
|
158
|
+
if (textJustifyColumns?.[key]) {
|
|
159
|
+
return textJustifyColumns[key];
|
|
160
|
+
}
|
|
161
|
+
// Auto right-align numeric columns
|
|
162
|
+
const dataType = getMeta(key).dataType;
|
|
163
|
+
if (dataType === "number" || dataType === "integer") {
|
|
164
|
+
return "right";
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
};
|
|
168
|
+
|
|
152
169
|
const columnKeys: string[] = [
|
|
153
170
|
...rowHeadersSet,
|
|
154
171
|
...fieldTypes.map(([columnName]) => columnName),
|
|
@@ -186,7 +203,7 @@ export function generateColumns<T>({
|
|
|
186
203
|
</div>
|
|
187
204
|
) : null;
|
|
188
205
|
|
|
189
|
-
const justify =
|
|
206
|
+
const justify = getJustify(key);
|
|
190
207
|
|
|
191
208
|
const headerWithType = (
|
|
192
209
|
<div
|
|
@@ -254,18 +271,21 @@ export function generateColumns<T>({
|
|
|
254
271
|
cell.toggleSelected?.();
|
|
255
272
|
}
|
|
256
273
|
|
|
257
|
-
const justify =
|
|
274
|
+
const justify = getJustify(key);
|
|
258
275
|
const wrapped = wrappedColumns?.includes(key);
|
|
259
276
|
const isCellSelected = cell?.getIsSelected?.() || false;
|
|
260
277
|
const canSelectCell =
|
|
261
278
|
(selection === "single-cell" || selection === "multi-cell") &&
|
|
262
279
|
!isCellSelected;
|
|
263
280
|
|
|
281
|
+
const dataType = column.columnDef.meta?.dataType;
|
|
282
|
+
const isNumeric = dataType === "number" || dataType === "integer";
|
|
264
283
|
const cellStyles = getCellStyleClass(
|
|
265
284
|
justify,
|
|
266
285
|
wrapped,
|
|
267
286
|
canSelectCell,
|
|
268
287
|
isCellSelected,
|
|
288
|
+
isNumeric,
|
|
269
289
|
);
|
|
270
290
|
|
|
271
291
|
const renderedCell = renderCellValue({
|
|
@@ -430,6 +450,7 @@ function getCellStyleClass(
|
|
|
430
450
|
wrapped: boolean | undefined,
|
|
431
451
|
canSelectCell: boolean,
|
|
432
452
|
isSelected: boolean,
|
|
453
|
+
isNumeric?: boolean,
|
|
433
454
|
): string {
|
|
434
455
|
return cn(
|
|
435
456
|
canSelectCell && "cursor-pointer",
|
|
@@ -438,6 +459,7 @@ function getCellStyleClass(
|
|
|
438
459
|
"w-full",
|
|
439
460
|
"text-left",
|
|
440
461
|
"truncate",
|
|
462
|
+
isNumeric && "tabular-nums",
|
|
441
463
|
justify === "center" && "text-center",
|
|
442
464
|
justify === "right" && "text-right",
|
|
443
465
|
wrapped && `${COLUMN_WRAPPING_STYLES} break-words`,
|
|
@@ -589,7 +611,18 @@ export function renderCellValue<TData, TValue>({
|
|
|
589
611
|
if (typeof value === "number") {
|
|
590
612
|
return (
|
|
591
613
|
<div onClick={selectCell} className={cellStyles}>
|
|
592
|
-
<LocaleNumber
|
|
614
|
+
<LocaleNumber
|
|
615
|
+
value={value}
|
|
616
|
+
minFractionDigits={column.columnDef.meta?.minFractionDigits}
|
|
617
|
+
/>
|
|
618
|
+
</div>
|
|
619
|
+
);
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
if (typeof value === "boolean") {
|
|
623
|
+
return (
|
|
624
|
+
<div onClick={selectCell} className={cellStyles}>
|
|
625
|
+
{value ? "True" : "False"}
|
|
593
626
|
</div>
|
|
594
627
|
);
|
|
595
628
|
}
|
|
@@ -635,9 +668,16 @@ export function renderCellValue<TData, TValue>({
|
|
|
635
668
|
);
|
|
636
669
|
}
|
|
637
670
|
|
|
638
|
-
export const LocaleNumber = ({
|
|
671
|
+
export const LocaleNumber = ({
|
|
672
|
+
value,
|
|
673
|
+
minFractionDigits,
|
|
674
|
+
}: {
|
|
675
|
+
value: number;
|
|
676
|
+
minFractionDigits?: number;
|
|
677
|
+
}) => {
|
|
639
678
|
const { locale } = useLocale();
|
|
640
679
|
const format = useNumberFormatter({
|
|
680
|
+
minimumFractionDigits: minFractionDigits,
|
|
641
681
|
maximumFractionDigits: maxFractionalDigits(locale),
|
|
642
682
|
});
|
|
643
683
|
return format.format(value);
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
INTERNAL_SQL_ENGINES,
|
|
29
29
|
} from "@/core/datasets/engines";
|
|
30
30
|
import {
|
|
31
|
+
PreviewSQLSchemaList,
|
|
31
32
|
PreviewSQLTable,
|
|
32
33
|
PreviewSQLTableList,
|
|
33
34
|
} from "@/core/datasets/request-registry";
|
|
@@ -80,6 +81,7 @@ const INDENT = {
|
|
|
80
81
|
database: "pl-4",
|
|
81
82
|
schemaEmpty: "pl-8",
|
|
82
83
|
schema: "pl-7",
|
|
84
|
+
schemaLoading: "pl-8",
|
|
83
85
|
tableLoading: "pl-11",
|
|
84
86
|
tableSchemaless: "pl-8",
|
|
85
87
|
tableWithSchema: "pl-12",
|
|
@@ -369,6 +371,49 @@ const SchemaList: React.FC<{
|
|
|
369
371
|
hasSearch,
|
|
370
372
|
searchValue,
|
|
371
373
|
}) => {
|
|
374
|
+
const { addSchemaList } = useDataSourceActions();
|
|
375
|
+
const [schemasRequested, setSchemasRequested] = React.useState(false);
|
|
376
|
+
|
|
377
|
+
// Custom loading state, we need to wait for the data to propagate once requested
|
|
378
|
+
// useAsyncData's loading state may return false before data has propagated
|
|
379
|
+
const [schemasLoading, setSchemasLoading] = React.useState(false);
|
|
380
|
+
|
|
381
|
+
const { isPending, error } = useAsyncData(async () => {
|
|
382
|
+
if (schemas.length === 0 && engineName && !schemasRequested) {
|
|
383
|
+
setSchemasRequested(true);
|
|
384
|
+
setSchemasLoading(true);
|
|
385
|
+
try {
|
|
386
|
+
const previewSchemaList = await PreviewSQLSchemaList.request({
|
|
387
|
+
engine: engineName,
|
|
388
|
+
database: databaseName,
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
addSchemaList({
|
|
392
|
+
schemas: previewSchemaList.schemas ?? [],
|
|
393
|
+
sqlSchemaContext: {
|
|
394
|
+
engine: engineName,
|
|
395
|
+
database: databaseName,
|
|
396
|
+
},
|
|
397
|
+
});
|
|
398
|
+
} finally {
|
|
399
|
+
setSchemasLoading(false);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}, [schemas.length, engineName, databaseName, schemasRequested]);
|
|
403
|
+
|
|
404
|
+
if (isPending || schemasLoading) {
|
|
405
|
+
return (
|
|
406
|
+
<LoadingState
|
|
407
|
+
message="Loading schemas..."
|
|
408
|
+
className={INDENT.schemaLoading}
|
|
409
|
+
/>
|
|
410
|
+
);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
if (error) {
|
|
414
|
+
return <ErrorState error={error} className={INDENT.schemaLoading} />;
|
|
415
|
+
}
|
|
416
|
+
|
|
372
417
|
if (schemas.length === 0) {
|
|
373
418
|
return (
|
|
374
419
|
<EmptyState
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { EditorView } from "@codemirror/view";
|
|
4
|
-
import { math } from "@streamdown/math";
|
|
5
4
|
import { useAtomValue } from "jotai";
|
|
6
5
|
import { BetweenHorizontalStartIcon } from "lucide-react";
|
|
7
6
|
import { memo, Suspense, useState } from "react";
|
|
@@ -13,6 +12,7 @@ import { useLastFocusedCellId } from "@/core/cells/focus";
|
|
|
13
12
|
import { MarkdownLanguageAdapter } from "@/core/codemirror/language/languages/markdown";
|
|
14
13
|
import { SQLLanguageAdapter } from "@/core/codemirror/language/languages/sql/sql";
|
|
15
14
|
import { autoInstantiateAtom } from "@/core/config/config";
|
|
15
|
+
import { useAsyncData } from "@/hooks/useAsyncData";
|
|
16
16
|
import { LazyAnyLanguageCodeMirror } from "@/plugins/impl/code/LazyAnyLanguageCodeMirror";
|
|
17
17
|
import { useTheme } from "@/theme/useTheme";
|
|
18
18
|
import { copyToClipboard } from "@/utils/copy";
|
|
@@ -166,11 +166,27 @@ const COMPONENTS: Components = {
|
|
|
166
166
|
},
|
|
167
167
|
};
|
|
168
168
|
|
|
169
|
+
// Lazy-load the math plugin to keep katex (~264 KB) out of the critical path.
|
|
170
|
+
// The first render works without math; once loaded, it re-renders with math support.
|
|
171
|
+
let mathPluginCache: StreamdownProps["plugins"] | undefined;
|
|
172
|
+
const useMathPlugin = () => {
|
|
173
|
+
const { data: plugins } = useAsyncData(async () => {
|
|
174
|
+
if (mathPluginCache) {
|
|
175
|
+
return mathPluginCache;
|
|
176
|
+
}
|
|
177
|
+
const mod = await import("@streamdown/math");
|
|
178
|
+
mathPluginCache = { math: mod.math };
|
|
179
|
+
return mathPluginCache;
|
|
180
|
+
}, []);
|
|
181
|
+
return plugins;
|
|
182
|
+
};
|
|
183
|
+
|
|
169
184
|
export const MarkdownRenderer = memo(({ content }: { content: string }) => {
|
|
185
|
+
const plugins = useMathPlugin();
|
|
170
186
|
return (
|
|
171
187
|
<Streamdown
|
|
172
188
|
components={COMPONENTS}
|
|
173
|
-
plugins={
|
|
189
|
+
plugins={plugins}
|
|
174
190
|
className="mo-markdown-renderer"
|
|
175
191
|
>
|
|
176
192
|
{content}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
import { beforeEach, describe, expect, it } from "vitest";
|
|
3
3
|
import { variableName } from "@/__tests__/branded";
|
|
4
|
-
import type { DataTable } from "@/core/kernel/messages";
|
|
4
|
+
import type { DatabaseSchema, DataTable } from "@/core/kernel/messages";
|
|
5
5
|
import type { VariableName } from "@/core/variables/types";
|
|
6
6
|
import {
|
|
7
7
|
type DataSourceConnection,
|
|
@@ -209,6 +209,93 @@ describe("filtering data sources", () => {
|
|
|
209
209
|
});
|
|
210
210
|
});
|
|
211
211
|
|
|
212
|
+
describe("add schema list", () => {
|
|
213
|
+
const connections: DataSourceConnection[] = [
|
|
214
|
+
{
|
|
215
|
+
name: "conn1" as ConnectionName,
|
|
216
|
+
source: "sqlite",
|
|
217
|
+
display_name: "SQLite DB",
|
|
218
|
+
dialect: "sqlite",
|
|
219
|
+
databases: [
|
|
220
|
+
{
|
|
221
|
+
name: "db1",
|
|
222
|
+
schemas: [],
|
|
223
|
+
dialect: "sqlite",
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
},
|
|
227
|
+
];
|
|
228
|
+
|
|
229
|
+
// Helper function to add schema list
|
|
230
|
+
const addSchemaList = (
|
|
231
|
+
schemas: DatabaseSchema[],
|
|
232
|
+
engine: string,
|
|
233
|
+
database: string,
|
|
234
|
+
) => {
|
|
235
|
+
return reducer(baseState, {
|
|
236
|
+
type: "addSchemaList",
|
|
237
|
+
payload: {
|
|
238
|
+
schemas,
|
|
239
|
+
sqlSchemaContext: { engine, database },
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
let baseState: DataSourceState;
|
|
245
|
+
|
|
246
|
+
beforeEach(() => {
|
|
247
|
+
baseState = addConnection(connections, baseState);
|
|
248
|
+
expect(baseState.connectionsMap.size).toBe(defaultConnSize + 1);
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
it("adds schema list to a specific database", () => {
|
|
252
|
+
const schemaList: DatabaseSchema[] = [
|
|
253
|
+
{ name: "public", tables: [] },
|
|
254
|
+
{ name: "analytics", tables: [] },
|
|
255
|
+
];
|
|
256
|
+
const newState = addSchemaList(schemaList, "conn1", "db1");
|
|
257
|
+
|
|
258
|
+
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
259
|
+
const db1 = conn1?.databases.find((db) => db.name === "db1");
|
|
260
|
+
expect(db1?.schemas).toEqual(schemaList);
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
it("updates schema list for a database", () => {
|
|
264
|
+
const schemaList: DatabaseSchema[] = [
|
|
265
|
+
{ name: "public", tables: [] },
|
|
266
|
+
{ name: "analytics", tables: [] },
|
|
267
|
+
];
|
|
268
|
+
const newState = addSchemaList(schemaList, "conn1", "db1");
|
|
269
|
+
|
|
270
|
+
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
271
|
+
const db1 = conn1?.databases.find((db) => db.name === "db1");
|
|
272
|
+
expect(db1?.schemas).toEqual(schemaList);
|
|
273
|
+
|
|
274
|
+
// update with new schema list
|
|
275
|
+
const newSchemaList: DatabaseSchema[] = [
|
|
276
|
+
{ name: "public", tables: [] },
|
|
277
|
+
{ name: "sales", tables: [] },
|
|
278
|
+
];
|
|
279
|
+
const updatedState = addSchemaList(newSchemaList, "conn1", "db1");
|
|
280
|
+
|
|
281
|
+
const newConn = updatedState.connectionsMap.get("conn1" as ConnectionName);
|
|
282
|
+
const newDb1 = newConn?.databases.find((db) => db.name === "db1");
|
|
283
|
+
expect(newDb1?.schemas).toEqual(newSchemaList);
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
it("does not add schema list if database does not exist", () => {
|
|
287
|
+
const schemaList: DatabaseSchema[] = [
|
|
288
|
+
{ name: "public", tables: [] },
|
|
289
|
+
{ name: "analytics", tables: [] },
|
|
290
|
+
];
|
|
291
|
+
const newState = addSchemaList(schemaList, "conn1", "non_existent_db");
|
|
292
|
+
|
|
293
|
+
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
294
|
+
const db1 = conn1?.databases.find((db) => db.name === "db1");
|
|
295
|
+
expect(db1?.schemas.length).toBe(0);
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
|
|
212
299
|
describe("add table list", () => {
|
|
213
300
|
const connections: DataSourceConnection[] = [
|
|
214
301
|
{
|
|
@@ -5,6 +5,7 @@ import { isSchemaless } from "@/components/datasources/utils";
|
|
|
5
5
|
import { createReducerAndAtoms } from "@/utils/createReducer";
|
|
6
6
|
import { Logger } from "@/utils/Logger";
|
|
7
7
|
import type {
|
|
8
|
+
DatabaseSchema,
|
|
8
9
|
DataSourceConnection as DataSourceConnectionType,
|
|
9
10
|
DataTable,
|
|
10
11
|
} from "../kernel/messages";
|
|
@@ -43,6 +44,11 @@ export interface DataSourceState {
|
|
|
43
44
|
connectionsMap: ConnectionsMap;
|
|
44
45
|
}
|
|
45
46
|
|
|
47
|
+
export interface SQLSchemaContext {
|
|
48
|
+
engine: string;
|
|
49
|
+
database: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
46
52
|
export interface SQLTableContext {
|
|
47
53
|
engine: string;
|
|
48
54
|
database: string;
|
|
@@ -134,6 +140,44 @@ const {
|
|
|
134
140
|
};
|
|
135
141
|
},
|
|
136
142
|
|
|
143
|
+
// Add schema list to a specific database in a connection
|
|
144
|
+
addSchemaList: (
|
|
145
|
+
state: DataSourceState,
|
|
146
|
+
opts: {
|
|
147
|
+
schemas: DatabaseSchema[];
|
|
148
|
+
sqlSchemaContext: SQLSchemaContext;
|
|
149
|
+
},
|
|
150
|
+
): DataSourceState => {
|
|
151
|
+
const { schemas, sqlSchemaContext } = opts;
|
|
152
|
+
const { connectionsMap, latestEngineSelected } = state;
|
|
153
|
+
const connectionName = sqlSchemaContext.engine as ConnectionName;
|
|
154
|
+
const conn = connectionsMap.get(connectionName);
|
|
155
|
+
|
|
156
|
+
if (!conn) {
|
|
157
|
+
return state;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const newMap = new Map(connectionsMap);
|
|
161
|
+
const newConn: DataSourceConnection = {
|
|
162
|
+
...conn,
|
|
163
|
+
databases: conn.databases.map((db) => {
|
|
164
|
+
if (db.name !== sqlSchemaContext.database) {
|
|
165
|
+
return db;
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
...db,
|
|
169
|
+
schemas: schemas,
|
|
170
|
+
};
|
|
171
|
+
}),
|
|
172
|
+
};
|
|
173
|
+
newMap.set(connectionName, newConn);
|
|
174
|
+
|
|
175
|
+
return {
|
|
176
|
+
latestEngineSelected: latestEngineSelected,
|
|
177
|
+
connectionsMap: newMap,
|
|
178
|
+
};
|
|
179
|
+
},
|
|
180
|
+
|
|
137
181
|
// Add table list to a specific schema in a connection
|
|
138
182
|
addTableList: (
|
|
139
183
|
state: DataSourceState,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
import type {
|
|
3
|
+
SQLSchemaListPreview,
|
|
3
4
|
SQLTableListPreview,
|
|
4
5
|
SQLTablePreview,
|
|
5
6
|
ValidateSQLResult,
|
|
@@ -8,6 +9,7 @@ import { CachingRequestRegistry } from "../network/CachingRequestRegistry";
|
|
|
8
9
|
import { DeferredRequestRegistry } from "../network/DeferredRequestRegistry";
|
|
9
10
|
import { getRequestClient } from "../network/requests";
|
|
10
11
|
import type {
|
|
12
|
+
ListSQLSchemasRequest,
|
|
11
13
|
ListSQLTablesRequest,
|
|
12
14
|
PreviewSQLTableRequest,
|
|
13
15
|
ValidateSQLRequest,
|
|
@@ -28,6 +30,17 @@ export const PreviewSQLTable = new DeferredRequestRegistry<
|
|
|
28
30
|
});
|
|
29
31
|
});
|
|
30
32
|
|
|
33
|
+
export const PreviewSQLSchemaList = new DeferredRequestRegistry<
|
|
34
|
+
Omit<ListSQLSchemasRequest, "requestId">,
|
|
35
|
+
SQLSchemaListPreview
|
|
36
|
+
>("sql-schema-list-preview", async (requestId, req) => {
|
|
37
|
+
const client = getRequestClient();
|
|
38
|
+
await client.previewSQLSchemaList({
|
|
39
|
+
requestId: requestId,
|
|
40
|
+
...req,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
31
44
|
export const PreviewSQLTableList = new DeferredRequestRegistry<
|
|
32
45
|
Omit<ListSQLTablesRequest, "requestId">,
|
|
33
46
|
SQLTableListPreview
|
|
@@ -169,6 +169,7 @@ export class IslandsPyodideBridge implements RunRequests, EditRequests {
|
|
|
169
169
|
previewDatasetColumn = throwNotImplemented;
|
|
170
170
|
previewSQLTable = throwNotImplemented;
|
|
171
171
|
previewSQLTableList = throwNotImplemented;
|
|
172
|
+
previewSQLSchemaList = throwNotImplemented;
|
|
172
173
|
previewDataSourceConnection = throwNotImplemented;
|
|
173
174
|
validateSQL = throwNotImplemented;
|
|
174
175
|
openFile = throwNotImplemented;
|
package/src/core/islands/main.ts
CHANGED
|
@@ -121,6 +121,7 @@ export async function initialize() {
|
|
|
121
121
|
case "data-column-preview":
|
|
122
122
|
case "sql-table-preview":
|
|
123
123
|
case "sql-table-list-preview":
|
|
124
|
+
case "sql-schema-list-preview":
|
|
124
125
|
case "datasets":
|
|
125
126
|
case "data-source-connections":
|
|
126
127
|
case "validate-sql-result":
|
|
@@ -41,6 +41,8 @@ export type DataColumnPreview = NotificationMessageData<"data-column-preview">;
|
|
|
41
41
|
export type SQLTablePreview = NotificationMessageData<"sql-table-preview">;
|
|
42
42
|
export type SQLTableListPreview =
|
|
43
43
|
NotificationMessageData<"sql-table-list-preview">;
|
|
44
|
+
export type SQLSchemaListPreview =
|
|
45
|
+
NotificationMessageData<"sql-schema-list-preview">;
|
|
44
46
|
export type ValidateSQLResult = NotificationMessageData<"validate-sql-result">;
|
|
45
47
|
export type SecretKeysResult = NotificationMessageData<"secret-keys-result">;
|
|
46
48
|
export type StartupLogs = NotificationMessageData<"startup-logs">;
|
|
@@ -112,6 +112,7 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
|
|
|
112
112
|
previewDatasetColumn: "waitForConnectionOpen",
|
|
113
113
|
previewSQLTable: "waitForConnectionOpen",
|
|
114
114
|
previewSQLTableList: "waitForConnectionOpen",
|
|
115
|
+
previewSQLSchemaList: "waitForConnectionOpen",
|
|
115
116
|
previewDataSourceConnection: "waitForConnectionOpen",
|
|
116
117
|
validateSQL: "waitForConnectionOpen",
|
|
117
118
|
listStorageEntries: "waitForConnectionOpen",
|
|
@@ -244,6 +244,14 @@ export function createNetworkRequests(): EditRequests & RunRequests {
|
|
|
244
244
|
})
|
|
245
245
|
.then(handleResponseReturnNull);
|
|
246
246
|
},
|
|
247
|
+
previewSQLSchemaList: (request) => {
|
|
248
|
+
return getClient()
|
|
249
|
+
.POST("/api/datasources/preview_sql_schema_list", {
|
|
250
|
+
body: request,
|
|
251
|
+
params: getParams(),
|
|
252
|
+
})
|
|
253
|
+
.then(handleResponseReturnNull);
|
|
254
|
+
},
|
|
247
255
|
previewDataSourceConnection: (request) => {
|
|
248
256
|
return getClient()
|
|
249
257
|
.POST("/api/datasources/preview_datasource_connection", {
|
|
@@ -57,6 +57,7 @@ export function createStaticRequests(): EditRequests & RunRequests {
|
|
|
57
57
|
previewDatasetColumn: throwNotInEditMode,
|
|
58
58
|
previewSQLTable: throwNotInEditMode,
|
|
59
59
|
previewSQLTableList: throwNotInEditMode,
|
|
60
|
+
previewSQLSchemaList: throwNotInEditMode,
|
|
60
61
|
previewDataSourceConnection: throwNotInEditMode,
|
|
61
62
|
validateSQL: throwNotInEditMode,
|
|
62
63
|
openFile: throwNotInEditMode,
|
|
@@ -42,6 +42,7 @@ export function createErrorToastingRequests(
|
|
|
42
42
|
previewDatasetColumn: "Failed to fetch data sources",
|
|
43
43
|
previewSQLTable: "Failed to fetch SQL table",
|
|
44
44
|
previewSQLTableList: "Failed to fetch SQL table list",
|
|
45
|
+
previewSQLSchemaList: "Failed to fetch SQL schema list",
|
|
45
46
|
previewDataSourceConnection: "Failed to preview data source connection",
|
|
46
47
|
validateSQL: "Failed to validate SQL",
|
|
47
48
|
openFile: "Failed to open file",
|
|
@@ -59,6 +59,7 @@ export type PreviewDatasetColumnRequest =
|
|
|
59
59
|
schemas["PreviewDatasetColumnRequest"];
|
|
60
60
|
export type PreviewSQLTableRequest = schemas["PreviewSQLTableRequest"];
|
|
61
61
|
export type ListSQLTablesRequest = schemas["ListSQLTablesRequest"];
|
|
62
|
+
export type ListSQLSchemasRequest = schemas["ListSQLSchemasRequest"];
|
|
62
63
|
export type ListDataSourceConnectionRequest =
|
|
63
64
|
schemas["ListDataSourceConnectionRequest"];
|
|
64
65
|
export type ValidateSQLRequest = schemas["ValidateSQLRequest"];
|
|
@@ -151,6 +152,7 @@ export interface EditRequests {
|
|
|
151
152
|
previewDatasetColumn: (request: PreviewDatasetColumnRequest) => Promise<null>;
|
|
152
153
|
previewSQLTable: (request: PreviewSQLTableRequest) => Promise<null>;
|
|
153
154
|
previewSQLTableList: (request: ListSQLTablesRequest) => Promise<null>;
|
|
155
|
+
previewSQLSchemaList: (request: ListSQLSchemasRequest) => Promise<null>;
|
|
154
156
|
previewDataSourceConnection: (
|
|
155
157
|
request: ListDataSourceConnectionRequest,
|
|
156
158
|
) => Promise<null>;
|
package/src/core/wasm/bridge.ts
CHANGED
|
@@ -523,6 +523,16 @@ export class PyodideBridge implements RunRequests, EditRequests {
|
|
|
523
523
|
return null;
|
|
524
524
|
};
|
|
525
525
|
|
|
526
|
+
previewSQLSchemaList: EditRequests["previewSQLSchemaList"] = async (
|
|
527
|
+
request,
|
|
528
|
+
) => {
|
|
529
|
+
await this.putControlRequest({
|
|
530
|
+
type: "list-sql-schemas",
|
|
531
|
+
...request,
|
|
532
|
+
});
|
|
533
|
+
return null;
|
|
534
|
+
};
|
|
535
|
+
|
|
526
536
|
previewDataSourceConnection: EditRequests["previewDataSourceConnection"] =
|
|
527
537
|
async (request) => {
|
|
528
538
|
await this.putControlRequest({
|
|
@@ -37,6 +37,7 @@ import { useSetAppConfig } from "../config/config";
|
|
|
37
37
|
import { useDataSourceActions } from "../datasets/data-source-connections";
|
|
38
38
|
import type { ConnectionName } from "../datasets/engines";
|
|
39
39
|
import {
|
|
40
|
+
PreviewSQLSchemaList,
|
|
40
41
|
PreviewSQLTable,
|
|
41
42
|
PreviewSQLTableList,
|
|
42
43
|
ValidateSQL,
|
|
@@ -288,6 +289,9 @@ export function useMarimoKernelConnection(opts: {
|
|
|
288
289
|
case "sql-table-list-preview":
|
|
289
290
|
PreviewSQLTableList.resolve(msg.data.request_id, msg.data);
|
|
290
291
|
return;
|
|
292
|
+
case "sql-schema-list-preview":
|
|
293
|
+
PreviewSQLSchemaList.resolve(msg.data.request_id, msg.data);
|
|
294
|
+
return;
|
|
291
295
|
case "validate-sql-result":
|
|
292
296
|
ValidateSQL.resolve(msg.data.request_id as RequestId, msg.data);
|
|
293
297
|
return;
|
|
@@ -874,10 +874,35 @@ const DataTableComponent = ({
|
|
|
874
874
|
return memoizedUnclampedFieldTypes.slice(0, maxColumns);
|
|
875
875
|
}, [maxColumns, memoizedUnclampedFieldTypes]);
|
|
876
876
|
|
|
877
|
+
// Compute max fractional digits per numeric column for consistent formatting.
|
|
878
|
+
const computedFractionDigits = useMemo(() => {
|
|
879
|
+
const result: Record<string, number> = {};
|
|
880
|
+
if (data && data.length > 0) {
|
|
881
|
+
for (const [colName, types] of memoizedClampedFieldTypes) {
|
|
882
|
+
if (types[0] === "number") {
|
|
883
|
+
let maxDecimals = 0;
|
|
884
|
+
for (const row of data) {
|
|
885
|
+
const val = (row as Record<string, unknown>)[colName];
|
|
886
|
+
if (typeof val === "number" && Number.isFinite(val)) {
|
|
887
|
+
const str = String(val);
|
|
888
|
+
const dotIdx = str.indexOf(".");
|
|
889
|
+
if (dotIdx !== -1) {
|
|
890
|
+
maxDecimals = Math.max(maxDecimals, str.length - dotIdx - 1);
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
result[colName] = maxDecimals;
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
return result;
|
|
899
|
+
}, [data, memoizedClampedFieldTypes]);
|
|
900
|
+
|
|
877
901
|
const memoizedRowHeaders = useDeepCompareMemoize(rowHeaders);
|
|
878
902
|
const memoizedTextJustifyColumns = useDeepCompareMemoize(textJustifyColumns);
|
|
879
903
|
const memoizedWrappedColumns = useDeepCompareMemoize(wrappedColumns);
|
|
880
904
|
const memoizedChartSpecModel = useDeepCompareMemoize(chartSpecModel);
|
|
905
|
+
const fractionDigitsByColumn = useDeepCompareMemoize(computedFractionDigits);
|
|
881
906
|
const shownColumns = memoizedClampedFieldTypes.length;
|
|
882
907
|
|
|
883
908
|
// If the field types are not set, we don't show them
|
|
@@ -898,6 +923,7 @@ const DataTableComponent = ({
|
|
|
898
923
|
// Only show data types if they are explicitly set
|
|
899
924
|
showDataTypes: showDataTypes,
|
|
900
925
|
calculateTopKRows: calculate_top_k_rows,
|
|
926
|
+
fractionDigitsByColumn: fractionDigitsByColumn,
|
|
901
927
|
}),
|
|
902
928
|
[
|
|
903
929
|
selection,
|
|
@@ -909,6 +935,7 @@ const DataTableComponent = ({
|
|
|
909
935
|
memoizedWrappedColumns,
|
|
910
936
|
headerTooltip,
|
|
911
937
|
calculate_top_k_rows,
|
|
938
|
+
fractionDigitsByColumn,
|
|
912
939
|
],
|
|
913
940
|
);
|
|
914
941
|
|