@marimo-team/islands 0.22.1-dev9 → 0.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedDataExplorerComponent-iT7t3FxV.js → ConnectedDataExplorerComponent-DuD8BVl6.js} +54 -54
- package/dist/{Plot-WhbJAbBh.js → Plot-BxlSHo0G.js} +47 -38
- package/dist/_basePickBy-Sow3pJjS.js +41 -0
- package/dist/{_baseUniq-B4eL5sTC.js → _baseUniq-C87CckHL.js} +15 -54
- package/dist/{any-language-editor-CT_9yBde.js → any-language-editor-BHH_pQ6M.js} +21 -21
- package/dist/architecture-7HQA4BMR-BHdkAMvZ.js +6 -0
- package/dist/{architectureDiagram-VXUJARFQ-vxgYGIMP.js → architectureDiagram-VXUJARFQ-B3YQo9At.js} +15 -15
- package/dist/{arrays-Du-jRBAy.js → arrays-beUWo8RF.js} +1 -1
- package/dist/assets/__vite-browser-external-WSlCcXn_.js +1 -0
- package/dist/assets/{worker-D10K3OOz.js → worker-DUYMdbtA.js} +2 -2
- package/dist/{blockDiagram-VD42YOAC-C7x6YTH7.js → blockDiagram-VD42YOAC-CpQ3TKEN.js} +7 -7
- package/dist/{button-qsiIHncQ.js → button-DNlNlZY_.js} +82 -84
- package/dist/{c4Diagram-YG6GDRKO-Cx4oseGg.js → c4Diagram-YG6GDRKO-CZSU4uqU.js} +4 -4
- package/dist/{capabilities-26mwv03y.js → capabilities-Coe9eM9T.js} +2 -2
- package/dist/{channel-C_50jIAn.js → channel-X3JKk8gE.js} +1 -1
- package/dist/{chat-ui-CtqUthFR.js → chat-ui-Cel1kBfc.js} +147 -146
- package/dist/{check-D_YwHEgY.js → check-CWUkiHmb.js} +1 -1
- package/dist/{chunk-4F5CHEZ2-Dvo_CFnR.js → chunk-4F5CHEZ2-D5mClyDv.js} +1 -1
- package/dist/{chunk-ABZYJK2D-D5YIs71w.js → chunk-ABZYJK2D-CZYCCtLy.js} +1 -1
- package/dist/{chunk-ATLVNIR6-CyOjzOcf.js → chunk-ATLVNIR6-DaOzLLgN.js} +1 -1
- package/dist/{chunk-B2363JML-BzZqINRO.js → chunk-B2363JML-Br0eA2T3.js} +1 -1
- package/dist/{chunk-B4BG7PRW-ZJeV3KdD.js → chunk-B4BG7PRW-4BjV11Br.js} +4 -4
- package/dist/{chunk-DI55MBZ5-Dx_wwX6l.js → chunk-DI55MBZ5-DITY3EyP.js} +4 -4
- package/dist/{chunk-EXTU4WIE-CgefpSXQ.js → chunk-EXTU4WIE-jUPSAk3i.js} +1 -1
- package/dist/{chunk-FRFDVMJY-Derq8UzY.js → chunk-FRFDVMJY-DnEvEFRR.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-CcIOIFpc.js → chunk-JA3XYJ7Z-BcPEfxk_.js} +2 -2
- package/dist/{chunk-JZLCHNYA-CgO0GG1p.js → chunk-JZLCHNYA-2bnLL3xL.js} +4 -4
- package/dist/{chunk-N4CR4FBY-2qzGzAxT.js → chunk-N4CR4FBY-CpZSuGSU.js} +5 -5
- package/dist/{chunk-PL6DKKU2-KoG71Zin.js → chunk-PL6DKKU2-DnId6G-x.js} +1 -1
- package/dist/{chunk-QN33PNHL-Dp1qBo28.js → chunk-QN33PNHL-B9p5ojHB.js} +1 -1
- package/dist/{chunk-QXUST7PY-BxmmeIwf.js → chunk-QXUST7PY-Ch6F5Obl.js} +5 -5
- package/dist/{chunk-S3R3BYOJ-D3Rys9ZW.js → chunk-S3R3BYOJ-B0UOFJwq.js} +3 -3
- package/dist/{chunk-SJTYNZTY-Co-DhKAG.js → chunk-SJTYNZTY-BsBZnJUj.js} +1 -1
- package/dist/{chunk-TCCFYFTB-BAhzIqBO.js → chunk-TCCFYFTB-Clbl-fTg.js} +8 -7
- package/dist/{chunk-TQ3KTPDO-DxYI735Z.js → chunk-TQ3KTPDO-CFkSQ30e.js} +1 -1
- package/dist/{chunk-TZMSLE5B-Dxumt0wv.js → chunk-TZMSLE5B-D45397J2.js} +1 -1
- package/dist/{chunk-UMXZTB3W-CuahpKin.js → chunk-UMXZTB3W-D-A834Bq.js} +1 -1
- package/dist/{classDiagram-v2-WZHVMYZB-CYoFMQKE.js → classDiagram-2ON5EDUG-C8-zE3Zv.js} +10 -10
- package/dist/{classDiagram-2ON5EDUG-DkOvXRlx.js → classDiagram-v2-WZHVMYZB-DrmbGANl.js} +10 -10
- package/dist/{clone-DDndUqI0.js → clone-DZFQCtFJ.js} +1 -1
- package/dist/{constants-D1Am36hX.js → constants-CvyfaCvs.js} +3 -3
- package/dist/{copy-CBo9JcJW.js → copy-B7781WJ3.js} +2 -2
- package/dist/{dagre-6UL2VRFP-BXBaU8PB.js → dagre-6UL2VRFP-OMItEBnY.js} +12 -12
- package/dist/{dagre-D3dlYz-r.js → dagre-QVd-lCXU.js} +13 -23
- package/dist/{data-grid-overlay-editor-nZux6_d2.js → data-grid-overlay-editor-lKF301ME.js} +1 -1
- package/dist/{diagram-PSM6KHXK-CJxjk4LG.js → diagram-PSM6KHXK-CkKbohWI.js} +16 -16
- package/dist/{diagram-QEK2KX5R-IMILPh_p.js → diagram-QEK2KX5R-DjUMpVcx.js} +14 -14
- package/dist/{diagram-S2PKOQOG-6O0g6Boj.js → diagram-S2PKOQOG-b-c0d-wZ.js} +14 -14
- package/dist/{dist-BkXs8bw0.js → dist--6TSlp8H.js} +1 -1
- package/dist/dist-7K5doRvB.js +6 -0
- package/dist/{dist-CQidOwep.js → dist-B43sbpd0.js} +3 -3
- package/dist/dist-B6I_A2-E.js +8 -0
- package/dist/dist-BEQsmaZY.js +5 -0
- package/dist/dist-BasY2RHp.js +8 -0
- package/dist/{dist-BemtTYzN.js → dist-Bfp1XXWt.js} +5 -5
- package/dist/{dist-v-1kgqZ3.js → dist-BjDuO5JW.js} +1 -1
- package/dist/dist-Bosc00dY.js +5 -0
- package/dist/{dist-DLNKBPsk.js → dist-BrxqmS9Q.js} +4 -4
- package/dist/{dist-DBYL08Lu.js → dist-BvhGByxL.js} +4 -4
- package/dist/{dist-CVqlhD3M.js → dist-C4bq5Ioy.js} +2 -2
- package/dist/{dist-DwmxBUOe.js → dist-CFKdzOIu.js} +2 -2
- package/dist/{dist-5nTQE2yt.js → dist-CIB8w0Fl.js} +2 -2
- package/dist/{dist-C-EcLtO9.js → dist-CNF0QBLR.js} +1 -1
- package/dist/dist-CQMZOn-_.js +8 -0
- package/dist/dist-CViQhWZ8.js +5 -0
- package/dist/{dist-Dg65j0em.js → dist-CcMfr7jD.js} +1 -1
- package/dist/{dist-C0XYIHKJ.js → dist-Ci0CXEFt.js} +1 -1
- package/dist/dist-Cz6rLfwY.js +5 -0
- package/dist/dist-D8eq8st3.js +6 -0
- package/dist/{dist-qoCY8giM.js → dist-DAfcmt-d.js} +2 -2
- package/dist/{dist-B6Op2ogv.js → dist-DD_cYHOl.js} +2 -2
- package/dist/{dist-BUSLKXcu.js → dist-DFK94vuS.js} +2 -2
- package/dist/{dist-DBXPlQ0D.js → dist-DGNtjMZu.js} +1 -1
- package/dist/{dist-C9qF7MRB.js → dist-DJ9F1eHs.js} +2 -2
- package/dist/{dist-Ci_jEudG.js → dist-DJKubHDd.js} +1 -1
- package/dist/{dist-CnFp2Kcl.js → dist-DLafRu9s.js} +2 -2
- package/dist/dist-DM1UDXdl.js +5 -0
- package/dist/dist-DNrtWPgS.js +5 -0
- package/dist/dist-D_UjpfOY.js +1381 -0
- package/dist/{dist-DmFS6KZW.js → dist-DbnBiLNH.js} +3 -3
- package/dist/{dist-BiZZAo22.js → dist-DlSUOIm9.js} +1 -1
- package/dist/{dist-DStU8He1.js → dist-Doy0mQDg.js} +2 -2
- package/dist/{dist-CxAX99oC.js → dist-DpkJHKB8.js} +2 -2
- package/dist/{dist-DjaZNkZ7.js → dist-LhQNUe5A.js} +3 -3
- package/dist/dist-V7q2qnpA.js +5 -0
- package/dist/{dist-BJ3fhRYu.js → dist-VqF3W_ue.js} +2 -2
- package/dist/dist-a5_hPgu2.js +8 -0
- package/dist/{dist-B9KLrfoh.js → dist-ej6AQKaS.js} +1 -1
- package/dist/{dist-Brb6VNc4.js → dist-m9tsXsFf.js} +2 -2
- package/dist/{dist-CBwMSFDu.js → dist-tGk0aZ--.js} +2 -2
- package/dist/dist-uVyZcV1-.js +5 -0
- package/dist/{erDiagram-Q2GNP2WA-sho7Cl9f.js → erDiagram-Q2GNP2WA-CDhLaOZ1.js} +10 -10
- package/dist/{error-banner-Bx9kIgrs.js → error-banner-Cjf0RU9I.js} +79 -79
- package/dist/{esm-CMg2ABu6.js → esm-4wmsH2lp.js} +6 -6
- package/dist/{esm-cqK9POGH.js → esm-CD1iby2n.js} +23 -23
- package/dist/{flowDiagram-NV44I4VS-C4nY4Fbz.js → flowDiagram-NV44I4VS-BDi4O4CL.js} +10 -10
- package/dist/{ganttDiagram-JELNMOA3-CtxNcCM2.js → ganttDiagram-JELNMOA3-BpZE6kVp.js} +3 -3
- package/dist/{gitGraph-G5XIXVHT-SL6TDof6.js → gitGraph-G5XIXVHT-B_c6xFJv.js} +3 -3
- package/dist/{gitGraphDiagram-V2S2FVAM-D9885mxd.js → gitGraphDiagram-V2S2FVAM-iQnXzbPM.js} +13 -13
- package/dist/{glide-data-editor-CkVEV-Gk.js → glide-data-editor-BqnvTmDo.js} +1739 -1708
- package/dist/{graphlib-CxWdvYQt.js → graphlib-BV1_gi0C.js} +4 -3
- package/dist/hasIn-DnfJcYpY.js +108 -0
- package/dist/{info-VBDWY6EO-6MXPTSmi.js → info-VBDWY6EO-BTyzxmhr.js} +3 -3
- package/dist/{infoDiagram-HS3SLOUP-Bw2FlRwF.js → infoDiagram-HS3SLOUP-OYrX6uO3.js} +13 -13
- package/dist/{input-BSde8uV4.js → input-CFY9gApZ.js} +5055 -5055
- package/dist/{isEmpty-BQtUinxJ.js → isEmpty-B7FX9wKt.js} +1 -1
- package/dist/{isSymbol-DFp8040B.js → isSymbol-DCbjQG_U.js} +1 -1
- package/dist/{journeyDiagram-XKPGCS4Q-BXlCEth8.js → journeyDiagram-XKPGCS4Q-ClPC94aN.js} +3 -3
- package/dist/{kanban-definition-3W4ZIXB7-CorxzSYm.js → kanban-definition-3W4ZIXB7-DHEAKdZt.js} +7 -7
- package/dist/{label-DTNqw9tv.js → label-DbZGAoCH.js} +538 -569
- package/dist/{loader-CMMa6QVT.js → loader-Bd1kgLn7.js} +15 -15
- package/dist/main.js +35011 -34898
- package/dist/{memoize-CuHciEBb.js → memoize-CSTI9eOX.js} +1 -1
- package/dist/{merge-CA_buyY3.js → merge-CVhG7q_o.js} +1 -1
- package/dist/{mermaid-CEKslOkI.js → mermaid-B2HDLx2g.js} +54 -54
- package/dist/{mermaid-parser.core-cq4YDee-.js → mermaid-parser.core-ntCgyx0x.js} +8 -8
- package/dist/min-Ds3gG0Ff.js +96 -0
- package/dist/{mindmap-definition-VGOIOE7T-DRsT8UaN.js → mindmap-definition-VGOIOE7T-CxEUZZvY.js} +9 -9
- package/dist/{now-CXAdKY5k.js → now-nrrrOr01.js} +1 -1
- package/dist/{once-CZno0h-b.js → once-C_TIu-kR.js} +1 -1
- package/dist/{packet-DYOGHKS2-Dw08gMaZ.js → packet-DYOGHKS2-BhvnpoGi.js} +3 -3
- package/dist/{pie-VRWISCQL-C5SPSvT8.js → pie-VRWISCQL-dILuA3iG.js} +3 -3
- package/dist/{pieDiagram-ADFJNKIX-DhJ1Cx2O.js → pieDiagram-ADFJNKIX-U3LrUqAS.js} +14 -14
- package/dist/{process-output-KyzWazB-.js → process-output-DC1TOnIl.js} +3184 -3207
- package/dist/{quadrantDiagram-AYHSOK5B-DXUFIWlz.js → quadrantDiagram-AYHSOK5B-BVWuq-3R.js} +2 -2
- package/dist/{radar-ZZBFDIW7-BvY0bgSg.js → radar-ZZBFDIW7-DwFrOJDj.js} +3 -3
- package/dist/range-fJeId9Ri.js +30 -0
- package/dist/{requirementDiagram-UZGBJVZJ-DO_gtQIb.js → requirementDiagram-UZGBJVZJ-D0zpQnKC.js} +9 -9
- package/dist/{sankeyDiagram-TZEHDZUN-OZzXEkuG.js → sankeyDiagram-TZEHDZUN-CExy1joT.js} +2 -2
- package/dist/{sequenceDiagram-WL72ISMW-K7nZRifV.js → sequenceDiagram-WL72ISMW-D1BJxLjH.js} +4 -4
- package/dist/{slides-component-CIcSvFh7.js → slides-component-CX2JC-Ws.js} +2 -2
- package/dist/{spec-DYaR1rJh.js → spec-CD7QaCV-.js} +3 -3
- package/dist/{stateDiagram-FKZM4ZOC-DzXJZAq7.js → stateDiagram-FKZM4ZOC-B1S8jGMn.js} +12 -12
- package/dist/{stateDiagram-v2-4FDKWEC3-BZBPUmyF.js → stateDiagram-v2-4FDKWEC3-BH5ozUbc.js} +10 -10
- package/dist/stex-CQDv3aS8.js +4 -0
- package/dist/style.css +1 -1
- package/dist/{timeline-definition-IT6M3QCI-DNoLAh-i.js → timeline-definition-IT6M3QCI-BDT9JAmn.js} +2 -2
- package/dist/{toDate-D6VXexnV.js → toDate-CUqpEbBS.js} +5 -5
- package/dist/{toNumber-xFPoy1OI.js → toNumber-55tjPCWr.js} +2 -2
- package/dist/tooltip-BXEpXV3R.js +404 -0
- package/dist/{treemap-GDKQZRPO-C5OoxpmV.js → treemap-GDKQZRPO-bx2ngsgN.js} +3 -3
- package/dist/{types-CQ-RbYxp.js → types-D_ntCXg0.js} +3 -3
- package/dist/{useAsyncData-Cd4Urlww.js → useAsyncData-rN1nzPaS.js} +2 -2
- package/dist/{useDeepCompareMemoize-DOzKCTzc.js → useDeepCompareMemoize-Ch-7Rk2x.js} +4 -4
- package/dist/{useIframeCapabilities-BVQrlRBd.js → useIframeCapabilities-CqhrVue6.js} +1 -1
- package/dist/useLifecycle-4fA1pHoh.js +177 -0
- package/dist/{useTheme-Dm1WaAGy.js → useTheme-MWfxn4oz.js} +4 -5
- package/dist/{vega-component-BaDgUvQP.js → vega-component-CPhNLfZZ.js} +25 -25
- package/dist/{xychartDiagram-PRI3JC2R-ehVeySMW.js → xychartDiagram-PRI3JC2R-CuAZiqHS.js} +5 -5
- package/dist/{Combination-B--d1_LV.js → zod-C6UGQ3fz.js} +8085 -8151
- package/package.json +8 -41
- package/src/__mocks__/common.ts +4 -4
- package/src/__tests__/main.test.tsx +12 -14
- package/src/components/ai/ai-provider-icon.tsx +3 -2
- package/src/components/app-config/user-config-form.tsx +0 -27
- package/src/components/chat/acp/agent-docs.tsx +3 -3
- package/src/components/chat/acp/agent-panel.tsx +71 -24
- package/src/components/chat/acp/agent-selector.tsx +2 -11
- package/src/components/chat/acp/state.ts +15 -3
- package/src/components/chat/chat-history-popover.tsx +1 -1
- package/src/components/chat/chat-panel.tsx +2 -1
- package/src/components/data-table/TableBottomBar.tsx +7 -1
- package/src/components/data-table/TableTopBar.tsx +31 -35
- package/src/components/data-table/__tests__/columns.test.tsx +7 -7
- package/src/components/data-table/cell-hover-template/types.ts +1 -1
- package/src/components/data-table/cell-hover-text/types.ts +1 -1
- package/src/components/data-table/cell-selection/__tests__/feature.test.ts +1 -1
- package/src/components/data-table/cell-selection/types.ts +4 -3
- package/src/components/data-table/cell-styling/types.ts +1 -1
- package/src/components/data-table/charts/chart-spec/altair-generator.ts +2 -2
- package/src/components/data-table/charts/charts.tsx +2 -2
- package/src/components/data-table/charts/components/chart-items.tsx +1 -1
- package/src/components/data-table/column-explorer-panel/column-explorer.tsx +1 -1
- package/src/components/data-table/column-formatting/types.ts +5 -4
- package/src/components/data-table/column-header.tsx +4 -2
- package/src/components/data-table/column-summary/legacy-chart-spec.ts +1 -1
- package/src/components/data-table/column-wrapping/types.ts +4 -3
- package/src/components/data-table/columns.tsx +4 -1
- package/src/components/data-table/copy-column/types.ts +4 -3
- package/src/components/data-table/data-table.tsx +12 -11
- package/src/components/data-table/focus-row/types.ts +4 -3
- package/src/components/data-table/loading-table.tsx +1 -1
- package/src/components/data-table/pagination.tsx +1 -1
- package/src/components/data-table/range-focus/__tests__/atoms.test.ts +13 -13
- package/src/components/data-table/range-focus/__tests__/use-cell-range-selection.test.ts +9 -11
- package/src/components/data-table/range-focus/atoms.ts +2 -2
- package/src/components/data-table/range-focus/cell-selection-stats.tsx +3 -1
- package/src/components/data-table/renderers.tsx +18 -12
- package/src/components/data-table/row-viewer-panel/row-viewer.tsx +1 -1
- package/src/components/data-table/table-explorer-panel/table-explorer-panel.tsx +2 -2
- package/src/components/dependency-graph/dependency-graph-tree.tsx +1 -1
- package/src/components/editor/__tests__/data-attributes.test.tsx +93 -94
- package/src/components/editor/__tests__/dynamic-favicon.test.tsx +1 -1
- package/src/components/editor/actions/name-cell-input.tsx +4 -2
- package/src/components/editor/actions/pair-with-agent-modal.tsx +179 -0
- package/src/components/editor/actions/useCellActionButton.tsx +4 -2
- package/src/components/editor/actions/useNotebookActions.tsx +10 -0
- package/src/components/editor/ai/add-cell-with-ai.tsx +2 -1
- package/src/components/editor/ai/ai-completion-editor.tsx +1 -1
- package/src/components/editor/app-container.tsx +1 -1
- package/src/components/editor/cell/CellStatus.tsx +4 -5
- package/src/components/editor/cell/cell-context-menu.tsx +4 -2
- package/src/components/editor/cell/code/cell-editor.tsx +3 -2
- package/src/components/editor/cell/toolbar.tsx +2 -1
- package/src/components/editor/chrome/components/contribute-snippet-button.tsx +4 -1
- package/src/components/editor/chrome/components/feedback-button.tsx +4 -1
- package/src/components/editor/chrome/panels/context-aware-panel/context-aware-panel.tsx +1 -1
- package/src/components/editor/chrome/panels/empty-state.tsx +1 -0
- package/src/components/editor/chrome/panels/file-explorer-panel.tsx +0 -10
- package/src/components/editor/chrome/panels/snippets-panel.tsx +1 -1
- package/src/components/editor/chrome/panels/write-secret-modal.tsx +1 -1
- package/src/components/editor/chrome/wrapper/app-chrome.tsx +4 -1
- package/src/components/editor/chrome/wrapper/footer-items/lsp-status.tsx +2 -1
- package/src/components/editor/chrome/wrapper/storage.ts +2 -2
- package/src/components/editor/connections/database/as-code.ts +1 -1
- package/src/components/editor/connections/form-renderers.tsx +1 -1
- package/src/components/editor/connections/storage/as-code.ts +1 -1
- package/src/components/editor/controls/keyboard-shortcuts.tsx +1 -1
- package/src/components/editor/header/filename-input.tsx +4 -1
- package/src/components/editor/links/cell-link-list.tsx +1 -1
- package/src/components/editor/navigation/__tests__/navigation.test.ts +1 -1
- package/src/components/editor/navigation/clipboard.ts +1 -1
- package/src/components/editor/navigation/multi-cell-action-toolbar.tsx +2 -2
- package/src/components/editor/navigation/navigation.ts +3 -3
- package/src/components/editor/notebook-cell.tsx +1 -1
- package/src/components/editor/output/JsonOutput.tsx +6 -6
- package/src/components/editor/output/ansi-reduce.ts +2 -2
- package/src/components/editor/output/console/ConsoleOutput.tsx +2 -2
- package/src/components/editor/renderers/cells-renderer.tsx +1 -1
- package/src/components/editor/renderers/grid-layout/grid-layout.tsx +1 -1
- package/src/components/editor/renderers/plugins.ts +1 -1
- package/src/components/editor/renderers/slides-layout/types.ts +2 -2
- package/src/components/editor/renderers/vertical-layout/__tests__/useFocusFirstEditor.test.ts +2 -2
- package/src/components/editor/renderers/vertical-layout/__tests__/vertical-layout.test.ts +1 -1
- package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +12 -13
- package/src/components/find-replace/find-replace.tsx +3 -1
- package/src/components/forms/form.tsx +1 -1
- package/src/components/forms/options.ts +1 -1
- package/src/components/pages/gallery-page.tsx +1 -1
- package/src/components/static-html/static-banner.tsx +2 -2
- package/src/components/storage/__tests__/storage-snippets.test.ts +4 -6
- package/src/components/terminal/terminal.tsx +4 -4
- package/src/components/tracing/tracing.test.tsx +30 -30
- package/src/components/ui/accordion.tsx +1 -1
- package/src/components/ui/alert-dialog.tsx +1 -1
- package/src/components/ui/badge.tsx +2 -1
- package/src/components/ui/button.tsx +5 -4
- package/src/components/ui/calendar.tsx +3 -2
- package/src/components/ui/checkbox.tsx +1 -1
- package/src/components/ui/combobox.tsx +2 -1
- package/src/components/ui/command.tsx +5 -2
- package/src/components/ui/context-menu.tsx +1 -1
- package/src/components/ui/date-input.tsx +7 -6
- package/src/components/ui/date-picker.tsx +6 -4
- package/src/components/ui/dialog.tsx +1 -1
- package/src/components/ui/draggable-popover.tsx +1 -1
- package/src/components/ui/dropdown-menu.tsx +2 -1
- package/src/components/ui/field.tsx +1 -2
- package/src/components/ui/form.tsx +4 -5
- package/src/components/ui/fullscreen.tsx +4 -1
- package/src/components/ui/label.tsx +1 -1
- package/src/components/ui/navigation.tsx +1 -1
- package/src/components/ui/popover.tsx +1 -1
- package/src/components/ui/progress.tsx +4 -3
- package/src/components/ui/query-param-preserving-link.tsx +4 -2
- package/src/components/ui/radio-group.tsx +1 -1
- package/src/components/ui/range-slider.tsx +1 -1
- package/src/components/ui/scroll-area.tsx +1 -1
- package/src/components/ui/select.tsx +1 -1
- package/src/components/ui/sheet.tsx +3 -2
- package/src/components/ui/slider.tsx +1 -1
- package/src/components/ui/switch.tsx +1 -1
- package/src/components/ui/tabs.tsx +1 -1
- package/src/components/ui/textarea.tsx +1 -2
- package/src/components/ui/toast.tsx +1 -1
- package/src/components/ui/toggle.tsx +1 -1
- package/src/components/ui/tooltip.tsx +1 -1
- package/src/components/variables/variables-table.tsx +1 -1
- package/src/core/ai/context/providers/__tests__/datasource.test.ts +1 -1
- package/src/core/ai/context/providers/__tests__/error.test.ts +1 -1
- package/src/core/ai/context/providers/__tests__/variable.test.ts +1 -1
- package/src/core/ai/context/providers/cell-output.ts +1 -2
- package/src/core/ai/context/registry.ts +2 -2
- package/src/core/ai/tools/edit-notebook-tool.ts +4 -3
- package/src/core/ai/tools/registry.ts +1 -1
- package/src/core/ai/tools/run-cells-tool.ts +4 -3
- package/src/core/cells/__tests__/add-missing-import.test.ts +23 -22
- package/src/core/cells/__tests__/cell.test.ts +14 -13
- package/src/core/cells/__tests__/cells.test.ts +2 -2
- package/src/core/cells/__tests__/scrollCellIntoView.test.ts +1 -1
- package/src/core/cells/__tests__/session.test.ts +1 -1
- package/src/core/cells/__tests__/utils.test.ts +1 -1
- package/src/core/cells/cells.ts +2 -2
- package/src/core/cells/ids.ts +1 -1
- package/src/core/cells/logs.ts +1 -1
- package/src/core/codemirror/ai/request.ts +1 -1
- package/src/core/codemirror/cells/__tests__/extensions.test.ts +15 -17
- package/src/core/codemirror/cells/traceback-decorations.ts +1 -1
- package/src/core/codemirror/copilot/__tests__/language-server.test.ts +1 -1
- package/src/core/codemirror/copilot/__tests__/transport.test.ts +129 -3
- package/src/core/codemirror/copilot/client.ts +9 -2
- package/src/core/codemirror/copilot/getCodes.ts +1 -1
- package/src/core/codemirror/copilot/language-server.ts +12 -1
- package/src/core/codemirror/copilot/transport.ts +34 -8
- package/src/core/codemirror/copilot/types.ts +1 -1
- package/src/core/codemirror/facet.ts +1 -1
- package/src/core/codemirror/language/__tests__/sql.test.ts +4 -4
- package/src/core/codemirror/language/languages/markdown.ts +1 -3
- package/src/core/codemirror/language/languages/python.ts +4 -0
- package/src/core/codemirror/language/languages/sql/completion-builder.ts +1 -1
- package/src/core/codemirror/language/languages/sql/completion-sources.tsx +4 -6
- package/src/core/codemirror/language/languages/sql/sql.ts +1 -3
- package/src/core/codemirror/language/metadata.ts +1 -1
- package/src/core/codemirror/language/panel/sql.tsx +4 -1
- package/src/core/codemirror/language/types.ts +1 -1
- package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +1 -1
- package/src/core/codemirror/lsp/notebook-lsp.ts +1 -1
- package/src/core/codemirror/misc/__tests__/dnd.test.ts +1 -1
- package/src/core/codemirror/reactive-references/__tests__/analyzer.test.ts +28 -42
- package/src/core/codemirror/rtc/loro/awareness.ts +1 -1
- package/src/core/config/__tests__/config-schema.test.ts +2 -6
- package/src/core/config/config-schema.ts +0 -1
- package/src/core/config/feature-flag.tsx +1 -3
- package/src/core/datasets/data-source-connections.ts +4 -2
- package/src/core/datasets/state.ts +1 -1
- package/src/core/dom/__tests__/htmlUtils.test.ts +8 -14
- package/src/core/dom/__tests__/outline.test.ts +2 -3
- package/src/core/dom/outline.ts +1 -1
- package/src/core/dom/uiregistry.ts +42 -8
- package/src/core/edit-app.tsx +4 -1
- package/src/core/export/__tests__/hooks.test.ts +1 -1
- package/src/core/hotkeys/__tests__/hotkeys.test.ts +1 -1
- package/src/core/hotkeys/shortcuts.ts +1 -1
- package/src/core/islands/__tests__/bridge.test.ts +2 -2
- package/src/core/islands/__tests__/parse.test.ts +8 -7
- package/src/core/islands/bridge.ts +2 -2
- package/src/core/islands/components/output-wrapper.tsx +1 -1
- package/src/core/islands/parse.ts +1 -1
- package/src/core/lsp/__tests__/transport.test.ts +1 -1
- package/src/core/network/CachingRequestRegistry.ts +1 -1
- package/src/core/network/DeferredRequestRegistry.ts +1 -1
- package/src/core/network/__tests__/requests-network.test.ts +1 -1
- package/src/core/network/api.ts +2 -2
- package/src/core/network/requests-lazy.ts +1 -1
- package/src/core/network/requests-toasting.tsx +1 -1
- package/src/core/runtime/runtime.ts +1 -0
- package/src/core/saving/__tests__/filename.test.ts +7 -6
- package/src/core/static/__tests__/download-html.test.ts +16 -15
- package/src/core/static/__tests__/files.test.ts +30 -28
- package/src/core/static/files.ts +1 -1
- package/src/core/vscode/vscode-bindings.ts +1 -1
- package/src/core/wasm/bridge.ts +3 -3
- package/src/core/wasm/worker/tracer.ts +1 -1
- package/src/core/websocket/useWebSocket.tsx +5 -3
- package/src/css/app/Cell.css +5 -2
- package/src/css/globals.css +18 -16
- package/src/custom.d.ts +1 -1
- package/src/hooks/__tests__/useDuplicateShortcuts.test.ts +3 -3
- package/src/hooks/debug.ts +3 -3
- package/src/hooks/useDebounce.ts +1 -1
- package/src/hooks/useEventListener.ts +1 -1
- package/src/hooks/useHotkey.ts +1 -1
- package/src/hooks/useLifecycle.ts +2 -2
- package/src/hooks/useNonce.ts +1 -1
- package/src/hooks/useResizeObserver.ts +2 -2
- package/src/main.tsx +1 -1
- package/src/plugins/core/BadPlugin.tsx +7 -6
- package/src/plugins/core/RenderHTML.tsx +3 -3
- package/src/plugins/core/__test__/registerReactComponent.test.ts +1 -1
- package/src/plugins/core/registerReactComponent.tsx +4 -4
- package/src/plugins/core/rpc.ts +1 -1
- package/src/plugins/impl/CheckboxPlugin.tsx +4 -1
- package/src/plugins/impl/DataEditorPlugin.tsx +8 -3
- package/src/plugins/impl/DataTablePlugin.tsx +5 -2
- package/src/plugins/impl/FileBrowserPlugin.tsx +1 -1
- package/src/plugins/impl/FormPlugin.tsx +2 -3
- package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +4 -1
- package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +1 -1
- package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +43 -15
- package/src/plugins/impl/anywidget/AnyWidgetPlugin.tsx +3 -12
- package/src/plugins/impl/anywidget/__tests__/model.test.ts +2 -2
- package/src/plugins/impl/anywidget/model.ts +1 -1
- package/src/plugins/impl/anywidget/types.ts +2 -2
- package/src/plugins/impl/anywidget/widget-binding.ts +1 -1
- package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
- package/src/plugins/impl/chat/chat-ui.tsx +5 -2
- package/src/plugins/impl/data-editor/glide-data-editor.tsx +2 -2
- package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +2 -2
- package/src/plugins/impl/data-explorer/components/query-form.tsx +1 -1
- package/src/plugins/impl/data-explorer/functions/function.ts +1 -1
- package/src/plugins/impl/data-explorer/queries/types.ts +1 -1
- package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -1
- package/src/plugins/impl/data-frames/forms/__tests__/form.test.tsx +7 -9
- package/src/plugins/impl/data-frames/forms/renderers.tsx +1 -1
- package/src/plugins/impl/data-frames/utils/operators.ts +1 -1
- package/src/plugins/impl/matplotlib/MatplotlibPlugin.tsx +1 -1
- package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +1 -1
- package/src/plugins/impl/panel/PanelPlugin.tsx +2 -2
- package/src/plugins/impl/plotly/Plot.tsx +3 -3
- package/src/plugins/impl/plotly/PlotlyPlugin.tsx +65 -103
- package/src/plugins/impl/plotly/__tests__/PlotlyPlugin.test.tsx +114 -0
- package/src/plugins/impl/plotly/__tests__/selection.test.ts +199 -0
- package/src/plugins/impl/plotly/selection.ts +333 -0
- package/src/plugins/impl/vega/__tests__/make-selectable.test.ts +13 -14
- package/src/plugins/impl/vega/batched.ts +1 -1
- package/src/plugins/impl/vega/make-selectable.ts +3 -3
- package/src/plugins/impl/vega/types.ts +1 -1
- package/src/plugins/layout/DownloadPlugin.tsx +1 -1
- package/src/plugins/layout/ImageComparisonPlugin.tsx +1 -3
- package/src/plugins/layout/LazyPlugin.tsx +1 -1
- package/src/plugins/layout/RoutesPlugin.tsx +1 -1
- package/src/plugins/layout/mermaid/mermaid.tsx +1 -1
- package/src/plugins/plugins.ts +1 -1
- package/src/plugins/stateless-plugin.ts +4 -2
- package/src/stories/data-explorer.stories.tsx +1 -1
- package/src/stories/dataframe.stories.tsx +1 -1
- package/src/stories/editor.stories.tsx +1 -1
- package/src/stories/select.stories.tsx +1 -1
- package/src/stories/switchable-multi-select.stories.tsx +1 -1
- package/src/utils/Logger.ts +1 -1
- package/src/utils/__tests__/arrays.test.ts +1 -1
- package/src/utils/__tests__/blob.test.ts +1 -1
- package/src/utils/__tests__/cell-urls.test.ts +24 -21
- package/src/utils/__tests__/dates.test.ts +1 -1
- package/src/utils/__tests__/errors.test.ts +1 -1
- package/src/utils/__tests__/filenames.test.ts +15 -14
- package/src/utils/__tests__/json-parser.test.ts +14 -21
- package/src/utils/__tests__/multi-map.test.ts +3 -3
- package/src/utils/__tests__/objects.test.ts +3 -3
- package/src/utils/__tests__/path.test.ts +34 -31
- package/src/utils/__tests__/urls.test.ts +19 -18
- package/src/utils/__tests__/versions.test.ts +5 -5
- package/src/utils/__tests__/waitForWs.test.ts +1 -1
- package/src/utils/arrays.ts +2 -2
- package/src/utils/assertNever.ts +1 -1
- package/src/utils/batch-requests.ts +2 -2
- package/src/utils/createReducer.ts +2 -2
- package/src/utils/id-tree.tsx +2 -2
- package/src/utils/idle.ts +1 -1
- package/src/utils/invariant.ts +1 -2
- package/src/utils/json/base64.ts +2 -5
- package/src/utils/maps.ts +1 -1
- package/src/utils/math.ts +0 -1
- package/src/utils/mime-types.ts +1 -1
- package/src/utils/multi-map.ts +1 -1
- package/src/utils/objects.ts +1 -1
- package/src/utils/once.ts +2 -2
- package/src/utils/staticImplements.ts +1 -1
- package/src/utils/storage/jotai.ts +1 -1
- package/src/utils/tracer.ts +3 -2
- package/dist/_basePickBy-QjOmBDRE.js +0 -110
- package/dist/_baseSet-xgn1IbGV.js +0 -27
- package/dist/architecture-7HQA4BMR-BRyVh_Za.js +0 -6
- package/dist/assets/__vite-browser-external-Us1ds95c.js +0 -1
- package/dist/dist-B0R_ZM4-.js +0 -6
- package/dist/dist-B4a9_9pj.js +0 -5
- package/dist/dist-BCSUKEwO.js +0 -5
- package/dist/dist-BONIDQq6.js +0 -5
- package/dist/dist-BYeRx2hb.js +0 -5
- package/dist/dist-D2Rk1j4R.js +0 -1381
- package/dist/dist-DZjX5TYv.js +0 -5
- package/dist/dist-Dkw9x6kc.js +0 -5
- package/dist/dist-Ds6UaXGR.js +0 -6
- package/dist/dist-KuEJ1Q53.js +0 -8
- package/dist/dist-S72WNyTZ.js +0 -5
- package/dist/dist-bTG-yssT.js +0 -5
- package/dist/dist-diF0sguc.js +0 -8
- package/dist/dist-mJ84BIgu.js +0 -8
- package/dist/dist-wSIhFWQz.js +0 -8
- package/dist/get-CqrzlV1v.js +0 -68
- package/dist/range-CYz5jI--.js +0 -17
- package/dist/stex-CZyTRGVB.js +0 -4
- package/dist/tooltip-DGHTbHl5.js +0 -404
- package/dist/useLifecycle-Dids8BPm.js +0 -173
- /package/dist/{dist-KZI_BHqV.js → dist-CxZvoNao.js} +0 -0
- /package/dist/{invariant-D4hPsZFI.js → invariant-e8eBgdux.js} +0 -0
- /package/dist/{isArrayLikeObject-C-hFPChh.js → isArrayLikeObject-LXbTYiBa.js} +0 -0
- /package/dist/{main-CvkAPtaq.js → main-XimWhSi_.js} +0 -0
- /package/dist/{purify.es-ukiMXY-F.js → purify.es-hTCfRGdl.js} +0 -0
- /package/dist/{react-dom-BKwCWYPW.js → react-dom-BSUuJjCR.js} +0 -0
- /package/dist/{stex-Ze8D4R_5.js → stex-D887Ylhf.js} +0 -0
|
@@ -192,20 +192,21 @@ describe("patchVegaLoader - loader.http", () => {
|
|
|
192
192
|
"http://foo.com/virtual-file.json",
|
|
193
193
|
];
|
|
194
194
|
|
|
195
|
-
it.each(
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
195
|
+
it.each(pathsToTest)(
|
|
196
|
+
"should return file content for virtual files for %s",
|
|
197
|
+
async (s) => {
|
|
198
|
+
const virtualFiles = {
|
|
199
|
+
"/virtual-file.json":
|
|
200
|
+
"data:application/json;base64,eyJrZXkiOiAidmFsdWUifQ==" as DataURLString,
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
const loader = createLoader();
|
|
204
|
+
const unpatch = patchVegaLoader(loader, virtualFiles);
|
|
205
|
+
const content = await loader.http(s);
|
|
206
|
+
unpatch();
|
|
207
|
+
expect(content).toBe('{"key": "value"}');
|
|
208
|
+
},
|
|
209
|
+
);
|
|
209
210
|
|
|
210
211
|
it("should fallback to original http method for non-virtual files", async () => {
|
|
211
212
|
const loader = createLoader();
|
|
@@ -236,20 +237,21 @@ describe("patchVegaLoader - loader.load", () => {
|
|
|
236
237
|
"http://foo.com/virtual-file.json",
|
|
237
238
|
];
|
|
238
239
|
|
|
239
|
-
it.each(
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
240
|
+
it.each(pathsToTest)(
|
|
241
|
+
"should return file content for virtual files for %s",
|
|
242
|
+
async (s) => {
|
|
243
|
+
const virtualFiles = {
|
|
244
|
+
"/virtual-file.json":
|
|
245
|
+
"data:application/json;base64,eyJrZXkiOiAidmFsdWUifQ==" as DataURLString,
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
const loader = createLoader();
|
|
249
|
+
const unpatch = patchVegaLoader(loader, virtualFiles);
|
|
250
|
+
const content = await loader.load(s);
|
|
251
|
+
unpatch();
|
|
252
|
+
expect(content).toBe('{"key": "value"}');
|
|
253
|
+
},
|
|
254
|
+
);
|
|
253
255
|
|
|
254
256
|
it("should fallback to original load method for non-virtual files", async () => {
|
|
255
257
|
const loader = createLoader();
|
package/src/core/static/files.ts
CHANGED
|
@@ -18,7 +18,7 @@ export function patchFetch(
|
|
|
18
18
|
|
|
19
19
|
// Override the global fetch so when /@file/ is used, it returns the blob data
|
|
20
20
|
window.fetch = async (input, init) => {
|
|
21
|
-
//
|
|
21
|
+
// oxlint-disable-next-line typescript/no-base-to-string
|
|
22
22
|
const urlString = input instanceof Request ? input.url : input.toString();
|
|
23
23
|
|
|
24
24
|
if (urlString.startsWith("data:")) {
|
|
@@ -6,7 +6,7 @@ import { isPlatformMac } from "../hotkeys/shortcuts";
|
|
|
6
6
|
import { isWasm } from "../wasm/utils";
|
|
7
7
|
|
|
8
8
|
export const isEmbedded =
|
|
9
|
-
//
|
|
9
|
+
// oxlint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope
|
|
10
10
|
typeof window !== "undefined" && window.parent !== window;
|
|
11
11
|
|
|
12
12
|
// To enable keyboard shortcuts of VS Code when the iframe is focused,
|
package/src/core/wasm/bridge.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-explicit-any */
|
|
3
3
|
|
|
4
4
|
import { toast } from "@/components/ui/use-toast";
|
|
5
5
|
import { userConfigAtom } from "@/core/config/config";
|
|
@@ -76,7 +76,7 @@ export class PyodideBridge implements RunRequests, EditRequests {
|
|
|
76
76
|
|
|
77
77
|
// Create save worker
|
|
78
78
|
const saveWorker = new Worker(
|
|
79
|
-
//
|
|
79
|
+
// oxlint-disable-next-line unicorn/relative-url-style
|
|
80
80
|
new URL("./worker/save-worker.ts", import.meta.url),
|
|
81
81
|
{
|
|
82
82
|
type: "module",
|
|
@@ -96,7 +96,7 @@ export class PyodideBridge implements RunRequests, EditRequests {
|
|
|
96
96
|
|
|
97
97
|
// Create a worker
|
|
98
98
|
const worker = new Worker(
|
|
99
|
-
//
|
|
99
|
+
// oxlint-disable-next-line unicorn/relative-url-style
|
|
100
100
|
new URL("./worker/worker.ts", import.meta.url),
|
|
101
101
|
{
|
|
102
102
|
type: "module",
|
|
@@ -30,6 +30,8 @@ function createConnectionTransport(
|
|
|
30
30
|
// Create a connection transport using the ReconnectingWebSocket from partysocket
|
|
31
31
|
// This handles reconnecting when the connection is lost.
|
|
32
32
|
const urlProvider = options.url; // We don't call the URL provider now since it may change (i.e. if the runtime redirects)
|
|
33
|
+
// Cast needed: ReconnectingWebSocket types readyState as `number`
|
|
34
|
+
// but IConnectionTransport expects `0 | 1 | 2 | 3`
|
|
33
35
|
return new ReconnectingWebSocket(urlProvider, undefined, {
|
|
34
36
|
// We don't want Infinity retries
|
|
35
37
|
maxRetries: 10,
|
|
@@ -38,7 +40,7 @@ function createConnectionTransport(
|
|
|
38
40
|
// long timeout -- the server can become slow when many notebooks
|
|
39
41
|
// are open.
|
|
40
42
|
connectionTimeout: 10_000,
|
|
41
|
-
});
|
|
43
|
+
}) as unknown as IConnectionTransport;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
/**
|
|
@@ -47,7 +49,7 @@ function createConnectionTransport(
|
|
|
47
49
|
export function useConnectionTransport(options: UseConnectionTransportOptions) {
|
|
48
50
|
const { onOpen, onMessage, onClose, onError, waitToConnect } = options;
|
|
49
51
|
|
|
50
|
-
//
|
|
52
|
+
// oxlint-disable-next-line react/hook-use-state
|
|
51
53
|
const [transport] = useState<IConnectionTransport>(() => {
|
|
52
54
|
const socket = createConnectionTransport(options);
|
|
53
55
|
|
|
@@ -81,7 +83,7 @@ export function useConnectionTransport(options: UseConnectionTransportOptions) {
|
|
|
81
83
|
transport.removeEventListener("error", onError);
|
|
82
84
|
transport.removeEventListener("message", onMessage);
|
|
83
85
|
};
|
|
84
|
-
//
|
|
86
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
85
87
|
}, [transport]);
|
|
86
88
|
|
|
87
89
|
return transport;
|
package/src/css/app/Cell.css
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
border: 1px solid var(--gray-4);
|
|
16
16
|
|
|
17
17
|
@apply divide-y divide-(--gray-5);
|
|
18
|
+
|
|
18
19
|
&:hover {
|
|
19
20
|
border-color: var(--gray-6);
|
|
20
21
|
}
|
|
@@ -99,8 +100,8 @@
|
|
|
99
100
|
/* Special case for particular components */
|
|
100
101
|
|
|
101
102
|
.output-area:has(
|
|
102
|
-
|
|
103
|
-
|
|
103
|
+
> .output:only-child > marimo-ui-element:only-child > marimo-table
|
|
104
|
+
) {
|
|
104
105
|
padding: 0 0 5px;
|
|
105
106
|
max-height: none;
|
|
106
107
|
overflow: hidden;
|
|
@@ -112,6 +113,7 @@
|
|
|
112
113
|
margin-top: 0.25rem;
|
|
113
114
|
border: none;
|
|
114
115
|
border-radius: 0;
|
|
116
|
+
border-top-left-radius: 9px;
|
|
115
117
|
}
|
|
116
118
|
|
|
117
119
|
marimo-table::part(table-wrapper) {
|
|
@@ -385,6 +387,7 @@
|
|
|
385
387
|
border-top-left-radius: 9px;
|
|
386
388
|
border-top-right-radius: 9px;
|
|
387
389
|
}
|
|
390
|
+
|
|
388
391
|
div[data-ai-input-open="true"] .cm-editor {
|
|
389
392
|
border-top-left-radius: 0;
|
|
390
393
|
border-top-right-radius: 0;
|
package/src/css/globals.css
CHANGED
|
@@ -147,47 +147,49 @@
|
|
|
147
147
|
--shadow-none: none;
|
|
148
148
|
--shadow-xxs: 0px 0px 2px 0px var(--base-shadow-darker);
|
|
149
149
|
|
|
150
|
-
/*
|
|
150
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
151
151
|
--shadow-xs: 1px 1px 2px 0px var(--base-shadow), 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
|
|
152
152
|
|
|
153
|
-
/*
|
|
153
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
154
154
|
--shadow-sm: 2px 2px 2px 0px var(--base-shadow), 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
|
|
155
155
|
|
|
156
|
-
/*
|
|
156
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
157
157
|
--shadow-md: 4px 4px 4px 0px var(--base-shadow), 0 0px 4px 0px hsl(0deg 0% 60% / var(--base-shadow-opacity));
|
|
158
158
|
|
|
159
|
-
/*
|
|
159
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
160
160
|
--shadow-lg: 5px 6px 4px 0px var(--base-shadow), 0 0px 4px 0px hsl(0deg 0% 75% / var(--base-shadow-opacity));
|
|
161
161
|
|
|
162
|
-
/*
|
|
162
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
163
163
|
--shadow-xl: 8px 9px 4px 0px var(--base-shadow), 0 0px 6px 0px hsl(0deg 0% 85% / var(--base-shadow-opacity));
|
|
164
164
|
|
|
165
|
-
/*
|
|
165
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
166
166
|
--shadow-2xl: 10px 12px 10px 0px var(--base-shadow), 0 0px 8px 0px hsl(0deg 0% 90% / var(--base-shadow-opacity));
|
|
167
167
|
|
|
168
|
-
/*
|
|
168
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
169
169
|
--shadow-xs-solid: 1px 1px 0px 0px var(--base-shadow-darker), 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
|
|
170
170
|
|
|
171
|
-
/*
|
|
171
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
172
172
|
--shadow-sm-solid: 2px 2px 0px 0px var(--base-shadow-darker), 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
|
|
173
173
|
|
|
174
|
-
/*
|
|
174
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
175
175
|
--shadow-md-solid: 4px 4px 0px 0px var(--base-shadow-darker), 0 0px 2px 0px hsl(0deg 0% 60% / 50%);
|
|
176
176
|
|
|
177
|
-
/*
|
|
177
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
178
178
|
--shadow-lg-solid: 5px 6px 0px 0px var(--base-shadow-darker), 0 0px 4px 0px hsl(0deg 0% 75% / 50%);
|
|
179
179
|
|
|
180
|
-
/*
|
|
180
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
181
181
|
--shadow-xl-solid: 7px 8px 0px 0px var(--base-shadow-darker), 0 0px 4px 0px hsl(0deg 0% 85% / 50%);
|
|
182
182
|
|
|
183
|
-
/*
|
|
183
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
184
184
|
--shadow-2xl-solid: 10px 12px 0px 0px var(--base-shadow-darker), 0 0px 8px 0px hsl(0deg 0% 90% / 50%);
|
|
185
185
|
|
|
186
186
|
/* Solid shadows with lighter shade color */
|
|
187
187
|
|
|
188
|
-
/*
|
|
189
|
-
--shadow-sm-solid-shade:
|
|
188
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
189
|
+
--shadow-sm-solid-shade:
|
|
190
|
+
2px 2px 0px 0px var(--base-shadow), 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
|
|
190
191
|
|
|
191
|
-
/*
|
|
192
|
-
--shadow-md-solid-shade:
|
|
192
|
+
/* oxfmt-ignore: definition needs to be oneline or breaks variants */
|
|
193
|
+
--shadow-md-solid-shade:
|
|
194
|
+
4px 4px 0px 0px var(--base-shadow), 0 0px 2px 0px hsl(0deg 0% 60% / 50%);
|
|
193
195
|
}
|
package/src/custom.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ function createHotkeys(
|
|
|
17
17
|
keys: Partial<Record<HotkeyAction, Hotkey>>,
|
|
18
18
|
): Record<HotkeyAction, Hotkey> {
|
|
19
19
|
return new Proxy(keys as Record<HotkeyAction, Hotkey>, {
|
|
20
|
-
//
|
|
20
|
+
// oxlint-ignore-next-line -- ok to have three arguments here (It's a web API)
|
|
21
21
|
get(target, p, receiver) {
|
|
22
22
|
const key = Reflect.get(target, p, receiver);
|
|
23
23
|
if (key === "undefined") {
|
|
@@ -145,7 +145,7 @@ describe("findDuplicateShortcuts", () => {
|
|
|
145
145
|
expect(result.duplicates).toHaveLength(2);
|
|
146
146
|
|
|
147
147
|
// Check that both duplicate groups are detected
|
|
148
|
-
const duplicateKeys = result.duplicates.map((d) => d.key).
|
|
148
|
+
const duplicateKeys = result.duplicates.map((d) => d.key).toSorted();
|
|
149
149
|
expect(duplicateKeys).toEqual(["cmd-b", "cmd-enter"]);
|
|
150
150
|
|
|
151
151
|
expect(result.hasDuplicate("cell.format")).toBe(true);
|
|
@@ -402,7 +402,7 @@ describe("findDuplicateShortcuts", () => {
|
|
|
402
402
|
});
|
|
403
403
|
|
|
404
404
|
const provider = new HotkeyProvider(hotkeys, { platform: "mac" });
|
|
405
|
-
//
|
|
405
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
406
406
|
const result = findDuplicateShortcuts(provider, "NonExistent" as any);
|
|
407
407
|
|
|
408
408
|
// Should still work normally and detect the duplicate
|
package/src/hooks/debug.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable react-hooks/rules-of-hooks */
|
|
3
3
|
|
|
4
4
|
import { dequal } from "dequal";
|
|
5
5
|
import { useEffect, useMemo, useRef } from "react";
|
|
@@ -21,7 +21,7 @@ export function useDebugMounting(name: string) {
|
|
|
21
21
|
return () => {
|
|
22
22
|
Logger.debug(`🐛 [${name}] unmounted. Renders: ${renders.current}`);
|
|
23
23
|
};
|
|
24
|
-
//
|
|
24
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
25
25
|
}, []);
|
|
26
26
|
|
|
27
27
|
useEffect(() => {
|
|
@@ -111,6 +111,6 @@ export function useMemoDebugChanges<T>(
|
|
|
111
111
|
previousDeps.current = deps;
|
|
112
112
|
|
|
113
113
|
return fn();
|
|
114
|
-
//
|
|
114
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
115
115
|
}, deps);
|
|
116
116
|
}
|
package/src/hooks/useDebounce.ts
CHANGED
|
@@ -78,7 +78,7 @@ export function useDebounceControlledState<T>(opts: {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
//
|
|
81
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
82
82
|
export function useDebouncedCallback<T extends (...args: any[]) => unknown>(
|
|
83
83
|
callback: T,
|
|
84
84
|
delay: number,
|
|
@@ -57,7 +57,7 @@ export function useEventListener(
|
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
//
|
|
60
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
61
61
|
const eventListener = (event: any) => savedListener.current(event);
|
|
62
62
|
target.addEventListener(type, eventListener, options);
|
|
63
63
|
|
package/src/hooks/useHotkey.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { useEventListener } from "./useEventListener";
|
|
|
14
14
|
|
|
15
15
|
type HotkeyHandler = (
|
|
16
16
|
evt?: KeyboardEvent,
|
|
17
|
-
//
|
|
17
|
+
// oxlint-disable-next-line typescript/no-invalid-void-type
|
|
18
18
|
) => boolean | void | undefined | Promise<void>;
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -5,7 +5,7 @@ import { type EffectCallback, useEffect } from "react";
|
|
|
5
5
|
* Wrapper around useEffect that makes it clearer that the effect is run, just on mount.
|
|
6
6
|
*/
|
|
7
7
|
export function useOnMount(effect: EffectCallback) {
|
|
8
|
-
//
|
|
8
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
9
9
|
useEffect(effect, []);
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ export function useOnMount(effect: EffectCallback) {
|
|
|
13
13
|
* Wrapper around useEffect that makes it clearer that the effect is run, just on unmount.
|
|
14
14
|
*/
|
|
15
15
|
export function useOnUnmount(effect: EffectCallback) {
|
|
16
|
-
//
|
|
16
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
17
17
|
useEffect(() => {
|
|
18
18
|
return effect();
|
|
19
19
|
}, []);
|
package/src/hooks/useNonce.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { useCallback, useState } from "react";
|
|
3
3
|
|
|
4
4
|
export function useNonce() {
|
|
5
|
-
//
|
|
5
|
+
// oxlint-disable-next-line react/hook-use-state
|
|
6
6
|
const [, setNonce] = useState(0);
|
|
7
7
|
return useCallback(() => {
|
|
8
8
|
setNonce((n) => n + 1);
|
|
@@ -28,10 +28,10 @@ export function useResizeObserver<T extends HTMLElement = HTMLElement>(
|
|
|
28
28
|
options: UseResizeObserverOptions<T>,
|
|
29
29
|
): void {
|
|
30
30
|
const { ref, box = "content-box", skip } = options;
|
|
31
|
-
//
|
|
31
|
+
// oxlint-disable-next-line react/hook-use-state
|
|
32
32
|
const previousSize = useRef<Size>({ ...initialSize });
|
|
33
33
|
const onResize = useRef<((size: Size) => void) | undefined>(undefined);
|
|
34
|
-
//
|
|
34
|
+
// oxlint-disable-next-line react-hooks/react-compiler
|
|
35
35
|
onResize.current = options.onResize;
|
|
36
36
|
|
|
37
37
|
useEffect(() => {
|
package/src/main.tsx
CHANGED
|
@@ -8,7 +8,7 @@ declare global {
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
//
|
|
11
|
+
// oxlint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope
|
|
12
12
|
const el = document.getElementById("root");
|
|
13
13
|
if (el) {
|
|
14
14
|
if (!window.__MARIMO_MOUNT_CONFIG__) {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
import { Accordion as AccordionPrimitive } from "radix-ui";
|
|
4
|
+
|
|
5
|
+
const Accordion = AccordionPrimitive.Root;
|
|
6
|
+
const AccordionContent = AccordionPrimitive.Content;
|
|
7
|
+
const AccordionItem = AccordionPrimitive.Item;
|
|
8
|
+
const AccordionTrigger = AccordionPrimitive.Trigger;
|
|
9
|
+
|
|
9
10
|
import type { JSX } from "react";
|
|
10
11
|
import { ZodError } from "zod";
|
|
11
12
|
import { EmotionCacheProvider } from "@/components/editor/output/EmotionCacheProvider";
|
|
@@ -47,7 +47,7 @@ const removeWrappingBodyTags: TransformFn = (
|
|
|
47
47
|
if (isValidElement(reactNode) && "props" in reactNode) {
|
|
48
48
|
const props = reactNode.props as { children?: ReactNode };
|
|
49
49
|
const children = props.children;
|
|
50
|
-
return <>{children}</>; //
|
|
50
|
+
return <>{children}</>; // oxlint-disable-line react/jsx-no-useless-fragment
|
|
51
51
|
}
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
@@ -62,7 +62,7 @@ const removeWrappingHtmlTags: TransformFn = (
|
|
|
62
62
|
if (isValidElement(reactNode) && "props" in reactNode) {
|
|
63
63
|
const props = reactNode.props as { children?: ReactNode };
|
|
64
64
|
const children = props.children;
|
|
65
|
-
return <>{children}</>; //
|
|
65
|
+
return <>{children}</>; // oxlint-disable-line react/jsx-no-useless-fragment
|
|
66
66
|
}
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
@@ -104,7 +104,7 @@ const replaceSrcScripts = (domNode: DOMNode): JSX.Element | undefined => {
|
|
|
104
104
|
script.src = src;
|
|
105
105
|
document.head.append(script);
|
|
106
106
|
}
|
|
107
|
-
//
|
|
107
|
+
// oxlint-disable-next-line react/jsx-no-useless-fragment
|
|
108
108
|
return <></>;
|
|
109
109
|
}
|
|
110
110
|
};
|
|
@@ -58,7 +58,7 @@ describe("isCustomMarimoElement", () => {
|
|
|
58
58
|
});
|
|
59
59
|
|
|
60
60
|
describe("connectedCallback - light DOM nesting detection", () => {
|
|
61
|
-
//
|
|
61
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
62
62
|
let createRootSpy: any;
|
|
63
63
|
const mockRoot = {
|
|
64
64
|
render: vi.fn(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
/*
|
|
3
|
+
/* oxlint-disable unicorn/prefer-spread */
|
|
4
4
|
/**
|
|
5
5
|
* WebComponent Factory for React Components
|
|
6
6
|
*
|
|
@@ -88,7 +88,7 @@ interface PluginSlotProps<T> {
|
|
|
88
88
|
|
|
89
89
|
/* Handles synchronization of value on behalf of the component */
|
|
90
90
|
|
|
91
|
-
//
|
|
91
|
+
// oxlint-disable-next-line react/function-component-definition
|
|
92
92
|
function PluginSlotInternal<T>(
|
|
93
93
|
{ hostElement, plugin, children, getInitialValue }: PluginSlotProps<T>,
|
|
94
94
|
ref: React.Ref<PluginSlotHandle>,
|
|
@@ -231,7 +231,7 @@ function PluginSlotInternal<T>(
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
return methods;
|
|
234
|
-
//
|
|
234
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
235
235
|
}, [plugin.functions, hostElement, resetNonce]);
|
|
236
236
|
|
|
237
237
|
// If we failed to parse the initial value, render an error
|
|
@@ -265,7 +265,7 @@ function PluginSlotInternal<T>(
|
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
const PluginSlot: React.ForwardRefExoticComponent<
|
|
268
|
-
//
|
|
268
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
269
269
|
PluginSlotProps<any> & React.RefAttributes<PluginSlotHandle>
|
|
270
270
|
> = React.forwardRef(PluginSlotInternal);
|
|
271
271
|
|
package/src/plugins/core/rpc.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type { Checkbox as CheckboxPrimitive } from "radix-ui";
|
|
4
|
+
|
|
5
|
+
type CheckedState = CheckboxPrimitive.CheckedState;
|
|
6
|
+
|
|
4
7
|
import { type JSX, useId } from "react";
|
|
5
8
|
import { z } from "zod";
|
|
6
9
|
import { Checkbox } from "../../components/ui/checkbox";
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import glideCss from "@glideapps/glide-data-grid/dist/index.css?inline";
|
|
4
|
-
import {
|
|
4
|
+
import { Tooltip } from "radix-ui";
|
|
5
|
+
|
|
6
|
+
const TooltipProvider = Tooltip.Provider;
|
|
7
|
+
|
|
5
8
|
import React, { useState } from "react";
|
|
6
9
|
import { z } from "zod";
|
|
7
10
|
import { inferFieldTypes } from "@/components/data-table/columns";
|
|
@@ -73,8 +76,10 @@ export const DataEditorPlugin = createPlugin<Edits>("marimo-data-editor", {
|
|
|
73
76
|
);
|
|
74
77
|
});
|
|
75
78
|
|
|
76
|
-
interface Props
|
|
77
|
-
|
|
79
|
+
interface Props extends Omit<
|
|
80
|
+
DataEditorProps<object>,
|
|
81
|
+
"data" | "onAddEdits" | "onAddRows"
|
|
82
|
+
> {
|
|
78
83
|
data: TableData<object>;
|
|
79
84
|
edits: Edits;
|
|
80
85
|
onEdits: Setter<Edits>;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { Provider as SlotzProvider } from "@marimo-team/react-slotz";
|
|
4
|
-
import {
|
|
4
|
+
import { Tooltip } from "radix-ui";
|
|
5
|
+
|
|
6
|
+
const TooltipProvider = Tooltip.Provider;
|
|
7
|
+
|
|
5
8
|
import type {
|
|
6
9
|
ColumnFiltersState,
|
|
7
10
|
OnChangeFn,
|
|
@@ -202,7 +205,7 @@ interface Data<T> {
|
|
|
202
205
|
cellHoverTexts?: Record<string, Record<string, string | null>> | null;
|
|
203
206
|
}
|
|
204
207
|
|
|
205
|
-
//
|
|
208
|
+
// oxlint-disable-next-line typescript/consistent-type-definitions
|
|
206
209
|
type DataTableFunctions = {
|
|
207
210
|
download_as: DownloadAsArgs;
|
|
208
211
|
get_column_summaries: <T>(opts: {}) => Promise<ColumnSummaries<T>>;
|
|
@@ -62,7 +62,7 @@ interface FileInfo {
|
|
|
62
62
|
is_directory: boolean;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
//
|
|
65
|
+
// oxlint-disable-next-line typescript/consistent-type-definitions
|
|
66
66
|
type PluginFunctions = {
|
|
67
67
|
list_directory: (req: { path: string }) => Promise<{
|
|
68
68
|
files: FileInfo[];
|
|
@@ -44,7 +44,7 @@ interface Data {
|
|
|
44
44
|
* is clicked, this plugin assumes the value of the associated plugin.
|
|
45
45
|
*/
|
|
46
46
|
|
|
47
|
-
//
|
|
47
|
+
// oxlint-disable-next-line typescript/consistent-type-definitions
|
|
48
48
|
type Functions = {
|
|
49
49
|
validate: (req: { value?: unknown }) => Promise<string | undefined | null>;
|
|
50
50
|
};
|
|
@@ -80,8 +80,7 @@ export const FormPlugin = createPlugin("marimo-form")
|
|
|
80
80
|
});
|
|
81
81
|
|
|
82
82
|
export interface FormWrapperProps<T>
|
|
83
|
-
extends Omit<Data, "elementId">,
|
|
84
|
-
Functions {
|
|
83
|
+
extends Omit<Data, "elementId">, Functions {
|
|
85
84
|
children: React.ReactNode;
|
|
86
85
|
currentValue: T;
|
|
87
86
|
newValue: T;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Tooltip } from "radix-ui";
|
|
4
|
+
|
|
5
|
+
const TooltipProvider = Tooltip.Provider;
|
|
6
|
+
|
|
4
7
|
import { act, render, screen, waitFor } from "@testing-library/react";
|
|
5
8
|
import { Provider } from "jotai";
|
|
6
9
|
import { beforeAll, describe, expect, it, vi } from "vitest";
|
|
@@ -52,7 +52,7 @@ beforeEach(() => {
|
|
|
52
52
|
|
|
53
53
|
// jsdom's PointerEvent doesn't properly inherit MouseEvent properties
|
|
54
54
|
// like clientX. Polyfill it so fireEvent.pointerDown/Move/Up work.
|
|
55
|
-
//
|
|
55
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
56
56
|
(globalThis as any).PointerEvent = class PointerEvent extends MouseEvent {
|
|
57
57
|
readonly pointerId: number;
|
|
58
58
|
constructor(type: string, init: PointerEventInit = {}) {
|