@marimo-team/islands 0.22.1-dev8 → 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-Dl1grr8z.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-3c9hT4kT.js → loader-Bd1kgLn7.js} +19 -16
- 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-X7clcrcQ.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-A6unyUJS.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/__tests__/utils.test.ts +68 -0
- 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/impl/vega/utils.ts +14 -5
- package/src/plugins/impl/vega/vega.css +2 -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
|
@@ -13,6 +13,7 @@ import type {
|
|
|
13
13
|
LspRestartRequest,
|
|
14
14
|
LspRestartResponse,
|
|
15
15
|
} from "@/core/network/types";
|
|
16
|
+
import { isWasm } from "@/core/wasm/utils";
|
|
16
17
|
import { isAppConnected } from "@/core/websocket/connection-utils";
|
|
17
18
|
import { useAsyncData } from "@/hooks/useAsyncData";
|
|
18
19
|
import { useInterval } from "@/hooks/useInterval";
|
|
@@ -26,7 +27,7 @@ export const LspStatus: React.FC = () => {
|
|
|
26
27
|
const setLspHealth = useSetAtom(lspHealthAtom);
|
|
27
28
|
|
|
28
29
|
const { isFetching, data, refetch } = useAsyncData(async () => {
|
|
29
|
-
if (!isAppConnected(connection)) {
|
|
30
|
+
if (isWasm() || !isAppConnected(connection)) {
|
|
30
31
|
return null;
|
|
31
32
|
}
|
|
32
33
|
|
|
@@ -28,7 +28,7 @@ export function createStorage(location: "left" | "bottom"): PanelGroupStorage {
|
|
|
28
28
|
const parsed = schema.parse(JSON.parse(storedValue));
|
|
29
29
|
return JSON.stringify(
|
|
30
30
|
Objects.mapValues(parsed, (value) => {
|
|
31
|
-
return value.
|
|
31
|
+
return value.toReversed();
|
|
32
32
|
}),
|
|
33
33
|
);
|
|
34
34
|
} catch {
|
|
@@ -42,7 +42,7 @@ export function createStorage(location: "left" | "bottom"): PanelGroupStorage {
|
|
|
42
42
|
const parsed = schema.parse(JSON.parse(value));
|
|
43
43
|
value = JSON.stringify(
|
|
44
44
|
Objects.mapValues(parsed, (value) => {
|
|
45
|
-
return value.
|
|
45
|
+
return value.toReversed();
|
|
46
46
|
}),
|
|
47
47
|
);
|
|
48
48
|
} catch {
|
|
@@ -72,7 +72,7 @@ export const SecretsProvider = ({ children }: SecretsProviderProps) => {
|
|
|
72
72
|
.map((provider) => provider.name);
|
|
73
73
|
|
|
74
74
|
return {
|
|
75
|
-
secretKeys: result.secrets.flatMap((secret) => secret.keys).
|
|
75
|
+
secretKeys: result.secrets.flatMap((secret) => secret.keys).toSorted(),
|
|
76
76
|
providerNames: providerNames,
|
|
77
77
|
};
|
|
78
78
|
}, []);
|
|
@@ -214,7 +214,7 @@ export function generateStorageCode(
|
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
const allImports = new Set([...secrets.imports, ...result.imports]);
|
|
217
|
-
const lines = [...allImports].
|
|
217
|
+
const lines = [...allImports].toSorted();
|
|
218
218
|
lines.push("");
|
|
219
219
|
const secretsStr = secrets.formatSecrets();
|
|
220
220
|
if (secretsStr) {
|
|
@@ -90,7 +90,7 @@ export const KeyboardShortcuts: React.FC = () => {
|
|
|
90
90
|
},
|
|
91
91
|
};
|
|
92
92
|
|
|
93
|
-
//
|
|
93
|
+
// oxlint-disable-next-line typescript/no-dynamic-delete
|
|
94
94
|
delete newConfig.keymap.overrides[editingShortcut];
|
|
95
95
|
|
|
96
96
|
setEditingShortcut(null);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Popover as PopoverPrimitive } from "radix-ui";
|
|
4
|
+
|
|
5
|
+
const PopoverAnchor = PopoverPrimitive.Anchor;
|
|
6
|
+
|
|
4
7
|
import { FilePenIcon } from "lucide-react";
|
|
5
8
|
import { type JSX, useEffect, useRef, useState } from "react";
|
|
6
9
|
import {
|
|
@@ -24,7 +24,7 @@ export const CellLinkList: React.FC<Props> = ({
|
|
|
24
24
|
skipScroll,
|
|
25
25
|
}) => {
|
|
26
26
|
const cellIndex = useCellIds();
|
|
27
|
-
const sortedCellIds =
|
|
27
|
+
const sortedCellIds = cellIds.toSorted((a, b) => {
|
|
28
28
|
return cellIndex.inOrderIds.indexOf(a) - cellIndex.inOrderIds.indexOf(b);
|
|
29
29
|
});
|
|
30
30
|
|
|
@@ -134,7 +134,7 @@ const mockRequestClient = MockRequestClient.create();
|
|
|
134
134
|
// Helper to setup selection
|
|
135
135
|
const setupSelection = () => {
|
|
136
136
|
const { reducer, cellSelectionAtom } = selectionTesting;
|
|
137
|
-
//
|
|
137
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
138
138
|
const dispatch = (action: any) => {
|
|
139
139
|
store.set(cellSelectionAtom, (prev: CellSelectionState) =>
|
|
140
140
|
reducer(prev, action),
|
|
@@ -106,7 +106,7 @@ export function useCellClipboard() {
|
|
|
106
106
|
|
|
107
107
|
// Create new cells with the copied data before/after the current cell
|
|
108
108
|
const currentCellId = cellId;
|
|
109
|
-
const reversedCells = clipboardData.cells.
|
|
109
|
+
const reversedCells = clipboardData.cells.toReversed();
|
|
110
110
|
for (const cell of reversedCells) {
|
|
111
111
|
actions.createNewCell({
|
|
112
112
|
cellId: currentCellId,
|
|
@@ -167,7 +167,7 @@ export function useMultiCellActionButtons(cellIds: CellId[]) {
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
// Move cells in the appropriate order to maintain relative positions
|
|
170
|
-
const sortedCells = direction === "up" ? cellIds :
|
|
170
|
+
const sortedCells = direction === "up" ? cellIds : cellIds.toReversed();
|
|
171
171
|
sortedCells.forEach((cellId) => {
|
|
172
172
|
moveCell({ cellId, before: direction === "up" });
|
|
173
173
|
});
|
|
@@ -176,7 +176,7 @@ export function useMultiCellActionButtons(cellIds: CellId[]) {
|
|
|
176
176
|
|
|
177
177
|
const sendSelectedCellsToTop = useEvent((cellIds: CellId[]) => {
|
|
178
178
|
// Send in reverse order to maintain relative positions
|
|
179
|
-
|
|
179
|
+
cellIds.toReversed().forEach((cellId) => {
|
|
180
180
|
sendToTop({ cellId });
|
|
181
181
|
});
|
|
182
182
|
});
|
|
@@ -401,7 +401,7 @@ export function useCellNavigationProps(
|
|
|
401
401
|
}
|
|
402
402
|
|
|
403
403
|
// Move cells in the appropriate order to maintain relative positions
|
|
404
|
-
|
|
404
|
+
cellIds.toReversed().forEach((cellId) => {
|
|
405
405
|
actions.moveCell({ cellId, before: false });
|
|
406
406
|
});
|
|
407
407
|
return true;
|
|
@@ -480,7 +480,7 @@ export function useCellNavigationProps(
|
|
|
480
480
|
}),
|
|
481
481
|
"cell.sendToTop": addSingleHandler((cellIds) => {
|
|
482
482
|
// Send in reverse order to maintain relative positions
|
|
483
|
-
|
|
483
|
+
cellIds.toReversed().forEach((cellId) => {
|
|
484
484
|
actions.sendToTop({ cellId });
|
|
485
485
|
});
|
|
486
486
|
return true;
|
|
@@ -614,7 +614,7 @@ export function useCellNavigationProps(
|
|
|
614
614
|
if (isShortcutPressed(shortcut as HotkeyAction, evt)) {
|
|
615
615
|
// If the handler is a function, it's a single-cell handler
|
|
616
616
|
// and we only operate on the currently focused cell.
|
|
617
|
-
if (handler
|
|
617
|
+
if (typeof handler === "function") {
|
|
618
618
|
const success = handler(cellId);
|
|
619
619
|
if (success) {
|
|
620
620
|
evt.preventDefault();
|
|
@@ -46,7 +46,7 @@ interface Props {
|
|
|
46
46
|
valueTypes?: "json" | "python";
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
//
|
|
49
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
50
50
|
const CopyButton: React.FC<DataItemProps<any>> = ({ value }) => {
|
|
51
51
|
const skipCopy =
|
|
52
52
|
typeof value === "string" &&
|
|
@@ -83,13 +83,13 @@ const CopyButton: React.FC<DataItemProps<any>> = ({ value }) => {
|
|
|
83
83
|
);
|
|
84
84
|
};
|
|
85
85
|
|
|
86
|
-
//
|
|
86
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
87
87
|
const JSONCopyButton: React.FC<DataItemProps<any>> = (props) => {
|
|
88
88
|
// if
|
|
89
89
|
return <CopyButton {...props} value={JSON.stringify(props.value, null, 2)} />;
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
//
|
|
92
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
93
93
|
const PyCopyButton: React.FC<DataItemProps<any>> = (props) => {
|
|
94
94
|
return <CopyButton {...props} value={getCopyValue(props.value)} />;
|
|
95
95
|
};
|
|
@@ -233,7 +233,7 @@ const LEAF_RENDERERS: Record<string, LeafRenderer> = {
|
|
|
233
233
|
},
|
|
234
234
|
};
|
|
235
235
|
|
|
236
|
-
//
|
|
236
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
237
237
|
const MIME_TYPES: DataType<any>[] = Object.entries(LEAF_RENDERERS).map(
|
|
238
238
|
([leafType, render]) => ({
|
|
239
239
|
is: (value) => typeof value === "string" && value.startsWith(leafType),
|
|
@@ -329,7 +329,7 @@ const PYTHON_VALUE_TYPES = [
|
|
|
329
329
|
URL_TYPE,
|
|
330
330
|
OBJECT_TYPE,
|
|
331
331
|
FALLBACK_RENDERER,
|
|
332
|
-
].
|
|
332
|
+
].toReversed();
|
|
333
333
|
// Last one wins, so we reverse the array.
|
|
334
334
|
|
|
335
335
|
const JSON_VALUE_TYPES = [
|
|
@@ -339,7 +339,7 @@ const JSON_VALUE_TYPES = [
|
|
|
339
339
|
JSON_NONE_TYPE,
|
|
340
340
|
JSON_OBJECT_TYPE,
|
|
341
341
|
JSON_FALLBACK_RENDERER,
|
|
342
|
-
].
|
|
342
|
+
].toReversed();
|
|
343
343
|
|
|
344
344
|
function leafData(leaf: string): string {
|
|
345
345
|
return leafDataAndMimeType(leaf)[0];
|
|
@@ -13,7 +13,7 @@ export interface Cursor {
|
|
|
13
13
|
export class TerminalBuffer {
|
|
14
14
|
private lines: string[] = [""];
|
|
15
15
|
private cursor: Cursor = { row: 0, col: 0 };
|
|
16
|
-
//
|
|
16
|
+
// oxlint-ignore-next-line no-control-regex -- Needed for ANSI escape sequence parsing
|
|
17
17
|
private static readonly ESCAPE_REGEX = /\u001B\[([0-9;]*)([A-DJKH])/u;
|
|
18
18
|
|
|
19
19
|
/** Ensure the internal lines array is large enough. */
|
|
@@ -185,7 +185,7 @@ export class TerminalBuffer {
|
|
|
185
185
|
*/
|
|
186
186
|
export class AnsiParser {
|
|
187
187
|
// Matches both CSI sequences (ESC[...letter) and other escape sequences like character set selection (ESC(B)
|
|
188
|
-
//
|
|
188
|
+
// oxlint-ignore-next-line no-control-regex -- Needed for ANSI parsing
|
|
189
189
|
private ESC_REGEX = /\u001B(?:\[[0-9;]*[A-Za-z]|\([0-9A-Za-z])/gu;
|
|
190
190
|
|
|
191
191
|
parse(input: string): { type: "text" | "escape"; value: string }[] {
|
|
@@ -167,7 +167,7 @@ const ConsoleOutputInternal = (props: Props): React.ReactNode => {
|
|
|
167
167
|
return null;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
const reversedOutputs =
|
|
170
|
+
const reversedOutputs = consoleOutputs.toReversed();
|
|
171
171
|
const isPdb = reversedOutputs.some(
|
|
172
172
|
(output) =>
|
|
173
173
|
typeof output.data === "string" && output.data.includes("(Pdb)"),
|
|
@@ -234,7 +234,7 @@ const ConsoleOutputInternal = (props: Props): React.ReactNode => {
|
|
|
234
234
|
data-testid="console-output-area"
|
|
235
235
|
ref={ref}
|
|
236
236
|
{...selectAllProps}
|
|
237
|
-
//
|
|
237
|
+
// oxlint-ignore-next-line jsx-a11y/no-noninteractive-tabindex -- Needed to capture keypress events
|
|
238
238
|
tabIndex={0}
|
|
239
239
|
className={cn(
|
|
240
240
|
"console-output-area overflow-hidden rounded-b-lg flex flex-col-reverse w-full gap-1 focus:outline-hidden",
|
|
@@ -69,7 +69,7 @@ CellsRenderer.displayName = "CellsRenderer";
|
|
|
69
69
|
interface PluginCellRendererProps extends PropsWithChildren<Props> {
|
|
70
70
|
appConfig: AppConfig;
|
|
71
71
|
mode: AppMode;
|
|
72
|
-
//
|
|
72
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
73
73
|
plugin: ICellRendererPlugin<any, any>;
|
|
74
74
|
layoutData: Partial<Record<LayoutType, LayoutData>>;
|
|
75
75
|
finalLayout: LayoutType;
|
|
@@ -329,7 +329,7 @@ export const GridLayoutRenderer: React.FC<Props> = ({
|
|
|
329
329
|
<div
|
|
330
330
|
key={cell.id}
|
|
331
331
|
draggable={true}
|
|
332
|
-
//
|
|
332
|
+
// oxlint-disable-next-line react/no-unknown-property
|
|
333
333
|
unselectable="on"
|
|
334
334
|
data-cell-id={cell.id}
|
|
335
335
|
// Firefox requires some kind of initialization which we can do by adding this attribute
|
|
@@ -7,7 +7,7 @@ import type { ICellRendererPlugin, LayoutType } from "./types";
|
|
|
7
7
|
import { VerticalLayoutPlugin } from "./vertical-layout/vertical-layout";
|
|
8
8
|
|
|
9
9
|
// If more renderers are added, we may want to consider lazy loading them.
|
|
10
|
-
//
|
|
10
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
11
11
|
export const cellRendererPlugins: ICellRendererPlugin<any, any>[] = [
|
|
12
12
|
GridLayoutPlugin,
|
|
13
13
|
SlidesLayoutPlugin,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-empty-object-type */
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* The serialized form of a slides layout.
|
|
6
6
|
* This must be backwards-compatible as it is stored on the user's disk.
|
|
7
7
|
*/
|
|
8
|
-
//
|
|
8
|
+
// oxlint-disable-next-line typescript/consistent-type-definitions
|
|
9
9
|
export type SerializedSlidesLayout = {};
|
|
10
10
|
|
|
11
11
|
export interface SlidesLayout extends SerializedSlidesLayout {
|
package/src/components/editor/renderers/vertical-layout/__tests__/useFocusFirstEditor.test.ts
CHANGED
|
@@ -110,9 +110,9 @@ describe("useFocusFirstEditor", () => {
|
|
|
110
110
|
expect(querySelectorSpy).toHaveBeenCalledWith(
|
|
111
111
|
'[data-cell-name="testCell"]',
|
|
112
112
|
);
|
|
113
|
-
//
|
|
113
|
+
// oxlint-disable-next-line typescript/unbound-method
|
|
114
114
|
expect(mockElement.scrollIntoView).toHaveBeenCalled();
|
|
115
|
-
//
|
|
115
|
+
// oxlint-disable-next-line typescript/unbound-method
|
|
116
116
|
expect(mockElement.focus).toHaveBeenCalled();
|
|
117
117
|
expect(mockEditor.focus).toHaveBeenCalled();
|
|
118
118
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-explicit-any */
|
|
3
3
|
import { describe, expect, it } from "vitest";
|
|
4
4
|
import type { OutputMessage } from "@/core/kernel/messages";
|
|
5
5
|
import { groupCellsByColumn, shouldHideCode } from "../vertical-layout";
|
|
@@ -311,18 +311,17 @@ const ActionButtons: React.FC<{
|
|
|
311
311
|
);
|
|
312
312
|
};
|
|
313
313
|
|
|
314
|
-
interface VerticalCellProps
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
> {
|
|
314
|
+
interface VerticalCellProps extends Pick<
|
|
315
|
+
CellRuntimeState,
|
|
316
|
+
| "output"
|
|
317
|
+
| "consoleOutputs"
|
|
318
|
+
| "status"
|
|
319
|
+
| "stopped"
|
|
320
|
+
| "errored"
|
|
321
|
+
| "interrupted"
|
|
322
|
+
| "staleInputs"
|
|
323
|
+
| "runStartTimestamp"
|
|
324
|
+
> {
|
|
326
325
|
cellOutputArea: "above" | "below";
|
|
327
326
|
cellId: CellId;
|
|
328
327
|
config: CellConfig;
|
|
@@ -483,7 +482,7 @@ export function groupCellsByColumn(
|
|
|
483
482
|
});
|
|
484
483
|
|
|
485
484
|
// Sort columns by index
|
|
486
|
-
return [...cellsByColumn.entries()].
|
|
485
|
+
return [...cellsByColumn.entries()].toSorted(([a], [b]) => a - b);
|
|
487
486
|
}
|
|
488
487
|
|
|
489
488
|
/**
|
|
@@ -221,7 +221,9 @@ export const FindReplace: React.FC = () => {
|
|
|
221
221
|
variant="outline"
|
|
222
222
|
className="h-6 text-xs"
|
|
223
223
|
onClick={() => {
|
|
224
|
-
replaceNext()
|
|
224
|
+
if (replaceNext()) {
|
|
225
|
+
resetMatches();
|
|
226
|
+
}
|
|
225
227
|
}}
|
|
226
228
|
disabled={state.findText === ""}
|
|
227
229
|
>
|
|
@@ -35,7 +35,7 @@ export interface FieldOptions {
|
|
|
35
35
|
optionRegex?: string;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
//
|
|
38
|
+
// oxlint-disable-next-line typescript/no-redeclare
|
|
39
39
|
export const FieldOptions = {
|
|
40
40
|
of(options: FieldOptions): string {
|
|
41
41
|
return JSON.stringify(options);
|
|
@@ -83,7 +83,7 @@ const GalleryPage: React.FC = () => {
|
|
|
83
83
|
thumbnailUrl,
|
|
84
84
|
};
|
|
85
85
|
})
|
|
86
|
-
.
|
|
86
|
+
.toSorted((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
87
87
|
}, [workspace?.files, workspace?.root]);
|
|
88
88
|
|
|
89
89
|
const filteredFiles = useMemo(() => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
3
|
-
/*
|
|
2
|
+
/* oxlint-disable react/jsx-no-comment-textnodes */
|
|
3
|
+
/* oxlint-disable react/jsx-no-target-blank */
|
|
4
4
|
|
|
5
5
|
import { useAtomValue } from "jotai";
|
|
6
6
|
import { CopyIcon, DownloadIcon } from "lucide-react";
|
|
@@ -147,9 +147,8 @@ describe("download-file snippet", () => {
|
|
|
147
147
|
});
|
|
148
148
|
|
|
149
149
|
it("obstore gcs backend", () => {
|
|
150
|
-
expect(
|
|
151
|
-
|
|
152
|
-
).toMatchInlineSnapshot(`
|
|
150
|
+
expect(downloadSnippet.getCode(makeCtx({ protocol: "gcs" })))
|
|
151
|
+
.toMatchInlineSnapshot(`
|
|
153
152
|
"from datetime import timedelta
|
|
154
153
|
from obstore import sign
|
|
155
154
|
|
|
@@ -162,9 +161,8 @@ describe("download-file snippet", () => {
|
|
|
162
161
|
});
|
|
163
162
|
|
|
164
163
|
it("obstore cloudflare backend", () => {
|
|
165
|
-
expect(
|
|
166
|
-
|
|
167
|
-
).toMatchInlineSnapshot(`
|
|
164
|
+
expect(downloadSnippet.getCode(makeCtx({ protocol: "cloudflare" })))
|
|
165
|
+
.toMatchInlineSnapshot(`
|
|
168
166
|
"from datetime import timedelta
|
|
169
167
|
from obstore import sign
|
|
170
168
|
|
|
@@ -143,7 +143,7 @@ const TerminalComponent: React.FC<TerminalComponentProps> = ({
|
|
|
143
143
|
const terminalRef = useRef<HTMLDivElement>(null);
|
|
144
144
|
const wsRef = useRef<WebSocket | null>(null);
|
|
145
145
|
|
|
146
|
-
//
|
|
146
|
+
// oxlint-disable-next-line react/hook-use-state
|
|
147
147
|
const [{ terminal, fitAddon, searchAddon }] = useState(() => {
|
|
148
148
|
// Create a new terminal instance
|
|
149
149
|
const term = new Terminal({
|
|
@@ -300,7 +300,7 @@ const TerminalComponent: React.FC<TerminalComponentProps> = ({
|
|
|
300
300
|
return () => {
|
|
301
301
|
// noop
|
|
302
302
|
};
|
|
303
|
-
//
|
|
303
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
304
304
|
}, [initialized]);
|
|
305
305
|
|
|
306
306
|
// Process pending commands when terminal is ready
|
|
@@ -335,7 +335,7 @@ const TerminalComponent: React.FC<TerminalComponentProps> = ({
|
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
return;
|
|
338
|
-
//
|
|
338
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
339
339
|
}, [visible]);
|
|
340
340
|
|
|
341
341
|
// On mount
|
|
@@ -373,7 +373,7 @@ const TerminalComponent: React.FC<TerminalComponentProps> = ({
|
|
|
373
373
|
return () => {
|
|
374
374
|
abortController.abort();
|
|
375
375
|
};
|
|
376
|
-
//
|
|
376
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
377
377
|
}, []);
|
|
378
378
|
|
|
379
379
|
return (
|
|
@@ -5,36 +5,36 @@ import { formatChartTime } from "./utils";
|
|
|
5
5
|
describe("formatChartTime", () => {
|
|
6
6
|
beforeAll(() => {
|
|
7
7
|
// Mock Date to always use UTC
|
|
8
|
-
vi.spyOn(global.Date.prototype, "getFullYear").mockImplementation(
|
|
9
|
-
this: Date
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
vi.spyOn(global.Date.prototype, "getMonth").mockImplementation(
|
|
14
|
-
this: Date
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
vi.spyOn(global.Date.prototype, "getDate").mockImplementation(
|
|
19
|
-
this: Date
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
vi.spyOn(global.Date.prototype, "getHours").mockImplementation(
|
|
24
|
-
this: Date
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
vi.spyOn(global.Date.prototype, "getMinutes").mockImplementation(
|
|
29
|
-
this: Date
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
vi.spyOn(global.Date.prototype, "getSeconds").mockImplementation(
|
|
34
|
-
this: Date
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
8
|
+
vi.spyOn(global.Date.prototype, "getFullYear").mockImplementation(
|
|
9
|
+
function (this: Date) {
|
|
10
|
+
return this.getUTCFullYear();
|
|
11
|
+
},
|
|
12
|
+
);
|
|
13
|
+
vi.spyOn(global.Date.prototype, "getMonth").mockImplementation(
|
|
14
|
+
function (this: Date) {
|
|
15
|
+
return this.getUTCMonth();
|
|
16
|
+
},
|
|
17
|
+
);
|
|
18
|
+
vi.spyOn(global.Date.prototype, "getDate").mockImplementation(
|
|
19
|
+
function (this: Date) {
|
|
20
|
+
return this.getUTCDate();
|
|
21
|
+
},
|
|
22
|
+
);
|
|
23
|
+
vi.spyOn(global.Date.prototype, "getHours").mockImplementation(
|
|
24
|
+
function (this: Date) {
|
|
25
|
+
return this.getUTCHours();
|
|
26
|
+
},
|
|
27
|
+
);
|
|
28
|
+
vi.spyOn(global.Date.prototype, "getMinutes").mockImplementation(
|
|
29
|
+
function (this: Date) {
|
|
30
|
+
return this.getUTCMinutes();
|
|
31
|
+
},
|
|
32
|
+
);
|
|
33
|
+
vi.spyOn(global.Date.prototype, "getSeconds").mockImplementation(
|
|
34
|
+
function (this: Date) {
|
|
35
|
+
return this.getUTCSeconds();
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
38
|
vi.spyOn(global.Date.prototype, "getMilliseconds").mockImplementation(
|
|
39
39
|
function (this: Date) {
|
|
40
40
|
return this.getUTCMilliseconds();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
4
3
|
import { ChevronDown } from "lucide-react";
|
|
4
|
+
import { Accordion as AccordionPrimitive } from "radix-ui";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
|
|
7
7
|
import { cn } from "@/utils/cn";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { AlertDialog as AlertDialogPrimitive } from "radix-ui";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { buttonVariants } from "@/components/ui/button";
|
|
6
6
|
import { StyleNamespace } from "@/theme/namespace";
|
|
@@ -29,7 +29,8 @@ const badgeVariants = cva(
|
|
|
29
29
|
);
|
|
30
30
|
|
|
31
31
|
export interface BadgeProps
|
|
32
|
-
extends
|
|
32
|
+
extends
|
|
33
|
+
React.HTMLAttributes<HTMLDivElement>,
|
|
33
34
|
VariantProps<typeof badgeVariants> {}
|
|
34
35
|
|
|
35
36
|
const Badge = ({ className, variant, ...props }: BadgeProps) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import { Slot } from "@radix-ui/react-slot";
|
|
4
3
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
4
|
+
import { Slot as SlotPrimitive } from "radix-ui";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { parseShortcut } from "@/core/hotkeys/shortcuts";
|
|
7
7
|
import { useEventListener } from "@/hooks/useEventListener";
|
|
@@ -92,7 +92,8 @@ const buttonVariants = cva(
|
|
|
92
92
|
);
|
|
93
93
|
|
|
94
94
|
export interface ButtonProps
|
|
95
|
-
extends
|
|
95
|
+
extends
|
|
96
|
+
React.ButtonHTMLAttributes<HTMLButtonElement>,
|
|
96
97
|
Omit<VariantProps<typeof buttonVariants>, "disabled"> {
|
|
97
98
|
asChild?: boolean;
|
|
98
99
|
keyboardShortcut?: string;
|
|
@@ -107,7 +108,7 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
107
108
|
|
|
108
109
|
React.useImperativeHandle(
|
|
109
110
|
ref,
|
|
110
|
-
//
|
|
111
|
+
// oxlint-disable-next-line typescript/non-nullable-type-assertion-style
|
|
111
112
|
() => buttonRef.current as HTMLButtonElement,
|
|
112
113
|
);
|
|
113
114
|
|
|
@@ -135,7 +136,7 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
135
136
|
|
|
136
137
|
useEventListener(document, "keydown", handleKeyPress);
|
|
137
138
|
|
|
138
|
-
const Comp = asChild ? Slot : "button";
|
|
139
|
+
const Comp = asChild ? SlotPrimitive.Slot : "button";
|
|
139
140
|
return (
|
|
140
141
|
<Comp
|
|
141
142
|
className={cn(
|
|
@@ -183,8 +183,9 @@ const Calendar = <T extends AriaDateValue>({
|
|
|
183
183
|
);
|
|
184
184
|
};
|
|
185
185
|
|
|
186
|
-
interface RangeCalendarProps<
|
|
187
|
-
extends
|
|
186
|
+
interface RangeCalendarProps<
|
|
187
|
+
T extends AriaDateValue,
|
|
188
|
+
> extends AriaRangeCalendarProps<T> {
|
|
188
189
|
errorMessage?: string;
|
|
189
190
|
}
|
|
190
191
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
4
3
|
import { Check } from "lucide-react";
|
|
4
|
+
import { Checkbox as CheckboxPrimitive } from "radix-ui";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
|
|
7
7
|
import { cn } from "@/utils/cn";
|