@marimo-team/frontend 0.24.1-dev3 → 0.24.1-dev30
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-B_dBNTJO.js → CellStatus-DdKYN88d.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-DLvmqIcV.js → ConnectedDataExplorerComponent-CbTaTBJ8.js} +1 -1
- package/dist/assets/{JsonOutput-C5g_bqiZ.js → JsonOutput-htT793Wj.js} +7 -7
- package/dist/assets/LazyAnyLanguageCodeMirror-Bx0i_n8B.js +2 -0
- package/dist/assets/{MarimoErrorOutput-Cb0evuEp.js → MarimoErrorOutput-Db7coyFA.js} +7 -7
- package/dist/assets/{RenderHTML-BoN8Qu7U.js → RenderHTML-Cu5JtYZJ.js} +1 -1
- package/dist/assets/{RunButton-C3V3v58F.js → RunButton-BOnl_Dk8.js} +1 -1
- package/dist/assets/{abnfDiagram-N423BO3Z-BBbWbiyb.js → abnfDiagram-N423BO3Z-BhqlQxDe.js} +1 -1
- package/dist/assets/{add-cell-with-ai--yrESuLb.js → add-cell-with-ai-Chy4ITIT.js} +12 -12
- package/dist/assets/add-connection-dialog-DGYhyXo6.js +181 -0
- package/dist/assets/{agent-panel-i9R2vDC5.js → agent-panel--Nt4UmNj.js} +6 -6
- package/dist/assets/{ai-model-dropdown-Wvw4ot3v.js → ai-model-dropdown-BUCPZ0ND.js} +4 -4
- package/dist/assets/{any-language-editor-B92E_2Sy.js → any-language-editor-CV_jRt2A.js} +1 -1
- package/dist/assets/apl-sEsRK68R.js +1 -0
- package/dist/assets/app-config-button-BOxbrv3L.js +1 -0
- package/dist/assets/architecture-TIHT7OUA-CkB6_TwN.js +1 -0
- package/dist/assets/{architectureDiagram-T3A2C74G-DoGbg0qs.js → architectureDiagram-T3A2C74G-D_0znduP.js} +1 -1
- package/dist/assets/asciiarmor-CwCv7Lne.js +1 -0
- package/dist/assets/asn1-CuzWg-fh.js +1 -0
- package/dist/assets/{blob-XD7AvCQ1.js → blob-BVQSODqn.js} +1 -1
- package/dist/assets/{blockDiagram-VBNYF7ZC-Fapk5G8q.js → blockDiagram-VBNYF7ZC-DhnQkFJt.js} +1 -1
- package/dist/assets/brainfuck-CnnfS_cI.js +1 -0
- package/dist/assets/{c4Diagram-5PPSVZJV-DHpoGw8m.js → c4Diagram-5PPSVZJV-DAZWLixJ.js} +1 -1
- package/dist/assets/{cell-editor-CrWparei.js → cell-editor-DgOfL9Xv.js} +15 -15
- package/dist/assets/cell-link-Bx8FWjns.js +1 -0
- package/dist/assets/{cells-BvgwUKB9.js → cells-Biwqg0z6.js} +80 -80
- package/dist/assets/channel-97-i68Z5.js +1 -0
- package/dist/assets/{chat-display-CvI32cPI.js → chat-display-B2qUbgnh.js} +1 -1
- package/dist/assets/{chat-panel-nbCWEZX-.js → chat-panel-gxL2S-HQ.js} +2 -2
- package/dist/assets/{chat-ui-BmrjRgsi.js → chat-ui-BhnwgDpa.js} +1 -1
- package/dist/assets/{chunk-2GRJ4B5K-B92Uwj7z.js → chunk-2GRJ4B5K-BJlW2T7a.js} +1 -1
- package/dist/assets/{chunk-2Q5K7J3B-CjxRf8HM.js → chunk-2Q5K7J3B-BKHkc-hn.js} +1 -1
- package/dist/assets/{chunk-3NCLNEKW-D7adDEkj.js → chunk-3NCLNEKW-DYppyU2y.js} +1 -1
- package/dist/assets/{chunk-4I5QYGJK-Cce-HuZg.js → chunk-4I5QYGJK-o2gGFKEO.js} +1 -1
- package/dist/assets/{chunk-5FCAYU7R-BJ04i5uO.js → chunk-5FCAYU7R-B4Jz9Jv5.js} +1 -1
- package/dist/assets/{chunk-5FQGJX7Z-B4N_BMo6.js → chunk-5FQGJX7Z-BIDn9QG0.js} +2 -2
- package/dist/assets/{chunk-5HE753X5-DRFzJ7WN.js → chunk-5HE753X5-DySWu3WO.js} +1 -1
- package/dist/assets/{chunk-5JV3BV7I-BEi9dboc.js → chunk-5JV3BV7I-EFAb-cXP.js} +1 -1
- package/dist/assets/{chunk-5RXB4S5H-B63Jmiyu.js → chunk-5RXB4S5H-Bsyeqyau.js} +1 -1
- package/dist/assets/{chunk-5TONJI2A-C5JJwzzL.js → chunk-5TONJI2A-BtGpymP5.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-CQG8Gkf2.js → chunk-5VM5RSS4-De48wE7I.js} +1 -1
- package/dist/assets/{chunk-6Q2QTUOP-CjNw1snm.js → chunk-6Q2QTUOP-UhOQcBq_.js} +1 -1
- package/dist/assets/{chunk-7BUUIJ7U-DFO0zbY5.js → chunk-7BUUIJ7U-VPkRElaC.js} +1 -1
- package/dist/assets/{chunk-7Z6QIM7H-BahVaiTb.js → chunk-7Z6QIM7H-CSiw9nlS.js} +1 -1
- package/dist/assets/{chunk-BIQX33UG-B1y9dy0P.js → chunk-BIQX33UG-Clm0kIyq.js} +1 -1
- package/dist/assets/{chunk-CQNSW5MT-BOOyLCfW.js → chunk-CQNSW5MT-CxPDGEiS.js} +1 -1
- package/dist/assets/{chunk-CYSBUYHQ-DAWZpY6r.js → chunk-CYSBUYHQ-Cx6JgR38.js} +1 -1
- package/dist/assets/{chunk-EMLP6XTP-Bj2I2iEi.js → chunk-EMLP6XTP-DrNgCa2u.js} +1 -1
- package/dist/assets/{chunk-GF5L2VYU-BA39vN3k.js → chunk-GF5L2VYU-B88HnHN4.js} +1 -1
- package/dist/assets/{chunk-I66GZJ75-CgJN5WrL.js → chunk-I66GZJ75-BWcitPjS.js} +3 -3
- package/dist/assets/{chunk-J7OUQ5F2-DK5phbYO.js → chunk-J7OUQ5F2-DuBXnQXx.js} +2 -2
- package/dist/assets/{chunk-JG7HCLWE-BEfUAeKb.js → chunk-JG7HCLWE-D4-rg2bS.js} +1 -1
- package/dist/assets/{chunk-JQJVKLGR-vTeSeIY7.js → chunk-JQJVKLGR-L5fl0mYk.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-C-mBVSJi.js → chunk-JWPE2WC7-CIIO5B1k.js} +1 -1
- package/dist/assets/{chunk-KBJHAD2P-BKxl1MSu.js → chunk-KBJHAD2P-MvrqGNli.js} +1 -1
- package/dist/assets/{chunk-MOZMSUNE-C-RMDvp_.js → chunk-MOZMSUNE-t37mHxNa.js} +1 -1
- package/dist/assets/{chunk-NSK5VX7P-bxC5WUDr.js → chunk-NSK5VX7P-B_lLBcNS.js} +1 -1
- package/dist/assets/{chunk-OSBZ3O6U-DEYDoDYT.js → chunk-OSBZ3O6U-3f38erx3.js} +1 -1
- package/dist/assets/{chunk-QBLGF6JB-CBncH5PS.js → chunk-QBLGF6JB-CHob4JDY.js} +1 -1
- package/dist/assets/{chunk-QR6OTTB3-gGVLoYpg.js → chunk-QR6OTTB3-Xk5It1Th.js} +1 -1
- package/dist/assets/{chunk-R7FJI6CG-DWxNgy5y.js → chunk-R7FJI6CG-ClJ6eR5G.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-DkXJx61e.js → chunk-RYQCIY6F-CZjjwaqg.js} +1 -1
- package/dist/assets/{chunk-U6XO7XAA-DWWxQ-OA.js → chunk-U6XO7XAA-Ct1fe-tp.js} +1 -1
- package/dist/assets/{chunk-UBXNYLIW-elhI8GOz.js → chunk-UBXNYLIW-XbwBj9py.js} +1 -1
- package/dist/assets/{chunk-W5SLKNZC-D_QNHYYQ.js → chunk-W5SLKNZC-DBMPI1Hf.js} +1 -1
- package/dist/assets/{chunk-WRU74C26-BU1GwH6E.js → chunk-WRU74C26-HbDQnuwB.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-D_KNH1wc.js → chunk-XXDRQBXY-DyGGngH3.js} +1 -1
- package/dist/assets/{chunk-YOTPTUD7-Nm5N45o4.js → chunk-YOTPTUD7-CC6lxUuz.js} +1 -1
- package/dist/assets/{chunk-ZIRB5QZD-DKs4kfC7.js → chunk-ZIRB5QZD-Giz-iAOC.js} +1 -1
- package/dist/assets/classDiagram-JCYQIIEL-Bi4N77rq.js +1 -0
- package/dist/assets/classDiagram-v2-OCEON4UE-DDmVp-9r.js +1 -0
- package/dist/assets/{clike-BAN6KopO.js → clike-tfWZyYoN.js} +1 -1
- package/dist/assets/clojure-Bninbb7T.js +1 -0
- package/dist/assets/cmake-BpuaQxBS.js +1 -0
- package/dist/assets/cobol-GPJ0dHQG.js +1 -0
- package/dist/assets/{code-block-37QAKDTI-DYj4t0uu.js → code-block-37QAKDTI-CxkZZ2yu.js} +1 -1
- package/dist/assets/coffeescript-D7gQHdB-.js +1 -0
- package/dist/assets/{column-preview-DMqGohE5.js → column-preview-BaRqZ9P8.js} +1 -1
- package/dist/assets/{command-palette-DCAiZSda.js → command-palette-Cbie8JV9.js} +1 -1
- package/dist/assets/{common-Dx_4ekWj.js → common-sBRwGAKy.js} +1 -1
- package/dist/assets/commonlisp-Cr4KGe18.js +1 -0
- package/dist/assets/{components-CozWCL5N.js → components-CGGSwziZ.js} +1 -1
- package/dist/assets/components-DsJAWbBR.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-BItWxPmu.js → cose-bilkent-JH36ORCC-Bgowgmmd.js} +1 -1
- package/dist/assets/crystal-CsTMAwME.js +1 -0
- package/dist/assets/{css-DWLxGm3Z.js → css-COZ77Eal.js} +1 -1
- package/dist/assets/cynefin-VYW2F7L2-mNpr4SbP.js +1 -0
- package/dist/assets/{cynefinDiagram-MW4NZA55-xRolnN9H.js → cynefinDiagram-MW4NZA55-BjhYqu92.js} +1 -1
- package/dist/assets/cypher-CY21sZiF.js +1 -0
- package/dist/assets/d-CURHSrpr.js +1 -0
- package/dist/assets/{dagre-VZM6K2ZE--7CAsOPi.js → dagre-VZM6K2ZE-BEuyIkT6.js} +1 -1
- package/dist/assets/{data-grid-overlay-editor-CP2bSduR.js → data-grid-overlay-editor-BQUij2ly.js} +1 -1
- package/dist/assets/data-source-discovery-DCNYJylO.js +1 -0
- package/dist/assets/{datasource-Le540Ng6.js → datasource-DxCwZdAq.js} +2 -2
- package/dist/assets/dependency-graph-panel-CLOQ_RvL.js +5 -0
- package/dist/assets/{diagram-7IWD3JNH-B55VSdpL.js → diagram-7IWD3JNH-Bs3lgu-c.js} +1 -1
- package/dist/assets/{diagram-B4RE2ZJO-BDn7ASqI.js → diagram-B4RE2ZJO-Dth7brNz.js} +1 -1
- package/dist/assets/{diagram-LBJQPF4R-B51MZG2V.js → diagram-LBJQPF4R-BTVLtL0d.js} +1 -1
- package/dist/assets/{diagram-Q27KOJAE-Cwk0Mlin.js → diagram-Q27KOJAE-CP204u9a.js} +1 -1
- package/dist/assets/{diagram-UB23O5K3-BdYFaMnx.js → diagram-UB23O5K3-ClHQzHar.js} +1 -1
- package/dist/assets/diff-oDNdZgsT.js +1 -0
- package/dist/assets/dist-2VJQDijP.js +1 -0
- package/dist/assets/{dist-etjVl5BO.js → dist-BB2m_pT9.js} +1 -1
- package/dist/assets/{dist-CAHB5I2V.js → dist-BIoV7ItK.js} +1 -1
- package/dist/assets/{dist-D5yi7Y8o.js → dist-BKZjRJh7.js} +1 -1
- package/dist/assets/dist-BSndAsl2.js +1 -0
- package/dist/assets/{dist-CF4ci481.js → dist-BrBdlR-1.js} +1 -1
- package/dist/assets/dist-CULUasdr.js +1 -0
- package/dist/assets/{dist-CG7o1Txo.js → dist-CgdeWOxv.js} +1 -1
- package/dist/assets/{dist-x-uwJAB2.js → dist-D7Pn6TvC.js} +1 -1
- package/dist/assets/{dist-Ci0ANOWc.js → dist-DoCsyl8V.js} +1 -1
- package/dist/assets/{dist-BhAom09b.js → dist-Q_HuxBl8.js} +1 -1
- package/dist/assets/{dist-UMYZc9Uw.js → dist-URSEPeIQ.js} +1 -1
- package/dist/assets/dist-e3TiiDdA.js +1 -0
- package/dist/assets/{dist-0tTkix79.js → dist-gKSpDGw2.js} +1 -1
- package/dist/assets/{dist-5AUFDACg.js → dist-ziD6OB9m.js} +1 -1
- package/dist/assets/{dockerfile-vQlfzaHL.js → dockerfile-L84t-MVG.js} +1 -1
- package/dist/assets/{documentation-panel-RJNMjUK6.js → documentation-panel-D9w8PAT9.js} +1 -1
- package/dist/assets/{download-B8NwKEtr.js → download-CfUkZlw7.js} +1 -1
- package/dist/assets/dtd-Cy2_BeYL.js +1 -0
- package/dist/assets/dylan-Crd9Fb_0.js +1 -0
- package/dist/assets/{ebnfDiagram-BXEA7PRR-BeNZBLGl.js → ebnfDiagram-BXEA7PRR-D5itfLTD.js} +1 -1
- package/dist/assets/ecl-CfCmFoo0.js +1 -0
- package/dist/assets/{edit-page-CvL5WAqs.js → edit-page-DKAg2YW9.js} +6 -6
- package/dist/assets/eiffel-gIaoJqnl.js +1 -0
- package/dist/assets/elm-BFWuf0zw.js +1 -0
- package/dist/assets/{erDiagram-JOGREHBK-Md316MnW.js → erDiagram-JOGREHBK-8nttFkHX.js} +1 -1
- package/dist/assets/erlang-o_h5GHv6.js +1 -0
- package/dist/assets/{error-entries-yYB8PZoo.js → error-entries-DpvSrZSw.js} +3 -3
- package/dist/assets/{error-panel-Dr928gBs.js → error-panel-uRl1_l47.js} +1 -1
- package/dist/assets/{esm-CpCa6w8Q.js → esm-B7G79VOo.js} +1 -1
- package/dist/assets/eventmodeling-45OFAUF4-CmCnqr0B.js +1 -0
- package/dist/assets/factor-DhP48x0i.js +1 -0
- package/dist/assets/{factor-D96xahcJ.js → factor-aNENtHLj.js} +1 -1
- package/dist/assets/file-explorer-panel-DwA9Lprz.js +37 -0
- package/dist/assets/{file-icons-D39zbjsS.js → file-icons-DpREEjwW.js} +1 -1
- package/dist/assets/{file-name-input-BLH5fTEA.js → file-name-input-C7AQKuoU.js} +1 -1
- package/dist/assets/{floating-outline-UPrDtFZF.js → floating-outline-4I6DvqaR.js} +1 -1
- package/dist/assets/flowDiagram-UKHOOZJN-BBKoHcjJ.js +1 -0
- package/dist/assets/{focus-BArgHYf8.js → focus-CeTtpVjV.js} +1 -1
- package/dist/assets/{form-BvzcNsxB.js → form-B10bgcbQ.js} +1 -1
- package/dist/assets/{form-BN1AKD58.js → form-Cj9BLARR.js} +1 -1
- package/dist/assets/forth-B9culvwH.js +1 -0
- package/dist/assets/fortran-P9CMHntW.js +1 -0
- package/dist/assets/{ganttDiagram-PKOTCBZU-ZWAQtEyO.js → ganttDiagram-PKOTCBZU-lYZ3LZM4.js} +1 -1
- package/dist/assets/gas-aBeBIUA2.js +1 -0
- package/dist/assets/gherkin-BKojMN6Q.js +1 -0
- package/dist/assets/gitGraph-TEB2WS4Q-lhsXnAif.js +1 -0
- package/dist/assets/{gitGraphDiagram-DS77QQ5N-BLejYVyQ.js → gitGraphDiagram-DS77QQ5N-BMWEqU01.js} +1 -1
- package/dist/assets/{glide-data-editor-BNZxtmKn.js → glide-data-editor-Bo6hLXbn.js} +6 -6
- package/dist/assets/groovy-CePAd7wh.js +1 -0
- package/dist/assets/haskell-QHmsrbZx.js +1 -0
- package/dist/assets/haxe-CQV_8vKL.js +1 -0
- package/dist/assets/{home-page-DcO0NzuV.js → home-page-BNJihtii.js} +2 -2
- package/dist/assets/{html-to-image-DKEUbBwc.js → html-to-image-ChfBVn8-.js} +1 -1
- package/dist/assets/idl-Dd8N44Cm.js +1 -0
- package/dist/assets/index-CxZ6uZaz.css +2 -0
- package/dist/assets/index-T5Rre8Dj.js +38 -0
- package/dist/assets/info-DKCQHKI2-C7T8UDyU.js +1 -0
- package/dist/assets/infoDiagram-6WML65LV-DF1s-6Vl.js +2 -0
- package/dist/assets/{ishikawaDiagram-WSZJBQD7-DsUyhPdP.js → ishikawaDiagram-WSZJBQD7-DaG24pVU.js} +1 -1
- package/dist/assets/javascript-DSNeo7JU.js +1 -0
- package/dist/assets/{journeyDiagram-NVQOT4AX-Dtytysty.js → journeyDiagram-NVQOT4AX-Bjv5KPQN.js} +1 -1
- package/dist/assets/julia-noK_uk9P.js +1 -0
- package/dist/assets/{kanban-definition-27J2QSJJ-CtSUWi1q.js → kanban-definition-27J2QSJJ-3QfkEp5c.js} +1 -1
- package/dist/assets/katex-D7rQd2tt.js +1 -0
- package/dist/assets/{layout-C5In1pVG.js → layout-YPBtS2D6.js} +5 -5
- package/dist/assets/livescript-YKkeujLh.js +1 -0
- package/dist/assets/{logs-panel-DItocggZ.js → logs-panel-ClE58_4G.js} +1 -1
- package/dist/assets/{loro_wasm_bg-Cei5H7n0.js → loro_wasm_bg-Bhj1szFH.js} +1 -1
- package/dist/assets/lua-fLqC1mOj.js +1 -0
- package/dist/assets/{markdown-renderer-D7RLn6TA.js → markdown-renderer-BOS4jZLt.js} +3 -3
- package/dist/assets/mathematica-BEqGrvB0.js +1 -0
- package/dist/assets/mbox-9uehSvC8.js +1 -0
- package/dist/assets/{mermaid-4DMBBIKO-oaGD2RAq.js → mermaid-4DMBBIKO-VnWrwEGQ.js} +1 -1
- package/dist/assets/{mermaid-D7qPJTl5.js → mermaid-DrH-G40O.js} +3 -3
- package/dist/assets/{mermaid-parser.core-C1pvq6V4.js → mermaid-parser.core-7L0n-40M.js} +2 -2
- package/dist/assets/{mhchem-ByBXJmVs.js → mhchem-jUQ3W9QS.js} +1 -1
- package/dist/assets/{mindmap-definition-FAOFIHXS-BdiofJNg.js → mindmap-definition-FAOFIHXS-BI-5PR09.js} +1 -1
- package/dist/assets/mirc-BTX_WxCv.js +1 -0
- package/dist/assets/mllike-LThTvO6F.js +1 -0
- package/dist/assets/modelica-ClexNQK-.js +1 -0
- package/dist/assets/mscgen-Cr-Z_Sdd.js +1 -0
- package/dist/assets/mumps-G_BfPdvs.js +1 -0
- package/dist/assets/{name-cell-input-jausH-CL.js → name-cell-input-UMsLssMV.js} +1 -1
- package/dist/assets/nsis-CBRC0JIr.js +1 -0
- package/dist/assets/{nsis-gzbsJ5t0.js → nsis-CNBWu0HQ.js} +1 -1
- package/dist/assets/ntriples-DrvRq09t.js +1 -0
- package/dist/assets/{number-overlay-editor-CrwfeUrx.js → number-overlay-editor-C-zZ00cy.js} +1 -1
- package/dist/assets/octave-BiPC57kS.js +1 -0
- package/dist/assets/{outline-panel-C_pASL6b.js → outline-panel-DweKocZK.js} +1 -1
- package/dist/assets/oz-DacpSh-q.js +1 -0
- package/dist/assets/{packages-panel-DTqur75g.js → packages-panel-Cbw5J5QD.js} +1 -1
- package/dist/assets/packet-7NZHBO7P-CJZ85ye7.js +1 -0
- package/dist/assets/panel-accordion-state-CgvX-ElJ.js +1 -0
- package/dist/assets/panels-DRv39UwA.js +4 -0
- package/dist/assets/pascal-BQpBPSms.js +1 -0
- package/dist/assets/{pegDiagram-VL7TDLO6-CUhl_uoo.js → pegDiagram-VL7TDLO6-Dr2AgOs7.js} +1 -1
- package/dist/assets/perl-BhMGfluR.js +1 -0
- package/dist/assets/pie-RZYD4A2V-DowYgF53.js +1 -0
- package/dist/assets/{pieDiagram-7S7Q4E2Y-BUJuppkz.js → pieDiagram-7S7Q4E2Y-CrBge38F.js} +1 -1
- package/dist/assets/pig-lTm9qLoi.js +1 -0
- package/dist/assets/powershell-3wPcC3I5.js +1 -0
- package/dist/assets/{process-output-ClE9lj2U.js → process-output-BMxr8Z3g.js} +1 -1
- package/dist/assets/properties-CfDlOPua.js +1 -0
- package/dist/assets/protobuf-DqtB_3Ds.js +1 -0
- package/dist/assets/pug-BendPilS.js +1 -0
- package/dist/assets/{pug-CfBtO6QD.js → pug-IDpseMj2.js} +1 -1
- package/dist/assets/puppet-CS4oS8k4.js +1 -0
- package/dist/assets/python-DwXz2aVG.js +1 -0
- package/dist/assets/q-CAmiN8ZZ.js +1 -0
- package/dist/assets/{quadrantDiagram-CIZ2JOQS-D1kqQfB1.js → quadrantDiagram-CIZ2JOQS-BE2ggXL5.js} +1 -1
- package/dist/assets/r-BVrS7OVn.js +1 -0
- package/dist/assets/radar-I7S5WNFK-CTSSWmoj.js +1 -0
- package/dist/assets/{radio-group-CSwRGU0A.js → radio-group-YNmbPL7y.js} +1 -1
- package/dist/assets/railroad-3IZDKUUU-B7NYUsSF.js +1 -0
- package/dist/assets/railroad-abnf-AHOZXSZD-YHDI2QY9.js +1 -0
- package/dist/assets/railroad-ebnf-EBAXGLYW-C63c8OB7.js +1 -0
- package/dist/assets/railroad-peg-LSFZ7HO6-Cjglh51C.js +1 -0
- package/dist/assets/{railroadDiagram-AXF67PYL-A0Qm-6po.js → railroadDiagram-AXF67PYL-DCQRdlxt.js} +1 -1
- package/dist/assets/{readonly-code-display-kRUXu5aJ.js → readonly-code-display-N9tCXdCz.js} +1 -1
- package/dist/assets/{readonly-python-code-BCOkadQf.js → readonly-python-code-BHrAhtGV.js} +1 -1
- package/dist/assets/{requirementDiagram-LRYGKXZP-Cq2ghiHc.js → requirementDiagram-LRYGKXZP-DwT1P9SV.js} +1 -1
- package/dist/assets/{reveal-component-DpjFw5UY.js → reveal-component-Cl6cd65E.js} +2 -2
- package/dist/assets/rpm-CdnUar42.js +1 -0
- package/dist/assets/ruby-BCel59B2.js +1 -0
- package/dist/assets/{run-page-BXPaOWqZ.js → run-page-Phwq7OJt.js} +1 -1
- package/dist/assets/{sankeyDiagram-W5VNT64P-RT9P6FJq.js → sankeyDiagram-W5VNT64P-DI3BRqfo.js} +1 -1
- package/dist/assets/sas-BmzKenFt.js +1 -0
- package/dist/assets/scheme-DkHD_m5P.js +1 -0
- package/dist/assets/{scratchpad-panel-GyB5PjiV.js → scratchpad-panel-CvihhlAP.js} +1 -1
- package/dist/assets/{sequenceDiagram-SI44F4Z6-Dk9UNsG3.js → sequenceDiagram-SI44F4Z6-BBkZRxiN.js} +1 -1
- package/dist/assets/session-panel-BmQ0PDHO.js +1 -0
- package/dist/assets/shell-BoNNN3zm.js +1 -0
- package/dist/assets/sieve-BXXK8f92.js +1 -0
- package/dist/assets/{sizeCapture-X5ZJPWSS-ce6Hf1Mn.js → sizeCapture-X5ZJPWSS-BwnqWK01.js} +1 -1
- package/dist/assets/{skeleton-CHVfqr51.js → skeleton-BsZq3Vmq.js} +1 -1
- package/dist/assets/smalltalk-BOqQhpHI.js +1 -0
- package/dist/assets/{snippets-panel-V4x4wLMQ.js → snippets-panel-cYP0GMUf.js} +1 -1
- package/dist/assets/sparql-edyZVkfL.js +1 -0
- package/dist/assets/spec-C_psFYbu.js +1 -0
- package/dist/assets/{src-Be2gSjc_.js → src-BydIU0H9.js} +1 -1
- package/dist/assets/{state-m2zUPztG.js → state-DJon00Ew.js} +1 -1
- package/dist/assets/{state-C7arWhwL.js → state-Dc5AjWPq.js} +2 -2
- package/dist/assets/{stateDiagram-OKZ733FA-b4p2-xPQ.js → stateDiagram-OKZ733FA-CKgejYo0.js} +1 -1
- package/dist/assets/stateDiagram-v2-UEYNNEHI-DGOHmIHi.js +1 -0
- package/dist/assets/stylus-D7JxHbZj.js +1 -0
- package/dist/assets/swift-BVf4glc7.js +1 -0
- package/dist/assets/{swimlanes-SLNWSIFB-BU8BFEOR.js → swimlanes-SLNWSIFB-CaRk1UjW.js} +2 -2
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-B3waQOQb.js +8 -0
- package/dist/assets/tcl-Dj0fCfAi.js +1 -0
- package/dist/assets/textile-C2t_E40o.js +1 -0
- package/dist/assets/{timeline-definition-Z64GVDOM-D1kTYo17.js → timeline-definition-Z64GVDOM-eczfm7Uw.js} +1 -1
- package/dist/assets/toml-DaFUQW6l.js +1 -0
- package/dist/assets/{tracing-Cmwuiwj9.js → tracing-dGSNt8Nm.js} +1 -1
- package/dist/assets/{tracing-panel-CCXeYfOu.js → tracing-panel-CQCgx3e4.js} +2 -2
- package/dist/assets/{tree-actions-QMLf8Qhz.js → tree-actions-pW_UgP3m.js} +1 -1
- package/dist/assets/treeView-QDETBFTQ-CSvxEE7M.js +1 -0
- package/dist/assets/treemap-6X3UGDF4-CmweKwGi.js +1 -0
- package/dist/assets/troff-CYzkeKir.js +1 -0
- package/dist/assets/ttcn-CXYORWfg.js +1 -0
- package/dist/assets/ttcn-cfg-CaYX34bx.js +1 -0
- package/dist/assets/turtle-5bfs3D9s.js +1 -0
- package/dist/assets/{useCellActionButton-D8qyXNKv.js → useCellActionButton-De17Z9R3.js} +1 -1
- package/dist/assets/{useDeleteCell-Ctnxl8AT.js → useDeleteCell-BgFMPTmg.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-CYSEZi6j.js → useDependencyPanelTab-w8VLtsK3.js} +1 -1
- package/dist/assets/{useNotebookActions-CxMrxNFT.js → useNotebookActions-BI53NQV3.js} +4 -4
- package/dist/assets/{useRunCells-DjQN3XYP.js → useRunCells-CAfRBo7h.js} +1 -1
- package/dist/assets/{useSplitCell-BG8Zd4lw.js → useSplitCell-N8Ohs-Pp.js} +1 -1
- package/dist/assets/{utils-Y4n-X10o.js → utils-Bp3MLwWq.js} +1 -1
- package/dist/assets/vb-CXQ5pSkV.js +1 -0
- package/dist/assets/vbscript-BZP_4BaN.js +1 -0
- package/dist/assets/{vega-component-1VoQOWvU.js → vega-component-DpKA6PEU.js} +1 -1
- package/dist/assets/{vega-embed-container-CH1lX0V6.js → vega-embed-container-D0V0wn9T.js} +1 -1
- package/dist/assets/velocity-BbHSi60j.js +1 -0
- package/dist/assets/{vennDiagram-T6HMQDX7-BhQR7L7x.js → vennDiagram-T6HMQDX7-BKrC4vk_.js} +1 -1
- package/dist/assets/verilog-Bw8NaRo-.js +1 -0
- package/dist/assets/vhdl-CkM1aKBX.js +1 -0
- package/dist/assets/wardley-OPB4EBWU-DKu5fTFq.js +1 -0
- package/dist/assets/{wardleyDiagram-T6FBY63Y-C6iZTOEK.js → wardleyDiagram-T6FBY63Y-BsBjXAQS.js} +1 -1
- package/dist/assets/webidl-C8MAcuKq.js +1 -0
- package/dist/assets/xquery-a81J2h4S.js +1 -0
- package/dist/assets/{xychartDiagram-ELKLHX3M-Hl9zZZJW.js → xychartDiagram-ELKLHX3M-i4ykddaR.js} +1 -1
- package/dist/assets/yacas-CjV2u_g7.js +1 -0
- package/dist/assets/z80-C0uVpBhe.js +1 -0
- package/dist/index.html +28 -28
- package/package.json +1 -1
- package/src/components/app-config/optional-features.test.ts +78 -0
- package/src/components/app-config/optional-features.tsx +33 -6
- package/src/components/data-table/__tests__/column_formatting.test.ts +7 -0
- package/src/components/data-table/charts/__tests__/schemas.test.ts +17 -2
- package/src/components/data-table/charts/chart-spec/types.ts +2 -0
- package/src/components/data-table/column-formatting/feature.ts +1 -0
- package/src/components/data-table/column-formatting/types.ts +1 -0
- package/src/components/data-table/column-summary/chart-spec-model.tsx +1 -0
- package/src/components/data-table/column-summary/column-summary.tsx +1 -0
- package/src/components/data-table/columns.tsx +4 -3
- package/src/components/datasets/__tests__/icons.test.ts +10 -2
- package/src/components/datasets/icons.tsx +4 -0
- package/src/components/datasources/__tests__/components.test.tsx +14 -1
- package/src/components/datasources/datasources.tsx +2 -40
- package/src/components/editor/chrome/panels/components.tsx +35 -0
- package/src/components/editor/chrome/panels/file-explorer-panel.tsx +10 -0
- package/src/components/editor/chrome/panels/session-panel.tsx +12 -4
- package/src/components/editor/connections/__tests__/quick-add-data-sources.test.tsx +2 -0
- package/src/components/editor/connections/add-connection-dialog.tsx +5 -1
- package/src/components/editor/connections/quick-add-data-sources.tsx +11 -7
- package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +43 -0
- package/src/components/editor/connections/storage/__tests__/as-code.test.ts +127 -0
- package/src/components/editor/connections/storage/add-storage-form.tsx +11 -1
- package/src/components/editor/connections/storage/as-code.ts +30 -1
- package/src/components/editor/connections/storage/schemas.ts +63 -0
- package/src/core/codemirror/code-lens/__tests__/popover.test.ts +13 -0
- package/src/core/codemirror/code-lens/popover.tsx +11 -5
- package/src/core/codemirror/language/languages/sql/__tests__/renderers.test.tsx +15 -4
- package/src/core/codemirror/language/languages/sql/renderers.tsx +1 -0
- package/src/core/datasets/__tests__/data-source-discovery.test.ts +277 -0
- package/src/core/datasets/data-source-connections.ts +36 -0
- package/src/core/datasets/data-source-discovery.ts +92 -0
- package/src/core/kernel/messages.ts +1 -0
- package/src/core/websocket/useMarimoKernelConnection.tsx +11 -3
- package/src/hooks/useDataSourceDiscovery.ts +50 -9
- package/src/plugins/impl/MatrixPlugin.tsx +256 -35
- package/src/plugins/impl/__tests__/DataEditorPlugin.test.ts +13 -1
- package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +540 -3
- package/src/plugins/impl/data-editor/glide-data-editor.tsx +1 -0
- package/src/plugins/impl/data-editor/glide-utils.ts +1 -0
- package/src/plugins/impl/data-frames/__tests__/schema.test.ts +9 -1
- package/src/plugins/impl/data-frames/utils/__tests__/operators.test.ts +8 -0
- package/src/plugins/impl/data-frames/utils/operators.ts +1 -1
- package/src/plugins/impl/vega/__tests__/vega.test.ts +22 -4
- package/src/plugins/impl/vega/utils.ts +3 -0
- package/dist/assets/LazyAnyLanguageCodeMirror-DUvRReKp.js +0 -2
- package/dist/assets/add-connection-dialog-DHyonb9T.js +0 -178
- package/dist/assets/apl-B-7blH-b.js +0 -1
- package/dist/assets/app-config-button-DnmQED8O.js +0 -1
- package/dist/assets/architecture-TIHT7OUA-YhortkiJ.js +0 -1
- package/dist/assets/asciiarmor-D3K8amZ9.js +0 -1
- package/dist/assets/asn1-UGGn98tp.js +0 -1
- package/dist/assets/brainfuck-B4y4U3tg.js +0 -1
- package/dist/assets/cell-link-WDIIwzUn.js +0 -1
- package/dist/assets/channel-B8YARzTa.js +0 -1
- package/dist/assets/classDiagram-JCYQIIEL-CjNLIEON.js +0 -1
- package/dist/assets/classDiagram-v2-OCEON4UE-DB1cPPS3.js +0 -1
- package/dist/assets/clojure-BAZ-ejkG.js +0 -1
- package/dist/assets/cmake-jWn0xN9y.js +0 -1
- package/dist/assets/cobol-XqY9jaWP.js +0 -1
- package/dist/assets/coffeescript-DI1jfZHX.js +0 -1
- package/dist/assets/commonlisp-UKb01OlU.js +0 -1
- package/dist/assets/components-DVs9Yu7X.js +0 -1
- package/dist/assets/crystal-DOvjTBWA.js +0 -1
- package/dist/assets/cynefin-VYW2F7L2-Dob7zmDv.js +0 -1
- package/dist/assets/cypher-CLDhu2ae.js +0 -1
- package/dist/assets/d-C0ecUZk9.js +0 -1
- package/dist/assets/dependency-graph-panel-BsdBM_AS.js +0 -5
- package/dist/assets/diff-657cCCVc.js +0 -1
- package/dist/assets/dist-BbNJKBqf.js +0 -1
- package/dist/assets/dist-CJU3fYUR.js +0 -1
- package/dist/assets/dist-ClAayqDs.js +0 -1
- package/dist/assets/dist-Dk7PW1P8.js +0 -1
- package/dist/assets/dtd-DSiK7Qgi.js +0 -1
- package/dist/assets/dylan-07d5-7Q9.js +0 -1
- package/dist/assets/ecl-CSTUHiwq.js +0 -1
- package/dist/assets/eiffel-DR99GcsM.js +0 -1
- package/dist/assets/elm-Cmh0iW6J.js +0 -1
- package/dist/assets/erlang-CS9Yc6UC.js +0 -1
- package/dist/assets/eventmodeling-45OFAUF4-Dfz56MmV.js +0 -1
- package/dist/assets/factor-DjB27Lcf.js +0 -1
- package/dist/assets/file-explorer-panel-Brf39GIG.js +0 -37
- package/dist/assets/flowDiagram-UKHOOZJN-DuIOw7R3.js +0 -1
- package/dist/assets/forth-UwTUu7NY.js +0 -1
- package/dist/assets/fortran-cptiB4gJ.js +0 -1
- package/dist/assets/gas-ajMbd9Us.js +0 -1
- package/dist/assets/gherkin-ClYkalzE.js +0 -1
- package/dist/assets/gitGraph-TEB2WS4Q-DHatMnz3.js +0 -1
- package/dist/assets/groovy-BY-gt7AW.js +0 -1
- package/dist/assets/haskell-D1BeJ7SR.js +0 -1
- package/dist/assets/haxe-QOq5WFXx.js +0 -1
- package/dist/assets/idl-3-UcEGx7.js +0 -1
- package/dist/assets/index-CXJA6BU5.js +0 -38
- package/dist/assets/index-WoaGtlKd.css +0 -2
- package/dist/assets/info-DKCQHKI2-DL5sXjlh.js +0 -1
- package/dist/assets/infoDiagram-6WML65LV-w0LSkwW5.js +0 -2
- package/dist/assets/javascript-CorD44JN.js +0 -1
- package/dist/assets/julia-BYqTtTAl.js +0 -1
- package/dist/assets/katex-DWt0esek.js +0 -1
- package/dist/assets/livescript-qYgfNnNE.js +0 -1
- package/dist/assets/lua-BCqCjdfz.js +0 -1
- package/dist/assets/mathematica-XKwMfn0d.js +0 -1
- package/dist/assets/mbox-BnkeOnif.js +0 -1
- package/dist/assets/mirc-ipoElhai.js +0 -1
- package/dist/assets/mllike-DmouQ5Dp.js +0 -1
- package/dist/assets/modelica-BtmmVsUf.js +0 -1
- package/dist/assets/mscgen-BHZmHZgz.js +0 -1
- package/dist/assets/mumps-oKfoFTl_.js +0 -1
- package/dist/assets/nsis-DDOPnuAW.js +0 -1
- package/dist/assets/ntriples-Dsyl_sOF.js +0 -1
- package/dist/assets/octave-CI5RGMPa.js +0 -1
- package/dist/assets/oz-D01pKAWx.js +0 -1
- package/dist/assets/packet-7NZHBO7P-Btbo_lPa.js +0 -1
- package/dist/assets/panel-accordion-state-DaMmC7UV.js +0 -1
- package/dist/assets/panels-B2LHXcJf.js +0 -4
- package/dist/assets/pascal-DGXfnIFD.js +0 -1
- package/dist/assets/perl-gZ7qIkF-.js +0 -1
- package/dist/assets/pie-RZYD4A2V-DHlhKt-c.js +0 -1
- package/dist/assets/pig-Cb90ayl-.js +0 -1
- package/dist/assets/powershell-_YxddSL3.js +0 -1
- package/dist/assets/properties-sU50dmvt.js +0 -1
- package/dist/assets/protobuf-DFdF-yfo.js +0 -1
- package/dist/assets/pug-DwUB-C24.js +0 -1
- package/dist/assets/puppet-DtKzwiZ6.js +0 -1
- package/dist/assets/python-BMLOKYmk.js +0 -1
- package/dist/assets/q-BF1zXMdP.js +0 -1
- package/dist/assets/r-BQiKhVSI.js +0 -1
- package/dist/assets/radar-I7S5WNFK-DZTiwd45.js +0 -1
- package/dist/assets/railroad-3IZDKUUU-DxAKHi3X.js +0 -1
- package/dist/assets/railroad-abnf-AHOZXSZD-DgPW-bTs.js +0 -1
- package/dist/assets/railroad-ebnf-EBAXGLYW-6hsaKhfa.js +0 -1
- package/dist/assets/railroad-peg-LSFZ7HO6-Sj3gnwID.js +0 -1
- package/dist/assets/rpm-v7UTuaHo.js +0 -1
- package/dist/assets/ruby-Cw43FpG3.js +0 -1
- package/dist/assets/sas-BIKscqlp.js +0 -1
- package/dist/assets/scheme-CGic3hSV.js +0 -1
- package/dist/assets/session-panel-CidCOM4_.js +0 -1
- package/dist/assets/shell-DAh545tm.js +0 -1
- package/dist/assets/sieve-bGkng63-.js +0 -1
- package/dist/assets/smalltalk-fIw53lm8.js +0 -1
- package/dist/assets/sparql-CHbJrAY_.js +0 -1
- package/dist/assets/spec-NeCHOv2Z.js +0 -1
- package/dist/assets/stateDiagram-v2-UEYNNEHI-DVggkZEP.js +0 -1
- package/dist/assets/stylus-3Q5WfXqT.js +0 -1
- package/dist/assets/swift-MKxc2knl.js +0 -1
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-Dl8Izbnv.js +0 -8
- package/dist/assets/tcl-D3fKhQc_.js +0 -1
- package/dist/assets/textile-Bi_LEJQ3.js +0 -1
- package/dist/assets/toml-Dt-PBqwt.js +0 -1
- package/dist/assets/treeView-QDETBFTQ-DI-AuAry.js +0 -1
- package/dist/assets/treemap-6X3UGDF4-BikstUU5.js +0 -1
- package/dist/assets/troff-BSU-rxoD.js +0 -1
- package/dist/assets/ttcn-BmLjonVM.js +0 -1
- package/dist/assets/ttcn-cfg-TPTcP0Eh.js +0 -1
- package/dist/assets/turtle-HafmShQq.js +0 -1
- package/dist/assets/vb-CUif5uGR.js +0 -1
- package/dist/assets/vbscript-DWVPFl59.js +0 -1
- package/dist/assets/velocity-BJl8UzB4.js +0 -1
- package/dist/assets/verilog-B4LUPYXy.js +0 -1
- package/dist/assets/vhdl-C91h3ipk.js +0 -1
- package/dist/assets/wardley-OPB4EBWU-CeBjkYYY.js +0 -1
- package/dist/assets/webidl-DOay1zbU.js +0 -1
- package/dist/assets/xquery-Cez7jD_4.js +0 -1
- package/dist/assets/yacas-CSQEXB_S.js +0 -1
- package/dist/assets/z80-CJbYj7Wr.js +0 -1
- package/src/hooks/__tests__/useDataSourceDiscovery.test.ts +0 -80
- /package/dist/assets/{ImageComparisonComponent-BcnwhFjf.js → ImageComparisonComponent-f3_KuPvA.js} +0 -0
- /package/dist/assets/{Inputs-DrAa-p6i.js → Inputs-S6F4fq1S.js} +0 -0
- /package/dist/assets/{Plot-93LEWfvh.js → Plot-BKmsCw4V.js} +0 -0
- /package/dist/assets/{apl-CPlG1HX3.js → apl-HjCOpvY9.js} +0 -0
- /package/dist/assets/{asciiarmor-DV_pcocJ.js → asciiarmor-CZUdQ8YG.js} +0 -0
- /package/dist/assets/{asn1-DPxWcGvG.js → asn1-D9fbSxQp.js} +0 -0
- /package/dist/assets/{asterisk-1BK_fEUT.js → asterisk-GbGHf9GU.js} +0 -0
- /package/dist/assets/{brainfuck-CGDdBVNO.js → brainfuck-DoACnXtY.js} +0 -0
- /package/dist/assets/{chunk-KEIR6QF5-Dy1GNnFZ.js → chunk-KEIR6QF5-DALP8ow3.js} +0 -0
- /package/dist/assets/{chunk-Y2CYZVJY-Ci6ix4_L.js → chunk-Y2CYZVJY-BLNiTciS.js} +0 -0
- /package/dist/assets/{clear-button-D_bGby_-.js → clear-button-ChZ5WLVn.js} +0 -0
- /package/dist/assets/{click-outside-container-Ble4snjv.js → click-outside-container-B_JD95Fi.js} +0 -0
- /package/dist/assets/{clike-D91DrsBh.js → clike-BvT_OTqG.js} +0 -0
- /package/dist/assets/{clojure-B0eb_-2q.js → clojure-DObunWgq.js} +0 -0
- /package/dist/assets/{cmake-COzUvjiS.js → cmake-Bn1dmbG8.js} +0 -0
- /package/dist/assets/{cobol-DW4FSnmb.js → cobol-CJ0xj-s7.js} +0 -0
- /package/dist/assets/{coffeescript-CommR2mv.js → coffeescript-DSHpWjh8.js} +0 -0
- /package/dist/assets/{common-keywords-CL5lDC0w.js → common-keywords-DpBQRN1C.js} +0 -0
- /package/dist/assets/{commonlisp-FR_N9RJL.js → commonlisp-C8BmLRoV.js} +0 -0
- /package/dist/assets/{crystal-CAN7bz25.js → crystal-Ca8nJT--.js} +0 -0
- /package/dist/assets/{css-DmLg8a0m.js → css-CY56PGqI.js} +0 -0
- /package/dist/assets/{cypher-BzSJn05x.js → cypher-DkMgpwTD.js} +0 -0
- /package/dist/assets/{cytoscape.esm-DMX0DoYf.js → cytoscape.esm-ohuTJsWI.js} +0 -0
- /package/dist/assets/{d-UpmnByGo.js → d-De6gURe0.js} +0 -0
- /package/dist/assets/{diff-DRpitNo9.js → diff-D9jknSNL.js} +0 -0
- /package/dist/assets/{dist-CjgCY_Ws.js → dist-B8OryoSI.js} +0 -0
- /package/dist/assets/{dist-DcguuZEe.js → dist-B_Q1ayL4.js} +0 -0
- /package/dist/assets/{dist-BY5C0xw-.js → dist-BdgY02GB.js} +0 -0
- /package/dist/assets/{dist-5zzK1Bpl.js → dist-BpyRMlx3.js} +0 -0
- /package/dist/assets/{dist-Bp45OWJJ.js → dist-BvDn6jZn.js} +0 -0
- /package/dist/assets/{dist-CSEj3YUH.js → dist-C1_zNuc7.js} +0 -0
- /package/dist/assets/{dist-CYcHr3tv.js → dist-C3M1h1bY.js} +0 -0
- /package/dist/assets/{dist-iZqQ8eEZ.js → dist-CiELQ2ik.js} +0 -0
- /package/dist/assets/{dist-Op2xySIC.js → dist-CnESRnx2.js} +0 -0
- /package/dist/assets/{dist-SgSQKL07.js → dist-Cnb7x5X_.js} +0 -0
- /package/dist/assets/{dist-CqO2FBHV.js → dist-CtsSPT78.js} +0 -0
- /package/dist/assets/{dist-BQMAD-re.js → dist-DDuxOj5E.js} +0 -0
- /package/dist/assets/{dist-C3YC038-.js → dist-DXl-iyI_.js} +0 -0
- /package/dist/assets/{dist-VHnyClcl.js → dist-DcwGajoh.js} +0 -0
- /package/dist/assets/{dist-ChJa98Av.js → dist-M9OI1ywz.js} +0 -0
- /package/dist/assets/{dist-BTX2QySO.js → dist-oc6kOhWh.js} +0 -0
- /package/dist/assets/{dist-AhQW5KN1.js → dist-rcsCwDst.js} +0 -0
- /package/dist/assets/{dtd-CQV9N2ok.js → dtd-B5FJ4BXV.js} +0 -0
- /package/dist/assets/{duckdb-keywords-CKBoTxEb.js → duckdb-keywords-DrrKcwLz.js} +0 -0
- /package/dist/assets/{dylan-Bp98yT5y.js → dylan-zZheNs86.js} +0 -0
- /package/dist/assets/{ebnf-CviyCkP7.js → ebnf-DuKzoTsP.js} +0 -0
- /package/dist/assets/{ecl-BgtQ3zu5.js → ecl-BcK76Ow3.js} +0 -0
- /package/dist/assets/{eiffel-Cu14O7Gi.js → eiffel-KaaY88la.js} +0 -0
- /package/dist/assets/{elm-Dp1dn40k.js → elm-B7-LHWcm.js} +0 -0
- /package/dist/assets/{erlang-DdogJjdp.js → erlang-DaphDTvj.js} +0 -0
- /package/dist/assets/{esm-DbAcs2Px.js → esm-BKF5e2-i.js} +0 -0
- /package/dist/assets/{fcl-DjfeL5F6.js → fcl-DopXl_Cb.js} +0 -0
- /package/dist/assets/{forth-Dd0r86IP.js → forth-BKlt87ew.js} +0 -0
- /package/dist/assets/{fortran-4qvtlW4z.js → fortran-DDZOpuZf.js} +0 -0
- /package/dist/assets/{gallery-page-CtBVFIhS.js → gallery-page-4_c4sSjL.js} +0 -0
- /package/dist/assets/{gas-DqwqZHXy.js → gas-CDn7Y-Gk.js} +0 -0
- /package/dist/assets/{gherkin-DMxJEDh5.js → gherkin-eZ5FXLoA.js} +0 -0
- /package/dist/assets/{github-6F3RzPv3.js → github-CE-ZvKrv.js} +0 -0
- /package/dist/assets/{groovy-DA_MxBua.js → groovy-BwhPb7Fz.js} +0 -0
- /package/dist/assets/{haskell-B_hi8VEK.js → haskell-Dnk7SiND.js} +0 -0
- /package/dist/assets/{haxe-D-I6YeRN.js → haxe-lllox-eQ.js} +0 -0
- /package/dist/assets/{http-VleqgIZJ.js → http-BxcKXOao.js} +0 -0
- /package/dist/assets/{idl-CteRrHSs.js → idl-DgcPYEkx.js} +0 -0
- /package/dist/assets/{javascript-Cq9DsvSW.js → javascript-COkX3Xca.js} +0 -0
- /package/dist/assets/{julia-bHGj6eLp.js → julia-D-oyKrif.js} +0 -0
- /package/dist/assets/{katex-B9FkzyvX.js → katex-DX0AbnS9.js} +0 -0
- /package/dist/assets/{kiosk-mode-B8UhlOLw.js → kiosk-mode-CNguD0K4.js} +0 -0
- /package/dist/assets/{links-STGde2qx.js → links-CWv16njv.js} +0 -0
- /package/dist/assets/{livescript-C72YlTeO.js → livescript-D_iKnN6P.js} +0 -0
- /package/dist/assets/{loro_wasm_bg-DIEeF9jI.js → loro_wasm_bg-wiZiHqmd.js} +0 -0
- /package/dist/assets/{lua-DAtJrHXr.js → lua-DvA1dcWk.js} +0 -0
- /package/dist/assets/{marimo-icons-CW8-Txe-.js → marimo-icons-BT3Q9hP-.js} +0 -0
- /package/dist/assets/{mathematica-DGp7b8Lx.js → mathematica-BsU_wLgp.js} +0 -0
- /package/dist/assets/{mbox-C35KjfEV.js → mbox-C0XhbFpn.js} +0 -0
- /package/dist/assets/{mirc-BRCHEPv1.js → mirc-CHTyPhxQ.js} +0 -0
- /package/dist/assets/{mllike-D7ajla-U.js → mllike-CUPiTPoj.js} +0 -0
- /package/dist/assets/{modelica-0RGVL4ie.js → modelica-CY01YUSk.js} +0 -0
- /package/dist/assets/{mscgen-C7Ohs4Tl.js → mscgen-DrdJ4BfA.js} +0 -0
- /package/dist/assets/{mumps-Cgag5Xef.js → mumps-oDd7O1nq.js} +0 -0
- /package/dist/assets/{nginx-D7OKXoUe.js → nginx-BFZZWp0k.js} +0 -0
- /package/dist/assets/{node-sql-parser-DE2GpgS7.js → node-sql-parser-BAQ3SN57.js} +0 -0
- /package/dist/assets/{ntriples-oQv5c69K.js → ntriples-Kz6Omt8T.js} +0 -0
- /package/dist/assets/{octave-BMTXs4lo.js → octave-D4G4nAd-.js} +0 -0
- /package/dist/assets/{oz-CuHYwo8r.js → oz-BMPClN8a.js} +0 -0
- /package/dist/assets/{pascal-eFKoVV2p.js → pascal-PjzHq8gx.js} +0 -0
- /package/dist/assets/{perl-B1OqOW8w.js → perl-BJehkHc4.js} +0 -0
- /package/dist/assets/{pig-gIrBDx27.js → pig-BErUKXIE.js} +0 -0
- /package/dist/assets/{powershell-3fQF2XND.js → powershell-C9VPAjfT.js} +0 -0
- /package/dist/assets/{properties-D4HHpZmU.js → properties-C9_sS9KX.js} +0 -0
- /package/dist/assets/{protobuf-DFSTKR0L.js → protobuf-CTL_9hGv.js} +0 -0
- /package/dist/assets/{puppet-BAISgXk9.js → puppet-DiwkFvYr.js} +0 -0
- /package/dist/assets/{python-mPctBCbA.js → python-B6qWXHOF.js} +0 -0
- /package/dist/assets/{q-CYeV5Dbb.js → q-DK2HS4ce.js} +0 -0
- /package/dist/assets/{r-Ds4UrjIV.js → r-DaU8ID7q.js} +0 -0
- /package/dist/assets/{rough.esm-CR3HSVpq.js → rough.esm-DsKVbNkz.js} +0 -0
- /package/dist/assets/{rpm-DV5-r6dM.js → rpm-B1zWd_-L.js} +0 -0
- /package/dist/assets/{ruby-B9qrycrI.js → ruby-e8Zeo08a.js} +0 -0
- /package/dist/assets/{runs-B8nVipXz.js → runs-0Fl_whti.js} +0 -0
- /package/dist/assets/{sas-Cd7L1ZOe.js → sas-CtNe7N_s.js} +0 -0
- /package/dist/assets/{scheme-L6Kva-Kc.js → scheme-D7VUNgy0.js} +0 -0
- /package/dist/assets/{secrets-panel-CVQIJOsr.js → secrets-panel-C51QhQhQ.js} +0 -0
- /package/dist/assets/{shell-Ck42V1Kn.js → shell-95QiTNIY.js} +0 -0
- /package/dist/assets/{sieve-DfSJcUfS.js → sieve-4wk3Woa7.js} +0 -0
- /package/dist/assets/{simple-mode-CfoR0Lvg.js → simple-mode-C1B3ue4E.js} +0 -0
- /package/dist/assets/{smalltalk-CT418Iph.js → smalltalk-BFPyGpl7.js} +0 -0
- /package/dist/assets/{solr-CDPrSrj5.js → solr-BCnpA4mK.js} +0 -0
- /package/dist/assets/{sparql-BlJ_cLEt.js → sparql-BMyoR-t0.js} +0 -0
- /package/dist/assets/{spreadsheet-BsJYzkOI.js → spreadsheet-C39QEIvH.js} +0 -0
- /package/dist/assets/{sql-F2Gt8FSJ.js → sql-CE9Btgz4.js} +0 -0
- /package/dist/assets/{stylus-92qIiGm1.js → stylus-BbMWgEUg.js} +0 -0
- /package/dist/assets/{swift-gZzicbJu.js → swift-BCakwsWN.js} +0 -0
- /package/dist/assets/{swiper-component-LOm8fzBm.js → swiper-component-DpFUDvyR.js} +0 -0
- /package/dist/assets/{tcl-CtgoBYkk.js → tcl-Dupz7YXC.js} +0 -0
- /package/dist/assets/{terminal-Bo6pnmSU.js → terminal-RAduwztq.js} +0 -0
- /package/dist/assets/{textile-Du3RzJ2D.js → textile-CMQNVB0J.js} +0 -0
- /package/dist/assets/{tiddlywiki-BiVbsin5.js → tiddlywiki-CIp8hgce.js} +0 -0
- /package/dist/assets/{tiki-BjQr6gnj.js → tiki-C22wqq7_.js} +0 -0
- /package/dist/assets/{toml-HcF44TVB.js → toml-CDlujHqn.js} +0 -0
- /package/dist/assets/{troff-xbwT4huN.js → troff-Dxr_rPl0.js} +0 -0
- /package/dist/assets/{ttcn-cfg-jWDg1i50.js → ttcn-cfg-_MoagO29.js} +0 -0
- /package/dist/assets/{ttcn-phKysj_0.js → ttcn-iRE0hZ1i.js} +0 -0
- /package/dist/assets/{turtle-CPC48wcy.js → turtle-C00vzWJK.js} +0 -0
- /package/dist/assets/{types-C7hjolXC.js → types-l38AsXoI.js} +0 -0
- /package/dist/assets/{useInterval-CTStcSBb.js → useInterval-WeprorQN.js} +0 -0
- /package/dist/assets/{vb-BTubZ2rB.js → vb-CkVClY4-.js} +0 -0
- /package/dist/assets/{vbscript-B52mDFWM.js → vbscript-BAyqwxih.js} +0 -0
- /package/dist/assets/{velocity-BO3M1iFD.js → velocity-DizPkX9R.js} +0 -0
- /package/dist/assets/{verilog-CBz90JJu.js → verilog-BHLL_Z-1.js} +0 -0
- /package/dist/assets/{vhdl-CeQ1lGlV.js → vhdl-kw8S8KSM.js} +0 -0
- /package/dist/assets/{web-vitals-BaWpTOd5.js → web-vitals-DEQqQ7mh.js} +0 -0
- /package/dist/assets/{webidl-CRtF5pmu.js → webidl-BArrMnhe.js} +0 -0
- /package/dist/assets/{ws-CNqquaud.js → ws-B3l5rS71.js} +0 -0
- /package/dist/assets/{xquery-CFnbrHav.js → xquery-BVt_izxN.js} +0 -0
- /package/dist/assets/{yacas-KIC_JO6M.js → yacas-BFgb66eo.js} +0 -0
- /package/dist/assets/{z80-kGpw5_me.js → z80-CLywz-dK.js} +0 -0
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
CurlyBracesIcon,
|
|
8
8
|
HashIcon,
|
|
9
9
|
type LucideIcon,
|
|
10
|
+
MapPinIcon,
|
|
10
11
|
ToggleLeftIcon,
|
|
11
12
|
TypeIcon,
|
|
12
13
|
} from "lucide-react";
|
|
@@ -27,6 +28,7 @@ export const DATA_TYPE_ICON: Record<DataType | SelectableDataType, LucideIcon> =
|
|
|
27
28
|
number: HashIcon,
|
|
28
29
|
string: TypeIcon,
|
|
29
30
|
integer: HashIcon,
|
|
31
|
+
geometry: MapPinIcon,
|
|
30
32
|
unknown: CurlyBracesIcon,
|
|
31
33
|
};
|
|
32
34
|
|
|
@@ -56,6 +58,8 @@ export function getDataTypeColor(
|
|
|
56
58
|
return "bg-(--purple-4)";
|
|
57
59
|
case "string":
|
|
58
60
|
return "bg-(--blue-4)";
|
|
61
|
+
case "geometry":
|
|
62
|
+
return "bg-(--cyan-4) dark:bg-(--cyan-5)";
|
|
59
63
|
case "unknown":
|
|
60
64
|
return "bg-(--slate-4) dark:bg-(--slate-6)";
|
|
61
65
|
default:
|
|
@@ -12,7 +12,7 @@ describe("ColumnName", () => {
|
|
|
12
12
|
|
|
13
13
|
try {
|
|
14
14
|
const unrecognized = render(
|
|
15
|
-
<ColumnName columnName="geom" dataType={"
|
|
15
|
+
<ColumnName columnName="geom" dataType={"bogus_type" as DataType} />,
|
|
16
16
|
);
|
|
17
17
|
const unknown = render(
|
|
18
18
|
<ColumnName columnName="geom" dataType="unknown" />,
|
|
@@ -26,4 +26,17 @@ describe("ColumnName", () => {
|
|
|
26
26
|
warn.mockRestore();
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
|
+
|
|
30
|
+
it("renders geometry with a distinct icon", () => {
|
|
31
|
+
const geometry = render(
|
|
32
|
+
<ColumnName columnName="geom" dataType="geometry" />,
|
|
33
|
+
);
|
|
34
|
+
const unknown = render(<ColumnName columnName="geom" dataType="unknown" />);
|
|
35
|
+
|
|
36
|
+
expect(geometry.container.querySelector(".lucide-map-pin")).not.toBeNull();
|
|
37
|
+
expect(unknown.container.querySelector(".lucide-braces")).not.toBeNull();
|
|
38
|
+
expect(geometry.container.innerHTML).not.toEqual(
|
|
39
|
+
unknown.container.innerHTML,
|
|
40
|
+
);
|
|
41
|
+
});
|
|
29
42
|
});
|
|
@@ -21,15 +21,11 @@ import { cellIdsAtom, useCellActions } from "@/core/cells/cells";
|
|
|
21
21
|
import { useLastFocusedCellId } from "@/core/cells/focus";
|
|
22
22
|
import { autoInstantiateAtom } from "@/core/config/config";
|
|
23
23
|
import {
|
|
24
|
-
|
|
24
|
+
connectionsAtom,
|
|
25
25
|
type SQLTableContext,
|
|
26
26
|
useDataSourceActions,
|
|
27
27
|
} from "@/core/datasets/data-source-connections";
|
|
28
|
-
import {
|
|
29
|
-
DEFAULT_DUCKDB_DATABASE,
|
|
30
|
-
DUCKDB_ENGINE,
|
|
31
|
-
INTERNAL_SQL_ENGINES,
|
|
32
|
-
} from "@/core/datasets/engines";
|
|
28
|
+
import { DUCKDB_ENGINE } from "@/core/datasets/engines";
|
|
33
29
|
import {
|
|
34
30
|
PreviewSQLSchemaList,
|
|
35
31
|
PreviewSQLTable,
|
|
@@ -224,40 +220,6 @@ export function filterEmptyDatabases(databases: Database[]): Database[] {
|
|
|
224
220
|
return changed ? result : databases;
|
|
225
221
|
}
|
|
226
222
|
|
|
227
|
-
/**
|
|
228
|
-
* This atom is used to get the data connections that are available to the user.
|
|
229
|
-
* It filters out the internal engines if it has no databases or if it has only the in-memory database and no schemas.
|
|
230
|
-
*/
|
|
231
|
-
export const connectionsAtom = atom((get) => {
|
|
232
|
-
const dataConnections = new Map(get(dataConnectionsMapAtom));
|
|
233
|
-
|
|
234
|
-
// Filter out the internal engines if it has no databases
|
|
235
|
-
// Or if it has only the in-memory database and no schemas
|
|
236
|
-
for (const engine of INTERNAL_SQL_ENGINES) {
|
|
237
|
-
const connection = dataConnections.get(engine);
|
|
238
|
-
if (!connection) {
|
|
239
|
-
continue;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
if (connection.databases.length === 0) {
|
|
243
|
-
dataConnections.delete(engine);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
if (
|
|
247
|
-
connection.databases.length === 1 &&
|
|
248
|
-
connection.databases[0].name === DEFAULT_DUCKDB_DATABASE &&
|
|
249
|
-
connection.databases[0].schemas.length === 0
|
|
250
|
-
) {
|
|
251
|
-
dataConnections.delete(engine);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
// Put internal engines last to prioritize user-defined connections
|
|
256
|
-
return sortBy([...dataConnections.values()], (connection) =>
|
|
257
|
-
INTERNAL_SQL_ENGINES.has(connection.name) ? 1 : 0,
|
|
258
|
-
);
|
|
259
|
-
});
|
|
260
|
-
|
|
261
223
|
export const DataSources: React.FC = () => {
|
|
262
224
|
const [searchValue, setSearchValue] = React.useState<string>("");
|
|
263
225
|
const [hideEmpty, setHideEmpty] = useAtom(hideEmptyDatasourcesAtom);
|
|
@@ -8,6 +8,9 @@ import {
|
|
|
8
8
|
} from "@/components/ui/accordion";
|
|
9
9
|
import { Badge } from "@/components/ui/badge";
|
|
10
10
|
import { cn } from "@/utils/cn";
|
|
11
|
+
import { SparklesIcon } from "lucide-react";
|
|
12
|
+
import { Tooltip } from "@/components/ui/tooltip";
|
|
13
|
+
import type { DataSourceDiscoveryGroup } from "@/core/datasets/data-source-discovery";
|
|
11
14
|
|
|
12
15
|
/**
|
|
13
16
|
* Styled AccordionItem for sidebar panels.
|
|
@@ -80,9 +83,41 @@ const PanelBadge = ({
|
|
|
80
83
|
);
|
|
81
84
|
PanelBadge.displayName = "PanelBadge";
|
|
82
85
|
|
|
86
|
+
const DiscoveredSourcesBadge = ({
|
|
87
|
+
count,
|
|
88
|
+
type,
|
|
89
|
+
}: {
|
|
90
|
+
count: number;
|
|
91
|
+
type: DataSourceDiscoveryGroup;
|
|
92
|
+
}) => {
|
|
93
|
+
if (count === 0) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
let noun: string;
|
|
98
|
+
if (type === "database") {
|
|
99
|
+
noun = count === 1 ? "database" : "databases";
|
|
100
|
+
} else {
|
|
101
|
+
noun = count === 1 ? "remote storage" : "remote storages";
|
|
102
|
+
}
|
|
103
|
+
const content = `${count} ${noun} detected in your environment, ready to quick-add`;
|
|
104
|
+
|
|
105
|
+
return (
|
|
106
|
+
<Tooltip content={content}>
|
|
107
|
+
<span>
|
|
108
|
+
<PanelBadge className="gap-0.5 border-(--blue-6) bg-(--blue-3) text-(--blue-11)">
|
|
109
|
+
<SparklesIcon className="h-2.5 w-2.5" />
|
|
110
|
+
{count}
|
|
111
|
+
</PanelBadge>
|
|
112
|
+
</span>
|
|
113
|
+
</Tooltip>
|
|
114
|
+
);
|
|
115
|
+
};
|
|
116
|
+
|
|
83
117
|
export {
|
|
84
118
|
PanelAccordionItem,
|
|
85
119
|
PanelAccordionTrigger,
|
|
86
120
|
PanelAccordionContent,
|
|
87
121
|
PanelBadge,
|
|
122
|
+
DiscoveredSourcesBadge,
|
|
88
123
|
};
|
|
@@ -7,11 +7,13 @@ import useResizeObserver from "use-resize-observer";
|
|
|
7
7
|
import { StorageInspector } from "@/components/storage/storage-inspector";
|
|
8
8
|
import { Accordion } from "@/components/ui/accordion";
|
|
9
9
|
import { storageNamespacesAtom } from "@/core/storage/state";
|
|
10
|
+
import { useDetectedDataSources } from "@/hooks/useDataSourceDiscovery";
|
|
10
11
|
import { cn } from "@/utils/cn";
|
|
11
12
|
import { TreeDndProvider } from "../../file-tree/dnd-wrapper";
|
|
12
13
|
import { FileExplorer } from "../../file-tree/file-explorer";
|
|
13
14
|
import { useFileExplorerUpload } from "../../file-tree/upload";
|
|
14
15
|
import {
|
|
16
|
+
DiscoveredSourcesBadge,
|
|
15
17
|
PanelAccordionContent,
|
|
16
18
|
PanelAccordionItem,
|
|
17
19
|
PanelAccordionTrigger,
|
|
@@ -58,6 +60,7 @@ const FileExplorerPanel: React.FC = () => {
|
|
|
58
60
|
|
|
59
61
|
const storageNamespaces = useAtomValue(storageNamespacesAtom);
|
|
60
62
|
const remoteStorageConnections = storageNamespaces.length;
|
|
63
|
+
const pendingDataSources = useDetectedDataSources("storage");
|
|
61
64
|
|
|
62
65
|
const openSections = useMemo<FileExplorerPanelSection[]>(() => {
|
|
63
66
|
if (!state.hasUserInteracted && remoteStorageConnections > 0) {
|
|
@@ -81,6 +84,7 @@ const FileExplorerPanel: React.FC = () => {
|
|
|
81
84
|
|
|
82
85
|
const availableContent = panelHeight - TRIGGER_HEIGHT * 2;
|
|
83
86
|
const storageIsOpen = openSections.includes("remote-storage");
|
|
87
|
+
const showDiscoveredStorageBadge = pendingDataSources.length > 0;
|
|
84
88
|
const bothOpen = storageIsOpen && openSections.includes("files");
|
|
85
89
|
|
|
86
90
|
const storageMaxHeight = bothOpen
|
|
@@ -104,6 +108,12 @@ const FileExplorerPanel: React.FC = () => {
|
|
|
104
108
|
{remoteStorageConnections > 0 && (
|
|
105
109
|
<PanelBadge>{remoteStorageConnections}</PanelBadge>
|
|
106
110
|
)}
|
|
111
|
+
{showDiscoveredStorageBadge && (
|
|
112
|
+
<DiscoveredSourcesBadge
|
|
113
|
+
count={pendingDataSources.length}
|
|
114
|
+
type="storage"
|
|
115
|
+
/>
|
|
116
|
+
)}
|
|
107
117
|
</PanelAccordionTrigger>
|
|
108
118
|
<PanelAccordionContent
|
|
109
119
|
className="overflow-auto"
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import { useAtom, useAtomValue } from "jotai";
|
|
4
4
|
import { DatabaseIcon, VariableIcon } from "lucide-react";
|
|
5
5
|
import React, { useCallback } from "react";
|
|
6
|
-
import {
|
|
7
|
-
connectionsAtom,
|
|
8
|
-
DataSources,
|
|
9
|
-
} from "@/components/datasources/datasources";
|
|
6
|
+
import { DataSources } from "@/components/datasources/datasources";
|
|
10
7
|
import { Accordion } from "@/components/ui/accordion";
|
|
11
8
|
import { VariableTable } from "@/components/variables/variables-table";
|
|
12
9
|
import { useCellIds } from "@/core/cells/cells";
|
|
10
|
+
import { connectionsAtom } from "@/core/datasets/data-source-connections";
|
|
13
11
|
import { datasetTablesAtom } from "@/core/datasets/state";
|
|
14
12
|
import { useVariables } from "@/core/variables/state";
|
|
13
|
+
import { useDetectedDataSources } from "@/hooks/useDataSourceDiscovery";
|
|
15
14
|
import {
|
|
15
|
+
DiscoveredSourcesBadge,
|
|
16
16
|
PanelAccordionContent,
|
|
17
17
|
PanelAccordionItem,
|
|
18
18
|
PanelAccordionTrigger,
|
|
@@ -28,6 +28,7 @@ const SessionPanel: React.FC = () => {
|
|
|
28
28
|
const cellIds = useCellIds();
|
|
29
29
|
const tables = useAtomValue(datasetTablesAtom);
|
|
30
30
|
const dataConnections = useAtomValue(connectionsAtom);
|
|
31
|
+
const pendingDataSources = useDetectedDataSources("database");
|
|
31
32
|
const [state, setState] = useAtom(sessionPanelAtom);
|
|
32
33
|
|
|
33
34
|
const datasourcesCount = tables.length + dataConnections.length;
|
|
@@ -50,6 +51,7 @@ const SessionPanel: React.FC = () => {
|
|
|
50
51
|
|
|
51
52
|
const isDatasourcesOpen = openSections.includes("datasources");
|
|
52
53
|
const showDatasourcesBadge = !isDatasourcesOpen && datasourcesCount > 0;
|
|
54
|
+
const showDiscoveredDataSourcesBadge = pendingDataSources.length > 0;
|
|
53
55
|
|
|
54
56
|
return (
|
|
55
57
|
<Accordion
|
|
@@ -63,6 +65,12 @@ const SessionPanel: React.FC = () => {
|
|
|
63
65
|
<DatabaseIcon className="w-4 h-4" />
|
|
64
66
|
Data sources
|
|
65
67
|
{showDatasourcesBadge && <PanelBadge>{datasourcesCount}</PanelBadge>}
|
|
68
|
+
{showDiscoveredDataSourcesBadge && (
|
|
69
|
+
<DiscoveredSourcesBadge
|
|
70
|
+
count={pendingDataSources.length}
|
|
71
|
+
type="database"
|
|
72
|
+
/>
|
|
73
|
+
)}
|
|
66
74
|
</PanelAccordionTrigger>
|
|
67
75
|
<PanelAccordionContent>
|
|
68
76
|
<DataSources />
|
|
@@ -28,6 +28,7 @@ const sources: DetectedDataSource[] = [
|
|
|
28
28
|
},
|
|
29
29
|
],
|
|
30
30
|
code: "engine = create_engine()",
|
|
31
|
+
hidesWhen: { kind: "dialect", substrings: ["postgres"] },
|
|
31
32
|
},
|
|
32
33
|
{
|
|
33
34
|
id: "pyiceberg-prod",
|
|
@@ -52,6 +53,7 @@ const sources: DetectedDataSource[] = [
|
|
|
52
53
|
},
|
|
53
54
|
],
|
|
54
55
|
code: 'catalog = load_catalog("prod")',
|
|
56
|
+
hidesWhen: { kind: "dialect", substrings: ["iceberg"] },
|
|
55
57
|
},
|
|
56
58
|
];
|
|
57
59
|
|
|
@@ -87,7 +87,11 @@ export const AddConnectionDialogContent: React.FC<{
|
|
|
87
87
|
<span className="block">{codeSnippetHint}</span>
|
|
88
88
|
</DialogDescription>
|
|
89
89
|
</DialogHeader>
|
|
90
|
-
<AutoDiscoveredDataSources
|
|
90
|
+
<AutoDiscoveredDataSources
|
|
91
|
+
onSubmit={onClose}
|
|
92
|
+
className="-mt-2"
|
|
93
|
+
group={activeTab === "storage" ? "storage" : "database"}
|
|
94
|
+
/>
|
|
91
95
|
<Tabs
|
|
92
96
|
value={activeTab}
|
|
93
97
|
onValueChange={(v) => setActiveTab(v as ConnectionTab)}
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { PlusIcon, SparklesIcon } from "lucide-react";
|
|
4
4
|
import { Tooltip, TooltipProvider } from "@/components/ui/tooltip";
|
|
5
|
-
import type {
|
|
6
|
-
|
|
5
|
+
import type {
|
|
6
|
+
DataSourceDiscoveryGroup,
|
|
7
|
+
DetectedDataSource,
|
|
8
|
+
} from "@/core/datasets/data-source-discovery";
|
|
9
|
+
import { useDetectedDataSources } from "@/hooks/useDataSourceDiscovery";
|
|
7
10
|
import { useInsertCode } from "./components";
|
|
8
11
|
import { cn } from "@/utils/cn";
|
|
9
12
|
|
|
@@ -94,19 +97,20 @@ const DetectedDataSourceDetails: React.FC<{
|
|
|
94
97
|
);
|
|
95
98
|
|
|
96
99
|
export const AutoDiscoveredDataSources: React.FC<{
|
|
97
|
-
onSubmit
|
|
100
|
+
onSubmit?: () => void;
|
|
98
101
|
className?: string;
|
|
99
|
-
|
|
102
|
+
group?: DataSourceDiscoveryGroup;
|
|
103
|
+
}> = ({ onSubmit, className, group }) => {
|
|
100
104
|
const insertCode = useInsertCode();
|
|
101
|
-
const
|
|
105
|
+
const sources = useDetectedDataSources(group);
|
|
102
106
|
|
|
103
107
|
return (
|
|
104
108
|
<QuickAddDataSources
|
|
105
109
|
className={className}
|
|
106
|
-
sources={
|
|
110
|
+
sources={sources}
|
|
107
111
|
onAdd={(source) => {
|
|
108
112
|
insertCode(source.code);
|
|
109
|
-
onSubmit();
|
|
113
|
+
onSubmit?.();
|
|
110
114
|
}}
|
|
111
115
|
/>
|
|
112
116
|
);
|
package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap
CHANGED
|
@@ -117,6 +117,49 @@ exports[`generateStorageCode > GCS > without service account key (default creden
|
|
|
117
117
|
store = GCSStore("my-bucket")"
|
|
118
118
|
`;
|
|
119
119
|
|
|
120
|
+
exports[`generateStorageCode > GitHub > public repo 1`] = `
|
|
121
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
122
|
+
|
|
123
|
+
fs = GithubFileSystem(
|
|
124
|
+
org="marimo-team",
|
|
125
|
+
repo="marimo",
|
|
126
|
+
)"
|
|
127
|
+
`;
|
|
128
|
+
|
|
129
|
+
exports[`generateStorageCode > GitHub > with sha 1`] = `
|
|
130
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
131
|
+
|
|
132
|
+
fs = GithubFileSystem(
|
|
133
|
+
org="marimo-team",
|
|
134
|
+
repo="marimo",
|
|
135
|
+
sha="main",
|
|
136
|
+
)"
|
|
137
|
+
`;
|
|
138
|
+
|
|
139
|
+
exports[`generateStorageCode > GitHub > with username and token 1`] = `
|
|
140
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
141
|
+
|
|
142
|
+
fs = GithubFileSystem(
|
|
143
|
+
org="marimo-team",
|
|
144
|
+
repo="marimo",
|
|
145
|
+
username="octocat",
|
|
146
|
+
token="ghp_example",
|
|
147
|
+
)"
|
|
148
|
+
`;
|
|
149
|
+
|
|
150
|
+
exports[`generateStorageCode > GitHub > with username and token from secrets 1`] = `
|
|
151
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
152
|
+
import os
|
|
153
|
+
|
|
154
|
+
_token = os.environ.get("GITHUB_TOKEN")
|
|
155
|
+
fs = GithubFileSystem(
|
|
156
|
+
org="marimo-team",
|
|
157
|
+
repo="marimo",
|
|
158
|
+
username="octocat",
|
|
159
|
+
token=_token,
|
|
160
|
+
)"
|
|
161
|
+
`;
|
|
162
|
+
|
|
120
163
|
exports[`generateStorageCode > Google Drive > with default auth (no credentials) 1`] = `
|
|
121
164
|
"from gdrive_fsspec import GoogleDriveFileSystem
|
|
122
165
|
|
|
@@ -329,6 +329,83 @@ describe("generateStorageCode", () => {
|
|
|
329
329
|
});
|
|
330
330
|
});
|
|
331
331
|
|
|
332
|
+
describe("GitHub", () => {
|
|
333
|
+
it("public repo", () => {
|
|
334
|
+
expect(
|
|
335
|
+
generateStorageCode(
|
|
336
|
+
{ type: "github", org: "marimo-team", repo: "marimo" },
|
|
337
|
+
{ library: "fsspec" },
|
|
338
|
+
),
|
|
339
|
+
).toMatchSnapshot();
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
it("with sha", () => {
|
|
343
|
+
expect(
|
|
344
|
+
generateStorageCode(
|
|
345
|
+
{
|
|
346
|
+
type: "github",
|
|
347
|
+
org: "marimo-team",
|
|
348
|
+
repo: "marimo",
|
|
349
|
+
sha: "main",
|
|
350
|
+
},
|
|
351
|
+
{ library: "fsspec" },
|
|
352
|
+
),
|
|
353
|
+
).toMatchSnapshot();
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
it("escapes quotes and backslashes in sha", () => {
|
|
357
|
+
expect(
|
|
358
|
+
generateStorageCode(
|
|
359
|
+
{
|
|
360
|
+
type: "github",
|
|
361
|
+
org: "marimo-team",
|
|
362
|
+
repo: "marimo",
|
|
363
|
+
sha: 'feature/\\"new"',
|
|
364
|
+
},
|
|
365
|
+
{ library: "fsspec" },
|
|
366
|
+
),
|
|
367
|
+
).toMatchInlineSnapshot(`
|
|
368
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
369
|
+
|
|
370
|
+
fs = GithubFileSystem(
|
|
371
|
+
org="marimo-team",
|
|
372
|
+
repo="marimo",
|
|
373
|
+
sha="feature/\\\\\\"new\\"",
|
|
374
|
+
)"
|
|
375
|
+
`);
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
it("with username and token", () => {
|
|
379
|
+
expect(
|
|
380
|
+
generateStorageCode(
|
|
381
|
+
{
|
|
382
|
+
type: "github",
|
|
383
|
+
org: "marimo-team",
|
|
384
|
+
repo: "marimo",
|
|
385
|
+
username: "octocat",
|
|
386
|
+
token: "ghp_example",
|
|
387
|
+
},
|
|
388
|
+
{ library: "fsspec" },
|
|
389
|
+
),
|
|
390
|
+
).toMatchSnapshot();
|
|
391
|
+
});
|
|
392
|
+
|
|
393
|
+
it("with username and token from secrets", () => {
|
|
394
|
+
expect(
|
|
395
|
+
generateStorageCode(
|
|
396
|
+
{
|
|
397
|
+
type: "github",
|
|
398
|
+
org: "marimo-team",
|
|
399
|
+
repo: "marimo",
|
|
400
|
+
username: "octocat",
|
|
401
|
+
token: prefixSecret("GITHUB_TOKEN"),
|
|
402
|
+
},
|
|
403
|
+
{ library: "fsspec" },
|
|
404
|
+
),
|
|
405
|
+
).toMatchSnapshot();
|
|
406
|
+
});
|
|
407
|
+
});
|
|
408
|
+
|
|
332
409
|
describe("invalid cases", () => {
|
|
333
410
|
it("throws for empty S3 bucket", () => {
|
|
334
411
|
expect(() =>
|
|
@@ -397,5 +474,55 @@ describe("generateStorageCode", () => {
|
|
|
397
474
|
),
|
|
398
475
|
).toThrow();
|
|
399
476
|
});
|
|
477
|
+
|
|
478
|
+
it("throws for empty GitHub org", () => {
|
|
479
|
+
expect(() =>
|
|
480
|
+
generateStorageCode(
|
|
481
|
+
{ type: "github", org: "", repo: "marimo" } as StorageConnection,
|
|
482
|
+
{ library: "fsspec" },
|
|
483
|
+
),
|
|
484
|
+
).toThrow();
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
it("throws for empty GitHub repo", () => {
|
|
488
|
+
expect(() =>
|
|
489
|
+
generateStorageCode(
|
|
490
|
+
{
|
|
491
|
+
type: "github",
|
|
492
|
+
org: "marimo-team",
|
|
493
|
+
repo: "",
|
|
494
|
+
} as StorageConnection,
|
|
495
|
+
{ library: "fsspec" },
|
|
496
|
+
),
|
|
497
|
+
).toThrow();
|
|
498
|
+
});
|
|
499
|
+
|
|
500
|
+
it("throws when GitHub username is set without token", () => {
|
|
501
|
+
expect(() =>
|
|
502
|
+
generateStorageCode(
|
|
503
|
+
{
|
|
504
|
+
type: "github",
|
|
505
|
+
org: "marimo-team",
|
|
506
|
+
repo: "marimo",
|
|
507
|
+
username: "octocat",
|
|
508
|
+
},
|
|
509
|
+
{ library: "fsspec" },
|
|
510
|
+
),
|
|
511
|
+
).toThrow();
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
it("throws when GitHub token is set without username", () => {
|
|
515
|
+
expect(() =>
|
|
516
|
+
generateStorageCode(
|
|
517
|
+
{
|
|
518
|
+
type: "github",
|
|
519
|
+
org: "marimo-team",
|
|
520
|
+
repo: "marimo",
|
|
521
|
+
token: "ghp_example",
|
|
522
|
+
},
|
|
523
|
+
{ library: "fsspec" },
|
|
524
|
+
),
|
|
525
|
+
).toThrow();
|
|
526
|
+
});
|
|
400
527
|
});
|
|
401
528
|
});
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
AzureStorageSchema,
|
|
17
17
|
CoreWeaveStorageSchema,
|
|
18
18
|
GCSStorageSchema,
|
|
19
|
+
GithubStorageSchema,
|
|
19
20
|
GoogleDriveStorageSchema,
|
|
20
21
|
HuggingfaceStorageSchema,
|
|
21
22
|
S3StorageSchema,
|
|
@@ -89,6 +90,15 @@ const STORAGE_PROVIDERS = [
|
|
|
89
90
|
preferred: "huggingface_hub",
|
|
90
91
|
},
|
|
91
92
|
},
|
|
93
|
+
{
|
|
94
|
+
name: "GitHub",
|
|
95
|
+
schema: GithubStorageSchema,
|
|
96
|
+
protocol: "github",
|
|
97
|
+
storageLibraries: {
|
|
98
|
+
libraries: ["fsspec"],
|
|
99
|
+
preferred: "fsspec",
|
|
100
|
+
},
|
|
101
|
+
},
|
|
92
102
|
] satisfies StorageProviderSchema[];
|
|
93
103
|
|
|
94
104
|
const StorageProviderSelector: React.FC<{
|
|
@@ -105,7 +115,7 @@ const StorageProviderSelector: React.FC<{
|
|
|
105
115
|
<ProtocolIcon
|
|
106
116
|
protocol={protocol as KnownStorageProtocol}
|
|
107
117
|
forceDark={true}
|
|
108
|
-
className="w-7.5 h-7.5"
|
|
118
|
+
className="w-7.5 h-7.5 text-white"
|
|
109
119
|
/>
|
|
110
120
|
}
|
|
111
121
|
onSelect={() => onSelect(schema)}
|
|
@@ -43,7 +43,7 @@ class SecretContainer {
|
|
|
43
43
|
this.secrets[privateVar] = `os.environ.get("${envVar}")`;
|
|
44
44
|
return privateVar;
|
|
45
45
|
}
|
|
46
|
-
return `"${value}"`;
|
|
46
|
+
return `"${escapePythonString(value)}"`;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
formatSecrets(): string {
|
|
@@ -260,6 +260,32 @@ function generateHuggingfaceCode(
|
|
|
260
260
|
return { imports, code: `hf = HfApi(token=${token})` };
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
+
function generateGithubCode(
|
|
264
|
+
connection: Extract<StorageConnection, { type: "github" }>,
|
|
265
|
+
secrets: SecretContainer,
|
|
266
|
+
): { imports: Set<string>; code: string } {
|
|
267
|
+
const imports = new Set([
|
|
268
|
+
"from fsspec.implementations.github import GithubFileSystem",
|
|
269
|
+
]);
|
|
270
|
+
const params: string[] = [
|
|
271
|
+
`org=${secrets.print("org", connection.org)},`,
|
|
272
|
+
`repo=${secrets.print("repo", connection.repo)},`,
|
|
273
|
+
];
|
|
274
|
+
|
|
275
|
+
if (connection.sha) {
|
|
276
|
+
params.push(`sha=${secrets.print("sha", connection.sha)},`);
|
|
277
|
+
}
|
|
278
|
+
if (connection.username && connection.token) {
|
|
279
|
+
params.push(
|
|
280
|
+
`username=${secrets.print("username", connection.username)},`,
|
|
281
|
+
`token=${secrets.print("token", connection.token)},`,
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
const paramsStr = params.map((param) => ` ${param}`).join("\n");
|
|
286
|
+
return { imports, code: `fs = GithubFileSystem(\n${paramsStr}\n)` };
|
|
287
|
+
}
|
|
288
|
+
|
|
263
289
|
export function generateStorageCode(
|
|
264
290
|
connection: StorageConnection,
|
|
265
291
|
options: StorageCodeOptions,
|
|
@@ -291,6 +317,9 @@ export function generateStorageCode(
|
|
|
291
317
|
case "huggingface":
|
|
292
318
|
result = generateHuggingfaceCode(connection, secrets);
|
|
293
319
|
break;
|
|
320
|
+
case "github":
|
|
321
|
+
result = generateGithubCode(connection, secrets);
|
|
322
|
+
break;
|
|
294
323
|
default:
|
|
295
324
|
assertNever(connection);
|
|
296
325
|
}
|
|
@@ -238,6 +238,68 @@ export const HuggingfaceStorageSchema = z
|
|
|
238
238
|
})
|
|
239
239
|
.describe(FieldOptions.of({ direction: "two-columns" }));
|
|
240
240
|
|
|
241
|
+
function isFilled(value: string | undefined): boolean {
|
|
242
|
+
return value != null && value !== "";
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export const GithubStorageSchema = z
|
|
246
|
+
.object({
|
|
247
|
+
type: z.literal("github"),
|
|
248
|
+
org: z
|
|
249
|
+
.string()
|
|
250
|
+
.nonempty()
|
|
251
|
+
.describe(
|
|
252
|
+
FieldOptions.of({
|
|
253
|
+
label: "Organization or user",
|
|
254
|
+
}),
|
|
255
|
+
),
|
|
256
|
+
repo: z
|
|
257
|
+
.string()
|
|
258
|
+
.nonempty()
|
|
259
|
+
.describe(
|
|
260
|
+
FieldOptions.of({
|
|
261
|
+
label: "Repository",
|
|
262
|
+
}),
|
|
263
|
+
),
|
|
264
|
+
sha: z
|
|
265
|
+
.string()
|
|
266
|
+
.optional()
|
|
267
|
+
.describe(
|
|
268
|
+
FieldOptions.of({
|
|
269
|
+
label: "Branch, tag, or commit",
|
|
270
|
+
placeholder: "main",
|
|
271
|
+
description: "Leave empty to use the default branch",
|
|
272
|
+
}),
|
|
273
|
+
),
|
|
274
|
+
username: z
|
|
275
|
+
.string()
|
|
276
|
+
.optional()
|
|
277
|
+
.describe(
|
|
278
|
+
FieldOptions.of({
|
|
279
|
+
label: "Username",
|
|
280
|
+
description: "Set this together with access token",
|
|
281
|
+
optionRegex: "(github.?username|github.?user)",
|
|
282
|
+
}),
|
|
283
|
+
),
|
|
284
|
+
token: z
|
|
285
|
+
.string()
|
|
286
|
+
.optional()
|
|
287
|
+
.describe(
|
|
288
|
+
FieldOptions.of({
|
|
289
|
+
label: "Access Token",
|
|
290
|
+
description:
|
|
291
|
+
"Set this together with username. Required for private repos and to avoid GitHub's rate limits.",
|
|
292
|
+
inputType: "password",
|
|
293
|
+
optionRegex: "(github.?token|gh.?token|github.?pat)",
|
|
294
|
+
}),
|
|
295
|
+
),
|
|
296
|
+
})
|
|
297
|
+
.refine((value) => isFilled(value.username) === isFilled(value.token), {
|
|
298
|
+
message: "Username and access token are required together",
|
|
299
|
+
path: ["token"],
|
|
300
|
+
})
|
|
301
|
+
.describe(FieldOptions.of({ direction: "two-columns" }));
|
|
302
|
+
|
|
241
303
|
export const StorageConnectionSchema = z.discriminatedUnion("type", [
|
|
242
304
|
S3StorageSchema,
|
|
243
305
|
GCSStorageSchema,
|
|
@@ -245,6 +307,7 @@ export const StorageConnectionSchema = z.discriminatedUnion("type", [
|
|
|
245
307
|
CoreWeaveStorageSchema,
|
|
246
308
|
GoogleDriveStorageSchema,
|
|
247
309
|
HuggingfaceStorageSchema,
|
|
310
|
+
GithubStorageSchema,
|
|
248
311
|
]);
|
|
249
312
|
|
|
250
313
|
export type StorageConnection = z.infer<typeof StorageConnectionSchema>;
|