@marimo-team/frontend 0.20.5-dev4 → 0.20.5-dev41
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-DRjSVmK4.js → CellStatus-rawm41sF.js} +1 -1
- package/dist/assets/{Combination-tjZP3FH6.js → Combination-lAuBMOg4.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-BmYLGaEV.js → ConnectedDataExplorerComponent-BmrDShEI.js} +1 -1
- package/dist/assets/{DeferredRequestRegistry-CMZsNx4R.js → DeferredRequestRegistry-TekxUirp.js} +1 -1
- package/dist/assets/{ErrorBoundary-dVj6GVNE.js → ErrorBoundary-BfF3Lb5I.js} +1 -1
- package/dist/assets/{ImperativeModal-CRNJOvqT.js → ImperativeModal-BvRpI5NU.js} +1 -1
- package/dist/assets/{JsonOutput-GlMQ3aLA.js → JsonOutput-D8vxudTc.js} +11 -11
- package/dist/assets/{LazyAnyLanguageCodeMirror-BdX_Y5NA.js → LazyAnyLanguageCodeMirror-BpSKccWW.js} +2 -2
- package/dist/assets/{MarimoErrorOutput-B0ZtYqUC.js → MarimoErrorOutput-ThxhEC9x.js} +1 -1
- package/dist/assets/{RenderHTML-qh-NzTWO.js → RenderHTML-Ci0Pb1aU.js} +1 -1
- package/dist/assets/{add-cell-with-ai--4VOMvH8.js → add-cell-with-ai-BO7kWP2P.js} +28 -26
- package/dist/assets/add-connection-dialog-C0_z2T_b.js +138 -0
- package/dist/assets/{agent-panel-BX_iKZeN.js → agent-panel-C-OkUkue.js} +15 -15
- package/dist/assets/ai-model-dropdown-DJoBltN-.js +5 -0
- package/dist/assets/{alert-dialog-DsNfSYaw.js → alert-dialog-CfirwkMl.js} +1 -1
- package/dist/assets/{any-language-editor-Drlg63ge.js → any-language-editor-C_73jLC-.js} +1 -1
- package/dist/assets/{app-config-button-bnipxY5L.js → app-config-button-Cw2wXNR2.js} +1 -1
- package/dist/assets/{architectureDiagram-VXUJARFQ-KOgWVxSC.js → architectureDiagram-VXUJARFQ-PitjPG8V.js} +1 -1
- package/dist/assets/{assertNever-Dw9aFN4h.js → assertNever-Dg4AnA3p.js} +1 -1
- package/dist/assets/{azure-Ddr1pZpW.js → azure-V83ZU8Sp.js} +1 -1
- package/dist/assets/{blockDiagram-VD42YOAC-DjazSe-Z.js → blockDiagram-VD42YOAC-BIJ4EhZR.js} +1 -1
- package/dist/assets/{button-BmOH9agK.js → button-BwamPDJi.js} +1 -1
- package/dist/assets/{c4Diagram-YG6GDRKO-CkwpyaIV.js → c4Diagram-YG6GDRKO-DM49Cvfe.js} +1 -1
- package/dist/assets/{cache-panel-DRhH4wqG.js → cache-panel-B4TWdLE9.js} +1 -1
- package/dist/assets/{capabilities-CeYo4YI0.js → capabilities-yFZOze7r.js} +1 -1
- package/dist/assets/{capitalize-irHJCpFh.js → capitalize-DeCS9UqV.js} +1 -1
- package/dist/assets/{cell-editor-B1x4zkBp.js → cell-editor-DFeqwbDq.js} +6 -6
- package/dist/assets/{cell-link-B59Kn5nL.js → cell-link-TWNu2IkO.js} +1 -1
- package/dist/assets/{cells-CCtxWKxf.js → cells-DJj8ja0V.js} +4 -4
- package/dist/assets/channel-DNdp-eCE.js +1 -0
- package/dist/assets/{chat-display-Co6iGNSx.js → chat-display-COL62Kpv.js} +1 -1
- package/dist/assets/{chat-panel-70sjqZuy.js → chat-panel-CxYclPR7.js} +1 -1
- package/dist/assets/{chunk-5FQGJX7Z-BJDu6jwt.js → chunk-5FQGJX7Z-Cyze_Wbx.js} +3 -3
- package/dist/assets/{chunk-ABZYJK2D-B4uBM2QW.js → chunk-ABZYJK2D-CIP2m5SK.js} +3 -3
- package/dist/assets/{chunk-ATLVNIR6-Du2yaFpm.js → chunk-ATLVNIR6-dCnEfemD.js} +1 -1
- package/dist/assets/{chunk-B4BG7PRW-CyuK4uRN.js → chunk-B4BG7PRW-sXSaKV4v.js} +1 -1
- package/dist/assets/{chunk-DI55MBZ5-BwWd5dH1.js → chunk-DI55MBZ5-DjV-ScSc.js} +1 -1
- package/dist/assets/{chunk-EXTU4WIE-KqUhNQvn.js → chunk-EXTU4WIE-PLvknOI8.js} +1 -1
- package/dist/assets/{chunk-JA3XYJ7Z-C-v9pa_-.js → chunk-JA3XYJ7Z-BM9i2UKq.js} +1 -1
- package/dist/assets/{chunk-JZLCHNYA-DNCs8LM0.js → chunk-JZLCHNYA-m6YUUy9x.js} +1 -1
- package/dist/assets/{chunk-N4CR4FBY-CT58_cui.js → chunk-N4CR4FBY-C1lKPnWl.js} +2 -2
- package/dist/assets/{chunk-QN33PNHL-BboxAxJa.js → chunk-QN33PNHL-Czx-c7tW.js} +1 -1
- package/dist/assets/{chunk-QXUST7PY-BlINr7uS.js → chunk-QXUST7PY-CcYtOR78.js} +1 -1
- package/dist/assets/{chunk-S3R3BYOJ-DI9xzpBm.js → chunk-S3R3BYOJ-JNQMgAH6.js} +1 -1
- package/dist/assets/{chunk-TZMSLE5B-C4sxb3v-.js → chunk-TZMSLE5B-C9T1sILA.js} +1 -1
- package/dist/assets/classDiagram-2ON5EDUG-BqtRsi1m.js +1 -0
- package/dist/assets/classDiagram-v2-WZHVMYZB-CVoqYiM8.js +1 -0
- package/dist/assets/{code-block-37QAKDTI-Cl0NTdrS.js → code-block-37QAKDTI-BeUkwW5f.js} +1 -1
- package/dist/assets/{column-preview-BhU5Ow0e.js → column-preview-CPJFpq_q.js} +1 -1
- package/dist/assets/command-DQqPawJf.js +1 -0
- package/dist/assets/command-palette-BM1QAZTW.js +1 -0
- package/dist/assets/{common-CKAiz8xx.js → common-Df9UcCs1.js} +1 -1
- package/dist/assets/components-CwZhf0Ag.js +1 -0
- package/dist/assets/{components-BZCdnYSp.js → components-D8LTuNe_.js} +1 -1
- package/dist/assets/{config-D9X9QKiL.js → config-BH98g9qk.js} +1 -1
- package/dist/assets/context-CRmPPhx9.js +1 -0
- package/dist/assets/context-aware-panel-Bs4Vepkp.js +3 -0
- package/dist/assets/{copy-DMCkK2TI.js → copy-ICN7wGy0.js} +1 -1
- package/dist/assets/{copy-icon-6RnnFDPt.js → copy-icon-DNppAsmd.js} +1 -1
- package/dist/assets/{createReducer-BcTiTw8T.js → createReducer-BrKCfm9t.js} +1 -1
- package/dist/assets/{dagre-6UL2VRFP-BrBSRtN5.js → dagre-6UL2VRFP-D-I1QR9s.js} +1 -1
- package/dist/assets/{data-grid-overlay-editor-NBBEPhQq.js → data-grid-overlay-editor-DXzdnLZF.js} +1 -1
- package/dist/assets/{datasource-B2Fl6iYU.js → datasource-MEu_GjcC.js} +1 -1
- package/dist/assets/{dates-CzBDvj6R.js → dates-BFWtdOCb.js} +1 -1
- package/dist/assets/{dependency-graph-panel-Dk4iQGft.js → dependency-graph-panel-DddysMUS.js} +1 -1
- package/dist/assets/{diagram-PSM6KHXK-DPC85L-O.js → diagram-PSM6KHXK-DcjdxOTC.js} +1 -1
- package/dist/assets/{diagram-QEK2KX5R-CRPLkmdi.js → diagram-QEK2KX5R-Dx1WtjkT.js} +1 -1
- package/dist/assets/{diagram-S2PKOQOG-Bsc6mZUW.js → diagram-S2PKOQOG-CXJzGs3_.js} +1 -1
- package/dist/assets/{dialog-BXzvlof-.js → dialog-ChkDhlMQ.js} +1 -1
- package/dist/assets/{dist-i0ilBbwP.js → dist-0PMxXIr6.js} +1 -1
- package/dist/assets/{dist-DGPCoel5.js → dist-6HEOc3hy.js} +1 -1
- package/dist/assets/{dist-CEQIJ2pn.js → dist-B7Qj0ClH.js} +1 -1
- package/dist/assets/{dist-C30-xTdI.js → dist-BIYYQefO.js} +1 -1
- package/dist/assets/{dist-Dg61kQNR.js → dist-BQ7MrVoG.js} +1 -1
- package/dist/assets/{dist-CU-Ty5ht.js → dist-BUr9VSV4.js} +1 -1
- package/dist/assets/{dist-BjtLy-VA.js → dist-Bagw3W9X.js} +1 -1
- package/dist/assets/dist-BbkZJt99.js +1 -0
- package/dist/assets/{dist-BTEPE6IB.js → dist-BosZYCjH.js} +1 -1
- package/dist/assets/{dist-Q0--6AMp.js → dist-BrDOLuMx.js} +1 -1
- package/dist/assets/dist-BvqRyXNf.js +1 -0
- package/dist/assets/{dist-DFv45CtW.js → dist-C1g0ZQqM.js} +1 -1
- package/dist/assets/dist-C88PeA-j.js +1 -0
- package/dist/assets/{dist-DQgu-tmt.js → dist-C8DU7LS7.js} +1 -1
- package/dist/assets/dist-CT29HpLU.js +1 -0
- package/dist/assets/dist-CaN3pnGY.js +1 -0
- package/dist/assets/dist-CdZrtzmM.js +1 -0
- package/dist/assets/{dist-Dq_iQ08e.js → dist-Cf47zp7b.js} +1 -1
- package/dist/assets/dist-CiBv1uBX.js +1 -0
- package/dist/assets/dist-Cn-s3n4_.js +1 -0
- package/dist/assets/{dist-DVh79TGS.js → dist-CrFxmtyb.js} +1 -1
- package/dist/assets/{dist-y6DTGoUH.js → dist-CsQrBXB1.js} +1 -1
- package/dist/assets/{dist-BjnzbwCx.js → dist-D-tCQoCo.js} +1 -1
- package/dist/assets/{dist-51xFOPFs.js → dist-D3OoaVQX.js} +1 -1
- package/dist/assets/dist-DHmVMXm2.js +1 -0
- package/dist/assets/dist-DHn8amAr.js +1 -0
- package/dist/assets/dist-DK2oA8K0.js +1 -0
- package/dist/assets/{dist-Bq1BhBMA.js → dist-DKPpxz2S.js} +1 -1
- package/dist/assets/{dist-DwtQnQ8D.js → dist-DPW-YadP.js} +1 -1
- package/dist/assets/{dist-Bbmd3uCi.js → dist-D_4TSZPK.js} +1 -1
- package/dist/assets/dist-Ddx3eonB.js +1 -0
- package/dist/assets/dist-DnPN36vC.js +1 -0
- package/dist/assets/dist-Doi_61Lm.js +1 -0
- package/dist/assets/{dist-Dy5EHuDu.js → dist-Dq1aTs7B.js} +1 -1
- package/dist/assets/dist-Dr9qtoId.js +13 -0
- package/dist/assets/dist-EtvDr9lo.js +1 -0
- package/dist/assets/dist-JYMkroTn.js +1 -0
- package/dist/assets/{dist-DfBASypd.js → dist-Jp_4M-Ei.js} +1 -1
- package/dist/assets/dist-QoV0fohO.js +1 -0
- package/dist/assets/dist-SDO5K7hA.js +3 -0
- package/dist/assets/dist-TtVOJU5I.js +1 -0
- package/dist/assets/dist-doJt8agZ.js +1 -0
- package/dist/assets/{dist-CIuh_TIk.js → dist-etSPFHi_.js} +1 -1
- package/dist/assets/{dist-CqnPIH_S.js → dist-f-ru44Xm.js} +1 -1
- package/dist/assets/{dist-CIU0Lack.js → dist-qkIhd7iG.js} +1 -1
- package/dist/assets/{dist-odxAaH5Z.js → dist-t1vdhOX_.js} +1 -1
- package/dist/assets/{dist-6QbI72oM.js → dist-wBVaU_K6.js} +1 -1
- package/dist/assets/{dist-C-_581uo.js → dist-ykiUNgjx.js} +1 -1
- package/dist/assets/{documentation-panel-DSqxsEBu.js → documentation-panel-Bs1zlxdM.js} +1 -1
- package/dist/assets/download-C06P9lnP.js +9 -0
- package/dist/assets/{dropdown-menu-CKhrfxsx.js → dropdown-menu-Bc2d7Nej.js} +1 -1
- package/dist/assets/edit-page-Bld_fe39.js +13 -0
- package/dist/assets/{erDiagram-Q2GNP2WA-B7kZxL-n.js → erDiagram-Q2GNP2WA-BQUYpiEQ.js} +1 -1
- package/dist/assets/{error-banner-R2OkQKR0.js → error-banner-C2nW22mN.js} +1 -1
- package/dist/assets/{error-panel-CtyexAW6.js → error-panel-B_vII0VN.js} +1 -1
- package/dist/assets/{es-1hBRXVlM.js → es-EPBuIa5m.js} +1 -1
- package/dist/assets/{esm-BQUzYly2.js → esm-Hlfcqnf0.js} +1 -1
- package/dist/assets/{esm-BTyesPLl.js → esm-MvMf2P5n.js} +1 -1
- package/dist/assets/{field-DGtw6Lae.js → field-D-izY3ud.js} +1 -1
- package/dist/assets/file-explorer-panel-BIzyNOVs.js +17 -0
- package/dist/assets/{file-video-camera-Fa5c_iPb.js → file-headphone-daOQzJg0.js} +1 -1
- package/dist/assets/file-icons-C-oatBuk.js +1 -0
- package/dist/assets/{floating-outline-BWK_nLJy.js → floating-outline-BPmtgKWs.js} +1 -1
- package/dist/assets/{flowDiagram-NV44I4VS-DR-64sse.js → flowDiagram-NV44I4VS-xMIxed1s.js} +1 -1
- package/dist/assets/{focus-ShrwcKIv.js → focus-j9zawi1p.js} +1 -1
- package/dist/assets/{form-B7_NRa34.js → form-DrpSpDea.js} +1 -1
- package/dist/assets/{formats-C3K3rlAZ.js → formats-CkafgGfe.js} +1 -1
- package/dist/assets/{formatting-8bP-RDnl.js → formatting-By3b5Lx8.js} +1 -1
- package/dist/assets/{gallery-page-DRBZRnaN.js → gallery-page-BrljeBFe.js} +1 -1
- package/dist/assets/{ganttDiagram-JELNMOA3-BWuQMrGd.js → ganttDiagram-JELNMOA3-Be16Pv8U.js} +1 -1
- package/dist/assets/{gitGraphDiagram-V2S2FVAM-Mr5-PYgM.js → gitGraphDiagram-V2S2FVAM-DQ4scp6S.js} +1 -1
- package/dist/assets/{glide-data-editor-BurnHmgR.js → glide-data-editor-8kdd_nPE.js} +4 -4
- package/dist/assets/{globals-BlB0Ba6E.js → globals-D2ulvntX.js} +1 -1
- package/dist/assets/home-page-O_c6IiAp.js +4 -0
- package/dist/assets/{hooks-BY6oGAlX.js → hooks-Z1j4FmRH.js} +1 -1
- package/dist/assets/html-to-image-D-FY7miL.js +2 -0
- package/dist/assets/image-CBwHq93J.js +1 -0
- package/dist/assets/index-BMdbqayP.js +38 -0
- package/dist/assets/{index-Dzwe9vKA.css → index-fYvRsNGP.css} +1 -1
- package/dist/assets/{infoDiagram-HS3SLOUP-Bs8aKpuZ.js → infoDiagram-HS3SLOUP-DzsICEl9.js} +1 -1
- package/dist/assets/input-GLbHj4DF.js +1 -0
- package/dist/assets/{journeyDiagram-XKPGCS4Q-aCZRxOHn.js → journeyDiagram-XKPGCS4Q-Dt4UItaM.js} +1 -1
- package/dist/assets/{kanban-definition-3W4ZIXB7-BlOJJ-5B.js → kanban-definition-3W4ZIXB7-Do_8fQeU.js} +1 -1
- package/dist/assets/katex-BalO4WMU.js +1 -0
- package/dist/assets/{kiosk-mode-BBqwMND1.js → kiosk-mode-BuLLP9k3.js} +1 -1
- package/dist/assets/{label-DmqkEXI4.js → label-CDwJXweF.js} +1 -1
- package/dist/assets/layout-DQhzfSJn.js +5 -0
- package/dist/assets/{linear-2A1iDmqT.js → linear-c4WCYuol.js} +1 -1
- package/dist/assets/{links-syPBpTLO.js → links-C9QsxOBC.js} +1 -1
- package/dist/assets/{logs-panel-BHFI-jG1.js → logs-panel-BKhNdCxG.js} +1 -1
- package/dist/assets/{maps-8VTEe-0T.js → maps-CTMzJkSk.js} +1 -1
- package/dist/assets/{marimo-icons-BDAuIiW5.js → marimo-icons-BmYE_Rrf.js} +1 -1
- package/dist/assets/{markdown-renderer-B6a5ZAwT.js → markdown-renderer-D02U2W2X.js} +4 -4
- package/dist/assets/{menu-items-Bs2e3wuf.js → menu-items-CRjHRaiu.js} +1 -1
- package/dist/assets/mermaid-4DMBBIKO-C2MO8Ayk.js +1 -0
- package/dist/assets/{mermaid-Cq8ttjss.js → mermaid-DJfb-vZs.js} +3 -3
- package/dist/assets/{mermaid-parser.core-DbGD2gKa.js → mermaid-parser.core-C-MdXFgl.js} +1 -1
- package/dist/assets/{mhchem-BJZpIgRF.js → mhchem-DqNBdKjC.js} +1 -1
- package/dist/assets/{mindmap-definition-VGOIOE7T-Dt6ZRws3.js → mindmap-definition-VGOIOE7T-YOE4okXd.js} +1 -1
- package/dist/assets/{multi-map-kCmlVJ-5.js → multi-map-BubyGH4K.js} +1 -1
- package/dist/assets/{name-cell-input-BRHlWy2Y.js → name-cell-input-DOyCua0o.js} +1 -1
- package/dist/assets/{number-overlay-editor-BDnI-mwa.js → number-overlay-editor-zZDGu9D2.js} +1 -1
- package/dist/assets/{numbers-44Cj1Me-.js → numbers-Eb1pfDec.js} +1 -1
- package/dist/assets/{outline-panel-uyRmU3NX.js → outline-panel-CgQ2GmbX.js} +1 -1
- package/dist/assets/{packages-panel-D8d46YWc.js → packages-panel-n8Ssm9M8.js} +1 -1
- package/dist/assets/{panels-Do1_ry1k.js → panels-B4wExe_l.js} +1 -1
- package/dist/assets/{pieDiagram-ADFJNKIX-3GEmpmfg.js → pieDiagram-ADFJNKIX-CjRyNR5b.js} +1 -1
- package/dist/assets/{popover-Cvl9xY6R.js → popover-XNIX-rv1.js} +1 -1
- package/dist/assets/{precisionRound-BOmLQIKI.js → precisionRound-CCOoIlcP.js} +1 -1
- package/dist/assets/{process-output-4yip1nZE.js → process-output-BwkCApeo.js} +1 -1
- package/dist/assets/purify.es-BBn8CPhf.js +2 -0
- package/dist/assets/{quadrantDiagram-AYHSOK5B-Dela17qb.js → quadrantDiagram-AYHSOK5B-ZvWY20UO.js} +1 -1
- package/dist/assets/{react-vega-C6zUovDg.js → react-vega-DzWik59S.js} +1 -1
- package/dist/assets/react-vega-plcnUXVG.js +1 -0
- package/dist/assets/{readonly-python-code-DmjbJYSq.js → readonly-python-code-BFyASvPB.js} +1 -1
- package/dist/assets/{renderShortcut-BJEd-iA7.js → renderShortcut-BjTUrvc5.js} +1 -1
- package/dist/assets/{request-registry-CN4oD1xn.js → request-registry-LM8kl4Xv.js} +1 -1
- package/dist/assets/{requirementDiagram-UZGBJVZJ-CjimGyZ2.js → requirementDiagram-UZGBJVZJ-4LJ2QyR9.js} +1 -1
- package/dist/assets/{run-page-BGijCqbR.js → run-page-BYEyHIaG.js} +1 -1
- package/dist/assets/{runs-BMpRKQKC.js → runs-B4QSIylk.js} +1 -1
- package/dist/assets/{sankeyDiagram-TZEHDZUN-CBE98yUR.js → sankeyDiagram-TZEHDZUN-7OqUpHYR.js} +1 -1
- package/dist/assets/{scratchpad-panel-ByOWj9u_.js → scratchpad-panel-w9Tu3fpH.js} +1 -1
- package/dist/assets/{secrets-panel-C2n4dedt.js → secrets-panel-DAnccD-S.js} +1 -1
- package/dist/assets/{select-DygbgNTD.js → select-DMX8tcVe.js} +1 -1
- package/dist/assets/{sequenceDiagram-WL72ISMW-DSgG0Zyn.js → sequenceDiagram-WL72ISMW-C4sGREOt.js} +1 -1
- package/dist/assets/{session-DnMOyddG.js → session-iz9BPeTp.js} +1 -1
- package/dist/assets/session-panel-k6_Gni4X.js +1 -0
- package/dist/assets/{share-sD4fbzpH.js → share-BWMZuJWY.js} +1 -1
- package/dist/assets/{slides-component-B6-Jz3p0.js → slides-component-6o8TgsRv.js} +1 -1
- package/dist/assets/{snippets-panel-Bzz2M38q.js → snippets-panel-mGo3M47p.js} +1 -1
- package/dist/assets/{spec-Be-iRLAY.js → spec-BQ0QuStT.js} +1 -1
- package/dist/assets/{state-Xu6bDsJl.js → state-CGR3DB1q.js} +1 -1
- package/dist/assets/{state-D2jTOQOG.js → state-CsNC_7dZ.js} +1 -1
- package/dist/assets/{state-B_fNn_z_.js → state-Dj88xOmZ.js} +1 -1
- package/dist/assets/{stateDiagram-FKZM4ZOC-By2PSLiJ.js → stateDiagram-FKZM4ZOC-4PvEH0nH.js} +1 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-CpKgwrjU.js +1 -0
- package/dist/assets/stex-BBWVYm-R.js +1 -0
- package/dist/assets/{switch-tdkZNn4k.js → switch-BMqCO9bm.js} +1 -1
- package/dist/assets/{terminal-CGmjeYqa.js → terminal-qMuurRSM.js} +1 -1
- package/dist/assets/{time-BLCpKsnL.js → time-BuGE4zW4.js} +1 -1
- package/dist/assets/{timeline-definition-IT6M3QCI-rq80_nVa.js → timeline-definition-IT6M3QCI-D9wk3zrs.js} +1 -1
- package/dist/assets/{toggle-BhEcsHTu.js → toggle-BYx0fN9n.js} +1 -1
- package/dist/assets/{tooltip-DOQlecCr.js → tooltip-CKZGcDDd.js} +1 -1
- package/dist/assets/{tooltip-D_HRHf_c.js → tooltip-CQeE9o7x.js} +1 -1
- package/dist/assets/{tracing-BZx6nEPl.js → tracing-DTCuFbVV.js} +1 -1
- package/dist/assets/tracing-panel-B1EJu6-W.js +2 -0
- package/dist/assets/{tree-D0AxVJ_I.js → tree-82qhH45u.js} +1 -1
- package/dist/assets/{useAddCell-BRlAqdmq.js → useAddCell-BdUpg_Ta.js} +1 -1
- package/dist/assets/useBoolean-2eWc7NX-.js +1 -0
- package/dist/assets/useCellActionButton-CJ_LAoma.js +1 -0
- package/dist/assets/{useDateFormatter-CmtFqjqu.js → useDateFormatter-DOoVZUts.js} +1 -1
- package/dist/assets/{useDeleteCell-BAfiIxKf.js → useDeleteCell-C1uMlYZu.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-jTu3L200.js → useDependencyPanelTab-nuk9kUr_.js} +1 -1
- package/dist/assets/useEventListener-DP66hBzA.js +1 -0
- package/dist/assets/{useIframeCapabilities-T3alJPda.js → useIframeCapabilities-BhFmTPLk.js} +1 -1
- package/dist/assets/{useInstallPackage-jGxNsOWc.js → useInstallPackage-CyTwCrsi.js} +1 -1
- package/dist/assets/{useInterval-lamrIyKJ.js → useInterval-Ct4FP8Tw.js} +1 -1
- package/dist/assets/{useLifecycle-BDXC6oVR.js → useLifecycle-BRklGKFJ.js} +1 -1
- package/dist/assets/useNotebookActions-Bh8YMrlo.js +1 -0
- package/dist/assets/{useNumberFormatter-DMA_kIIZ.js → useNumberFormatter-BXZcbTzH.js} +1 -1
- package/dist/assets/usePress-G817DpBk.js +7 -0
- package/dist/assets/{useSplitCell-CB32IpFa.js → useSplitCell-D7EHwIIE.js} +1 -1
- package/dist/assets/{useTheme-CwdqVOYu.js → useTheme-Co8bbxoC.js} +1 -1
- package/dist/assets/{utils-CORJ8yYa.js → utils-C1ZciZbF.js} +1 -1
- package/dist/assets/{vega-component-BLW2fY7v.js → vega-component-CoUjMYqz.js} +1 -1
- package/dist/assets/{vega-loader.browser-CZV6_g2i.js → vega-loader.browser-BJ9oKrvH.js} +1 -1
- package/dist/assets/{write-secret-modal-DuxmGjDn.js → write-secret-modal-DOyKonZB.js} +1 -1
- package/dist/assets/{xychartDiagram-PRI3JC2R-Bnjm0Q9u.js → xychartDiagram-PRI3JC2R-CTDFOoiw.js} +1 -1
- package/dist/index.html +131 -130
- package/package.json +9 -9
- package/src/__mocks__/requests.ts +1 -0
- package/src/components/app-config/ai-config.tsx +10 -0
- package/src/components/data-table/pagination.tsx +36 -30
- package/src/components/datasources/components.tsx +3 -6
- package/src/components/datasources/datasources.tsx +8 -21
- package/src/components/editor/actions/types.ts +6 -1
- package/src/components/editor/actions/useNotebookActions.tsx +50 -13
- package/src/components/editor/chrome/types.ts +17 -0
- package/src/components/editor/controls/command-palette.tsx +7 -0
- package/src/components/editor/controls/keyboard-shortcuts.tsx +3 -1
- package/src/components/editor/file-tree/file-explorer.tsx +48 -62
- package/src/components/editor/file-tree/file-icons.tsx +132 -0
- package/src/components/editor/file-tree/file-viewer.tsx +1 -1
- package/src/components/editor/file-tree/tree-actions.tsx +107 -0
- package/src/components/editor/file-tree/types.ts +2 -96
- package/src/components/editor/header/filename-input.tsx +4 -1
- package/src/components/icons/marimo-icons.tsx +2 -2
- package/src/components/pages/home-page.tsx +5 -5
- package/src/components/storage/components.tsx +0 -38
- package/src/components/storage/storage-file-viewer.tsx +1 -1
- package/src/components/storage/storage-inspector.tsx +28 -45
- package/src/components/ui/command.tsx +2 -0
- package/src/components/ui/links.tsx +1 -0
- package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +206 -0
- package/src/core/ai/tools/run-cells-tool.ts +75 -40
- package/src/core/hotkeys/__tests__/hotkeys.test.ts +64 -1
- package/src/core/hotkeys/hotkeys.ts +29 -3
- package/src/core/islands/bridge.ts +1 -0
- package/src/core/network/__tests__/requests-network.test.ts +17 -0
- package/src/core/network/requests-lazy.ts +1 -0
- package/src/core/network/requests-network.ts +9 -0
- package/src/core/network/requests-static.ts +1 -0
- package/src/core/network/requests-toasting.tsx +1 -0
- package/src/core/network/types.ts +1 -0
- package/src/core/wasm/bridge.ts +1 -0
- package/src/plugins/impl/FileBrowserPlugin.tsx +4 -4
- package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +309 -0
- package/src/plugins/impl/mpl-interactive/__tests__/mpl-websocket-shim.test.ts +110 -0
- package/src/plugins/impl/mpl-interactive/mpl-websocket-shim.ts +57 -0
- package/src/plugins/impl/plotly/PlotlyPlugin.tsx +8 -2
- package/src/plugins/plugins.ts +2 -0
- package/src/utils/__tests__/filenames.test.ts +7 -0
- package/src/utils/__tests__/smartMatch.test.ts +61 -0
- package/src/utils/filenames.ts +3 -0
- package/src/utils/smartMatch.ts +62 -0
- package/dist/assets/add-connection-dialog-9CzjZlY9.js +0 -138
- package/dist/assets/ai-model-dropdown-C3Y44M85.js +0 -5
- package/dist/assets/channel-k8gMdpPa.js +0 -1
- package/dist/assets/classDiagram-2ON5EDUG-DDFZaNDy.js +0 -1
- package/dist/assets/classDiagram-v2-WZHVMYZB-CEbmnHKU.js +0 -1
- package/dist/assets/command-DQqqP-WF.js +0 -1
- package/dist/assets/command-palette-BSS73m03.js +0 -1
- package/dist/assets/components-CF9x5raB.js +0 -1
- package/dist/assets/context-B1_BdDTF.js +0 -1
- package/dist/assets/context-aware-panel-HnyO4-L2.js +0 -3
- package/dist/assets/dist-B8osAFLA.js +0 -1
- package/dist/assets/dist-BYtATjzn.js +0 -1
- package/dist/assets/dist-Bb40mZM7.js +0 -1
- package/dist/assets/dist-C3z6pMsI.js +0 -1
- package/dist/assets/dist-CA6NQs25.js +0 -1
- package/dist/assets/dist-CCW85AP3.js +0 -1
- package/dist/assets/dist-CCnNQVp_.js +0 -1
- package/dist/assets/dist-CRVvx8nD.js +0 -1
- package/dist/assets/dist-CdZb2Grj.js +0 -1
- package/dist/assets/dist-ClLHDbNP.js +0 -1
- package/dist/assets/dist-CtKltiBh.js +0 -1
- package/dist/assets/dist-D-_c0KFz.js +0 -1
- package/dist/assets/dist-D6kWc2hF.js +0 -1
- package/dist/assets/dist-D89dID68.js +0 -1
- package/dist/assets/dist-DU2EJ7el.js +0 -3
- package/dist/assets/dist-DUY6xZX8.js +0 -13
- package/dist/assets/dist-DVHYieHl.js +0 -1
- package/dist/assets/dist-Q0mIwD1V.js +0 -1
- package/dist/assets/dist-aBuSkHFR.js +0 -1
- package/dist/assets/dist-gm5AeuIM.js +0 -1
- package/dist/assets/dist-p-IM2PMR.js +0 -1
- package/dist/assets/download-BTm4CTKr.js +0 -9
- package/dist/assets/edit-page-26-lDVMB.js +0 -13
- package/dist/assets/file-code-D9wtWSiR.js +0 -1
- package/dist/assets/file-explorer-panel-Bv8lRdKl.js +0 -1
- package/dist/assets/home-page-BXQp6S6h.js +0 -4
- package/dist/assets/html-to-image-b9BimK8l.js +0 -2
- package/dist/assets/index-B8ImLAg8.js +0 -38
- package/dist/assets/input-BPldEXfy.js +0 -1
- package/dist/assets/katex-YDobqqVd.js +0 -1
- package/dist/assets/layout-DVAA7kHH.js +0 -5
- package/dist/assets/mermaid-4DMBBIKO-C0QemhGt.js +0 -1
- package/dist/assets/purify.es-CPplrWRQ.js +0 -2
- package/dist/assets/react-vega-1nuO-sn0.js +0 -1
- package/dist/assets/session-panel-B_8ny7jh.js +0 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-ct96_mle.js +0 -1
- package/dist/assets/stex-pjf-hOob.js +0 -1
- package/dist/assets/tracing-panel-Dz9mRjXj.js +0 -2
- package/dist/assets/types-DFiYrN2w.js +0 -17
- package/dist/assets/useBoolean-eWwLICkT.js +0 -1
- package/dist/assets/useCellActionButton-DFgACqVf.js +0 -1
- package/dist/assets/useEventListener-CjXriKgk.js +0 -1
- package/dist/assets/useNotebookActions-XGX8NzaB.js +0 -1
- package/dist/assets/usePress-DsLftN-x.js +0 -7
- /package/dist/assets/{Deferred-D2igisxY.js → Deferred-BMfCOLaw.js} +0 -0
- /package/dist/assets/{SSRProvider-DC7ElCZZ.js → SSRProvider-CwqN9FWV.js} +0 -0
- /package/dist/assets/{alert-0YTlkh9P.js → alert-Bs8tbZo_.js} +0 -0
- /package/dist/assets/{badge-CNBv2dAU.js → badge-BUFDGZ04.js} +0 -0
- /package/dist/assets/{blob-CObhN-9g.js → blob-DgooIGjS.js} +0 -0
- /package/dist/assets/{defaultLocale-DK1MWd7f.js → defaultLocale-CGfP-Ye3.js} +0 -0
- /package/dist/assets/{defaultLocale-OkOxlkkM.js → defaultLocale-CuYNS33t.js} +0 -0
- /package/dist/assets/{emotion-is-prop-valid.esm-D7FeWASw.js → emotion-is-prop-valid.esm-lG8j6oqk.js} +0 -0
- /package/dist/assets/{en-US-DBqDb4Nb.js → en-US-k6sS5Nab.js} +0 -0
- /package/dist/assets/{errors-Bfogio62.js → errors-0IrrdfSG.js} +0 -0
- /package/dist/assets/{extends-aq1t6BkR.js → extends-B9D0JO9U.js} +0 -0
- /package/dist/assets/{github-BrsjF9dp.js → github-BY6XM4ej.js} +0 -0
- /package/dist/assets/{isValid-D3F4nmET.js → isValid-CUXKlcrM.js} +0 -0
- /package/dist/assets/{katex-rvFxOCU-.js → katex-FSdXOW5Y.js} +0 -0
- /package/dist/assets/{kbd-CVbqSkT8.js → kbd-Rn7tWvNg.js} +0 -0
- /package/dist/assets/{link-Cpo6yhBB.js → link-BmtFffTv.js} +0 -0
- /package/dist/assets/{links-BKV6zi_7.js → links-MkDbmF2p.js} +0 -0
- /package/dist/assets/{objectWithoutPropertiesLoose-Dxmp_Bd_.js → objectWithoutPropertiesLoose-CboCOq4o.js} +0 -0
- /package/dist/assets/{ordinal-BEKpVWu-.js → ordinal-DMIExrUm.js} +0 -0
- /package/dist/assets/{paths-bMgYkaP2.js → paths-D2lG83Oh.js} +0 -0
- /package/dist/assets/{play-D4Tdvkms.js → play-CkqWG85-.js} +0 -0
- /package/dist/assets/{plus-B-s-VRHt.js → plus-C9B_qWUi.js} +0 -0
- /package/dist/assets/{preload-helper-TXkS1QI3.js → preload-helper-BW0IMuFq.js} +0 -0
- /package/dist/assets/{prop-types-DRf51_gT.js → prop-types-C638SUfx.js} +0 -0
- /package/dist/assets/{range-DNqFcYmr.js → range-ClqUI25v.js} +0 -0
- /package/dist/assets/{refresh-ccw-BOzRCrXK.js → refresh-ccw-B3lGEyQm.js} +0 -0
- /package/dist/assets/{refresh-cw-DeCFDX1B.js → refresh-cw-fLeDriQe.js} +0 -0
- /package/dist/assets/{rotate-ccw-BG5BZyzw.js → rotate-ccw-DgH8qERb.js} +0 -0
- /package/dist/assets/{save-I_RGv5p0.js → save-C91FTnFa.js} +0 -0
- /package/dist/assets/{settings-DD8FJvQ_.js → settings-DRfuuLRT.js} +0 -0
- /package/dist/assets/{spinner-DCSoZZhh.js → spinner-Dt4SmUsI.js} +0 -0
- /package/dist/assets/{square-oV8Csj8Y.js → square-DZpWT_hp.js} +0 -0
- /package/dist/assets/{square-function-4zY5Dv0P.js → square-function-DEp1ozoA.js} +0 -0
- /package/dist/assets/{stex-FMMSUPAS.js → stex-0ac7Aukl.js} +0 -0
- /package/dist/assets/{trash-2-DtQaB9NM.js → trash-2-CrA4LwJ2.js} +0 -0
- /package/dist/assets/{trash-Basz0Kvc.js → trash-ZGxZ3QGq.js} +0 -0
- /package/dist/assets/{triangle-alert-n1-FF7zs.js → triangle-alert-CzmxsxFO.js} +0 -0
- /package/dist/assets/{types-BhvWC48z.js → types-CswNghXe.js} +0 -0
- /package/dist/assets/{use-toast-BhMe50aT.js → use-toast-Hc8CXlvz.js} +0 -0
- /package/dist/assets/{useAsyncData-DVm0BCFt.js → useAsyncData-CI3ntihq.js} +0 -0
- /package/dist/assets/{useDebounce-BUC67G8E.js → useDebounce-S9zaMzrr.js} +0 -0
- /package/dist/assets/{uuid-ImXS-885.js → uuid-ClFZlR7U.js} +0 -0
- /package/dist/assets/{workflow-CU6kAL_h.js → workflow-DgZ_19fF.js} +0 -0
- /package/dist/assets/{youtube-fKFch587.js → youtube-DfMgNU9-.js} +0 -0
|
@@ -37,6 +37,8 @@ import {
|
|
|
37
37
|
} from "../ui/select";
|
|
38
38
|
import type { DataTableSelection, PageRange } from "./types";
|
|
39
39
|
|
|
40
|
+
const MAX_PAGES_BEFORE_CLAMPING = 100;
|
|
41
|
+
|
|
40
42
|
interface DataTablePaginationProps<TData> {
|
|
41
43
|
table: Table<TData>;
|
|
42
44
|
selection?: DataTableSelection;
|
|
@@ -325,35 +327,39 @@ export const PageSelector = ({
|
|
|
325
327
|
),
|
|
326
328
|
)}
|
|
327
329
|
</div>
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
330
|
+
{totalPages > MAX_PAGES_BEFORE_CLAMPING && (
|
|
331
|
+
<>
|
|
332
|
+
<DropdownMenuSeparator />
|
|
333
|
+
<div
|
|
334
|
+
className="px-2 pt-0.5 shrink-0"
|
|
335
|
+
onKeyDown={(e) => e.stopPropagation()}
|
|
336
|
+
>
|
|
337
|
+
<label
|
|
338
|
+
htmlFor={jumpInputId}
|
|
339
|
+
className="text-xs text-muted-foreground block mb-1"
|
|
340
|
+
>
|
|
341
|
+
Jump to page
|
|
342
|
+
</label>
|
|
343
|
+
<Input
|
|
344
|
+
id={jumpInputId}
|
|
345
|
+
type="number"
|
|
346
|
+
min={1}
|
|
347
|
+
max={totalPages}
|
|
348
|
+
placeholder={`1-${totalPages}`}
|
|
349
|
+
value={jumpValue}
|
|
350
|
+
onChange={(e) => setJumpValue(e.target.value)}
|
|
351
|
+
onKeyDown={(e) => {
|
|
352
|
+
if (e.key === "Enter") {
|
|
353
|
+
handleJump();
|
|
354
|
+
}
|
|
355
|
+
e.stopPropagation();
|
|
356
|
+
}}
|
|
357
|
+
className="h-6 text-xs"
|
|
358
|
+
data-testid="page-jump-input"
|
|
359
|
+
/>
|
|
360
|
+
</div>
|
|
361
|
+
</>
|
|
362
|
+
)}
|
|
357
363
|
</DropdownMenuContent>
|
|
358
364
|
</DropdownMenu>
|
|
359
365
|
);
|
|
@@ -363,7 +369,7 @@ export function getPageRanges(
|
|
|
363
369
|
currentPage: number,
|
|
364
370
|
totalPages: number,
|
|
365
371
|
): PageRange[] {
|
|
366
|
-
if (totalPages <=
|
|
372
|
+
if (totalPages <= MAX_PAGES_BEFORE_CLAMPING) {
|
|
367
373
|
return range(totalPages).map((i) => ({ type: "page", page: i + 1 }));
|
|
368
374
|
}
|
|
369
375
|
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { LoaderCircle, XIcon } from "lucide-react";
|
|
4
4
|
import type { CSSProperties } from "react";
|
|
5
|
+
import { TreeChevron } from "@/components/editor/file-tree/tree-actions";
|
|
5
6
|
import type { DataType } from "@/core/kernel/messages";
|
|
6
7
|
import { cn } from "@/utils/cn";
|
|
7
8
|
import { DATA_TYPE_ICON, getDataTypeColor } from "../datasets/icons";
|
|
8
9
|
|
|
9
10
|
export const RotatingChevron: React.FC<{ isExpanded: boolean }> = ({
|
|
10
11
|
isExpanded,
|
|
11
|
-
}) =>
|
|
12
|
-
<ChevronRightIcon
|
|
13
|
-
className={cn("h-3 w-3 transition-transform", isExpanded && "rotate-90")}
|
|
14
|
-
/>
|
|
15
|
-
);
|
|
12
|
+
}) => <TreeChevron isExpanded={isExpanded} className="h-3 w-3" />;
|
|
16
13
|
|
|
17
14
|
export const DatasourceLabel: React.FC<{
|
|
18
15
|
children: React.ReactNode;
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
import { CommandList } from "cmdk";
|
|
4
4
|
import { atom, useAtomValue, useSetAtom } from "jotai";
|
|
5
5
|
import { sortBy } from "lodash-es";
|
|
6
|
-
import { PlusIcon, PlusSquareIcon,
|
|
6
|
+
import { PlusIcon, PlusSquareIcon, XIcon } from "lucide-react";
|
|
7
7
|
import React from "react";
|
|
8
8
|
import { dbDisplayName } from "@/components/databases/display";
|
|
9
9
|
import { EngineVariable } from "@/components/databases/engine-variable";
|
|
10
10
|
import { DatabaseLogo } from "@/components/databases/icon";
|
|
11
|
+
import { RefreshIconButton } from "@/components/editor/file-tree/tree-actions";
|
|
11
12
|
import { CopyClipboardIcon } from "@/components/icons/copy-icon";
|
|
12
13
|
import { Button } from "@/components/ui/button";
|
|
13
14
|
import { Command, CommandInput, CommandItem } from "@/components/ui/command";
|
|
@@ -265,15 +266,10 @@ const Engine: React.FC<{
|
|
|
265
266
|
const engineName = internalEngine ? "In-Memory" : connection.name;
|
|
266
267
|
const { previewDataSourceConnection } = useRequestClient();
|
|
267
268
|
|
|
268
|
-
const [isSpinning, setIsSpinning] = React.useState(false);
|
|
269
|
-
|
|
270
269
|
const handleRefreshConnection = async () => {
|
|
271
|
-
setIsSpinning(true);
|
|
272
270
|
await previewDataSourceConnection({
|
|
273
271
|
engine: connection.name,
|
|
274
272
|
});
|
|
275
|
-
// Artificially spin the icon if the request is really fast
|
|
276
|
-
setTimeout(() => setIsSpinning(false), 500);
|
|
277
273
|
};
|
|
278
274
|
|
|
279
275
|
return (
|
|
@@ -288,21 +284,12 @@ const Engine: React.FC<{
|
|
|
288
284
|
(<EngineVariable variableName={engineName as VariableName} />)
|
|
289
285
|
</span>
|
|
290
286
|
{!internalEngine && (
|
|
291
|
-
<
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
>
|
|
298
|
-
<RefreshCwIcon
|
|
299
|
-
className={cn(
|
|
300
|
-
"h-4 w-4 text-muted-foreground hover:text-foreground",
|
|
301
|
-
isSpinning && "animate-[spin_0.5s]",
|
|
302
|
-
)}
|
|
303
|
-
/>
|
|
304
|
-
</Button>
|
|
305
|
-
</Tooltip>
|
|
287
|
+
<RefreshIconButton
|
|
288
|
+
onClick={handleRefreshConnection}
|
|
289
|
+
tooltip="Refresh connection"
|
|
290
|
+
className="ml-auto h-4 p-0"
|
|
291
|
+
iconClassName="h-3.5 w-3.5"
|
|
292
|
+
/>
|
|
306
293
|
)}
|
|
307
294
|
</DatasourceLabel>
|
|
308
295
|
{hasChildren ? (
|
|
@@ -27,6 +27,7 @@ export interface ActionButton {
|
|
|
27
27
|
handleHeadless?: (event?: Event) => void;
|
|
28
28
|
divider?: boolean;
|
|
29
29
|
dropdown?: ActionButton[];
|
|
30
|
+
additionalKeywords?: string[];
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
export function isParentAction(
|
|
@@ -51,6 +52,10 @@ export function flattenActions(
|
|
|
51
52
|
if (isParentAction(action)) {
|
|
52
53
|
return flattenActions(action.dropdown, `${prevLabel + action.label} > `);
|
|
53
54
|
}
|
|
54
|
-
return {
|
|
55
|
+
return {
|
|
56
|
+
...action,
|
|
57
|
+
label: prevLabel + action.label,
|
|
58
|
+
additionalKeywords: action.additionalKeywords,
|
|
59
|
+
};
|
|
55
60
|
});
|
|
56
61
|
}
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
LayoutTemplateIcon,
|
|
32
32
|
LinkIcon,
|
|
33
33
|
MessagesSquareIcon,
|
|
34
|
+
NotebookIcon,
|
|
34
35
|
PanelLeftIcon,
|
|
35
36
|
PowerSquareIcon,
|
|
36
37
|
PresentationIcon,
|
|
@@ -123,8 +124,13 @@ export function useNotebookActions() {
|
|
|
123
124
|
const setCommandPaletteOpen = useSetAtom(commandPaletteAtom);
|
|
124
125
|
const setSettingsDialogOpen = useSetAtom(settingDialogAtom);
|
|
125
126
|
const setKeyboardShortcutsOpen = useSetAtom(keyboardShortcutsAtom);
|
|
126
|
-
const {
|
|
127
|
-
|
|
127
|
+
const {
|
|
128
|
+
exportAsIPYNB,
|
|
129
|
+
exportAsMarkdown,
|
|
130
|
+
readCode,
|
|
131
|
+
saveCellConfig,
|
|
132
|
+
updateCellOutputs,
|
|
133
|
+
} = useRequestClient();
|
|
128
134
|
const takeScreenshots = useEnrichCellOutputs();
|
|
129
135
|
|
|
130
136
|
const hasDisabledCells = useAtomValue(hasDisabledCellsAtom);
|
|
@@ -199,6 +205,27 @@ export function useNotebookActions() {
|
|
|
199
205
|
setTimeout(() => window.dispatchEvent(afterprint), 0);
|
|
200
206
|
};
|
|
201
207
|
|
|
208
|
+
const handleDownloadAsIPYNB = async () => {
|
|
209
|
+
if (!filename) {
|
|
210
|
+
toastNotebookMustBeNamed();
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const runDownload = async (progress: ProgressState) => {
|
|
215
|
+
await updateCellOutputsWithScreenshots({
|
|
216
|
+
takeScreenshots: () => takeScreenshots({ progress }),
|
|
217
|
+
updateCellOutputs,
|
|
218
|
+
});
|
|
219
|
+
const ipynb = await exportAsIPYNB({ download: false });
|
|
220
|
+
downloadBlob(
|
|
221
|
+
new Blob([ipynb], { type: "application/x-ipynb+json" }),
|
|
222
|
+
Filenames.toIPYNB(document.title),
|
|
223
|
+
);
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
await withLoadingToast("Downloading IPYNB...", runDownload);
|
|
227
|
+
};
|
|
228
|
+
|
|
202
229
|
const actions: ActionButton[] = [
|
|
203
230
|
{
|
|
204
231
|
icon: <DownloadIcon size={14} strokeWidth={1.5} />,
|
|
@@ -240,6 +267,11 @@ export function useNotebookActions() {
|
|
|
240
267
|
);
|
|
241
268
|
},
|
|
242
269
|
},
|
|
270
|
+
{
|
|
271
|
+
icon: <NotebookIcon size={14} strokeWidth={1.5} />,
|
|
272
|
+
label: "Download as ipynb",
|
|
273
|
+
handle: handleDownloadAsIPYNB,
|
|
274
|
+
},
|
|
243
275
|
{
|
|
244
276
|
icon: <CodeIcon size={14} strokeWidth={1.5} />,
|
|
245
277
|
label: "Download Python code",
|
|
@@ -347,17 +379,20 @@ export function useNotebookActions() {
|
|
|
347
379
|
label: "Helper panel",
|
|
348
380
|
redundant: true,
|
|
349
381
|
handle: NOOP_HANDLER,
|
|
350
|
-
dropdown: PANELS.flatMap(
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
382
|
+
dropdown: PANELS.flatMap(
|
|
383
|
+
({ type: id, Icon, hidden, additionalKeywords }) => {
|
|
384
|
+
if (hidden) {
|
|
385
|
+
return [];
|
|
386
|
+
}
|
|
387
|
+
return {
|
|
388
|
+
label: startCase(id),
|
|
389
|
+
rightElement: renderCheckboxElement(selectedPanel === id),
|
|
390
|
+
icon: <Icon size={14} strokeWidth={1.5} />,
|
|
391
|
+
handle: () => toggleApplication(id),
|
|
392
|
+
additionalKeywords,
|
|
393
|
+
};
|
|
394
|
+
},
|
|
395
|
+
),
|
|
361
396
|
},
|
|
362
397
|
|
|
363
398
|
{
|
|
@@ -478,6 +513,7 @@ export function useNotebookActions() {
|
|
|
478
513
|
label: "Restart kernel",
|
|
479
514
|
variant: "danger",
|
|
480
515
|
handle: restartKernel,
|
|
516
|
+
additionalKeywords: ["reset", "reload", "restart"],
|
|
481
517
|
},
|
|
482
518
|
{
|
|
483
519
|
icon: <FastForwardIcon size={14} strokeWidth={1.5} />,
|
|
@@ -535,6 +571,7 @@ export function useNotebookActions() {
|
|
|
535
571
|
label: "User settings",
|
|
536
572
|
handle: () => setSettingsDialogOpen((open) => !open),
|
|
537
573
|
redundant: true,
|
|
574
|
+
additionalKeywords: ["preferences", "options", "configuration"],
|
|
538
575
|
},
|
|
539
576
|
{
|
|
540
577
|
icon: <ExternalLinkIcon size={14} strokeWidth={1.5} />,
|
|
@@ -59,6 +59,8 @@ export interface PanelDescriptor {
|
|
|
59
59
|
defaultSection: PanelSection;
|
|
60
60
|
/** Capability required for this panel to be visible. If the capability is false, the panel is hidden. */
|
|
61
61
|
requiredCapability?: keyof Capabilities;
|
|
62
|
+
/** Additional search keywords for the command palette */
|
|
63
|
+
additionalKeywords?: string[];
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
/**
|
|
@@ -73,6 +75,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
73
75
|
label: "Files",
|
|
74
76
|
tooltip: "View files",
|
|
75
77
|
defaultSection: "sidebar",
|
|
78
|
+
additionalKeywords: ["explorer", "browser", "directory"],
|
|
76
79
|
},
|
|
77
80
|
{
|
|
78
81
|
type: "variables",
|
|
@@ -80,6 +83,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
80
83
|
label: "Variables",
|
|
81
84
|
tooltip: "Explore variables and data sources",
|
|
82
85
|
defaultSection: "sidebar",
|
|
86
|
+
additionalKeywords: ["state", "scope", "inspector"],
|
|
83
87
|
},
|
|
84
88
|
{
|
|
85
89
|
type: "packages",
|
|
@@ -87,6 +91,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
87
91
|
label: "Packages",
|
|
88
92
|
tooltip: "Manage packages",
|
|
89
93
|
defaultSection: "sidebar",
|
|
94
|
+
additionalKeywords: ["dependencies", "pip", "install"],
|
|
90
95
|
},
|
|
91
96
|
{
|
|
92
97
|
type: "ai",
|
|
@@ -94,6 +99,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
94
99
|
label: "AI",
|
|
95
100
|
tooltip: "Chat & Agents",
|
|
96
101
|
defaultSection: "sidebar",
|
|
102
|
+
additionalKeywords: ["chat", "copilot", "assistant"],
|
|
97
103
|
},
|
|
98
104
|
{
|
|
99
105
|
type: "outline",
|
|
@@ -101,6 +107,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
101
107
|
label: "Outline",
|
|
102
108
|
tooltip: "View outline",
|
|
103
109
|
defaultSection: "sidebar",
|
|
110
|
+
additionalKeywords: ["toc", "structure", "headings"],
|
|
104
111
|
},
|
|
105
112
|
{
|
|
106
113
|
type: "documentation",
|
|
@@ -108,6 +115,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
108
115
|
label: "Docs",
|
|
109
116
|
tooltip: "View live docs",
|
|
110
117
|
defaultSection: "sidebar",
|
|
118
|
+
additionalKeywords: ["reference", "api"],
|
|
111
119
|
},
|
|
112
120
|
{
|
|
113
121
|
type: "dependencies",
|
|
@@ -115,6 +123,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
115
123
|
label: "Dependencies",
|
|
116
124
|
tooltip: "Explore dependencies",
|
|
117
125
|
defaultSection: "sidebar",
|
|
126
|
+
additionalKeywords: ["graph", "imports"],
|
|
118
127
|
},
|
|
119
128
|
// Developer panel defaults
|
|
120
129
|
{
|
|
@@ -123,6 +132,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
123
132
|
label: "Errors",
|
|
124
133
|
tooltip: "View errors",
|
|
125
134
|
defaultSection: "developer-panel",
|
|
135
|
+
additionalKeywords: ["exceptions", "problems", "diagnostics"],
|
|
126
136
|
},
|
|
127
137
|
{
|
|
128
138
|
type: "scratchpad",
|
|
@@ -130,6 +140,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
130
140
|
label: "Scratchpad",
|
|
131
141
|
tooltip: "Scratchpad",
|
|
132
142
|
defaultSection: "developer-panel",
|
|
143
|
+
additionalKeywords: ["scratch", "draft", "playground"],
|
|
133
144
|
},
|
|
134
145
|
{
|
|
135
146
|
type: "tracing",
|
|
@@ -137,6 +148,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
137
148
|
label: "Tracing",
|
|
138
149
|
tooltip: "View tracing",
|
|
139
150
|
defaultSection: "developer-panel",
|
|
151
|
+
additionalKeywords: ["profiling", "performance"],
|
|
140
152
|
},
|
|
141
153
|
{
|
|
142
154
|
type: "secrets",
|
|
@@ -145,6 +157,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
145
157
|
tooltip: "Manage secrets",
|
|
146
158
|
defaultSection: "developer-panel",
|
|
147
159
|
hidden: isWasm(),
|
|
160
|
+
additionalKeywords: ["env", "environment", "keys", "credentials"],
|
|
148
161
|
},
|
|
149
162
|
{
|
|
150
163
|
type: "logs",
|
|
@@ -152,6 +165,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
152
165
|
label: "Logs",
|
|
153
166
|
tooltip: "View logs",
|
|
154
167
|
defaultSection: "developer-panel",
|
|
168
|
+
additionalKeywords: ["console", "stdout"],
|
|
155
169
|
},
|
|
156
170
|
{
|
|
157
171
|
type: "terminal",
|
|
@@ -161,6 +175,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
161
175
|
hidden: isWasm(),
|
|
162
176
|
defaultSection: "developer-panel",
|
|
163
177
|
requiredCapability: "terminal",
|
|
178
|
+
additionalKeywords: ["shell", "console", "bash", "command"],
|
|
164
179
|
},
|
|
165
180
|
{
|
|
166
181
|
type: "snippets",
|
|
@@ -168,6 +183,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
168
183
|
label: "Snippets",
|
|
169
184
|
tooltip: "Snippets",
|
|
170
185
|
defaultSection: "developer-panel",
|
|
186
|
+
additionalKeywords: ["templates", "examples"],
|
|
171
187
|
},
|
|
172
188
|
{
|
|
173
189
|
type: "cache",
|
|
@@ -176,6 +192,7 @@ export const PANELS: PanelDescriptor[] = [
|
|
|
176
192
|
tooltip: "View cache",
|
|
177
193
|
defaultSection: "developer-panel",
|
|
178
194
|
hidden: !getFeatureFlag("cache_panel"),
|
|
195
|
+
additionalKeywords: ["memory", "memoize"],
|
|
179
196
|
},
|
|
180
197
|
];
|
|
181
198
|
|
|
@@ -78,6 +78,7 @@ const CommandPalette = () => {
|
|
|
78
78
|
return (
|
|
79
79
|
<CommandItem
|
|
80
80
|
disabled={props.disabled}
|
|
81
|
+
keywords={hotkey.additionalKeywords}
|
|
81
82
|
onSelect={() => {
|
|
82
83
|
addRecentCommand(shortcut);
|
|
83
84
|
// Close first and then run the action, so the dialog doesn't steal focus
|
|
@@ -105,15 +106,18 @@ const CommandPalette = () => {
|
|
|
105
106
|
handle,
|
|
106
107
|
props = {},
|
|
107
108
|
hotkey,
|
|
109
|
+
additionalKeywords,
|
|
108
110
|
}: {
|
|
109
111
|
label: string;
|
|
110
112
|
handle: () => void;
|
|
111
113
|
props?: { disabled?: boolean; tooltip?: React.ReactNode };
|
|
112
114
|
hotkey?: HotkeyAction;
|
|
115
|
+
additionalKeywords?: string[];
|
|
113
116
|
}) => {
|
|
114
117
|
return (
|
|
115
118
|
<CommandItem
|
|
116
119
|
disabled={props.disabled}
|
|
120
|
+
keywords={additionalKeywords}
|
|
117
121
|
onSelect={() => {
|
|
118
122
|
addRecentCommand(label);
|
|
119
123
|
setOpen(false);
|
|
@@ -163,6 +167,7 @@ const CommandPalette = () => {
|
|
|
163
167
|
disabled: action.disabled,
|
|
164
168
|
tooltip: action.tooltip,
|
|
165
169
|
},
|
|
170
|
+
additionalKeywords: action.additionalKeywords,
|
|
166
171
|
});
|
|
167
172
|
}
|
|
168
173
|
return null;
|
|
@@ -190,6 +195,7 @@ const CommandPalette = () => {
|
|
|
190
195
|
label: action.label,
|
|
191
196
|
handle: action.handleHeadless || action.handle,
|
|
192
197
|
props: { disabled: action.disabled, tooltip: action.tooltip },
|
|
198
|
+
additionalKeywords: action.additionalKeywords,
|
|
193
199
|
});
|
|
194
200
|
})}
|
|
195
201
|
{cellActions.map((action) => {
|
|
@@ -200,6 +206,7 @@ const CommandPalette = () => {
|
|
|
200
206
|
label: `Cell > ${action.label}`,
|
|
201
207
|
handle: action.handleHeadless || action.handle,
|
|
202
208
|
props: { disabled: action.disabled, tooltip: action.tooltip },
|
|
209
|
+
additionalKeywords: action.additionalKeywords,
|
|
203
210
|
});
|
|
204
211
|
})}
|
|
205
212
|
</CommandGroup>
|
|
@@ -174,7 +174,9 @@ export const KeyboardShortcuts: React.FC = () => {
|
|
|
174
174
|
return;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
// Single character keys are always lowercase (e.g. "a", "b", "c")
|
|
178
|
+
// But we should preserve the original case for other keys (e.g. "Enter", "Escape")
|
|
179
|
+
let key = e.key.length === 1 ? e.key.toLowerCase() : e.key;
|
|
178
180
|
// Handle edge cases
|
|
179
181
|
if (e.key === " ") {
|
|
180
182
|
key = "Space";
|