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