@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
|
@@ -69,43 +69,39 @@ export const TableTopBar: React.FC<TableTopBarProps> = ({
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
return (
|
|
72
|
-
<div className="flex items-center h-10 px-2 border-b gap-
|
|
73
|
-
{/* always-visible search */}
|
|
72
|
+
<div className="flex items-center h-10 px-2 border-b gap-2">
|
|
74
73
|
{onSearchQueryChange && enableSearch && (
|
|
75
|
-
<div className="flex items-center">
|
|
76
|
-
<
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
)}
|
|
103
|
-
</div>
|
|
74
|
+
<div className="flex flex-1 items-center gap-1 px-2 rounded-sm focus-within:ring-1 focus-within:ring-border transition-shadow">
|
|
75
|
+
<SearchIcon className="w-4 h-4 text-muted-foreground shrink-0" />
|
|
76
|
+
<input
|
|
77
|
+
ref={inputRef}
|
|
78
|
+
type="text"
|
|
79
|
+
className="h-6 border-none bg-transparent focus:outline-hidden text-sm w-full min-w-0"
|
|
80
|
+
value={internalValue}
|
|
81
|
+
onKeyDown={(e) => {
|
|
82
|
+
if (e.key === "Escape") {
|
|
83
|
+
setInternalValue("");
|
|
84
|
+
inputRef.current?.blur();
|
|
85
|
+
}
|
|
86
|
+
}}
|
|
87
|
+
onChange={(e) => setInternalValue(e.target.value)}
|
|
88
|
+
placeholder="Search..."
|
|
89
|
+
/>
|
|
90
|
+
{reloading && <Spinner size="small" />}
|
|
91
|
+
{internalValue && (
|
|
92
|
+
<Button
|
|
93
|
+
variant="text"
|
|
94
|
+
size="xs"
|
|
95
|
+
className="h-5 w-5 p-0 shrink-0"
|
|
96
|
+
onClick={() => setInternalValue("")}
|
|
97
|
+
>
|
|
98
|
+
<XIcon className="w-3 h-3 text-muted-foreground" />
|
|
99
|
+
</Button>
|
|
100
|
+
)}
|
|
104
101
|
</div>
|
|
105
102
|
)}
|
|
106
103
|
|
|
107
|
-
|
|
108
|
-
<div className="flex items-center gap-1 shrink-0">
|
|
104
|
+
<div className="flex items-center shrink-0">
|
|
109
105
|
{showChartBuilder && (
|
|
110
106
|
<Button
|
|
111
107
|
variant="text"
|
|
@@ -117,7 +113,7 @@ export const TableTopBar: React.FC<TableTopBarProps> = ({
|
|
|
117
113
|
onClick={toggleDisplayHeader}
|
|
118
114
|
>
|
|
119
115
|
<ChartSplineIcon className="w-3.5 h-3.5" />
|
|
120
|
-
|
|
116
|
+
Visualize
|
|
121
117
|
</Button>
|
|
122
118
|
)}
|
|
123
119
|
{showTableExplorer && togglePanel && (
|
|
@@ -131,7 +127,7 @@ export const TableTopBar: React.FC<TableTopBarProps> = ({
|
|
|
131
127
|
onClick={() => togglePanel(PANEL_TYPES.ROW_VIEWER)}
|
|
132
128
|
>
|
|
133
129
|
<PanelRightIcon className="w-3.5 h-3.5" />
|
|
134
|
-
|
|
130
|
+
Explorer
|
|
135
131
|
</Button>
|
|
136
132
|
)}
|
|
137
133
|
{downloadAs && <ExportMenu downloadAs={downloadAs} />}
|
|
@@ -230,7 +230,7 @@ describe("generateColumns", () => {
|
|
|
230
230
|
});
|
|
231
231
|
|
|
232
232
|
// "age" is a number column — should auto right-align
|
|
233
|
-
//
|
|
233
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
234
234
|
const cell = (columns[1].cell as any)({
|
|
235
235
|
column: {
|
|
236
236
|
columnDef: columns[1],
|
|
@@ -241,7 +241,7 @@ describe("generateColumns", () => {
|
|
|
241
241
|
expect(cell?.props.className).toContain("text-right");
|
|
242
242
|
|
|
243
243
|
// "name" is a string column — should remain left-aligned
|
|
244
|
-
//
|
|
244
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
245
245
|
const nameCell = (columns[0].cell as any)({
|
|
246
246
|
column: {
|
|
247
247
|
columnDef: columns[0],
|
|
@@ -261,7 +261,7 @@ describe("generateColumns", () => {
|
|
|
261
261
|
});
|
|
262
262
|
|
|
263
263
|
// "age" is numeric but explicitly set to left
|
|
264
|
-
//
|
|
264
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
265
265
|
const cell = (columns[1].cell as any)({
|
|
266
266
|
column: {
|
|
267
267
|
columnDef: columns[1],
|
|
@@ -301,7 +301,7 @@ describe("generateColumns", () => {
|
|
|
301
301
|
});
|
|
302
302
|
|
|
303
303
|
// Assuming getCellStyleClass is a function that returns a class name
|
|
304
|
-
//
|
|
304
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
305
305
|
const cell = (columns[0].cell as any)({
|
|
306
306
|
column: {
|
|
307
307
|
columnDef: columns[0],
|
|
@@ -333,7 +333,7 @@ describe("generateColumns", () => {
|
|
|
333
333
|
// Right-justified: parent wrapper should have items-end, sort/filter icons should flip to the left
|
|
334
334
|
const { container: rightContainer } = render(
|
|
335
335
|
<TooltipProvider>
|
|
336
|
-
{/*
|
|
336
|
+
{/* oxlint-disable-next-line typescript/no-explicit-any */}
|
|
337
337
|
{(columns[0].header as any)({ column: mockColumn(columns[0]) })}
|
|
338
338
|
</TooltipProvider>,
|
|
339
339
|
);
|
|
@@ -347,7 +347,7 @@ describe("generateColumns", () => {
|
|
|
347
347
|
// Center-justified: parent wrapper should have items-center, no flex-row-reverse
|
|
348
348
|
const { container: centerContainer } = render(
|
|
349
349
|
<TooltipProvider>
|
|
350
|
-
{/*
|
|
350
|
+
{/* oxlint-disable-next-line typescript/no-explicit-any */}
|
|
351
351
|
{(columns[1].header as any)({ column: mockColumn(columns[1]) })}
|
|
352
352
|
</TooltipProvider>,
|
|
353
353
|
);
|
|
@@ -572,7 +572,7 @@ describe("LocaleNumber", () => {
|
|
|
572
572
|
<LocaleNumber value={1_234_567.89} />
|
|
573
573
|
</I18nProvider>,
|
|
574
574
|
);
|
|
575
|
-
//
|
|
575
|
+
// oxlint-disable-next-line no-irregular-whitespace
|
|
576
576
|
expect(container.textContent).toMatchInlineSnapshot(`"1 234 567,89"`);
|
|
577
577
|
});
|
|
578
578
|
|
|
@@ -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 type { Cell, Column, Row, Table } from "@tanstack/react-table";
|
|
5
5
|
import { describe, expect, it, vi } from "vitest";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-empty-object-type */
|
|
3
3
|
import type { OnChangeFn, RowData, Updater } from "@tanstack/react-table";
|
|
4
4
|
|
|
5
5
|
export interface CellSelectionItem {
|
|
@@ -40,8 +40,9 @@ export interface CellSelectionInstance<TData extends RowData> {
|
|
|
40
40
|
declare module "@tanstack/react-table" {
|
|
41
41
|
interface TableState extends CellSelectionTableState {}
|
|
42
42
|
|
|
43
|
-
interface TableOptionsResolved<
|
|
44
|
-
extends
|
|
43
|
+
interface TableOptionsResolved<
|
|
44
|
+
TData extends RowData,
|
|
45
|
+
> extends CellSelectionOptions {}
|
|
45
46
|
|
|
46
47
|
interface Table<TData extends RowData> extends CellSelectionInstance<TData> {}
|
|
47
48
|
|
|
@@ -78,7 +78,7 @@ export function generateAltairChart(
|
|
|
78
78
|
|
|
79
79
|
if (encodings?.tooltip) {
|
|
80
80
|
const tooltip = encodings.tooltip;
|
|
81
|
-
//
|
|
81
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
82
82
|
const makeTooltip = (t: Record<string, any>) => {
|
|
83
83
|
const kwargs = makeKwargs(t);
|
|
84
84
|
return new FunctionCall("alt.Tooltip", kwargs);
|
|
@@ -149,7 +149,7 @@ ${variableName}
|
|
|
149
149
|
`.trim();
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
//
|
|
152
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
153
153
|
function makeKwargs<T extends Record<string, any>>(obj: T) {
|
|
154
154
|
const result: Record<string, PythonCode> = {};
|
|
155
155
|
|
|
@@ -257,7 +257,7 @@ export const TablePanel: React.FC<TablePanelProps> = ({
|
|
|
257
257
|
saveTabChartType(tab.tabName, chartType);
|
|
258
258
|
};
|
|
259
259
|
return (
|
|
260
|
-
<TabsContent key={idx} value={tab.tabName} className="h-[400px] mt-
|
|
260
|
+
<TabsContent key={idx} value={tab.tabName} className="h-[400px] mt-0">
|
|
261
261
|
<ChartPanel
|
|
262
262
|
tableData={data}
|
|
263
263
|
chartConfig={tab.config}
|
|
@@ -475,7 +475,7 @@ export const ChartPanel: React.FC<{
|
|
|
475
475
|
);
|
|
476
476
|
|
|
477
477
|
return (
|
|
478
|
-
<div className="flex flex-row gap-2 h-full rounded-md border pr-2">
|
|
478
|
+
<div className="flex flex-row gap-2 h-full rounded-md border-t pr-2">
|
|
479
479
|
<div
|
|
480
480
|
className={`relative flex flex-col gap-2 overflow-auto px-2 py-3 scrollbar-thin transition-width duration-200 ${formCollapsed ? "w-8" : "w-[300px]"}`}
|
|
481
481
|
>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
4
3
|
import { ChevronDown } from "lucide-react";
|
|
4
|
+
import { Select as SelectPrimitive } from "radix-ui";
|
|
5
5
|
import React from "react";
|
|
6
6
|
import { useFormContext, useWatch } from "react-hook-form";
|
|
7
7
|
import type { z } from "zod";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-empty-object-type */
|
|
3
3
|
|
|
4
4
|
import type { OnChangeFn, RowData } from "@tanstack/react-table";
|
|
5
5
|
import type { DataType } from "@/core/kernel/messages";
|
|
@@ -38,7 +38,7 @@ export interface ColumnFormattingInstance {
|
|
|
38
38
|
setColumnFormatting: (value?: FormatOption) => void;
|
|
39
39
|
getColumnFormatting?: () => FormatOption | undefined;
|
|
40
40
|
getCanFormat?: () => boolean;
|
|
41
|
-
//
|
|
41
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
42
42
|
applyColumnFormatting: (value: any) => any;
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -48,8 +48,9 @@ declare module "@tanstack/react-table" {
|
|
|
48
48
|
//merge column formatting's state with the existing table state
|
|
49
49
|
interface TableState extends ColumnFormattingTableState {}
|
|
50
50
|
//merge column formatting's options with the existing table options
|
|
51
|
-
interface TableOptionsResolved<
|
|
52
|
-
extends
|
|
51
|
+
interface TableOptionsResolved<
|
|
52
|
+
TData extends RowData,
|
|
53
|
+
> extends ColumnFormattingOptions {}
|
|
53
54
|
//merge column formatting's instance APIs with the existing table instance APIs
|
|
54
55
|
interface Column<TData extends RowData> extends ColumnFormattingInstance {}
|
|
55
56
|
}
|
|
@@ -63,8 +63,10 @@ import { stringifyUnknownValue } from "./utils";
|
|
|
63
63
|
|
|
64
64
|
const TOP_K_ROWS = 30;
|
|
65
65
|
|
|
66
|
-
interface DataTableColumnHeaderProps<
|
|
67
|
-
|
|
66
|
+
interface DataTableColumnHeaderProps<
|
|
67
|
+
TData,
|
|
68
|
+
TValue,
|
|
69
|
+
> extends React.HTMLAttributes<HTMLDivElement> {
|
|
68
70
|
column: Column<TData, TValue>;
|
|
69
71
|
header: React.ReactNode;
|
|
70
72
|
justify?: "left" | "center" | "right";
|
|
@@ -282,7 +282,7 @@ export function getDataSpecAndSourceName<T>(data: string | T[]): {
|
|
|
282
282
|
const base64 = extractBase64FromDataURL(data);
|
|
283
283
|
const decoded = window.atob(base64);
|
|
284
284
|
|
|
285
|
-
//
|
|
285
|
+
// oxlint-disable-next-line unicorn/prefer-ternary
|
|
286
286
|
if (decoded.startsWith(ARROW_MAGIC_NUMBER)) {
|
|
287
287
|
dataSpec = {
|
|
288
288
|
values: base64ToUint8Array(base64),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-empty-object-type */
|
|
3
3
|
import type { OnChangeFn, RowData } from "@tanstack/react-table";
|
|
4
4
|
|
|
5
5
|
export type ColumnWrappingState = Record<string, "nowrap" | "wrap" | undefined>;
|
|
@@ -22,8 +22,9 @@ export interface ColumnWrappingInstance {
|
|
|
22
22
|
declare module "@tanstack/react-table" {
|
|
23
23
|
interface TableState extends ColumnWrappingTableState {}
|
|
24
24
|
|
|
25
|
-
interface TableOptionsResolved<
|
|
26
|
-
extends
|
|
25
|
+
interface TableOptionsResolved<
|
|
26
|
+
TData extends RowData,
|
|
27
|
+
> extends ColumnWrappingOptions {}
|
|
27
28
|
|
|
28
29
|
interface Column<TData extends RowData> extends ColumnWrappingInstance {}
|
|
29
30
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
"use no memo";
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { Popover as PopoverPrimitive } from "radix-ui";
|
|
5
|
+
|
|
6
|
+
const PopoverClose = PopoverPrimitive.Close;
|
|
7
|
+
|
|
5
8
|
import type { Column, ColumnDef } from "@tanstack/react-table";
|
|
6
9
|
import { formatDate, isValid } from "date-fns";
|
|
7
10
|
import { useLocale, useNumberFormatter } from "react-aria";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-empty-object-type */
|
|
3
3
|
import type { RowData } from "@tanstack/react-table";
|
|
4
4
|
|
|
5
5
|
export interface CopyColumnOptions {
|
|
@@ -12,8 +12,9 @@ export interface CopyColumnInstance {
|
|
|
12
12
|
|
|
13
13
|
// Use declaration merging to add our new feature APIs
|
|
14
14
|
declare module "@tanstack/react-table" {
|
|
15
|
-
interface TableOptionsResolved<
|
|
16
|
-
extends
|
|
15
|
+
interface TableOptionsResolved<
|
|
16
|
+
TData extends RowData,
|
|
17
|
+
> extends CopyColumnOptions {}
|
|
17
18
|
|
|
18
19
|
interface Column<TData extends RowData> extends CopyColumnInstance {}
|
|
19
20
|
}
|
|
@@ -314,18 +314,19 @@ const DataTableInternal = <TData,>({
|
|
|
314
314
|
virtualize={virtualize}
|
|
315
315
|
/>
|
|
316
316
|
</Table>
|
|
317
|
+
<TableBottomBar
|
|
318
|
+
part="table-footer"
|
|
319
|
+
className="pt-1.5 pb-0.5 border-t border-border"
|
|
320
|
+
totalColumns={totalColumns}
|
|
321
|
+
pagination={pagination}
|
|
322
|
+
selection={selection}
|
|
323
|
+
onRowSelectionChange={onRowSelectionChange}
|
|
324
|
+
table={table}
|
|
325
|
+
getRowIds={getRowIds}
|
|
326
|
+
showPageSizeSelector={showPageSizeSelector}
|
|
327
|
+
tableLoading={reloading}
|
|
328
|
+
/>
|
|
317
329
|
</div>
|
|
318
|
-
<TableBottomBar
|
|
319
|
-
part="table-footer"
|
|
320
|
-
totalColumns={totalColumns}
|
|
321
|
-
pagination={pagination}
|
|
322
|
-
selection={selection}
|
|
323
|
-
onRowSelectionChange={onRowSelectionChange}
|
|
324
|
-
table={table}
|
|
325
|
-
getRowIds={getRowIds}
|
|
326
|
-
showPageSizeSelector={showPageSizeSelector}
|
|
327
|
-
tableLoading={reloading}
|
|
328
|
-
/>
|
|
329
330
|
</CellSelectionProvider>
|
|
330
331
|
</div>
|
|
331
332
|
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-empty-object-type */
|
|
3
3
|
|
|
4
4
|
import type { OnChangeFn, RowData } from "@tanstack/react-table";
|
|
5
5
|
|
|
@@ -25,8 +25,9 @@ export interface FocusRowInstance {
|
|
|
25
25
|
declare module "@tanstack/react-table" {
|
|
26
26
|
interface TableState extends FocusRowTableState {}
|
|
27
27
|
|
|
28
|
-
interface TableOptionsResolved<
|
|
29
|
-
extends
|
|
28
|
+
interface TableOptionsResolved<
|
|
29
|
+
TData extends RowData,
|
|
30
|
+
> extends FocusRowOptions {}
|
|
30
31
|
|
|
31
32
|
interface Row<TData extends RowData> extends FocusRowInstance {}
|
|
32
33
|
}
|
|
@@ -43,7 +43,7 @@ export const LoadingTable = ({
|
|
|
43
43
|
<TableBody>
|
|
44
44
|
{Array.from({ length: pageSize }).map((_, i) => (
|
|
45
45
|
<TableRow key={i}>
|
|
46
|
-
{Array.from({ length: NUM_COLUMNS }).map((
|
|
46
|
+
{Array.from({ length: NUM_COLUMNS }).map((__, j) => (
|
|
47
47
|
<TableCell key={j}>
|
|
48
48
|
<div className="h-4 bg-(--slate-5) animate-pulse rounded-md w-[90%]" />
|
|
49
49
|
</TableCell>
|
|
@@ -71,7 +71,7 @@ export const DataTablePagination = <TData,>({
|
|
|
71
71
|
|
|
72
72
|
// Ensure unique page sizes
|
|
73
73
|
const pageSizeSet = new Set([5, 10, 25, 50, 100, pageSize]);
|
|
74
|
-
const pageSizes = [...pageSizeSet].
|
|
74
|
+
const pageSizes = [...pageSizeSet].toSorted((a, b) => a - b);
|
|
75
75
|
|
|
76
76
|
const renderPageSizeSelector = () => {
|
|
77
77
|
return (
|
|
@@ -10,7 +10,7 @@ vi.mock("@/utils/copy", () => ({
|
|
|
10
10
|
}));
|
|
11
11
|
|
|
12
12
|
vi.mock("../utils", async (importOriginal) => {
|
|
13
|
-
//
|
|
13
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
14
14
|
const original = (await importOriginal()) as any;
|
|
15
15
|
return {
|
|
16
16
|
...original,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
} from "../atoms";
|
|
29
29
|
import { getCellsBetween, getCellValues } from "../utils";
|
|
30
30
|
|
|
31
|
-
//
|
|
31
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
32
32
|
type T = any;
|
|
33
33
|
|
|
34
34
|
// Create mock table and cells
|
|
@@ -56,18 +56,18 @@ function createMockCell(
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
function createMockTable(): Table<T> {
|
|
59
|
-
const mockToggleSelected = vi
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
const mockToggleSelected = vi
|
|
60
|
+
.fn()
|
|
61
|
+
.mockImplementation(function (this: { isSelected: boolean }) {
|
|
62
|
+
this.isSelected = !this.isSelected;
|
|
63
|
+
return { isSelected: this.isSelected };
|
|
64
|
+
});
|
|
65
65
|
|
|
66
|
-
const mockGetIsSelected = vi
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
const mockGetIsSelected = vi
|
|
67
|
+
.fn()
|
|
68
|
+
.mockImplementation(function (this: { isSelected: boolean }) {
|
|
69
|
+
return this.isSelected;
|
|
70
|
+
});
|
|
71
71
|
|
|
72
72
|
const rows = [
|
|
73
73
|
{
|
|
@@ -23,17 +23,15 @@ describe("isInteractiveTarget", () => {
|
|
|
23
23
|
expect(isInteractiveTarget(createMouseEvent(span, cell))).toBe(false);
|
|
24
24
|
});
|
|
25
25
|
|
|
26
|
-
it.each([
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
expect(isInteractiveTarget(createMouseEvent(el, cell))).toBe(true);
|
|
36
|
-
});
|
|
26
|
+
it.each(["input", "button", "select", "textarea"])(
|
|
27
|
+
"returns true when clicking a <%s>",
|
|
28
|
+
(tag) => {
|
|
29
|
+
const cell = document.createElement("td");
|
|
30
|
+
const el = document.createElement(tag);
|
|
31
|
+
cell.append(el);
|
|
32
|
+
expect(isInteractiveTarget(createMouseEvent(el, cell))).toBe(true);
|
|
33
|
+
},
|
|
34
|
+
);
|
|
37
35
|
|
|
38
36
|
it("returns true when clicking an <a> link", () => {
|
|
39
37
|
const cell = document.createElement("td");
|
|
@@ -32,9 +32,9 @@ function initialState(): CellSelectionState {
|
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
//
|
|
35
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
36
36
|
type AnyTable = Table<any>;
|
|
37
|
-
//
|
|
37
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
38
38
|
type AnyCell = Cell<any, unknown>;
|
|
39
39
|
|
|
40
40
|
const {
|
|
@@ -34,7 +34,9 @@ export const CellSelectionStats = <TData,>({
|
|
|
34
34
|
if (dataCellCount < 2) {
|
|
35
35
|
return (
|
|
36
36
|
<Tooltip content="Select multiple cells to see stats">
|
|
37
|
-
<span
|
|
37
|
+
<span
|
|
38
|
+
className={cn("text-xs text-muted-foreground/80 italic", className)}
|
|
39
|
+
>
|
|
38
40
|
No selection
|
|
39
41
|
</span>
|
|
40
42
|
</Tooltip>
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
type HeaderGroup,
|
|
10
10
|
type Row,
|
|
11
11
|
type Table,
|
|
12
|
-
type Table as TanStackTable,
|
|
13
12
|
} from "@tanstack/react-table";
|
|
14
13
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
15
14
|
import { type JSX, useLayoutEffect, useRef, useState } from "react";
|
|
@@ -52,7 +51,7 @@ export function renderTableHeader<TData>(
|
|
|
52
51
|
)}
|
|
53
52
|
style={style}
|
|
54
53
|
ref={(thead) => {
|
|
55
|
-
columnSizingHandler(
|
|
54
|
+
columnSizingHandler({ table, column: header.column, thead });
|
|
56
55
|
}}
|
|
57
56
|
>
|
|
58
57
|
{header.isPlaceholder
|
|
@@ -323,23 +322,30 @@ function getPinningStyles<TData>(
|
|
|
323
322
|
|
|
324
323
|
// Update column sizes in table state for column pinning offsets
|
|
325
324
|
// https://github.com/TanStack/table/discussions/3947#discussioncomment-9564867
|
|
326
|
-
function columnSizingHandler<TData>(
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
325
|
+
function columnSizingHandler<TData>({
|
|
326
|
+
table,
|
|
327
|
+
column,
|
|
328
|
+
thead,
|
|
329
|
+
}: {
|
|
330
|
+
table: Table<TData>;
|
|
331
|
+
column: Column<TData>;
|
|
332
|
+
thead: HTMLTableCellElement | null;
|
|
333
|
+
}): void {
|
|
331
334
|
if (!thead) {
|
|
332
335
|
return;
|
|
333
336
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
337
|
+
// Round to avoid infinite re-render loops: the browser's table layout
|
|
338
|
+
// algorithm may render a <th> at a slightly different width than the
|
|
339
|
+
// CSS `width` we set via column.getSize(), so a strict float === float
|
|
340
|
+
// comparison never stabilizes. Rounding to integers ensures convergence
|
|
341
|
+
// after at most one cycle.
|
|
342
|
+
const measuredWidth = Math.round(thead.getBoundingClientRect().width);
|
|
343
|
+
if (table.getState().columnSizing[column.id] === measuredWidth) {
|
|
338
344
|
return;
|
|
339
345
|
}
|
|
340
346
|
|
|
341
347
|
table.setColumnSizing((prevSizes) => ({
|
|
342
348
|
...prevSizes,
|
|
343
|
-
[column.id]:
|
|
349
|
+
[column.id]: measuredWidth,
|
|
344
350
|
}));
|
|
345
351
|
}
|
|
@@ -247,7 +247,7 @@ export const RowViewerPanel: React.FC<RowViewerPanelProps> = ({
|
|
|
247
247
|
|
|
248
248
|
return (
|
|
249
249
|
<div
|
|
250
|
-
className="flex flex-col gap-3
|
|
250
|
+
className="flex flex-col gap-3 focus:outline-hidden"
|
|
251
251
|
ref={panelRef}
|
|
252
252
|
tabIndex={-1}
|
|
253
253
|
onKeyDown={handleKeyDown}
|
|
@@ -42,7 +42,7 @@ export interface TableExplorerPanelProps {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
const tabTriggerClassName =
|
|
45
|
-
"text-
|
|
45
|
+
"text-[13px] uppercase tracking-wide font-semibold cursor-pointer transition-colors";
|
|
46
46
|
const activeClassName = "text-primary";
|
|
47
47
|
const inactiveClassName = "hover:text-foreground";
|
|
48
48
|
|
|
@@ -110,7 +110,7 @@ export const TableExplorerPanel: React.FC<TableExplorerPanelProps> = ({
|
|
|
110
110
|
<Tabs
|
|
111
111
|
value={resolvedTab}
|
|
112
112
|
onValueChange={(value) => onTabChange(value as PanelType)}
|
|
113
|
-
className="
|
|
113
|
+
className="flex flex-col min-w-[350px]"
|
|
114
114
|
>
|
|
115
115
|
<Fill name={SlotNames.CONTEXT_AWARE_PANEL_HEADER}>
|
|
116
116
|
<div className="flex items-center gap-1">
|
|
@@ -51,7 +51,7 @@ export const DependencyGraphTree: React.FC<PropsWithChildren<Props>> = ({
|
|
|
51
51
|
layoutDirection,
|
|
52
52
|
settings,
|
|
53
53
|
}) => {
|
|
54
|
-
//
|
|
54
|
+
// oxlint-disable-next-line react/hook-use-state
|
|
55
55
|
const [initial] = useState(() => {
|
|
56
56
|
let elements = elementsBuilder.createElements(
|
|
57
57
|
cellIds,
|