@marimo-team/islands 0.17.8 → 0.18.1
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/Combination-DN9sfYvo.js +2569 -0
- package/dist/{ConnectedDataExplorerComponent-WbiFXhKG.js → ConnectedDataExplorerComponent-Dhlx78se.js} +53 -53
- package/dist/angular-html-BQrFNFXr.js +7 -0
- package/dist/{angular-html-DOnHLneR.js → angular-html-NuAgzn7W.js} +1 -1
- package/dist/{angular-ts-ClZ_D57Q.js → angular-ts-DqCVY0oX.js} +5 -5
- package/dist/{any-language-editor-YPQMljy9.js → any-language-editor-C8uMYHwj.js} +16 -16
- package/dist/{apl-BQW_2HeZ.js → apl-CqAdrzTc.js} +6 -6
- package/dist/{arc-DqQgmHse.js → arc-JJltOFJh.js} +2 -2
- package/dist/{architecture-O4VJ6CD3-BAmYZukJ.js → architecture-O4VJ6CD3-D7BH29FP.js} +3 -3
- package/dist/{architectureDiagram-W76B3OCA-6PSfeg_h.js → architectureDiagram-W76B3OCA-BXXl3wYv.js} +22 -22
- package/dist/assets/__vite-browser-external-CSegkGa0.js +1 -0
- package/dist/assets/{worker-BrDpRi2I.js → worker-CiT2i-Vo.js} +2 -2
- package/dist/{astro-B_6-YJyf.js → astro-BhYIwlT9.js} +6 -6
- package/dist/{blade-J--jW6Qd.js → blade-C_4Ocghp.js} +8 -8
- package/dist/{blockDiagram-QIGZ2CNN-BBAMkEiZ.js → blockDiagram-QIGZ2CNN-BEJ-ovZ-.js} +16 -16
- package/dist/{bsl-DwRO_vPO.js → bsl-Cam9acj0.js} +1 -1
- package/dist/{button-Hye6-2X8.js → button-Css_i-3R.js} +73 -71
- package/dist/c-DYGEdS-r.js +4 -0
- package/dist/{c4Diagram-FPNF74CW-H3kajU-4.js → c4Diagram-FPNF74CW-Bec_XtUS.js} +8 -8
- package/dist/{cairo-C5YwJoRd.js → cairo-DzTxWLx8.js} +1 -1
- package/dist/{channel-DO61Dn1s.js → channel-SHZ3pH5W.js} +1 -1
- package/dist/{chunk-3AY6CYHV-PGaWKUmM.js → chunk-3AY6CYHV-CY56r15D.js} +10 -10
- package/dist/{chunk-4BX2VUAB-C2wFBih6.js → chunk-4BX2VUAB-DakkmKa6.js} +1 -1
- package/dist/{chunk-4KMFLZZN-BLk4DGEy.js → chunk-4KMFLZZN-PjonQa4P.js} +1 -1
- package/dist/{chunk-55IACEB6-DQd6AZ1u.js → chunk-55IACEB6-lM9AcPFI.js} +1 -1
- package/dist/{chunk-6OXUPJBA-KTKvUtax.js → chunk-6OXUPJBA-CtytfqPH.js} +7 -7
- package/dist/{chunk-7GE3RBXV-2QiFkaHl.js → chunk-7GE3RBXV-Ch2VFfx5.js} +1 -1
- package/dist/{chunk-ABZYJK2D-plHo87kc.js → chunk-ABZYJK2D-ChhHEVnH.js} +2 -2
- package/dist/{chunk-BN7GFLIU-D4EEpMya.js → chunk-BN7GFLIU-4gH4skZE.js} +1 -1
- package/dist/{chunk-CVBHYZKI-nBM-9qrT.js → chunk-CVBHYZKI-CvLGu9Zl.js} +1 -1
- package/dist/{chunk-CXMOBAN2-DQYc62lB.js → chunk-CXMOBAN2-DmuTyIC5.js} +6 -6
- package/dist/{chunk-EXTU4WIE-CzYdpCHC.js → chunk-EXTU4WIE-5gY1kHy6.js} +2 -2
- package/dist/{chunk-FMBD7UC4-5CTTj0Jv.js → chunk-FMBD7UC4-CktmbpHj.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-iN-ePWJa.js → chunk-JA3XYJ7Z-DoOh1zwr.js} +4 -4
- package/dist/{chunk-JEIROHC2-DJN5-Qfh.js → chunk-JEIROHC2-BxiaYL-E.js} +1 -1
- package/dist/{chunk-K7UQS3LO-BFLlfdsi.js → chunk-K7UQS3LO-jAauQP9f.js} +7 -7
- package/dist/{chunk-KMC2YHZD-BvIjRiOn.js → chunk-KMC2YHZD-DStgMcLU.js} +1 -1
- package/dist/{chunk-QN33PNHL-Brd7yTp3.js → chunk-QN33PNHL-a6Utqqtp.js} +2 -2
- package/dist/{chunk-QYVHNE3D-2JcHbPf-.js → chunk-QYVHNE3D-Di-okNtj.js} +2 -2
- package/dist/{chunk-QZHKN3VN-uMYxkooq.js → chunk-QZHKN3VN-uG0W9XCn.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-F8AD9lHs.js → chunk-S3R3BYOJ-D8svDLcB.js} +4 -4
- package/dist/{chunk-T44TD3VJ-BuOpBf-m.js → chunk-T44TD3VJ-C5NCytxJ.js} +1 -1
- package/dist/{chunk-TVAH2DTR-CnMJAbv2.js → chunk-TVAH2DTR-CXLr85J9.js} +6 -6
- package/dist/{chunk-TZMSLE5B-FgoUBce3.js → chunk-TZMSLE5B-1E_YfHMJ.js} +3 -3
- package/dist/{chunk-WFRQ32O7-XYO_3xAi.js → chunk-WFRQ32O7-BKSf4yCO.js} +1 -1
- package/dist/{chunk-WFWHJNB7-CO2PO-xj.js → chunk-WFWHJNB7-B1Zzkj_f.js} +1 -1
- package/dist/{chunk-XRWGC2XP-NEUwjXBT.js → chunk-XRWGC2XP-Bo8DlVQO.js} +1 -1
- package/dist/{chunk-ZPAFE4SF-CyeNhdPx.js → chunk-ZPAFE4SF-CmteRP75.js} +1 -1
- package/dist/classDiagram-KNZD7YFC-ZbE61oE0.js +40 -0
- package/dist/classDiagram-v2-RKCZMP56-BqhgFvho.js +40 -0
- package/dist/cmake-l0t4JJ7s.js +4 -0
- package/dist/{cobol-lK28EtZf.js → cobol-DJP1EK1j.js} +4 -4
- package/dist/{coffee-BSXLyDD2.js → coffee-CC5nEIi9.js} +1 -1
- package/dist/{cose-bilkent-S5V4N54A-Cj0MgFkf.js → cose-bilkent-S5V4N54A-DKXAkYs4.js} +3 -3
- package/dist/cpp-ANCO5onE.js +8 -0
- package/dist/{cpp-BChLOGjC.js → cpp-D9LYqqPp.js} +3 -3
- package/dist/{crystal-CO99xfcp.js → crystal-BRqcx7ej.js} +6 -6
- package/dist/csharp-Bz76NQ_J.js +4 -0
- package/dist/css-DAuWdYvT.js +4 -0
- package/dist/{dagre-5GWH7T2D-CfnBQe48.js → dagre-5GWH7T2D-NKT9rsKF.js} +17 -17
- package/dist/{data-grid-overlay-editor-Bcf9kFFc.js → data-grid-overlay-editor-awitGObA.js} +2 -2
- package/dist/{diagram-N5W7TBWH-04TOCf2a.js → diagram-N5W7TBWH-D7Lb6iTv.js} +24 -24
- package/dist/{diagram-QEK2KX5R-CUipzemR.js → diagram-QEK2KX5R-BGNlTTAr.js} +19 -19
- package/dist/{diagram-S2PKOQOG-ei2iw-oI.js → diagram-S2PKOQOG-DArsBfLb.js} +19 -19
- package/dist/diff-C7LSwbp8.js +4 -0
- package/dist/{dist-cqkd3NiL.js → dist-6NgnwCMd.js} +3 -3
- package/dist/{dist-CqazJcfk.js → dist-BDVas7u0.js} +1 -1
- package/dist/{dist-CGt0X2sV.js → dist-BeL8NYBI.js} +2 -2
- package/dist/dist-BhEY2Z_n.js +14 -0
- package/dist/{dist-R4ZaAXGr.js → dist-BkgFFOsz.js} +2 -2
- package/dist/{dist-v-r4jaY5.js → dist-BoehQujB.js} +1 -1
- package/dist/{dist-D7XZ_tXQ.js → dist-C2nw9RHE.js} +1 -1
- package/dist/{dist-BGDtO7aZ.js → dist-CAS8F-hC.js} +1 -1
- package/dist/{dist-s1LnJ5PG.js → dist-CS4N5B_G.js} +1 -1
- package/dist/{dist-B4S8pyFo.js → dist-Cc9Qz-U4.js} +3 -3
- package/dist/{dist-4FDGlo3i.js → dist-CljL8T10.js} +4 -4
- package/dist/dist-Cud0QD8Y.js +10 -0
- package/dist/{dist-Bi6qs7up.js → dist-D9rISDoI.js} +1 -1
- package/dist/dist-D9t6fT6i.js +10 -0
- package/dist/{dist-CTSMnLwu.js → dist-DC47GA46.js} +805 -643
- package/dist/{dist-D0KS-m2t.js → dist-Dh6pWjSH.js} +2 -2
- package/dist/{dist-DtSssmhN.js → dist-DlI9v2Hh.js} +2 -2
- package/dist/{dist-CSq74zEj.js → dist-DyXVT1vy.js} +1 -1
- package/dist/{dist-DO00gdpV.js → dist-TdQLXZKo.js} +3 -3
- package/dist/{dist-B9WB0SFB.js → dist-WvPZl2Sl.js} +1 -1
- package/dist/{dist-B4jO5BUT.js → dist-q94GwumS.js} +1 -1
- package/dist/{dist-CmEIe_wJ.js → dist-qGG7RM7P.js} +4 -4
- package/dist/{edge-BTCHQnL0.js → edge-DeFsqb1i.js} +5 -5
- package/dist/{elixir-CCIwO0SA.js → elixir-BGD3Ym80.js} +3 -3
- package/dist/{elm-Bd8GMb2w.js → elm-sXxjAPfa.js} +2 -2
- package/dist/{erDiagram-AWTI2OKA-DOO75nhy.js → erDiagram-AWTI2OKA-Dd30FpUG.js} +21 -21
- package/dist/{erb-C2XKicEJ.js → erb-CVVq1SHo.js} +19 -19
- package/dist/{erlang-BWIWBPfK.js → erlang-CoJZUhS4.js} +1 -1
- package/dist/{error-banner-BqE1uF21.js → error-banner-DDDPnVZA.js} +126 -124
- package/dist/esm-BC9Qw9UQ.js +4056 -0
- package/dist/{esm-hR1r0nyt.js → esm-DDjaZl5x.js} +14 -14
- package/dist/{flowDiagram-PVAE7QVJ-AUJeRwR9.js → flowDiagram-PVAE7QVJ-Dfo2-D8K.js} +23 -23
- package/dist/{formats-dvT8nDgH.js → formats-DClgE90A.js} +41 -21
- package/dist/{fortran-fixed-form-DOH2AovA.js → fortran-fixed-form-DUVqo01t.js} +1 -1
- package/dist/{fortran-free-form-DWQ7SFTN.js → fortran-free-form-e6UrnOjF.js} +1 -1
- package/dist/{fsharp-GbWUX1wo.js → fsharp-8cm272ry.js} +1 -1
- package/dist/{ganttDiagram-OWAHRB6G-d9HlXS4A.js → ganttDiagram-OWAHRB6G-CE9rMeMb.js} +10 -10
- package/dist/{gdresource-DJQ1WGjU.js → gdresource-ClFnPq3a.js} +2 -2
- package/dist/gdscript-B0LZbOIR.js +4 -0
- package/dist/gdshader-DFrJP5ei.js +4 -0
- package/dist/{git-commit-73gQ2jal.js → git-commit-BYaLl5ls.js} +1 -1
- package/dist/{git-rebase-tezkvplk.js → git-rebase-8n1RW6UD.js} +1 -1
- package/dist/{gitGraph-ZV4HHKMB-4c_I6adP.js → gitGraph-ZV4HHKMB-DGIos9rl.js} +3 -3
- package/dist/{gitGraphDiagram-NY62KEGX-BdOzqIF7.js → gitGraphDiagram-NY62KEGX-DJjzf0dH.js} +19 -19
- package/dist/{glide-data-editor-B26PhZvE.js → glide-data-editor-CdlLXwb-.js} +94 -94
- package/dist/{glimmer-js-B4yN_cyX.js → glimmer-js-Dai0PeIS.js} +4 -4
- package/dist/{glimmer-ts-BFwzJYHf.js → glimmer-ts-D_TjaTpy.js} +4 -4
- package/dist/glsl-CxEuvrWH.js +5 -0
- package/dist/{glsl-Da3zbemV.js → glsl-CyGXCGI2.js} +1 -1
- package/dist/go-DdqSEUJy.js +4 -0
- package/dist/{graphql-DHCTQXG8.js → graphql-B1Dx1rcM.js} +4 -4
- package/dist/graphql-cxjxtpev.js +8 -0
- package/dist/{hack-Bq2SPMdZ.js → hack-DaQhTJ_x.js} +4 -4
- package/dist/{haml-DKOqVKa_.js → haml-Bp5GoYpB.js} +2 -2
- package/dist/haml-CiyF8Brn.js +6 -0
- package/dist/{handlebars-lWgxxMwE.js → handlebars-ChGgzSRK.js} +4 -4
- package/dist/haxe-DCTL_FCo.js +4 -0
- package/dist/hlsl-Bfx4Ir_v.js +4 -0
- package/dist/{html-CHICwrWt.js → html-C4wWoZph.js} +2 -2
- package/dist/html-CEOIAVhY.js +6 -0
- package/dist/{html-derivative-BvtUczEO.js → html-derivative-BBqlL-a4.js} +1 -1
- package/dist/{html-derivative-PpMnWy1w.js → html-derivative-COo0pM2g.js} +4 -4
- package/dist/{http-CL7ORkDb.js → http-BBZ3n4Nc.js} +9 -9
- package/dist/{hxml-dX0MdapH.js → hxml-B3WEmVIR.js} +1 -1
- package/dist/{info-63CPKGFF-Bz8ia4ds.js → info-63CPKGFF-BJRf7NSB.js} +3 -3
- package/dist/{infoDiagram-STP46IZ2-2N5rOSVf.js → infoDiagram-STP46IZ2-wRiL7RAF.js} +15 -15
- package/dist/java-Dg_uLDO2.js +4 -0
- package/dist/javascript-UdF6t51O.js +4 -0
- package/dist/{jinja-DsZfQ7_N.js → jinja-DIY5F3JL.js} +3 -3
- package/dist/{jison-BspgGSu_.js → jison-NvMl7ZRB.js} +1 -1
- package/dist/{journeyDiagram-BIP6EPQ6-AkLtiVmB.js → journeyDiagram-BIP6EPQ6-xE-QKfW3.js} +9 -9
- package/dist/json-DhGO17Us.js +4 -0
- package/dist/jsx-BnWl0sfU.js +4 -0
- package/dist/{julia-B_C4JiTM.js → julia-B99Wf6ks.js} +8 -8
- package/dist/{kanban-definition-6OIFK2YF-Crxg_HOg.js → kanban-definition-6OIFK2YF-xTM_lSKu.js} +15 -15
- package/dist/{katex-CTMLv-Xd.js → katex-_B79i9h_.js} +1 -1
- package/dist/{label-D3LNCORf.js → label-DboGLjGa.js} +234 -203
- package/dist/{latex-DoiWAlAQ.js → latex-CZecqbCK.js} +2 -2
- package/dist/less-DZgWnAzP.js +4 -0
- package/dist/{line-DBxDZ2GZ.js → line-Bm50ongk.js} +3 -3
- package/dist/{linear-B8XR-NVr.js → linear-CUCOukde.js} +2 -2
- package/dist/{liquid-Bv5Ox8yg.js → liquid-CBTCQ-BA.js} +4 -4
- package/dist/{lua-BKJ_BAEH.js → lua-BAo0xbXr.js} +1 -1
- package/dist/lua-C4LdLFQB.js +5 -0
- package/dist/main.js +9322 -8755
- package/dist/markdown-DmoiORob.js +4 -0
- package/dist/{marko-DEzr-2oj.js → marko-aJY3NB2u.js} +4 -4
- package/dist/{mdc-GC7qNQda.js → mdc-DUOD_AOa.js} +6 -6
- package/dist/{mermaid-Dl3ywmV2.js → mermaid-DKh-bxRG.js} +24 -24
- package/dist/{mermaid-parser.core-C5kJ8cMb.js → mermaid-parser.core-BkBK5D-D.js} +8 -8
- package/dist/mermaid.core-BlYN1aB0.js +31 -0
- package/dist/{mermaid.core-2hDUD3tS.js → mermaid.core-DhviAB-E.js} +35 -35
- package/dist/{mhchem-ydsvRuzJ.js → mhchem-BLvV19Q1.js} +1 -1
- package/dist/{mindmap-definition-Q6HEUPPD-u3xALYXy.js → mindmap-definition-Q6HEUPPD-DhGkxCFl.js} +20 -20
- package/dist/{nginx-WYx0kjQD.js → nginx-C4wBmtSL.js} +2 -2
- package/dist/{nim-B59jjkdb.js → nim-7HUrH4-G.js} +8 -8
- package/dist/{number-overlay-editor-BJoc-iTp.js → number-overlay-editor-B7JKtSXW.js} +1 -1
- package/dist/{ordinal-DncHRC0c.js → ordinal-CgAjEHLv.js} +1 -1
- package/dist/{packet-HUATNLJX-DZeFAkmI.js → packet-HUATNLJX-COt0WQbt.js} +3 -3
- package/dist/{perl-BWXWNd9p.js → perl-DcIsham4.js} +6 -6
- package/dist/{php-B2IAnMDw.js → php-BMhhkMnI.js} +6 -6
- package/dist/php-BgNggqvM.js +11 -0
- package/dist/{pie-WTHONI2E-CcN2FpmZ.js → pie-WTHONI2E-7VABasD6.js} +3 -3
- package/dist/{pieDiagram-ADFJNKIX-B40sMFEq.js → pieDiagram-ADFJNKIX-CV46TPgr.js} +24 -24
- package/dist/postcss-BV0gPaAN.js +4 -0
- package/dist/{pug-jCrWgXoo.js → pug-C7hWP9pb.js} +3 -3
- package/dist/python-DrIYjHcK.js +4 -0
- package/dist/{qml-BvryPJl6.js → qml-4wNHxISd.js} +1 -1
- package/dist/{quadrantDiagram-LMRXKWRM-C-qFDzwP.js → quadrantDiagram-LMRXKWRM-0ohBNHBM.js} +5 -5
- package/dist/r-bWdZZY4p.js +4 -0
- package/dist/{radar-NJJJXTRR-DgOJ0Ctc.js → radar-NJJJXTRR-DEeA59xM.js} +3 -3
- package/dist/{razor-BsW9JZIF.js → razor-kE6VSkUw.js} +4 -4
- package/dist/react-vega-BFAvc6S7.js +25 -0
- package/dist/{react-vega-ypEMYp9o.js → react-vega-L8_x6Wjr.js} +50 -23
- package/dist/regexp-Du19WMsH.js +4 -0
- package/dist/{requirementDiagram-4UW4RH46-Cl_mIh_y.js → requirementDiagram-4UW4RH46-DSnND54_.js} +20 -20
- package/dist/{rst-CRU76Z1W.js → rst-CjWaqJB3.js} +22 -22
- package/dist/{ruby-9gRRZYzM.js → ruby-CX211_l4.js} +12 -12
- package/dist/ruby-Dsch-4qr.js +22 -0
- package/dist/{sankeyDiagram-GR3RE2ED-Dm9k3dHY.js → sankeyDiagram-GR3RE2ED-C4jd7w5x.js} +6 -6
- package/dist/{sas-BDTaEI61.js → sas-Bso79j2d.js} +1 -1
- package/dist/{scss-B1u4Hrbb.js → scss-B2x0kI7c.js} +1 -1
- package/dist/scss-BHcIhkao.js +5 -0
- package/dist/sdbl-CiVVvobW.js +4 -0
- package/dist/{sequenceDiagram-C3RYC4MD-DmU9oc42.js → sequenceDiagram-C3RYC4MD-4cYnu6yf.js} +10 -10
- package/dist/{shaderlab-Bm5WmYK9.js → shaderlab-B4l4__9m.js} +1 -1
- package/dist/shellscript-Carvxcyf.js +4 -0
- package/dist/{shellsession-CN-wC7WL.js → shellsession-D-krdWsh.js} +1 -1
- package/dist/{slides-component-CZksIptv.js → slides-component-Cm9g-y7F.js} +1 -1
- package/dist/{soy-CeMP2PMh.js → soy-wFhS-Vjb.js} +3 -3
- package/dist/{sparql-M76X2Hg1.js → sparql-D6Kv-L3I.js} +1 -1
- package/dist/{spec-qDDGe5hl.js → spec-B7BWIiD8.js} +3 -3
- package/dist/sql-CVP77J2a.js +4 -0
- package/dist/{src-CePha-_O.js → src-DopHipf8.js} +1 -1
- package/dist/{stata-BH7l4VD7.js → stata-1fehkWpU.js} +1 -1
- package/dist/{stateDiagram-KXAO66HF-D_SUaMYR.js → stateDiagram-KXAO66HF-Cq-ezNe-.js} +21 -21
- package/dist/stateDiagram-v2-UMBNRL4Z-QxkaR8xk.js +39 -0
- package/dist/{step-zYP-E-fB.js → step-Bixovd6W.js} +1 -1
- package/dist/stex-IzMc-wiJ.js +5 -0
- package/dist/style.css +1 -2
- package/dist/stylus-BTQe34gF.js +4 -0
- package/dist/{svelte-TwcowgfT.js → svelte-DZNFxgw8.js} +4 -4
- package/dist/{templ-BpG-MhQv.js → templ-unaxtPDu.js} +3 -3
- package/dist/tex-B02KkJuq.js +5 -0
- package/dist/{tex-CBM64lBG.js → tex-WcClzGDl.js} +1 -1
- package/dist/{time-DRnNkqSS.js → time-D5kvxFYj.js} +2 -2
- package/dist/{timeline-definition-XQNQX7LJ-BgkB1JzD.js → timeline-definition-XQNQX7LJ-HouMBLkR.js} +6 -6
- package/dist/{treemap-75Q7IDZK-CGM2jb5Y.js → treemap-75Q7IDZK-rIabFN59.js} +3 -3
- package/dist/{ts-tags-CywVDBFD.js → ts-tags-Dw16jybl.js} +9 -9
- package/dist/tsx-2o7mnE6q.js +4 -0
- package/dist/turtle-CDidgplC.js +4 -0
- package/dist/{twig-DKvQCGZl.js → twig-CTY0fjwf.js} +23 -23
- package/dist/{types-2eTEqSwS.js → types-8-7JTTaW.js} +176 -175
- package/dist/typescript-Z3djoets.js +4 -0
- package/dist/{useAsyncData-6gisQ4pR.js → useAsyncData-_ejUTnFA.js} +1 -1
- package/dist/{useTheme-B-2frT0L.js → useTheme-Cpx27F7Z.js} +5 -2
- package/dist/{vega-component-C-bCSv1b.js → vega-component-r6NkLfxM.js} +213 -212
- package/dist/{vue-CUZawI_b.js → vue-BjZgU5Nz.js} +6 -6
- package/dist/vue-DhUZPDmo.js +10 -0
- package/dist/{vue-html-Bx7_HmU0.js → vue-html-C4EmFqJx.js} +7 -7
- package/dist/{vue-vine-9w78JPDc.js → vue-vine-DrjIj56i.js} +11 -11
- package/dist/{xml-CEIIhUsl.js → xml-BgKyT7dU.js} +1 -1
- package/dist/xml-C7KksLEJ.js +5 -0
- package/dist/{xsl-BynZr4Sw.js → xsl-9daNus4h.js} +2 -2
- package/dist/{xychartDiagram-6GGTOJPD-u5660hzT.js → xychartDiagram-6GGTOJPD-DkDWjoGr.js} +16 -16
- package/dist/yaml-zmBXofFy.js +4 -0
- package/package.json +8 -8
- package/src/components/chat/acp/blocks.tsx +1 -1
- package/src/components/chat/chat-panel.tsx +7 -3
- package/src/components/chat/reasoning-accordion.tsx +1 -1
- package/src/components/data-table/TableActions.tsx +18 -14
- package/src/components/data-table/__tests__/columns.test.tsx +143 -1
- package/src/components/data-table/__tests__/url-detector.test.tsx +92 -1
- package/src/components/data-table/columns.tsx +34 -17
- package/src/components/data-table/data-table.tsx +3 -0
- package/src/components/data-table/download-actions.tsx +16 -8
- package/src/components/data-table/row-viewer-panel/row-viewer.tsx +5 -5
- package/src/components/data-table/url-detector.tsx +43 -0
- package/src/components/datasources/utils.ts +7 -0
- package/src/components/editor/ai/ai-completion-editor.tsx +6 -3
- package/src/components/editor/cell/CreateCellButton.tsx +98 -88
- package/src/components/editor/chrome/panels/packages-panel.tsx +3 -1
- package/src/components/editor/chrome/types.ts +7 -0
- package/src/components/editor/file-tree/__tests__/file-expolorer.test.ts +179 -0
- package/src/components/editor/file-tree/file-explorer.tsx +71 -1
- package/src/components/editor/notebook-cell.tsx +27 -25
- package/src/components/editor/output/__tests__/ansi-reduce.test.ts +8 -0
- package/src/components/editor/output/ansi-reduce.ts +7 -4
- package/src/components/editor/renderers/grid-layout/grid-layout.tsx +35 -3
- package/src/components/pages/home-page.tsx +8 -3
- package/src/components/ui/table.tsx +1 -1
- package/src/core/ai/tools/__tests__/edit-notebook-tool.test.ts +156 -10
- package/src/core/ai/tools/__tests__/registry.test.ts +41 -3
- package/src/core/ai/tools/edit-notebook-tool.ts +86 -45
- package/src/core/ai/tools/registry.ts +5 -2
- package/src/core/cells/__tests__/logs.test.ts +371 -0
- package/src/core/cells/__tests__/session.test.ts +0 -9
- package/src/core/cells/logs.ts +16 -5
- package/src/core/cells/session.ts +0 -1
- package/src/core/codemirror/__tests__/format.test.ts +28 -2
- package/src/core/codemirror/copilot/client.ts +21 -1
- package/src/core/codemirror/copilot/copilot-config.tsx +29 -1
- package/src/core/codemirror/editing/commands.ts +4 -3
- package/src/core/codemirror/format.ts +105 -7
- package/src/core/codemirror/language/languages/sql/completion-store.ts +1 -1
- package/src/core/codemirror/language/languages/sql/sql.ts +8 -1
- package/src/core/codemirror/language/languages/sql/utils.ts +15 -0
- package/src/core/codemirror/language/panel/panel.tsx +1 -1
- package/src/core/config/__tests__/config-schema.test.ts +2 -0
- package/src/core/config/config-schema.ts +4 -3
- package/src/core/packages/__tests__/package-input-utils.test.ts +93 -0
- package/src/core/packages/package-input-utils.ts +36 -0
- package/src/core/websocket/useMarimoWebSocket.tsx +1 -1
- package/src/css/app/Cell.css +6 -1
- package/src/css/md.css +5 -0
- package/src/plugins/core/__test__/sanitize.test.ts +1 -1
- package/src/plugins/core/sanitize.ts +3 -1
- package/src/plugins/impl/DataTablePlugin.tsx +10 -1
- package/src/plugins/impl/DateTimePickerPlugin.tsx +3 -1
- package/src/plugins/impl/__tests__/DateTimePickerPlugin.test.tsx +3 -0
- package/src/plugins/impl/chat/ChatPlugin.tsx +1 -0
- package/src/plugins/impl/chat/chat-ui.tsx +140 -10
- package/src/plugins/impl/common/error-banner.tsx +7 -3
- package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -0
- package/src/plugins/impl/vega/VegaPlugin.tsx +1 -0
- package/src/plugins/impl/vega/vega-component.tsx +26 -5
- package/src/plugins/layout/NavigationMenuPlugin.tsx +14 -3
- package/src/plugins/layout/ProgressPlugin.tsx +8 -5
- package/src/plugins/layout/StatPlugin.tsx +11 -4
- package/src/plugins/layout/__test__/ProgressPlugin.test.ts +37 -21
- package/src/utils/__tests__/urls.test.ts +165 -1
- package/src/utils/urls.ts +120 -0
- package/src/utils/vitals.ts +1 -1
- package/dist/Combination-BH_L276x.js +0 -2503
- package/dist/angular-html-BcsYKZNy.js +0 -7
- package/dist/assets/__vite-browser-external-BTNiCQ6O.js +0 -1
- package/dist/c-RhvfrIXd.js +0 -4
- package/dist/classDiagram-KNZD7YFC-BwfV2ECJ.js +0 -40
- package/dist/classDiagram-v2-RKCZMP56-CdtBTwGN.js +0 -40
- package/dist/cmake-Dv9WBQ8F.js +0 -4
- package/dist/cpp-De3HlDQp.js +0 -8
- package/dist/csharp-DONDYcLD.js +0 -4
- package/dist/css-KrVDDZJI.js +0 -4
- package/dist/diff-C_xoFltE.js +0 -4
- package/dist/dist-C_ywAD_6.js +0 -10
- package/dist/dist-Umyw8yf9.js +0 -10
- package/dist/download-Bb5BCMXq.js +0 -145
- package/dist/esm-Cjo4c4Vw.js +0 -2188
- package/dist/gdscript-CCtCxlxC.js +0 -4
- package/dist/gdshader-DRsZz2Lo.js +0 -4
- package/dist/glsl-Bpd55IJK.js +0 -5
- package/dist/go-BZbX8CmG.js +0 -4
- package/dist/graphql-C3W9lZa9.js +0 -8
- package/dist/haml-0dNTXdjh.js +0 -6
- package/dist/haxe-D67WIBdi.js +0 -4
- package/dist/hlsl-A_Yq2Muj.js +0 -4
- package/dist/html-C6ObPTU5.js +0 -6
- package/dist/java-BFakZb2S.js +0 -4
- package/dist/javascript-B8ZNE_3R.js +0 -4
- package/dist/json-CVwA-VKM.js +0 -4
- package/dist/jsx-TsEBgZMR.js +0 -4
- package/dist/less-R7I1oHvn.js +0 -4
- package/dist/lua-CdOJTa1m.js +0 -5
- package/dist/markdown-Czm489_C.js +0 -4
- package/dist/mermaid.core-D5NqLRbX.js +0 -31
- package/dist/php-B2RrCM5T.js +0 -11
- package/dist/postcss-CK8yd697.js +0 -4
- package/dist/python-BAyuw8wl.js +0 -4
- package/dist/r-CMKGyVVD.js +0 -4
- package/dist/react-vega-BIDT9Ttp.js +0 -25
- package/dist/regexp-C-NGZx14.js +0 -4
- package/dist/ruby-DC1LiM9o.js +0 -22
- package/dist/scss-9LDy_1oh.js +0 -5
- package/dist/sdbl-Cauk10zS.js +0 -4
- package/dist/shellscript-DPV_oGnY.js +0 -4
- package/dist/sql-BuUisnb3.js +0 -4
- package/dist/stateDiagram-v2-UMBNRL4Z-DdAPrjTz.js +0 -39
- package/dist/stex-BPCIi6ix.js +0 -5
- package/dist/stylus-BzfQ5p6U.js +0 -4
- package/dist/tex-DKaqHjWi.js +0 -5
- package/dist/tsx-CAS2Oalp.js +0 -4
- package/dist/turtle-Dqog6asB.js +0 -4
- package/dist/typescript-DHHJAsKz.js +0 -4
- package/dist/vue-DiyvUvuo.js +0 -10
- package/dist/xml-wE_-A0vH.js +0 -5
- package/dist/yaml-5htSumZI.js +0 -4
- /package/dist/{ImageComparisonComponent-DTO3nRq-.js → ImageComparisonComponent-CXBJ7S4z.js} +0 -0
- /package/dist/{abap-Cnc1m8d-.js → abap-I2cGjSH1.js} +0 -0
- /package/dist/{actionscript-3-g8zBgLKw.js → actionscript-3-DL1yGs6S.js} +0 -0
- /package/dist/{ada-MlSLvfsc.js → ada-BkGUMHAC.js} +0 -0
- /package/dist/{andromeeda-CkQePh6_.js → andromeeda-BWSHGuDt.js} +0 -0
- /package/dist/{apache-Cp-BBvQI.js → apache-DRnLyMnR.js} +0 -0
- /package/dist/{apex-CID9_iW1.js → apex-CA0TS4zn.js} +0 -0
- /package/dist/{applescript-Bv6vEFim.js → applescript-B8vB3y-q.js} +0 -0
- /package/dist/{ara-l5FvBxcT.js → ara-C0et56O5.js} +0 -0
- /package/dist/{array-lX94FrxB.js → array-vD2Vw0bk.js} +0 -0
- /package/dist/{asciidoc-BpLzRCLD.js → asciidoc-a6FHzc0d.js} +0 -0
- /package/dist/{asm-CxMfzk9G.js → asm-3DPfbryP.js} +0 -0
- /package/dist/{asterisk-Cbdk9I7-.js → asterisk-CbqErmo8.js} +0 -0
- /package/dist/{aurora-x-BmJfZyvk.js → aurora-x-Cq0GoPAm.js} +0 -0
- /package/dist/{awk-DZbdMF01.js → awk-GgrsjT7w.js} +0 -0
- /package/dist/{ayu-dark-Ce21p_3j.js → ayu-dark-BOgp0yX0.js} +0 -0
- /package/dist/{ballerina-6WMbs5Nh.js → ballerina-DErPOQth.js} +0 -0
- /package/dist/{bat-D70SunD8.js → bat-CkhnPpIS.js} +0 -0
- /package/dist/{beancount-DtkuCj7H.js → beancount-Rkl6N3Po.js} +0 -0
- /package/dist/{berry-DbfHEJGk.js → berry-C0cFa9Eb.js} +0 -0
- /package/dist/{bibtex-Cl9qlt9d.js → bibtex-PErECouH.js} +0 -0
- /package/dist/{bicep-0zpjixSE.js → bicep-B9tJFYg8.js} +0 -0
- /package/dist/{c-0VtUNZe8.js → c-xZK3SMJX.js} +0 -0
- /package/dist/{cadence-D2-Gq0t7.js → cadence-D2lNr2F0.js} +0 -0
- /package/dist/{catppuccin-frappe-DFz6L_QP.js → catppuccin-frappe-CEY1tx7K.js} +0 -0
- /package/dist/{catppuccin-latte-DSTm5iMg.js → catppuccin-latte-BjeOZATb.js} +0 -0
- /package/dist/{catppuccin-macchiato-D5cPlFDN.js → catppuccin-macchiato-HTrdL1Py.js} +0 -0
- /package/dist/{catppuccin-mocha-BBVxciDI.js → catppuccin-mocha-DaNBfKBN.js} +0 -0
- /package/dist/{chunk-57QY23SG-B6p-8LKm.js → chunk-57QY23SG-CtPsoWDn.js} +0 -0
- /package/dist/{clarity-CTtLMvQr.js → clarity-Di3YnyD4.js} +0 -0
- /package/dist/{click-outside-container-CR-VHaIe.js → click-outside-container-DnKND-Y5.js} +0 -0
- /package/dist/{clojure-CQ_s11PN.js → clojure-BaI1cLwf.js} +0 -0
- /package/dist/{cmake-DF99YgK0.js → cmake-Ct5KlIlx.js} +0 -0
- /package/dist/{codeowners-CRbICvXw.js → codeowners-B47SmYv4.js} +0 -0
- /package/dist/{codeql-DzUBsQZ9.js → codeql-C-RyBs2A.js} +0 -0
- /package/dist/{colors-C2w3uhVQ.js → colors-c_1kHhMM.js} +0 -0
- /package/dist/{common-keywords-D7noiVjl.js → common-keywords-qG52oQhe.js} +0 -0
- /package/dist/{common-lisp-CkedN1Bk.js → common-lisp-BEkqGRVt.js} +0 -0
- /package/dist/{coq-B7OBnzDw.js → coq-BMELwi0x.js} +0 -0
- /package/dist/{csharp-nXluFhrZ.js → csharp-D8kGQl5L.js} +0 -0
- /package/dist/{css-CPr1yM7G.js → css-D91D9ZFJ.js} +0 -0
- /package/dist/{csv-BTyvW9Dm.js → csv-DsiEeqZB.js} +0 -0
- /package/dist/{cue-CtcusocM.js → cue-Bd4pPCrb.js} +0 -0
- /package/dist/{cypher-BCo9_Gxf.js → cypher-CY6X1_fR.js} +0 -0
- /package/dist/{cytoscape.esm-CeO110wc.js → cytoscape.esm-D3qnLru1.js} +0 -0
- /package/dist/{d-qe1Yx8Pk.js → d-Dq3ZvYXH.js} +0 -0
- /package/dist/{dark-plus-COhL9N0K.js → dark-plus-DAkssByr.js} +0 -0
- /package/dist/{dart-C-zwBpkD.js → dart-CRwsUVcK.js} +0 -0
- /package/dist/{dax-9HVn3jKI.js → dax-yCcjIsFY.js} +0 -0
- /package/dist/{desktop-DcOWBslk.js → desktop-F3trsLZp.js} +0 -0
- /package/dist/{diff-0HrJYevs.js → diff-oSoYkmE6.js} +0 -0
- /package/dist/{dist-Ck_uei4a.js → dist-BEBl1fVc.js} +0 -0
- /package/dist/{dist-BOoOMWpw.js → dist-L1A29jng.js} +0 -0
- /package/dist/{dist-CFOn9U6a.js → dist-RsSoJ-Ow.js} +0 -0
- /package/dist/{dist-BLj2WRAk.js → dist-WgdRzo73.js} +0 -0
- /package/dist/{dist-Dndqm_ya.js → dist-_HymStvo.js} +0 -0
- /package/dist/{dist-B9BklWGT.js → dist-zlCh7zB9.js} +0 -0
- /package/dist/{docker-oHtI3hEB.js → docker-CzW3fUnV.js} +0 -0
- /package/dist/{dockerfile-DSCH583m.js → dockerfile-TsgC6Bmm.js} +0 -0
- /package/dist/{dotenv-sY_xnKYe.js → dotenv-C5RAv6mV.js} +0 -0
- /package/dist/{dracula-Bh9RLqOx.js → dracula-0J2lfdjD.js} +0 -0
- /package/dist/{dracula-soft-Cvp6b01Z.js → dracula-soft-CZX9ZgRW.js} +0 -0
- /package/dist/{dream-maker-6snTsD3J.js → dream-maker-D668Dv7O.js} +0 -0
- /package/dist/{duckdb-keywords-BCq77yXm.js → duckdb-keywords-DHIKlX_6.js} +0 -0
- /package/dist/{ebnf-BnX_o_Yq.js → ebnf-spWsoNeW.js} +0 -0
- /package/dist/{emacs-lisp-C6oq3DLk.js → emacs-lisp-9r6Oy_vR.js} +0 -0
- /package/dist/{everforest-dark-BYBypIqM.js → everforest-dark-BV3p6ZTT.js} +0 -0
- /package/dist/{everforest-light-D4mfI1FM.js → everforest-light-D4viDjQH.js} +0 -0
- /package/dist/{fcl-DDKjgNry.js → fcl-DOHQxani.js} +0 -0
- /package/dist/{fennel-C4o5c4mv.js → fennel-DdgItcQL.js} +0 -0
- /package/dist/{fish-BD9AkN7o.js → fish-Dah-0_yV.js} +0 -0
- /package/dist/{fluent-eCvhADRq.js → fluent-Dkmhuwpv.js} +0 -0
- /package/dist/{fortran-free-form-CuTQJQMN.js → fortran-free-form-DNLybXh-.js} +0 -0
- /package/dist/{gdscript-B40Spm2S.js → gdscript-DtYBhJ1b.js} +0 -0
- /package/dist/{gdshader-BZSmNWVa.js → gdshader-BV2VMgVk.js} +0 -0
- /package/dist/{genie-Cy_D8EWg.js → genie-BFMUrkvN.js} +0 -0
- /package/dist/{gherkin-ct-w1STV.js → gherkin-DppeDWDv.js} +0 -0
- /package/dist/{github-dark-CbIY86Wd.js → github-dark-D29L3HCC.js} +0 -0
- /package/dist/{github-dark-default-BlPRzuGs.js → github-dark-default-n3il8rgM.js} +0 -0
- /package/dist/{github-dark-dimmed-CwyHPTp3.js → github-dark-dimmed-oz4y0Wki.js} +0 -0
- /package/dist/{github-dark-high-contrast-Ch3E28Ga.js → github-dark-high-contrast-By7F7Fv0.js} +0 -0
- /package/dist/{github-light-BM3RayZ2.js → github-light-CWUlQb3u.js} +0 -0
- /package/dist/{github-light-default-BWhIdJf6.js → github-light-default-BffED7Ak.js} +0 -0
- /package/dist/{github-light-high-contrast-CKsJGAYi.js → github-light-high-contrast-Pu6OZUhP.js} +0 -0
- /package/dist/{gleam-Cwu_dIV7.js → gleam-BUcDYi_k.js} +0 -0
- /package/dist/{gnuplot-W2uzVV04.js → gnuplot-C1MgslgQ.js} +0 -0
- /package/dist/{go-C0N7iCwo.js → go-CYZiZRxy.js} +0 -0
- /package/dist/{groovy-BCFsp4zc.js → groovy-ClTIQGUH.js} +0 -0
- /package/dist/{gruvbox-dark-hard-DMFH1kAD.js → gruvbox-dark-hard-Bp86g2V_.js} +0 -0
- /package/dist/{gruvbox-dark-medium-DiHZEQva.js → gruvbox-dark-medium-BK2iIEfy.js} +0 -0
- /package/dist/{gruvbox-dark-soft-De9URWso.js → gruvbox-dark-soft-B_0xgXvI.js} +0 -0
- /package/dist/{gruvbox-light-hard-DzokvGK_.js → gruvbox-light-hard-DBlpi77o.js} +0 -0
- /package/dist/{gruvbox-light-medium-C4psEnS5.js → gruvbox-light-medium-CAccdTaF.js} +0 -0
- /package/dist/{gruvbox-light-soft-DL0f_6un.js → gruvbox-light-soft-DcO-EcR5.js} +0 -0
- /package/dist/{haskell-CDLvQWXZ.js → haskell-A1vUYtej.js} +0 -0
- /package/dist/{haxe-CLjmCvGB.js → haxe-DnHFv-TV.js} +0 -0
- /package/dist/{hcl-COL_PBAE.js → hcl-CU6j-Xhf.js} +0 -0
- /package/dist/{hjson-DkR4GFDO.js → hjson-ClOjKSoB.js} +0 -0
- /package/dist/{hlsl-BJKnqnDQ.js → hlsl-Q52_rKUP.js} +0 -0
- /package/dist/{houston-DYwZabvW.js → houston-DGG5Ln2h.js} +0 -0
- /package/dist/{http-2MVb-dsB.js → http-BgHOhKz2.js} +0 -0
- /package/dist/{hy-OsbjMwY0.js → hy-Bja9Numd.js} +0 -0
- /package/dist/{imba-Ddkaio98.js → imba-HOr9EX5j.js} +0 -0
- /package/dist/{ini-CNrkD-OZ.js → ini-EvmYJ-83.js} +0 -0
- /package/dist/{init-BU4YGOOg.js → init-BsH2JjGd.js} +0 -0
- /package/dist/{java-Ci6qXyg1.js → java-91iGU5ap.js} +0 -0
- /package/dist/{javascript-URuDoMWW.js → javascript-CPeJGbMe.js} +0 -0
- /package/dist/{json-DX7TV6Gi.js → json-N0VDmGwx.js} +0 -0
- /package/dist/{json5-Djp3uvi3.js → json5-BC1TPZZb.js} +0 -0
- /package/dist/{jsonc-XlYTIqzR.js → jsonc-B88-mC9I.js} +0 -0
- /package/dist/{jsonl-GwfHzMab.js → jsonl-CXu8ax4T.js} +0 -0
- /package/dist/{jsonnet-CPv7P6JN.js → jsonnet-0HtPQpiV.js} +0 -0
- /package/dist/{jssm-DdbAawAp.js → jssm-Bk3koTsK.js} +0 -0
- /package/dist/{jsx-DkGuBjr4.js → jsx-Cbdt0xgS.js} +0 -0
- /package/dist/{kanagawa-dragon-Vs6U6z1S.js → kanagawa-dragon-6wkRCL1O.js} +0 -0
- /package/dist/{kanagawa-lotus-Buvs3lt0.js → kanagawa-lotus-21R5pwns.js} +0 -0
- /package/dist/{kanagawa-wave-Bj2TElAo.js → kanagawa-wave-DvIMpnk3.js} +0 -0
- /package/dist/{katex-DHhoxnpM.js → katex-Cymo3Ugt.js} +0 -0
- /package/dist/{kotlin-Cpc_0A7a.js → kotlin-Brxn_vmg.js} +0 -0
- /package/dist/{kusto-Co9wVBCz.js → kusto-CLSwwyw9.js} +0 -0
- /package/dist/{laserwave-Ca61-FAH.js → laserwave-D2HyGZu4.js} +0 -0
- /package/dist/{lean-C0Aa7Fsj.js → lean-C7cjnnxn.js} +0 -0
- /package/dist/{less-_PXFbiQM.js → less-Db3q8KJ4.js} +0 -0
- /package/dist/{light-plus-5ex0bkO5.js → light-plus-C2C7fw4Z.js} +0 -0
- /package/dist/{llvm-BbKHoWwP.js → llvm-DAIyCtJL.js} +0 -0
- /package/dist/{log-CAfpKA3d.js → log-vTaTH8PJ.js} +0 -0
- /package/dist/{logo-_JZv2_m7.js → logo-D9tY6FNo.js} +0 -0
- /package/dist/{luau-By4kXsmQ.js → luau-IjR5-Ywl.js} +0 -0
- /package/dist/{main-BeKMoTBP.js → main-CRpnHr48.js} +0 -0
- /package/dist/{make-BRzozWYB.js → make-Cu-cnuA_.js} +0 -0
- /package/dist/{markdown-DBlXv3d9.js → markdown-C5F3cvct.js} +0 -0
- /package/dist/{marked.esm-CqJtK50L.js → marked.esm-DpOvkPbZ.js} +0 -0
- /package/dist/{material-theme-UdvytYzK.js → material-theme-DC62_X77.js} +0 -0
- /package/dist/{material-theme-darker-ifWxjE_M.js → material-theme-darker-ZdvrV-zE.js} +0 -0
- /package/dist/{material-theme-lighter-BJMt_hpe.js → material-theme-lighter-CjF6eqam.js} +0 -0
- /package/dist/{material-theme-ocean-DBLAtuvq.js → material-theme-ocean-B1OEP8g-.js} +0 -0
- /package/dist/{material-theme-palenight-D_bLdV4c.js → material-theme-palenight-DG7XKA0s.js} +0 -0
- /package/dist/{math-B9kWnSVt.js → math-kvEWD7RZ.js} +0 -0
- /package/dist/{matlab-SZvC4TdD.js → matlab-Bkgl6cmi.js} +0 -0
- /package/dist/{mdx-FGsuIggU.js → mdx-B3dxoxO_.js} +0 -0
- /package/dist/{mermaid-Bq_9A0K_.js → mermaid-Vk73zc_P.js} +0 -0
- /package/dist/{min-dark-CXAX-ZXK.js → min-dark-BXnwqHsA.js} +0 -0
- /package/dist/{min-light-BCnp1thB.js → min-light-t8HWsGPD.js} +0 -0
- /package/dist/{mipsasm-B5qmQK6W.js → mipsasm-DM3DsUwR.js} +0 -0
- /package/dist/{mojo-GIDM7_y7.js → mojo-CgJHtiXY.js} +0 -0
- /package/dist/{monokai-DL7jaPcf.js → monokai-CRI7M-ed.js} +0 -0
- /package/dist/{move-DRJvkv3E.js → move-DQHQ0ily.js} +0 -0
- /package/dist/{narrat-v6fb47Is.js → narrat-UVO3rS1B.js} +0 -0
- /package/dist/{nextflow-C602gAKa.js → nextflow-DrtHoX7E.js} +0 -0
- /package/dist/{nginx-xAcu9XCN.js → nginx-DJ7UgEOR.js} +0 -0
- /package/dist/{night-owl-Q-U_lEu6.js → night-owl-Ci5d2mya.js} +0 -0
- /package/dist/{nix-BRjH373I.js → nix-Cgk0qZB-.js} +0 -0
- /package/dist/{nord-CRIAyay1.js → nord-D3dA8PCc.js} +0 -0
- /package/dist/{nushell-5Ddvrppp.js → nushell-smo4Ehcx.js} +0 -0
- /package/dist/{objective-c-zrea_Ajz.js → objective-c-CVuojEvS.js} +0 -0
- /package/dist/{objective-cpp-BMgGRJTH.js → objective-cpp-Bpp59CkK.js} +0 -0
- /package/dist/{ocaml-Cc5CTR8t.js → ocaml-DYQwODYU.js} +0 -0
- /package/dist/{one-dark-pro-cEF3x_tc.js → one-dark-pro-CdYrsWA6.js} +0 -0
- /package/dist/{one-light-B0buW1FQ.js → one-light-B0fXewxa.js} +0 -0
- /package/dist/{pascal-C5MhYtdx.js → pascal-G_r9auPk.js} +0 -0
- /package/dist/{path-B-wCTTNY.js → path-DIzMdTua.js} +0 -0
- /package/dist/{plastic-4xY83A97.js → plastic-CC7C-r0m.js} +0 -0
- /package/dist/{plsql-DiS5vMuw.js → plsql-DmZBDDMQ.js} +0 -0
- /package/dist/{po-CE5EllyY.js → po-Bdl0SmZa.js} +0 -0
- /package/dist/{poimandres-C02cLu8D.js → poimandres-BPoRyzO_.js} +0 -0
- /package/dist/{polar-NxJPG_A1.js → polar-DdEuU550.js} +0 -0
- /package/dist/{postcss-BKFdDTSc.js → postcss-DgtXUb_w.js} +0 -0
- /package/dist/{powerquery-ClOwEHrw.js → powerquery-D5rcV1b7.js} +0 -0
- /package/dist/{powershell-DtnsETbd.js → powershell-CreFd35r.js} +0 -0
- /package/dist/{prisma-DQRqqd02.js → prisma-BSSS_9KD.js} +0 -0
- /package/dist/{prolog-BXwR1iEr.js → prolog-Cxq7ex3-.js} +0 -0
- /package/dist/{proto-DbdCTNJQ.js → proto-Di89JUpw.js} +0 -0
- /package/dist/{puppet-C0fmEeZ8.js → puppet-D-8yt0A2.js} +0 -0
- /package/dist/{purescript-DCzClV2L.js → purescript-Dsyys8lw.js} +0 -0
- /package/dist/{python-C9XsBnIS.js → python-DyJn0gY6.js} +0 -0
- /package/dist/{qmldir-BgPLvM_B.js → qmldir-Djlda7Cs.js} +0 -0
- /package/dist/{qss-DH_QKtyV.js → qss-DtDj95Ib.js} +0 -0
- /package/dist/{r-CE7tet3U.js → r-9vHvMbjq.js} +0 -0
- /package/dist/{racket-BXFuJ8S4.js → racket-BQnOONmJ.js} +0 -0
- /package/dist/{raku-BV2f5Bfp.js → raku-DZArQH1C.js} +0 -0
- /package/dist/{react-plotly-BSDG5040.js → react-plotly-B8bzf42j.js} +0 -0
- /package/dist/{red-NReit8D_.js → red-DdIrZaxO.js} +0 -0
- /package/dist/{reg-y78MnffL.js → reg-CM_FOY35.js} +0 -0
- /package/dist/{regexp-BkaqnlX1.js → regexp-Dh_KbmYB.js} +0 -0
- /package/dist/{rel-ChUSBGxs.js → rel-Cf8vFh7G.js} +0 -0
- /package/dist/{riscv-Cw3bJM3f.js → riscv-DFLesDmH.js} +0 -0
- /package/dist/{rose-pine-C_LOz2fx.js → rose-pine-C6TQipgc.js} +0 -0
- /package/dist/{rose-pine-dawn-DAyopyJp.js → rose-pine-dawn-DUw8_6c0.js} +0 -0
- /package/dist/{rose-pine-moon-D65s7ycF.js → rose-pine-moon-5rpZhuOi.js} +0 -0
- /package/dist/{rust-CNYdgIe2.js → rust-CLaTh4j5.js} +0 -0
- /package/dist/{sass-CTLsc-He.js → sass-DXaowKfb.js} +0 -0
- /package/dist/{scala-DAvnmlLT.js → scala-BwYNCkHH.js} +0 -0
- /package/dist/{scheme-BQ8akAiY.js → scheme-Cwv1j_5J.js} +0 -0
- /package/dist/{sdbl-BqdEdxub.js → sdbl-ZWGgjiIv.js} +0 -0
- /package/dist/{shellscript-SX0nv4lc.js → shellscript-CHtXIYYk.js} +0 -0
- /package/dist/{slack-dark-DP48wn3J.js → slack-dark-CEL96wwz.js} +0 -0
- /package/dist/{slack-ochin-JvZjQMr4.js → slack-ochin-Ih8BUTjo.js} +0 -0
- /package/dist/{smalltalk-Cd_zoqRt.js → smalltalk-Bz_Wq6O1.js} +0 -0
- /package/dist/{snazzy-light-Dn5RlLOZ.js → snazzy-light-BtCbn8qt.js} +0 -0
- /package/dist/{solarized-dark-juR81_fw.js → solarized-dark-2ncbM9MD.js} +0 -0
- /package/dist/{solarized-light-U1mjAkaE.js → solarized-light-Bw0RlZC7.js} +0 -0
- /package/dist/{solidity-DfzZ5d-O.js → solidity-Dl1Szhqk.js} +0 -0
- /package/dist/{solr-CNZE5yrI.js → solr-Kwz1kGU1.js} +0 -0
- /package/dist/{splunk-K8fn70fG.js → splunk-D_aQa7Wj.js} +0 -0
- /package/dist/{spreadsheet-DQPJGjZQ.js → spreadsheet-D6FABxcn.js} +0 -0
- /package/dist/{sql-CAF6o9lq.js → sql-Bl2dBUIk.js} +0 -0
- /package/dist/{sql-DRtPaiem.js → sql-ZN4U_4B1.js} +0 -0
- /package/dist/{ssh-config-BXqbrXDi.js → ssh-config-BZDNWhA1.js} +0 -0
- /package/dist/{stex-D1sWhacG.js → stex-B5cVJDuZ.js} +0 -0
- /package/dist/{stylus-C_YQrfMD.js → stylus-ByL4A079.js} +0 -0
- /package/dist/{swift-Ceo6tYUp.js → swift-scoJKQVi.js} +0 -0
- /package/dist/{synthwave-84-CHXFapSW.js → synthwave-84-DKtuD_wy.js} +0 -0
- /package/dist/{system-verilog-D4CJAYbc.js → system-verilog-Bv-1IX35.js} +0 -0
- /package/dist/{systemd-CHq8PvwE.js → systemd-BzGxwp-W.js} +0 -0
- /package/dist/{talonscript-D6aZJv_Q.js → talonscript-BSbePVqO.js} +0 -0
- /package/dist/{tasl-BWmlUeU7.js → tasl-BA3aDFU3.js} +0 -0
- /package/dist/{tcl-C3YCHzLh.js → tcl-BAw9Lg69.js} +0 -0
- /package/dist/{terraform-y7dSvHa7.js → terraform-D50En-Co.js} +0 -0
- /package/dist/{tiddlywiki-DotFbxlj.js → tiddlywiki-Bl1_jWGY.js} +0 -0
- /package/dist/{tiki-cZC65BMY.js → tiki-BDy2Aqau.js} +0 -0
- /package/dist/{timer--XD4eQXe.js → timer-Dde4NBPL.js} +0 -0
- /package/dist/{tokyo-night-A0-IVocs.js → tokyo-night-DXO9qP_t.js} +0 -0
- /package/dist/{toml-OrfgdRYt.js → toml-Cubg1uUB.js} +0 -0
- /package/dist/{treemap-BjIqNFzX.js → treemap-BLQ6nYXt.js} +0 -0
- /package/dist/{tsv-B2Hf1H8S.js → tsv-vZzoqqJp.js} +0 -0
- /package/dist/{tsx-DGPbtVdN.js → tsx-LnCcyy2E.js} +0 -0
- /package/dist/{turtle-DsNtk6IM.js → turtle-CMwgyTdm.js} +0 -0
- /package/dist/{typescript-CCzz7yCV.js → typescript-B5rt_l9e.js} +0 -0
- /package/dist/{typespec-DUIO3iAy.js → typespec-CkLBOALm.js} +0 -0
- /package/dist/{typst-CzQn6sYd.js → typst-C-inGA8y.js} +0 -0
- /package/dist/{v-DDSEES9z.js → v-CFTQQNNR.js} +0 -0
- /package/dist/{vala-Cbu40xKX.js → vala-CEP8R4Sr.js} +0 -0
- /package/dist/{vb-DtlqoV5V.js → vb-LCy_gAYP.js} +0 -0
- /package/dist/{verilog-CCzhlD5Z.js → verilog-CjetHjeY.js} +0 -0
- /package/dist/{vesper-DJTKEjYY.js → vesper-C1ptU1oI.js} +0 -0
- /package/dist/{vhdl-DDdF26gx.js → vhdl-BwoGC9LM.js} +0 -0
- /package/dist/{viml-Csgqqvxa.js → viml-CydZIHfP.js} +0 -0
- /package/dist/{vitesse-black-B_9_MY9n.js → vitesse-black-C-p75DbZ.js} +0 -0
- /package/dist/{vitesse-dark-5oLbBBDP.js → vitesse-dark-Ai-v_ovz.js} +0 -0
- /package/dist/{vitesse-light-DY7aCeME.js → vitesse-light-DQ9NGEHC.js} +0 -0
- /package/dist/{vyper-CJCjsleu.js → vyper-BF3ELXiG.js} +0 -0
- /package/dist/{wasm-DtNse08w.js → wasm-OjKRvUGa.js} +0 -0
- /package/dist/{wasm-BSZ3My3r.js → wasm-sMdbPauS.js} +0 -0
- /package/dist/{wenyan-BvPQ-H9y.js → wenyan-jAkt3eQa.js} +0 -0
- /package/dist/{wgsl-B65N7iDC.js → wgsl-C164tHZL.js} +0 -0
- /package/dist/{wikitext-BIFkMlQo.js → wikitext-DVNWOcXh.js} +0 -0
- /package/dist/{wit-DP8045yv.js → wit-BiebwFst.js} +0 -0
- /package/dist/{wolfram-DHmulSSf.js → wolfram-Dej0TMYQ.js} +0 -0
- /package/dist/{yaml-BW6YUxU4.js → yaml-D1dcMKz3.js} +0 -0
- /package/dist/{zenscript-CkfsSip8.js → zenscript-DR8tpung.js} +0 -0
- /package/dist/{zig-DxQnpavN.js → zig-DqxNCCzt.js} +0 -0
- /package/src/components/{chat → markdown}/markdown-renderer.css +0 -0
- /package/src/components/{chat → markdown}/markdown-renderer.tsx +0 -0
package/src/core/cells/logs.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { fromUnixTime } from "date-fns";
|
|
4
4
|
import { toast } from "@/components/ui/use-toast";
|
|
5
|
-
import {
|
|
5
|
+
import { parseHtmlContent } from "@/utils/dom";
|
|
6
|
+
import { Strings } from "@/utils/strings";
|
|
6
7
|
import type { CellMessage, OutputMessage } from "../kernel/messages";
|
|
7
8
|
import { isErrorMime } from "../mime";
|
|
8
9
|
import type { CellId } from "./ids";
|
|
@@ -21,21 +22,31 @@ export function getCellLogsForMessage(cell: CellMessage): CellLog[] {
|
|
|
21
22
|
const consoleOutputs: OutputMessage[] = [cell.console].filter(Boolean).flat();
|
|
22
23
|
|
|
23
24
|
for (const output of consoleOutputs) {
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
// Handle text/plain, text/html, and traceback MIME types
|
|
26
|
+
const isTextPlain = output.mimetype === "text/plain";
|
|
27
|
+
const isHtml =
|
|
28
|
+
output.mimetype === "text/html" ||
|
|
29
|
+
output.mimetype === "application/vnd.marimo+traceback";
|
|
30
|
+
|
|
31
|
+
if (isTextPlain || isHtml) {
|
|
26
32
|
const isError =
|
|
27
33
|
output.channel === "stderr" || output.channel === "marimo-error";
|
|
28
34
|
switch (output.channel) {
|
|
29
35
|
case "stdout":
|
|
30
36
|
case "stderr":
|
|
31
|
-
case "marimo-error":
|
|
37
|
+
case "marimo-error": {
|
|
38
|
+
// Convert data to string and process based on MIME type
|
|
39
|
+
const rawData = Strings.asString(output.data);
|
|
40
|
+
const message = isHtml ? parseHtmlContent(rawData) : rawData;
|
|
41
|
+
|
|
32
42
|
logs.push({
|
|
33
43
|
timestamp: output.timestamp || Date.now(),
|
|
34
44
|
level: isError ? "stderr" : "stdout",
|
|
35
|
-
message:
|
|
45
|
+
message: message,
|
|
36
46
|
cellId: cell.cell_id as CellId,
|
|
37
47
|
});
|
|
38
48
|
break;
|
|
49
|
+
}
|
|
39
50
|
default:
|
|
40
51
|
break;
|
|
41
52
|
}
|
|
@@ -11,6 +11,7 @@ import { getNotebook } from "@/core/cells/cells";
|
|
|
11
11
|
import type { CellId } from "@/core/cells/ids";
|
|
12
12
|
import { notebookCellEditorViews } from "@/core/cells/utils";
|
|
13
13
|
import { getResolvedMarimoConfig } from "@/core/config/config";
|
|
14
|
+
import type { ConnectionName } from "@/core/datasets/engines";
|
|
14
15
|
import { OverridingHotkeyProvider } from "@/core/hotkeys/hotkeys";
|
|
15
16
|
import { requestClientAtom } from "@/core/network/requests";
|
|
16
17
|
import type { MarimoConfig } from "@/core/network/types";
|
|
@@ -198,7 +199,7 @@ describe("format", () => {
|
|
|
198
199
|
const editor = createEditor("SELECT * FROM table WHERE id = 1", cellId);
|
|
199
200
|
switchLanguage(editor, { language: "sql" });
|
|
200
201
|
|
|
201
|
-
await formatSQL(editor);
|
|
202
|
+
await formatSQL(editor, "duckdb" as ConnectionName);
|
|
202
203
|
|
|
203
204
|
// Check that the SQL was formatted
|
|
204
205
|
expect(editor.state.doc.toString()).toMatchInlineSnapshot(`
|
|
@@ -221,7 +222,7 @@ describe("format", () => {
|
|
|
221
222
|
const editor = createEditor("SELECT * FROM table WHERE id = 1", cellId);
|
|
222
223
|
switchLanguage(editor, { language: "python" });
|
|
223
224
|
|
|
224
|
-
await formatSQL(editor);
|
|
225
|
+
await formatSQL(editor, "duckdb" as ConnectionName);
|
|
225
226
|
|
|
226
227
|
// Check that the SQL was not formatted
|
|
227
228
|
expect(editor.state.doc.toString()).toBe(
|
|
@@ -230,4 +231,29 @@ describe("format", () => {
|
|
|
230
231
|
expect(updateCellCode).not.toHaveBeenCalled();
|
|
231
232
|
});
|
|
232
233
|
});
|
|
234
|
+
|
|
235
|
+
it("should format SQL code with different dialect", async () => {
|
|
236
|
+
const cellId = "1" as CellId;
|
|
237
|
+
const editor = createEditor(
|
|
238
|
+
"SELECT * FROM `table.dot` WHERE id = 1",
|
|
239
|
+
cellId,
|
|
240
|
+
);
|
|
241
|
+
switchLanguage(editor, { language: "sql" });
|
|
242
|
+
|
|
243
|
+
await formatSQL(editor, "mysql" as ConnectionName); // mysql uses backticks for identifiers
|
|
244
|
+
|
|
245
|
+
expect(editor.state.doc.toString()).toMatchInlineSnapshot(`
|
|
246
|
+
"SELECT
|
|
247
|
+
*
|
|
248
|
+
FROM
|
|
249
|
+
\`table.dot\`
|
|
250
|
+
WHERE
|
|
251
|
+
id = 1"
|
|
252
|
+
`);
|
|
253
|
+
expect(updateCellCode).toHaveBeenCalledWith({
|
|
254
|
+
cellId: cellId,
|
|
255
|
+
code: editor.state.doc.toString(),
|
|
256
|
+
formattingChange: true,
|
|
257
|
+
});
|
|
258
|
+
});
|
|
233
259
|
});
|
|
@@ -89,9 +89,29 @@ class LazyWebsocketTransport extends Transport {
|
|
|
89
89
|
data: JSONRPCRequestData,
|
|
90
90
|
timeout: number | null | undefined,
|
|
91
91
|
) {
|
|
92
|
+
// If delegate is undefined, try to reconnect
|
|
93
|
+
if (!this.delegate) {
|
|
94
|
+
Logger.log("Copilot#sendData: Delegate not initialized, reconnecting...");
|
|
95
|
+
try {
|
|
96
|
+
await this.tryConnect();
|
|
97
|
+
} catch (error) {
|
|
98
|
+
Logger.error("Copilot#sendData: Failed to reconnect transport", error);
|
|
99
|
+
throw new Error(
|
|
100
|
+
"Unable to connect to GitHub Copilot. Please check your settings and try again.",
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// After reconnection, delegate should be initialized
|
|
106
|
+
if (!this.delegate) {
|
|
107
|
+
throw new Error(
|
|
108
|
+
"Failed to initialize GitHub Copilot connection. Please try again.",
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
92
112
|
// Clamp timeout to 5 seconds
|
|
93
113
|
timeout = Math.min(timeout ?? 5000, 5000);
|
|
94
|
-
return this.delegate
|
|
114
|
+
return this.delegate.sendData(data, timeout);
|
|
95
115
|
}
|
|
96
116
|
}
|
|
97
117
|
|
|
@@ -24,13 +24,41 @@ export const CopilotConfig = memo(() => {
|
|
|
24
24
|
evt.preventDefault();
|
|
25
25
|
setLoading(true);
|
|
26
26
|
try {
|
|
27
|
-
const
|
|
27
|
+
const result = await initiateSignIn();
|
|
28
|
+
|
|
29
|
+
// Validate the response has required fields
|
|
30
|
+
if (!result?.verificationUri || !result.userCode) {
|
|
31
|
+
Logger.error("Copilot#trySignIn: Invalid response from sign-in", {
|
|
32
|
+
result,
|
|
33
|
+
});
|
|
34
|
+
setStep("connectionError");
|
|
35
|
+
toast({
|
|
36
|
+
title: "GitHub Copilot Connection Error",
|
|
37
|
+
description:
|
|
38
|
+
"Unable to connect to GitHub Copilot. Please check your settings and try again.",
|
|
39
|
+
variant: "danger",
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const { verificationUri, status, userCode } = result;
|
|
28
45
|
if (isSignedIn(status)) {
|
|
29
46
|
copilotChangeSignIn(true);
|
|
30
47
|
} else {
|
|
31
48
|
setStep("signingIn");
|
|
32
49
|
setLocalData({ url: verificationUri, code: userCode });
|
|
33
50
|
}
|
|
51
|
+
} catch (error) {
|
|
52
|
+
Logger.error("Copilot#trySignIn: Error during sign-in", error);
|
|
53
|
+
setStep("connectionError");
|
|
54
|
+
toast({
|
|
55
|
+
title: "GitHub Copilot Connection Error",
|
|
56
|
+
description:
|
|
57
|
+
error instanceof Error
|
|
58
|
+
? error.message
|
|
59
|
+
: "Unable to connect to GitHub Copilot. Please check your settings and try again.",
|
|
60
|
+
variant: "danger",
|
|
61
|
+
});
|
|
34
62
|
} finally {
|
|
35
63
|
setLoading(false);
|
|
36
64
|
}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
2
|
import { foldAll, unfoldAll } from "@codemirror/language";
|
|
3
3
|
import type { Command, EditorView } from "@codemirror/view";
|
|
4
|
-
import type { Nullable } from "vitest";
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
type MaybeEditorView = EditorView | undefined | null;
|
|
6
|
+
|
|
7
|
+
export type BulkCommand = (targets: MaybeEditorView[]) => boolean;
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Make a bulk command from a single {@type Command} that applies
|
|
10
11
|
* the given command to all targets.
|
|
11
12
|
*/
|
|
12
13
|
export function makeBulkCommand(command: Command) {
|
|
13
|
-
return (targets:
|
|
14
|
+
return (targets: MaybeEditorView[]) => {
|
|
14
15
|
let changed = false;
|
|
15
16
|
for (const target of targets) {
|
|
16
17
|
if (target) {
|
|
@@ -3,16 +3,21 @@
|
|
|
3
3
|
import { getIndentUnit } from "@codemirror/language";
|
|
4
4
|
import { StateEffect } from "@codemirror/state";
|
|
5
5
|
import type { EditorView } from "@codemirror/view";
|
|
6
|
+
import type { DialectOptions } from "sql-formatter";
|
|
7
|
+
import { logNever } from "@/utils/assertNever";
|
|
6
8
|
import { Logger } from "@/utils/Logger";
|
|
7
9
|
import { Objects } from "../../utils/objects";
|
|
8
10
|
import { getNotebook } from "../cells/cells";
|
|
9
11
|
import type { CellId } from "../cells/ids";
|
|
10
12
|
import { notebookCellEditorViews } from "../cells/utils";
|
|
11
13
|
import { getResolvedMarimoConfig } from "../config/config";
|
|
14
|
+
import type { ConnectionName } from "../datasets/engines";
|
|
12
15
|
import { getRequestClient } from "../network/requests";
|
|
13
16
|
import { cellActionsState } from "./cells/state";
|
|
14
17
|
import { cellIdState } from "./config/extension";
|
|
15
18
|
import { languageAdapterState } from "./language/extension";
|
|
19
|
+
import { SCHEMA_CACHE } from "./language/languages/sql/completion-store";
|
|
20
|
+
import { isKnownDialect } from "./language/languages/sql/utils";
|
|
16
21
|
import {
|
|
17
22
|
getEditorCodeAsPython,
|
|
18
23
|
updateEditorCodeFromPython,
|
|
@@ -77,9 +82,12 @@ export function formatAll() {
|
|
|
77
82
|
* SQL formatting is much more opinionated than Python formatting, and we
|
|
78
83
|
* don't want to tie the two together (just yet).
|
|
79
84
|
*/
|
|
80
|
-
export async function formatSQL(editor: EditorView) {
|
|
85
|
+
export async function formatSQL(editor: EditorView, engine: ConnectionName) {
|
|
81
86
|
// Lazy import sql-formatter
|
|
82
|
-
const { formatDialect
|
|
87
|
+
const { formatDialect } = await import("sql-formatter");
|
|
88
|
+
|
|
89
|
+
const sqlDialect = SCHEMA_CACHE.getInternalDialect(engine);
|
|
90
|
+
const formatterDialect = await getSqlFormatterDialect(sqlDialect);
|
|
83
91
|
|
|
84
92
|
// Get language adapter
|
|
85
93
|
const languageAdapter = editor.state.field(languageAdapterState);
|
|
@@ -90,11 +98,17 @@ export async function formatSQL(editor: EditorView) {
|
|
|
90
98
|
}
|
|
91
99
|
|
|
92
100
|
const codeAsSQL = editor.state.doc.toString();
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
101
|
+
let formattedSQL: string;
|
|
102
|
+
try {
|
|
103
|
+
formattedSQL = formatDialect(codeAsSQL, {
|
|
104
|
+
dialect: formatterDialect,
|
|
105
|
+
tabWidth: tabWidth,
|
|
106
|
+
useTabs: false,
|
|
107
|
+
});
|
|
108
|
+
} catch (error) {
|
|
109
|
+
Logger.error("Error formatting SQL", { error });
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
98
112
|
|
|
99
113
|
// Update Python in the notebook state
|
|
100
114
|
const codeAsPython = languageAdapter.transformIn(formattedSQL)[0];
|
|
@@ -111,3 +125,87 @@ export async function formatSQL(editor: EditorView) {
|
|
|
111
125
|
effects: [formattingChangeEffect.of(true)],
|
|
112
126
|
});
|
|
113
127
|
}
|
|
128
|
+
|
|
129
|
+
async function getSqlFormatterDialect(
|
|
130
|
+
sqlDialect: string | null,
|
|
131
|
+
): Promise<DialectOptions> {
|
|
132
|
+
const {
|
|
133
|
+
bigquery,
|
|
134
|
+
db2,
|
|
135
|
+
db2i,
|
|
136
|
+
duckdb,
|
|
137
|
+
hive,
|
|
138
|
+
mariadb,
|
|
139
|
+
mysql,
|
|
140
|
+
tidb,
|
|
141
|
+
n1ql,
|
|
142
|
+
plsql,
|
|
143
|
+
postgresql,
|
|
144
|
+
redshift,
|
|
145
|
+
spark,
|
|
146
|
+
sqlite,
|
|
147
|
+
sql,
|
|
148
|
+
trino,
|
|
149
|
+
transactsql,
|
|
150
|
+
singlestoredb,
|
|
151
|
+
snowflake,
|
|
152
|
+
} = await import("sql-formatter");
|
|
153
|
+
|
|
154
|
+
const defaultDialect = sql;
|
|
155
|
+
|
|
156
|
+
if (!sqlDialect || !isKnownDialect(sqlDialect)) {
|
|
157
|
+
return defaultDialect;
|
|
158
|
+
}
|
|
159
|
+
switch (sqlDialect) {
|
|
160
|
+
case "mysql":
|
|
161
|
+
return mysql;
|
|
162
|
+
case "mariadb":
|
|
163
|
+
return mariadb;
|
|
164
|
+
case "postgres":
|
|
165
|
+
case "postgresql":
|
|
166
|
+
return postgresql;
|
|
167
|
+
case "sqlite":
|
|
168
|
+
return sqlite;
|
|
169
|
+
case "db2":
|
|
170
|
+
return db2;
|
|
171
|
+
case "db2i":
|
|
172
|
+
return db2i;
|
|
173
|
+
case "hive":
|
|
174
|
+
return hive;
|
|
175
|
+
case "redshift":
|
|
176
|
+
return redshift;
|
|
177
|
+
case "snowflake":
|
|
178
|
+
return snowflake;
|
|
179
|
+
case "trino":
|
|
180
|
+
return trino;
|
|
181
|
+
case "tidb":
|
|
182
|
+
return tidb;
|
|
183
|
+
case "oracle":
|
|
184
|
+
case "oracledb":
|
|
185
|
+
return plsql;
|
|
186
|
+
case "spark":
|
|
187
|
+
return spark;
|
|
188
|
+
case "singlestoredb":
|
|
189
|
+
return singlestoredb;
|
|
190
|
+
case "couchbase":
|
|
191
|
+
return n1ql;
|
|
192
|
+
case "bigquery":
|
|
193
|
+
return bigquery;
|
|
194
|
+
case "duckdb":
|
|
195
|
+
return duckdb;
|
|
196
|
+
case "mssql":
|
|
197
|
+
case "sqlserver":
|
|
198
|
+
return transactsql;
|
|
199
|
+
case "athena":
|
|
200
|
+
case "awsathena":
|
|
201
|
+
case "cassandra":
|
|
202
|
+
case "noql":
|
|
203
|
+
case "flink":
|
|
204
|
+
case "mongodb":
|
|
205
|
+
case "timescaledb":
|
|
206
|
+
return sql;
|
|
207
|
+
default:
|
|
208
|
+
logNever(sqlDialect);
|
|
209
|
+
return defaultDialect;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
@@ -137,7 +137,7 @@ export class SQLLanguageAdapter
|
|
|
137
137
|
_completionConfig: CompletionConfig,
|
|
138
138
|
_hotkeys: HotkeyProvider,
|
|
139
139
|
_placeholderType: PlaceholderType,
|
|
140
|
-
|
|
140
|
+
_lspConfig: LSPConfig & { diagnostics: DiagnosticsConfig },
|
|
141
141
|
): Extension[] {
|
|
142
142
|
const extensions = [
|
|
143
143
|
// This can be updated with a dispatch effect
|
|
@@ -366,6 +366,7 @@ function connectionNameToParserDialect(
|
|
|
366
366
|
case "postgres":
|
|
367
367
|
return "PostgreSQL";
|
|
368
368
|
case "db2":
|
|
369
|
+
case "db2i":
|
|
369
370
|
return "DB2";
|
|
370
371
|
case "mysql":
|
|
371
372
|
return "MySQL";
|
|
@@ -381,6 +382,7 @@ function connectionNameToParserDialect(
|
|
|
381
382
|
case "cassandra":
|
|
382
383
|
return "Noql";
|
|
383
384
|
case "athena":
|
|
385
|
+
case "awsathena":
|
|
384
386
|
return "Athena";
|
|
385
387
|
case "bigquery":
|
|
386
388
|
return "BigQuery";
|
|
@@ -398,6 +400,11 @@ function connectionNameToParserDialect(
|
|
|
398
400
|
case "oracle":
|
|
399
401
|
case "oracledb":
|
|
400
402
|
case "timescaledb":
|
|
403
|
+
case "couchbase":
|
|
404
|
+
case "trino":
|
|
405
|
+
case "tidb":
|
|
406
|
+
case "singlestoredb":
|
|
407
|
+
case "spark":
|
|
401
408
|
Logger.debug("Unsupported dialect", { dialect });
|
|
402
409
|
return null;
|
|
403
410
|
default:
|
|
@@ -23,7 +23,10 @@ import { Logger } from "@/utils/Logger";
|
|
|
23
23
|
const KNOWN_DIALECTS_ARRAY = [
|
|
24
24
|
"postgresql",
|
|
25
25
|
"postgres",
|
|
26
|
+
"couchbase",
|
|
26
27
|
"db2",
|
|
28
|
+
"db2i",
|
|
29
|
+
"tidb",
|
|
27
30
|
"mysql",
|
|
28
31
|
"sqlite",
|
|
29
32
|
"mssql",
|
|
@@ -32,6 +35,8 @@ const KNOWN_DIALECTS_ARRAY = [
|
|
|
32
35
|
"mariadb",
|
|
33
36
|
"cassandra",
|
|
34
37
|
"noql",
|
|
38
|
+
"spark",
|
|
39
|
+
"awsathena",
|
|
35
40
|
"athena",
|
|
36
41
|
"bigquery",
|
|
37
42
|
"hive",
|
|
@@ -39,8 +44,10 @@ const KNOWN_DIALECTS_ARRAY = [
|
|
|
39
44
|
"snowflake",
|
|
40
45
|
"flink",
|
|
41
46
|
"mongodb",
|
|
47
|
+
"trino",
|
|
42
48
|
"oracle",
|
|
43
49
|
"oracledb",
|
|
50
|
+
"singlestoredb",
|
|
44
51
|
"timescaledb",
|
|
45
52
|
] as const;
|
|
46
53
|
const KNOWN_DIALECTS: ReadonlySet<string> = new Set(KNOWN_DIALECTS_ARRAY);
|
|
@@ -59,6 +66,7 @@ export function guessDialect(
|
|
|
59
66
|
): SQLDialect {
|
|
60
67
|
const dialect = connection.dialect;
|
|
61
68
|
if (!isKnownDialect(dialect)) {
|
|
69
|
+
Logger.debug("Unknown dialect", { dialect });
|
|
62
70
|
return ModifiedStandardSQL;
|
|
63
71
|
}
|
|
64
72
|
|
|
@@ -86,7 +94,9 @@ export function guessDialect(
|
|
|
86
94
|
return BigQueryDialect;
|
|
87
95
|
case "timescaledb":
|
|
88
96
|
return PostgreSQL; // TimescaleDB is a PostgreSQL dialect
|
|
97
|
+
case "awsathena":
|
|
89
98
|
case "athena":
|
|
99
|
+
case "db2i":
|
|
90
100
|
case "db2":
|
|
91
101
|
case "hive":
|
|
92
102
|
case "redshift":
|
|
@@ -94,6 +104,11 @@ export function guessDialect(
|
|
|
94
104
|
case "flink":
|
|
95
105
|
case "mongodb":
|
|
96
106
|
case "noql":
|
|
107
|
+
case "couchbase":
|
|
108
|
+
case "trino":
|
|
109
|
+
case "tidb":
|
|
110
|
+
case "singlestoredb":
|
|
111
|
+
case "spark":
|
|
97
112
|
Logger.debug("Unsupported dialect", { dialect });
|
|
98
113
|
return ModifiedStandardSQL;
|
|
99
114
|
default:
|
|
@@ -87,6 +87,7 @@ test("default UserConfig - empty", () => {
|
|
|
87
87
|
"default_auto_download": [],
|
|
88
88
|
"default_sql_output": "auto",
|
|
89
89
|
"on_cell_change": "autorun",
|
|
90
|
+
"reactive_tests": true,
|
|
90
91
|
"watcher_on_save": "lazy",
|
|
91
92
|
},
|
|
92
93
|
"save": {
|
|
@@ -154,6 +155,7 @@ test("default UserConfig - one level", () => {
|
|
|
154
155
|
"default_auto_download": [],
|
|
155
156
|
"default_sql_output": "auto",
|
|
156
157
|
"on_cell_change": "autorun",
|
|
158
|
+
"reactive_tests": true,
|
|
157
159
|
"watcher_on_save": "lazy",
|
|
158
160
|
},
|
|
159
161
|
"save": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { invariant } from "@/utils/invariant";
|
|
4
4
|
import { Logger } from "@/utils/Logger";
|
|
5
|
-
import type { MarimoConfig } from "../network/types";
|
|
5
|
+
import type { MarimoConfig, schemas } from "../network/types";
|
|
6
6
|
|
|
7
7
|
// This has to be defined in the same file as the zod schema to satisfy zod
|
|
8
8
|
export const PackageManagerNames = [
|
|
@@ -44,8 +44,8 @@ export const DEFAULT_AI_MODEL = "openai/gpt-4o";
|
|
|
44
44
|
*/
|
|
45
45
|
const AUTO_DOWNLOAD_FORMATS = ["html", "markdown", "ipynb"] as const;
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
export
|
|
47
|
+
export type CopilotMode = NonNullable<schemas["AiConfig"]["mode"]>;
|
|
48
|
+
export const COPILOT_MODES: CopilotMode[] = ["manual", "ask", "agent"];
|
|
49
49
|
|
|
50
50
|
const AiConfigSchema = z
|
|
51
51
|
.object({
|
|
@@ -119,6 +119,7 @@ export const UserConfigSchema = z
|
|
|
119
119
|
auto_instantiate: z.boolean().prefault(true),
|
|
120
120
|
on_cell_change: z.enum(["lazy", "autorun"]).prefault("autorun"),
|
|
121
121
|
auto_reload: z.enum(["off", "lazy", "autorun"]).prefault("off"),
|
|
122
|
+
reactive_tests: z.boolean().prefault(true),
|
|
122
123
|
watcher_on_save: z.enum(["lazy", "autorun"]).prefault("lazy"),
|
|
123
124
|
default_sql_output: z.enum(VALID_SQL_OUTPUT_FORMATS).prefault("auto"),
|
|
124
125
|
default_auto_download: z
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { stripPackageManagerPrefix } from "../package-input-utils";
|
|
4
|
+
|
|
5
|
+
describe("stripPackageManagerPrefix", () => {
|
|
6
|
+
it("should remove 'pip install' prefix", () => {
|
|
7
|
+
expect(stripPackageManagerPrefix("pip install httpx")).toBe("httpx");
|
|
8
|
+
expect(stripPackageManagerPrefix("pip install httpx requests")).toBe(
|
|
9
|
+
"httpx requests",
|
|
10
|
+
);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it("should remove 'pip3 install' prefix", () => {
|
|
14
|
+
expect(stripPackageManagerPrefix("pip3 install pandas")).toBe("pandas");
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it("should remove 'uv add' prefix", () => {
|
|
18
|
+
expect(stripPackageManagerPrefix("uv add numpy")).toBe("numpy");
|
|
19
|
+
expect(stripPackageManagerPrefix("uv add pandas numpy")).toBe(
|
|
20
|
+
"pandas numpy",
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it("should remove 'uv pip install' prefix", () => {
|
|
25
|
+
expect(stripPackageManagerPrefix("uv pip install scipy")).toBe("scipy");
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it("should remove 'poetry add' prefix", () => {
|
|
29
|
+
expect(stripPackageManagerPrefix("poetry add flask")).toBe("flask");
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("should remove 'conda install' prefix", () => {
|
|
33
|
+
expect(stripPackageManagerPrefix("conda install matplotlib")).toBe(
|
|
34
|
+
"matplotlib",
|
|
35
|
+
);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("should remove 'pipenv install' prefix", () => {
|
|
39
|
+
expect(stripPackageManagerPrefix("pipenv install django")).toBe("django");
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("should be case insensitive", () => {
|
|
43
|
+
expect(stripPackageManagerPrefix("PIP INSTALL httpx")).toBe("httpx");
|
|
44
|
+
expect(stripPackageManagerPrefix("Pip Install requests")).toBe("requests");
|
|
45
|
+
expect(stripPackageManagerPrefix("UV ADD numpy")).toBe("numpy");
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("should handle extra whitespace", () => {
|
|
49
|
+
expect(stripPackageManagerPrefix(" pip install httpx ")).toBe("httpx");
|
|
50
|
+
expect(stripPackageManagerPrefix("uv add pandas ")).toBe("pandas");
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("should return input unchanged if no prefix matches", () => {
|
|
54
|
+
expect(stripPackageManagerPrefix("httpx")).toBe("httpx");
|
|
55
|
+
expect(stripPackageManagerPrefix("pandas numpy")).toBe("pandas numpy");
|
|
56
|
+
expect(stripPackageManagerPrefix("httpx==0.27.0")).toBe("httpx==0.27.0");
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("should handle package specifications with versions", () => {
|
|
60
|
+
expect(stripPackageManagerPrefix("pip install httpx==0.27.0")).toBe(
|
|
61
|
+
"httpx==0.27.0",
|
|
62
|
+
);
|
|
63
|
+
expect(stripPackageManagerPrefix("uv add pandas>=2.0.0")).toBe(
|
|
64
|
+
"pandas>=2.0.0",
|
|
65
|
+
);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("should handle git URLs", () => {
|
|
69
|
+
expect(
|
|
70
|
+
stripPackageManagerPrefix(
|
|
71
|
+
"pip install git+https://github.com/encode/httpx",
|
|
72
|
+
),
|
|
73
|
+
).toBe("git+https://github.com/encode/httpx");
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it("should handle multiple packages", () => {
|
|
77
|
+
expect(stripPackageManagerPrefix("pip install httpx requests pandas")).toBe(
|
|
78
|
+
"httpx requests pandas",
|
|
79
|
+
);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("should only remove the first matching prefix", () => {
|
|
83
|
+
// Edge case: input contains prefix-like text multiple times
|
|
84
|
+
expect(stripPackageManagerPrefix("pip install pip install httpx")).toBe(
|
|
85
|
+
"pip install httpx",
|
|
86
|
+
);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it("should handle empty string", () => {
|
|
90
|
+
expect(stripPackageManagerPrefix("")).toBe("");
|
|
91
|
+
expect(stripPackageManagerPrefix(" ")).toBe("");
|
|
92
|
+
});
|
|
93
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Removes common package manager command prefixes from an input string.
|
|
5
|
+
* This allows users to paste commands like "pip install httpx" and have
|
|
6
|
+
* the "pip install" prefix automatically removed.
|
|
7
|
+
*
|
|
8
|
+
* @param input - The raw input string that may contain a package manager prefix
|
|
9
|
+
* @returns The input with any recognized prefix removed and trimmed
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* stripPackageManagerPrefix("pip install httpx") // returns "httpx"
|
|
13
|
+
* stripPackageManagerPrefix("uv add pandas numpy") // returns "pandas numpy"
|
|
14
|
+
* stripPackageManagerPrefix("httpx") // returns "httpx"
|
|
15
|
+
*/
|
|
16
|
+
export function stripPackageManagerPrefix(input: string): string {
|
|
17
|
+
const trimmedInput = input.trim();
|
|
18
|
+
|
|
19
|
+
const prefixes = [
|
|
20
|
+
"pip install",
|
|
21
|
+
"pip3 install",
|
|
22
|
+
"uv add",
|
|
23
|
+
"uv pip install",
|
|
24
|
+
"poetry add",
|
|
25
|
+
"conda install",
|
|
26
|
+
"pipenv install",
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
for (const prefix of prefixes) {
|
|
30
|
+
if (trimmedInput.toLowerCase().startsWith(prefix.toLowerCase())) {
|
|
31
|
+
return trimmedInput.slice(prefix.length).trim();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return trimmedInput;
|
|
36
|
+
}
|
|
@@ -331,7 +331,7 @@ export function useMarimoWebSocket(opts: {
|
|
|
331
331
|
try {
|
|
332
332
|
handleMessage(e);
|
|
333
333
|
} catch (error) {
|
|
334
|
-
Logger.error("Failed to handle message", error);
|
|
334
|
+
Logger.error("Failed to handle message", e.data, error);
|
|
335
335
|
toast({
|
|
336
336
|
title: "Failed to handle message",
|
|
337
337
|
description: prettyError(error),
|
package/src/css/app/Cell.css
CHANGED
|
@@ -359,10 +359,15 @@
|
|
|
359
359
|
position: relative;
|
|
360
360
|
z-index: 1;
|
|
361
361
|
|
|
362
|
-
|
|
362
|
+
/* Round the top of the code editor unless there is output above or the AI prompt input is open */
|
|
363
|
+
&[data-has-output-above="false"] .cm-editor {
|
|
363
364
|
border-top-left-radius: 9px;
|
|
364
365
|
border-top-right-radius: 9px;
|
|
365
366
|
}
|
|
367
|
+
div[data-ai-input-open="true"] .cm-editor {
|
|
368
|
+
border-top-left-radius: 0;
|
|
369
|
+
border-top-right-radius: 0;
|
|
370
|
+
}
|
|
366
371
|
|
|
367
372
|
&:last-child .cm-editor {
|
|
368
373
|
border-bottom-left-radius: 9px;
|