@marimo-team/islands 0.22.1-dev4 → 0.22.1-dev41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/dist/{ConnectedDataExplorerComponent-Dl1grr8z.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-3c9hT4kT.js → loader-Bd1kgLn7.js} +19 -16
  112. package/dist/main.js +3203 -3105
  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-X7clcrcQ.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-A6unyUJS.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 +12 -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 +42 -13
  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 +16 -11
  181. package/src/components/data-table/focus-row/types.ts +4 -3
  182. package/src/components/data-table/loading-table.tsx +5 -2
  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/row-viewer-panel/row-viewer.tsx +1 -1
  189. package/src/components/data-table/table-explorer-panel/table-explorer-panel.tsx +2 -2
  190. package/src/components/dependency-graph/dependency-graph-tree.tsx +1 -1
  191. package/src/components/editor/__tests__/data-attributes.test.tsx +93 -94
  192. package/src/components/editor/__tests__/dynamic-favicon.test.tsx +1 -1
  193. package/src/components/editor/actions/name-cell-input.tsx +4 -2
  194. package/src/components/editor/actions/pair-with-agent-modal.tsx +142 -0
  195. package/src/components/editor/actions/useCellActionButton.tsx +4 -2
  196. package/src/components/editor/actions/useNotebookActions.tsx +10 -0
  197. package/src/components/editor/ai/add-cell-with-ai.tsx +2 -1
  198. package/src/components/editor/ai/ai-completion-editor.tsx +1 -1
  199. package/src/components/editor/app-container.tsx +1 -1
  200. package/src/components/editor/cell/CellStatus.tsx +4 -5
  201. package/src/components/editor/cell/cell-context-menu.tsx +4 -2
  202. package/src/components/editor/cell/code/cell-editor.tsx +3 -2
  203. package/src/components/editor/cell/toolbar.tsx +2 -1
  204. package/src/components/editor/chrome/components/contribute-snippet-button.tsx +4 -1
  205. package/src/components/editor/chrome/components/feedback-button.tsx +4 -1
  206. package/src/components/editor/chrome/panels/context-aware-panel/context-aware-panel.tsx +1 -1
  207. package/src/components/editor/chrome/panels/empty-state.tsx +1 -0
  208. package/src/components/editor/chrome/panels/file-explorer-panel.tsx +0 -10
  209. package/src/components/editor/chrome/panels/snippets-panel.tsx +1 -1
  210. package/src/components/editor/chrome/panels/write-secret-modal.tsx +1 -1
  211. package/src/components/editor/chrome/wrapper/app-chrome.tsx +4 -1
  212. package/src/components/editor/chrome/wrapper/footer-items/lsp-status.tsx +2 -1
  213. package/src/components/editor/chrome/wrapper/storage.ts +2 -2
  214. package/src/components/editor/connections/database/as-code.ts +1 -1
  215. package/src/components/editor/connections/form-renderers.tsx +1 -1
  216. package/src/components/editor/connections/storage/as-code.ts +1 -1
  217. package/src/components/editor/controls/keyboard-shortcuts.tsx +1 -1
  218. package/src/components/editor/header/filename-input.tsx +4 -1
  219. package/src/components/editor/links/cell-link-list.tsx +1 -1
  220. package/src/components/editor/navigation/__tests__/navigation.test.ts +1 -1
  221. package/src/components/editor/navigation/clipboard.ts +1 -1
  222. package/src/components/editor/navigation/multi-cell-action-toolbar.tsx +2 -2
  223. package/src/components/editor/navigation/navigation.ts +3 -3
  224. package/src/components/editor/notebook-cell.tsx +1 -1
  225. package/src/components/editor/output/JsonOutput.tsx +6 -6
  226. package/src/components/editor/output/ansi-reduce.ts +2 -2
  227. package/src/components/editor/output/console/ConsoleOutput.tsx +2 -2
  228. package/src/components/editor/renderers/cells-renderer.tsx +1 -1
  229. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +1 -1
  230. package/src/components/editor/renderers/plugins.ts +1 -1
  231. package/src/components/editor/renderers/slides-layout/types.ts +2 -2
  232. package/src/components/editor/renderers/vertical-layout/__tests__/useFocusFirstEditor.test.ts +2 -2
  233. package/src/components/editor/renderers/vertical-layout/__tests__/vertical-layout.test.ts +1 -1
  234. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +12 -13
  235. package/src/components/find-replace/find-replace.tsx +3 -1
  236. package/src/components/forms/form.tsx +1 -1
  237. package/src/components/forms/options.ts +1 -1
  238. package/src/components/pages/gallery-page.tsx +1 -1
  239. package/src/components/static-html/static-banner.tsx +2 -2
  240. package/src/components/storage/__tests__/storage-snippets.test.ts +4 -6
  241. package/src/components/terminal/terminal.tsx +4 -4
  242. package/src/components/tracing/tracing.test.tsx +30 -30
  243. package/src/components/ui/accordion.tsx +1 -1
  244. package/src/components/ui/alert-dialog.tsx +1 -1
  245. package/src/components/ui/badge.tsx +2 -1
  246. package/src/components/ui/button.tsx +5 -4
  247. package/src/components/ui/calendar.tsx +3 -2
  248. package/src/components/ui/checkbox.tsx +1 -1
  249. package/src/components/ui/combobox.tsx +2 -1
  250. package/src/components/ui/command.tsx +5 -2
  251. package/src/components/ui/context-menu.tsx +1 -1
  252. package/src/components/ui/date-input.tsx +7 -6
  253. package/src/components/ui/date-picker.tsx +6 -4
  254. package/src/components/ui/dialog.tsx +1 -1
  255. package/src/components/ui/draggable-popover.tsx +1 -1
  256. package/src/components/ui/dropdown-menu.tsx +2 -1
  257. package/src/components/ui/field.tsx +1 -2
  258. package/src/components/ui/form.tsx +4 -5
  259. package/src/components/ui/fullscreen.tsx +4 -1
  260. package/src/components/ui/label.tsx +1 -1
  261. package/src/components/ui/navigation.tsx +1 -1
  262. package/src/components/ui/popover.tsx +1 -1
  263. package/src/components/ui/progress.tsx +4 -3
  264. package/src/components/ui/query-param-preserving-link.tsx +4 -2
  265. package/src/components/ui/radio-group.tsx +1 -1
  266. package/src/components/ui/range-slider.tsx +1 -1
  267. package/src/components/ui/scroll-area.tsx +1 -1
  268. package/src/components/ui/select.tsx +1 -1
  269. package/src/components/ui/sheet.tsx +3 -2
  270. package/src/components/ui/slider.tsx +1 -1
  271. package/src/components/ui/switch.tsx +1 -1
  272. package/src/components/ui/tabs.tsx +1 -1
  273. package/src/components/ui/textarea.tsx +1 -2
  274. package/src/components/ui/toast.tsx +1 -1
  275. package/src/components/ui/toggle.tsx +1 -1
  276. package/src/components/ui/tooltip.tsx +1 -1
  277. package/src/components/variables/variables-table.tsx +1 -1
  278. package/src/core/ai/context/providers/__tests__/datasource.test.ts +1 -1
  279. package/src/core/ai/context/providers/__tests__/error.test.ts +1 -1
  280. package/src/core/ai/context/providers/__tests__/variable.test.ts +1 -1
  281. package/src/core/ai/context/providers/cell-output.ts +1 -2
  282. package/src/core/ai/context/registry.ts +2 -2
  283. package/src/core/ai/tools/edit-notebook-tool.ts +4 -3
  284. package/src/core/ai/tools/registry.ts +1 -1
  285. package/src/core/ai/tools/run-cells-tool.ts +4 -3
  286. package/src/core/cells/__tests__/add-missing-import.test.ts +23 -22
  287. package/src/core/cells/__tests__/cell.test.ts +14 -13
  288. package/src/core/cells/__tests__/cells.test.ts +2 -2
  289. package/src/core/cells/__tests__/scrollCellIntoView.test.ts +1 -1
  290. package/src/core/cells/__tests__/session.test.ts +1 -1
  291. package/src/core/cells/__tests__/utils.test.ts +1 -1
  292. package/src/core/cells/cells.ts +2 -2
  293. package/src/core/cells/ids.ts +1 -1
  294. package/src/core/cells/logs.ts +1 -1
  295. package/src/core/codemirror/ai/request.ts +1 -1
  296. package/src/core/codemirror/cells/__tests__/extensions.test.ts +15 -17
  297. package/src/core/codemirror/cells/traceback-decorations.ts +1 -1
  298. package/src/core/codemirror/copilot/__tests__/language-server.test.ts +1 -1
  299. package/src/core/codemirror/copilot/__tests__/transport.test.ts +129 -3
  300. package/src/core/codemirror/copilot/client.ts +9 -2
  301. package/src/core/codemirror/copilot/getCodes.ts +1 -1
  302. package/src/core/codemirror/copilot/language-server.ts +12 -1
  303. package/src/core/codemirror/copilot/transport.ts +34 -8
  304. package/src/core/codemirror/copilot/types.ts +1 -1
  305. package/src/core/codemirror/facet.ts +1 -1
  306. package/src/core/codemirror/language/__tests__/sql.test.ts +4 -4
  307. package/src/core/codemirror/language/languages/markdown.ts +1 -3
  308. package/src/core/codemirror/language/languages/python.ts +4 -0
  309. package/src/core/codemirror/language/languages/sql/completion-builder.ts +1 -1
  310. package/src/core/codemirror/language/languages/sql/completion-sources.tsx +4 -6
  311. package/src/core/codemirror/language/languages/sql/sql.ts +1 -3
  312. package/src/core/codemirror/language/metadata.ts +1 -1
  313. package/src/core/codemirror/language/panel/sql.tsx +4 -1
  314. package/src/core/codemirror/language/types.ts +1 -1
  315. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +1 -1
  316. package/src/core/codemirror/lsp/notebook-lsp.ts +1 -1
  317. package/src/core/codemirror/misc/__tests__/dnd.test.ts +1 -1
  318. package/src/core/codemirror/reactive-references/__tests__/analyzer.test.ts +28 -42
  319. package/src/core/codemirror/rtc/loro/awareness.ts +1 -1
  320. package/src/core/config/__tests__/config-schema.test.ts +2 -6
  321. package/src/core/config/config-schema.ts +0 -1
  322. package/src/core/config/feature-flag.tsx +1 -3
  323. package/src/core/datasets/data-source-connections.ts +4 -2
  324. package/src/core/datasets/state.ts +1 -1
  325. package/src/core/dom/__tests__/htmlUtils.test.ts +8 -14
  326. package/src/core/dom/__tests__/outline.test.ts +2 -3
  327. package/src/core/dom/outline.ts +1 -1
  328. package/src/core/edit-app.tsx +4 -1
  329. package/src/core/export/__tests__/hooks.test.ts +1 -1
  330. package/src/core/hotkeys/__tests__/hotkeys.test.ts +1 -1
  331. package/src/core/hotkeys/shortcuts.ts +1 -1
  332. package/src/core/islands/__tests__/bridge.test.ts +2 -2
  333. package/src/core/islands/__tests__/parse.test.ts +8 -7
  334. package/src/core/islands/bridge.ts +2 -2
  335. package/src/core/islands/components/output-wrapper.tsx +1 -1
  336. package/src/core/islands/parse.ts +1 -1
  337. package/src/core/lsp/__tests__/transport.test.ts +1 -1
  338. package/src/core/network/CachingRequestRegistry.ts +1 -1
  339. package/src/core/network/DeferredRequestRegistry.ts +1 -1
  340. package/src/core/network/__tests__/requests-network.test.ts +1 -1
  341. package/src/core/network/api.ts +2 -2
  342. package/src/core/network/requests-lazy.ts +1 -1
  343. package/src/core/network/requests-toasting.tsx +1 -1
  344. package/src/core/runtime/runtime.ts +1 -0
  345. package/src/core/saving/__tests__/filename.test.ts +7 -6
  346. package/src/core/static/__tests__/download-html.test.ts +16 -15
  347. package/src/core/static/__tests__/files.test.ts +30 -28
  348. package/src/core/static/files.ts +1 -1
  349. package/src/core/vscode/vscode-bindings.ts +1 -1
  350. package/src/core/wasm/bridge.ts +3 -3
  351. package/src/core/wasm/worker/tracer.ts +1 -1
  352. package/src/core/websocket/useWebSocket.tsx +5 -3
  353. package/src/css/app/Cell.css +25 -1
  354. package/src/css/globals.css +18 -16
  355. package/src/css/table.css +17 -0
  356. package/src/custom.d.ts +1 -1
  357. package/src/hooks/__tests__/useDuplicateShortcuts.test.ts +3 -3
  358. package/src/hooks/debug.ts +3 -3
  359. package/src/hooks/useDebounce.ts +1 -1
  360. package/src/hooks/useEventListener.ts +1 -1
  361. package/src/hooks/useHotkey.ts +1 -1
  362. package/src/hooks/useLifecycle.ts +2 -2
  363. package/src/hooks/useNonce.ts +1 -1
  364. package/src/hooks/useResizeObserver.ts +2 -2
  365. package/src/main.tsx +1 -1
  366. package/src/plugins/core/BadPlugin.tsx +7 -6
  367. package/src/plugins/core/RenderHTML.tsx +3 -3
  368. package/src/plugins/core/__test__/registerReactComponent.test.ts +1 -1
  369. package/src/plugins/core/registerReactComponent.tsx +4 -4
  370. package/src/plugins/core/rpc.ts +1 -1
  371. package/src/plugins/impl/CheckboxPlugin.tsx +4 -1
  372. package/src/plugins/impl/DataEditorPlugin.tsx +8 -3
  373. package/src/plugins/impl/DataTablePlugin.tsx +6 -2
  374. package/src/plugins/impl/FileBrowserPlugin.tsx +1 -1
  375. package/src/plugins/impl/FormPlugin.tsx +2 -3
  376. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +4 -1
  377. package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +1 -1
  378. package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +43 -15
  379. package/src/plugins/impl/anywidget/AnyWidgetPlugin.tsx +3 -12
  380. package/src/plugins/impl/anywidget/__tests__/model.test.ts +2 -2
  381. package/src/plugins/impl/anywidget/model.ts +1 -1
  382. package/src/plugins/impl/anywidget/types.ts +2 -2
  383. package/src/plugins/impl/anywidget/widget-binding.ts +1 -1
  384. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  385. package/src/plugins/impl/chat/chat-ui.tsx +5 -2
  386. package/src/plugins/impl/data-editor/glide-data-editor.tsx +2 -2
  387. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +2 -2
  388. package/src/plugins/impl/data-explorer/components/query-form.tsx +1 -1
  389. package/src/plugins/impl/data-explorer/functions/function.ts +1 -1
  390. package/src/plugins/impl/data-explorer/queries/types.ts +1 -1
  391. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -1
  392. package/src/plugins/impl/data-frames/forms/__tests__/form.test.tsx +7 -9
  393. package/src/plugins/impl/data-frames/forms/renderers.tsx +1 -1
  394. package/src/plugins/impl/data-frames/utils/operators.ts +1 -1
  395. package/src/plugins/impl/matplotlib/MatplotlibPlugin.tsx +1 -1
  396. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +1 -1
  397. package/src/plugins/impl/panel/PanelPlugin.tsx +2 -2
  398. package/src/plugins/impl/plotly/Plot.tsx +3 -3
  399. package/src/plugins/impl/plotly/PlotlyPlugin.tsx +65 -103
  400. package/src/plugins/impl/plotly/__tests__/PlotlyPlugin.test.tsx +114 -0
  401. package/src/plugins/impl/plotly/__tests__/selection.test.ts +199 -0
  402. package/src/plugins/impl/plotly/selection.ts +333 -0
  403. package/src/plugins/impl/vega/__tests__/make-selectable.test.ts +13 -14
  404. package/src/plugins/impl/vega/__tests__/utils.test.ts +68 -0
  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/impl/vega/utils.ts +14 -5
  409. package/src/plugins/impl/vega/vega.css +2 -1
  410. package/src/plugins/layout/DownloadPlugin.tsx +1 -1
  411. package/src/plugins/layout/ImageComparisonPlugin.tsx +1 -3
  412. package/src/plugins/layout/LazyPlugin.tsx +1 -1
  413. package/src/plugins/layout/RoutesPlugin.tsx +1 -1
  414. package/src/plugins/layout/mermaid/mermaid.tsx +1 -1
  415. package/src/plugins/plugins.ts +1 -1
  416. package/src/plugins/stateless-plugin.ts +4 -2
  417. package/src/stories/data-explorer.stories.tsx +1 -1
  418. package/src/stories/dataframe.stories.tsx +1 -1
  419. package/src/stories/editor.stories.tsx +1 -1
  420. package/src/stories/select.stories.tsx +1 -1
  421. package/src/stories/switchable-multi-select.stories.tsx +1 -1
  422. package/src/utils/Logger.ts +1 -1
  423. package/src/utils/__tests__/arrays.test.ts +1 -1
  424. package/src/utils/__tests__/blob.test.ts +1 -1
  425. package/src/utils/__tests__/cell-urls.test.ts +24 -21
  426. package/src/utils/__tests__/dates.test.ts +1 -1
  427. package/src/utils/__tests__/errors.test.ts +1 -1
  428. package/src/utils/__tests__/filenames.test.ts +15 -14
  429. package/src/utils/__tests__/json-parser.test.ts +14 -21
  430. package/src/utils/__tests__/multi-map.test.ts +3 -3
  431. package/src/utils/__tests__/objects.test.ts +3 -3
  432. package/src/utils/__tests__/path.test.ts +34 -31
  433. package/src/utils/__tests__/urls.test.ts +19 -18
  434. package/src/utils/__tests__/versions.test.ts +5 -5
  435. package/src/utils/__tests__/waitForWs.test.ts +1 -1
  436. package/src/utils/arrays.ts +2 -2
  437. package/src/utils/assertNever.ts +1 -1
  438. package/src/utils/batch-requests.ts +2 -2
  439. package/src/utils/createReducer.ts +2 -2
  440. package/src/utils/id-tree.tsx +2 -2
  441. package/src/utils/idle.ts +1 -1
  442. package/src/utils/invariant.ts +1 -2
  443. package/src/utils/json/base64.ts +2 -5
  444. package/src/utils/maps.ts +1 -1
  445. package/src/utils/math.ts +0 -1
  446. package/src/utils/mime-types.ts +1 -1
  447. package/src/utils/multi-map.ts +1 -1
  448. package/src/utils/objects.ts +1 -1
  449. package/src/utils/once.ts +2 -2
  450. package/src/utils/staticImplements.ts +1 -1
  451. package/src/utils/storage/jotai.ts +1 -1
  452. package/src/utils/tracer.ts +3 -2
  453. package/dist/_basePickBy-QjOmBDRE.js +0 -110
  454. package/dist/_baseSet-xgn1IbGV.js +0 -27
  455. package/dist/architecture-7HQA4BMR-BRyVh_Za.js +0 -6
  456. package/dist/assets/__vite-browser-external-Us1ds95c.js +0 -1
  457. package/dist/dist-B0R_ZM4-.js +0 -6
  458. package/dist/dist-B4a9_9pj.js +0 -5
  459. package/dist/dist-BCSUKEwO.js +0 -5
  460. package/dist/dist-BONIDQq6.js +0 -5
  461. package/dist/dist-BYeRx2hb.js +0 -5
  462. package/dist/dist-D2Rk1j4R.js +0 -1381
  463. package/dist/dist-DZjX5TYv.js +0 -5
  464. package/dist/dist-Dkw9x6kc.js +0 -5
  465. package/dist/dist-Ds6UaXGR.js +0 -6
  466. package/dist/dist-KuEJ1Q53.js +0 -8
  467. package/dist/dist-S72WNyTZ.js +0 -5
  468. package/dist/dist-bTG-yssT.js +0 -5
  469. package/dist/dist-diF0sguc.js +0 -8
  470. package/dist/dist-mJ84BIgu.js +0 -8
  471. package/dist/dist-wSIhFWQz.js +0 -8
  472. package/dist/get-CqrzlV1v.js +0 -68
  473. package/dist/range-CYz5jI--.js +0 -17
  474. package/dist/stex-CZyTRGVB.js +0 -4
  475. package/dist/tooltip-DGHTbHl5.js +0 -404
  476. package/dist/useLifecycle-Dids8BPm.js +0 -173
  477. /package/dist/{dist-KZI_BHqV.js → dist-CxZvoNao.js} +0 -0
  478. /package/dist/{invariant-D4hPsZFI.js → invariant-e8eBgdux.js} +0 -0
  479. /package/dist/{isArrayLikeObject-C-hFPChh.js → isArrayLikeObject-LXbTYiBa.js} +0 -0
  480. /package/dist/{main-CvkAPtaq.js → main-XimWhSi_.js} +0 -0
  481. /package/dist/{purify.es-ukiMXY-F.js → purify.es-hTCfRGdl.js} +0 -0
  482. /package/dist/{react-dom-BKwCWYPW.js → react-dom-BSUuJjCR.js} +0 -0
  483. /package/dist/{stex-Ze8D4R_5.js → stex-D887Ylhf.js} +0 -0
@@ -45,9 +45,8 @@ def foo(x):
45
45
  });
46
46
 
47
47
  test("should handle lambda parameters", () => {
48
- expect(
49
- runHighlight(["a", "b"], "result = lambda a: a + b"),
50
- ).toMatchInlineSnapshot(`
48
+ expect(runHighlight(["a", "b"], "result = lambda a: a + b"))
49
+ .toMatchInlineSnapshot(`
51
50
  "
52
51
  result = lambda a: a + b
53
52
  ^
@@ -56,9 +55,8 @@ def foo(x):
56
55
  });
57
56
 
58
57
  test("should handle comprehension variables", () => {
59
- expect(
60
- runHighlight(["a", "data"], "result = [a for a in data]"),
61
- ).toMatchInlineSnapshot(`
58
+ expect(runHighlight(["a", "data"], "result = [a for a in data]"))
59
+ .toMatchInlineSnapshot(`
62
60
  "
63
61
  result = [a for a in data]
64
62
  ^^^^
@@ -146,9 +144,8 @@ def factorial(n):
146
144
  });
147
145
 
148
146
  test("function param vs global", () => {
149
- expect(
150
- runHighlight(["a", "b"], "def foo(a): return a + b"),
151
- ).toMatchInlineSnapshot(`
147
+ expect(runHighlight(["a", "b"], "def foo(a): return a + b"))
148
+ .toMatchInlineSnapshot(`
152
149
  "
153
150
  def foo(a): return a + b
154
151
  ^
@@ -157,9 +154,8 @@ def factorial(n):
157
154
  });
158
155
 
159
156
  test("lambda param vs global", () => {
160
- expect(
161
- runHighlight(["x", "b"], "func = lambda x: x + b"),
162
- ).toMatchInlineSnapshot(`
157
+ expect(runHighlight(["x", "b"], "func = lambda x: x + b"))
158
+ .toMatchInlineSnapshot(`
163
159
  "
164
160
  func = lambda x: x + b
165
161
  ^
@@ -168,9 +164,8 @@ def factorial(n):
168
164
  });
169
165
 
170
166
  test("lambda with multiple params", () => {
171
- expect(
172
- runHighlight(["x", "y", "z"], "f = lambda x, y: x + y + z"),
173
- ).toMatchInlineSnapshot(`
167
+ expect(runHighlight(["x", "y", "z"], "f = lambda x, y: x + y + z"))
168
+ .toMatchInlineSnapshot(`
174
169
  "
175
170
  f = lambda x, y: x + y + z
176
171
  ^
@@ -187,9 +182,8 @@ def factorial(n):
187
182
  });
188
183
 
189
184
  test("nested comprehension", () => {
190
- expect(
191
- runHighlight(["a", "b"], "[(a + b) for a, b in [(1,2), (3,4)]]"),
192
- ).toMatchInlineSnapshot(`
185
+ expect(runHighlight(["a", "b"], "[(a + b) for a, b in [(1,2), (3,4)]]"))
186
+ .toMatchInlineSnapshot(`
193
187
  "
194
188
  [(a + b) for a, b in [(1,2), (3,4)]]
195
189
  "
@@ -225,9 +219,8 @@ def factorial(n):
225
219
  });
226
220
 
227
221
  test("class body using globals", () => {
228
- expect(
229
- runHighlight(["a", "b"], "class MyClass:\n value = a + b"),
230
- ).toMatchInlineSnapshot(`
222
+ expect(runHighlight(["a", "b"], "class MyClass:\n value = a + b"))
223
+ .toMatchInlineSnapshot(`
231
224
  "
232
225
  class MyClass:
233
226
  value = a + b
@@ -237,9 +230,8 @@ def factorial(n):
237
230
  });
238
231
 
239
232
  test("decorator using global", () => {
240
- expect(
241
- runHighlight(["logger"], "@logger\ndef decorated(): pass"),
242
- ).toMatchInlineSnapshot(`
233
+ expect(runHighlight(["logger"], "@logger\ndef decorated(): pass"))
234
+ .toMatchInlineSnapshot(`
243
235
  "
244
236
  @logger
245
237
  ^^^^^^
@@ -317,9 +309,8 @@ ${" ".repeat(8)}
317
309
  });
318
310
 
319
311
  test("multiple assignment", () => {
320
- expect(
321
- runHighlight(["x", "y", "z", "a"], "x = y = z + a"),
322
- ).toMatchInlineSnapshot(`
312
+ expect(runHighlight(["x", "y", "z", "a"], "x = y = z + a"))
313
+ .toMatchInlineSnapshot(`
323
314
  "
324
315
  x = y = z + a
325
316
  ^ ^
@@ -353,9 +344,8 @@ ${" ".repeat(8)}
353
344
  });
354
345
 
355
346
  test("global in return", () => {
356
- expect(
357
- runHighlight(["config"], "def get_config(): return config"),
358
- ).toMatchInlineSnapshot(`
347
+ expect(runHighlight(["config"], "def get_config(): return config"))
348
+ .toMatchInlineSnapshot(`
359
349
  "
360
350
  def get_config(): return config
361
351
  ^^^^^^
@@ -410,9 +400,8 @@ class Configurable:
410
400
  });
411
401
 
412
402
  test("comprehension shadows global 2", () => {
413
- expect(
414
- runHighlight(["i"], "squares = [i**2 for i in range(10)]"),
415
- ).toMatchInlineSnapshot(`
403
+ expect(runHighlight(["i"], "squares = [i**2 for i in range(10)]"))
404
+ .toMatchInlineSnapshot(`
416
405
  "
417
406
  squares = [i**2 for i in range(10)]
418
407
  "
@@ -420,9 +409,8 @@ class Configurable:
420
409
  });
421
410
 
422
411
  test("comprehension with global in condition", () => {
423
- expect(
424
- runHighlight(["x", "z"], "filtered = [x for x in [] if x > z]"),
425
- ).toMatchInlineSnapshot(`
412
+ expect(runHighlight(["x", "z"], "filtered = [x for x in [] if x > z]"))
413
+ .toMatchInlineSnapshot(`
426
414
  "
427
415
  filtered = [x for x in [] if x > z]
428
416
  ^
@@ -459,9 +447,8 @@ def make_adder(x):
459
447
  });
460
448
 
461
449
  test("rebinding in list comprehension", () => {
462
- expect(
463
- runHighlight(["x"], "rebinding = [x for x in range(5)]"),
464
- ).toMatchInlineSnapshot(`
450
+ expect(runHighlight(["x"], "rebinding = [x for x in range(5)]"))
451
+ .toMatchInlineSnapshot(`
465
452
  "
466
453
  rebinding = [x for x in range(5)]
467
454
  "
@@ -644,9 +631,8 @@ def run(polars):
644
631
  });
645
632
 
646
633
  test("mixed comprehension and outer globals", () => {
647
- expect(
648
- runHighlight(["y", "z"], "values = [y + z for y in range(5)]"),
649
- ).toMatchInlineSnapshot(`
634
+ expect(runHighlight(["y", "z"], "values = [y + z for y in range(5)]"))
635
+ .toMatchInlineSnapshot(`
650
636
  "
651
637
  values = [y + z for y in range(5)]
652
638
  ^
@@ -185,7 +185,7 @@ export const createSelectionLayer = (): Extension =>
185
185
  .flatMap(([, state]) => {
186
186
  const selectionRange = EditorSelection.range(
187
187
  state.cursor.anchor,
188
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
188
+ // oxlint-disable-next-line typescript/no-non-null-assertion
189
189
  state.cursor.head!,
190
190
  );
191
191
  const markers = RectangleMarker.forRange(
@@ -70,9 +70,7 @@ test("default UserConfig - empty", () => {
70
70
  "reference_highlighting": true,
71
71
  "theme": "light",
72
72
  },
73
- "experimental": {
74
- "storage_inspector": true,
75
- },
73
+ "experimental": {},
76
74
  "formatting": {
77
75
  "line_length": 79,
78
76
  },
@@ -142,9 +140,7 @@ test("default UserConfig - one level", () => {
142
140
  "reference_highlighting": true,
143
141
  "theme": "light",
144
142
  },
145
- "experimental": {
146
- "storage_inspector": true,
147
- },
143
+ "experimental": {},
148
144
  "formatting": {
149
145
  "line_length": 79,
150
146
  },
@@ -186,7 +186,6 @@ export const UserConfigSchema = z
186
186
  .looseObject({
187
187
  markdown: z.boolean().optional(),
188
188
  rtc: z.boolean().optional(),
189
- storage_inspector: z.boolean().prefault(true),
190
189
  // Add new experimental features here
191
190
  })
192
191
  // Pass through so that we don't remove any extra keys that the user has added.
@@ -4,14 +4,13 @@ import { repl } from "@/utils/repl";
4
4
  import { getRequestClient } from "../network/requests";
5
5
  import { getResolvedMarimoConfig } from "./config";
6
6
 
7
- // eslint-disable-next-line @typescript-eslint/no-empty-interface
7
+ // oxlint-disable-next-line typescript/no-empty-object-type
8
8
  export interface ExperimentalFeatures {
9
9
  markdown: boolean; // Used in playground (community cloud)
10
10
  wasm_layouts: boolean; // Used in playground (community cloud)
11
11
  rtc_v2: boolean;
12
12
  cache_panel: boolean;
13
13
  external_agents: boolean;
14
- storage_inspector: boolean;
15
14
  // Add new feature flags here
16
15
  }
17
16
 
@@ -21,7 +20,6 @@ const defaultValues: ExperimentalFeatures = {
21
20
  rtc_v2: false,
22
21
  cache_panel: false,
23
22
  external_agents: import.meta.env.DEV,
24
- storage_inspector: true,
25
23
  };
26
24
 
27
25
  export function getFeatureFlag<T extends keyof ExperimentalFeatures>(
@@ -32,8 +32,10 @@ const initialConnections: ConnectionsMap = new Map([
32
32
  ]);
33
33
 
34
34
  // Extend the backend type but override the name property with the strongly typed ConnectionName
35
- export interface DataSourceConnection
36
- extends Omit<DataSourceConnectionType, "name"> {
35
+ export interface DataSourceConnection extends Omit<
36
+ DataSourceConnectionType,
37
+ "name"
38
+ > {
37
39
  name: ConnectionName;
38
40
  }
39
41
 
@@ -66,7 +66,7 @@ const {
66
66
  return true;
67
67
  });
68
68
 
69
- const sortedTables = dedupedTables.sort((a, b) => {
69
+ const sortedTables = dedupedTables.toSorted((a, b) => {
70
70
  return a.name.localeCompare(b.name);
71
71
  });
72
72
 
@@ -6,20 +6,14 @@ import { UIElementRegistry } from "../uiregistry";
6
6
  const registry = UIElementRegistry.INSTANCE;
7
7
 
8
8
  describe("htmlUtils", () => {
9
- it.each([
10
- false,
11
- { a: 1 },
12
- true,
13
- 0,
14
- 1,
15
- [{ a: 1 }, { b: 2 }],
16
- "hello",
17
- "",
18
- ])("can parse element.dataset.initialValue", (initialValue) => {
19
- const div = document.createElement("div");
20
- div.dataset.initialValue = JSON.stringify(initialValue);
21
- expect(parseInitialValue(div, registry)).toEqual(initialValue);
22
- });
9
+ it.each([false, { a: 1 }, true, 0, 1, [{ a: 1 }, { b: 2 }], "hello", ""])(
10
+ "can parse element.dataset.initialValue",
11
+ (initialValue) => {
12
+ const div = document.createElement("div");
13
+ div.dataset.initialValue = JSON.stringify(initialValue);
14
+ expect(parseInitialValue(div, registry)).toEqual(initialValue);
15
+ },
16
+ );
23
17
 
24
18
  it("can parse an element with no initialValue", () => {
25
19
  const div = document.createElement("div");
@@ -439,9 +439,8 @@ const OUTLINE_2: Outline = {
439
439
  };
440
440
 
441
441
  it("mergeOutlines", () => {
442
- expect(
443
- mergeOutlines([OUTLINE_1, null, OUTLINE_2, null]),
444
- ).toMatchInlineSnapshot(`
442
+ expect(mergeOutlines([OUTLINE_1, null, OUTLINE_2, null]))
443
+ .toMatchInlineSnapshot(`
445
444
  {
446
445
  "items": [
447
446
  {
@@ -39,7 +39,7 @@ function getOutline(html: string): Outline | null {
39
39
  const document = parser.parseFromString(html, "text/html");
40
40
 
41
41
  const headings = document.querySelectorAll(HEADER_TAGS);
42
- // eslint-disable-next-line unicorn/prefer-spread
42
+ // oxlint-disable-next-line unicorn/prefer-spread
43
43
  for (const heading of Array.from(headings)) {
44
44
  const name = heading.textContent;
45
45
  // Check if the heading is within any of the excluded tags
@@ -1,7 +1,10 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
3
  import { usePrevious } from "@dnd-kit/utilities";
4
- import { TooltipProvider } from "@radix-ui/react-tooltip";
4
+ import { Tooltip } from "radix-ui";
5
+
6
+ const TooltipProvider = Tooltip.Provider;
7
+
5
8
  import { useAtomValue, useSetAtom } from "jotai";
6
9
  import { useEffect } from "react";
7
10
  import { NotStartedConnectionAlert } from "@/components/editor/alerts/connecting-alert";
@@ -55,7 +55,7 @@ describe("useEnrichCellOutputs", () => {
55
55
 
56
56
  // Helper to set the mocked atom (cast to any to work around type mismatch)
57
57
  const setCellsRuntime = (value: Record<CellId, CellRuntimeState>) => {
58
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
+ // oxlint-disable-next-line typescript/no-explicit-any
59
59
  store.set(cellsRuntimeAtom as any, value);
60
60
  };
61
61
 
@@ -15,7 +15,7 @@ function createHotkeys(
15
15
  keys: Partial<Record<HotkeyAction, Hotkey>>,
16
16
  ): Record<HotkeyAction, Hotkey> {
17
17
  return new Proxy(keys as Record<HotkeyAction, Hotkey>, {
18
- // biome-ignore lint: ok to have three arguments here (It's a web API)
18
+ // oxlint-ignore-next-line -- ok to have three arguments here (It's a web API)
19
19
  get(target, p, receiver) {
20
20
  const key = Reflect.get(target, p, receiver);
21
21
  if (key === "undefined") {
@@ -73,7 +73,7 @@ function areKeysPressed(keys: string[], e: IKeyboardEvent): boolean {
73
73
  // - US keyboards: "&"
74
74
  // - Some layouts: "7"
75
75
  // Using e.code (physical key) instead of e.key (produced character)
76
- // eslint-disable-next-line unicorn/prefer-ternary
76
+ // oxlint-disable-next-line unicorn/prefer-ternary
77
77
  if (/^\d$/.test(key) && e.shiftKey) {
78
78
  satisfied &&= e.code === `Digit${key}`;
79
79
  } else {
@@ -84,7 +84,7 @@ describe("IslandsPyodideBridge", () => {
84
84
  beforeEach(() => {
85
85
  vi.clearAllMocks();
86
86
  // Reset the singleton by clearing the window property
87
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ // oxlint-disable-next-line typescript/no-explicit-any
88
88
  delete (window as any)._marimo_private_IslandsPyodideBridge;
89
89
  // Access the singleton - creates a fresh instance
90
90
  bridge = IslandsPyodideBridge.INSTANCE;
@@ -92,7 +92,7 @@ describe("IslandsPyodideBridge", () => {
92
92
 
93
93
  afterEach(() => {
94
94
  // Clean up singleton
95
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ // oxlint-disable-next-line typescript/no-explicit-any
96
96
  delete (window as any)._marimo_private_IslandsPyodideBridge;
97
97
  });
98
98
 
@@ -78,11 +78,12 @@ describe("parseIslandCode", () => {
78
78
 
79
79
  codes = [...codes, ...codes.map(encodeURIComponent)];
80
80
 
81
- it.each(
82
- codes,
83
- )("should return the code without leading or trailing whitespace", (code) => {
84
- const result = parseIslandCode(code);
85
- const expected = 'def __():\n print("Hello, World!")\n return';
86
- expect(result).toBe(expected);
87
- });
81
+ it.each(codes)(
82
+ "should return the code without leading or trailing whitespace",
83
+ (code) => {
84
+ const result = parseIslandCode(code);
85
+ const expected = 'def __():\n print("Hello, World!")\n return';
86
+ expect(result).toBe(expected);
87
+ },
88
+ );
88
89
  });
@@ -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 { getWorkerRPC } from "@/core/wasm/rpc";
5
5
  import { Deferred } from "@/utils/Deferred";
@@ -47,7 +47,7 @@ export class IslandsPyodideBridge implements RunRequests, EditRequests {
47
47
  const blob = new Blob([js], { type: "application/javascript" });
48
48
  const objURL = URL.createObjectURL(blob);
49
49
  const worker = new Worker(
50
- // eslint-disable-next-line unicorn/relative-url-style
50
+ // oxlint-disable-next-line unicorn/relative-url-style
51
51
  objURL,
52
52
  {
53
53
  type: "module",
@@ -65,7 +65,7 @@ export const MarimoOutputWrapper: React.FC<Props> = ({
65
65
  // Lint still wants use to have the same event listeners per instance (which
66
66
  // makes sense), so noop is used.
67
67
  const maybeNoop = (fn: (e: KeyboardEvent) => void) =>
68
- // eslint-disable-next-line @typescript-eslint/no-empty-function
68
+ // oxlint-disable-next-line typescript/no-empty-function
69
69
  alwaysShowRun ? () => {} : fn;
70
70
 
71
71
  useEventListener(
@@ -72,7 +72,7 @@ export function parseMarimoIslandApps(): MarimoIslandApp[] {
72
72
  if (!apps.has(id)) {
73
73
  apps.set(id, { id, cells: [] });
74
74
  }
75
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
75
+ // oxlint-disable-next-line typescript/no-non-null-assertion
76
76
  const app = apps.get(id)!;
77
77
  const idx = app.cells.length;
78
78
  app.cells.push({
@@ -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 { WebSocketTransport } from "@open-rpc/client-js";
5
5
  import { beforeEach, describe, expect, it, vi } from "vitest";
@@ -27,7 +27,7 @@ export class CachingRequestRegistry<REQ, RES> {
27
27
  if (typeof o !== "object" || o === null) {
28
28
  return String(o);
29
29
  }
30
- return JSON.stringify(o, Object.keys(o).sort(), 2);
30
+ return JSON.stringify(o, Object.keys(o).toSorted(), 2);
31
31
  };
32
32
  }
33
33
 
@@ -1,5 +1,5 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- /* eslint-disable @typescript-eslint/no-redeclare */
2
+ /* oxlint-disable typescript/no-redeclare */
3
3
  import type { components } from "@marimo-team/marimo-api";
4
4
  import { Deferred } from "@/utils/Deferred";
5
5
  import { generateUUID } from "@/utils/uuid";
@@ -1,6 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ /* oxlint-disable typescript/no-explicit-any */
4
4
 
5
5
  import { beforeEach, describe, expect, it, vi } from "vitest";
6
6
  import * as apiModule from "../api";
@@ -108,7 +108,7 @@ export const API = {
108
108
  response: Response;
109
109
  }): Promise<T> => {
110
110
  if (response.error) {
111
- // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
111
+ // oxlint-disable-next-line typescript/prefer-promise-reject-errors
112
112
  return Promise.reject(response.error);
113
113
  }
114
114
  return Promise.resolve(response.data as T);
@@ -118,7 +118,7 @@ export const API = {
118
118
  response: Response;
119
119
  }): Promise<null> => {
120
120
  if (response.error) {
121
- // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
121
+ // oxlint-disable-next-line typescript/prefer-promise-reject-errors
122
122
  return Promise.reject(response.error);
123
123
  }
124
124
  return Promise.resolve(null);
@@ -138,7 +138,7 @@ export function createLazyRequests(
138
138
  await runtimeManager.init();
139
139
  });
140
140
 
141
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
141
+ // oxlint-disable-next-line typescript/no-explicit-any
142
142
  function wrapRequest<T extends (...args: any[]) => Promise<any>>(
143
143
  request: T,
144
144
  key: keyof AllRequests,
@@ -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 { useAtomValue } from "jotai";
5
5
  import { Spinner } from "@/components/icons/spinner";
@@ -22,6 +22,7 @@ export class RuntimeManager {
22
22
  } catch (error) {
23
23
  throw new Error(
24
24
  `Invalid runtime URL: ${this.config.url}. ${error instanceof Error ? error.message : "Unknown error"}`,
25
+ { cause: error },
25
26
  );
26
27
  }
27
28
 
@@ -5,12 +5,13 @@ import { EDGE_CASE_FILENAMES } from "../../../__tests__/mocks";
5
5
  import { Paths } from "../../../utils/paths";
6
6
 
7
7
  describe("filename handling logic", () => {
8
- it.each(
9
- EDGE_CASE_FILENAMES,
10
- )("should extract basename correctly for document title: %s", (filename) => {
11
- const basename = Paths.basename(filename);
12
- expect(basename).toBe(filename); // Since no path separator
13
- });
8
+ it.each(EDGE_CASE_FILENAMES)(
9
+ "should extract basename correctly for document title: %s",
10
+ (filename) => {
11
+ const basename = Paths.basename(filename);
12
+ expect(basename).toBe(filename); // Since no path separator
13
+ },
14
+ );
14
15
 
15
16
  it("should handle full paths with unicode filenames", () => {
16
17
  EDGE_CASE_FILENAMES.forEach((filename) => {
@@ -44,23 +44,24 @@ describe("updateAssetUrl", () => {
44
44
  });
45
45
 
46
46
  describe("filename handling for downloads", () => {
47
- it.each(
48
- EDGE_CASE_FILENAMES,
49
- )("should handle edge case filenames in download operations: %s", (filename) => {
50
- // Test that basename extraction works correctly for downloads
51
- const basename = Paths.basename(filename);
52
- expect(basename).toBe(filename);
47
+ it.each(EDGE_CASE_FILENAMES)(
48
+ "should handle edge case filenames in download operations: %s",
49
+ (filename) => {
50
+ // Test that basename extraction works correctly for downloads
51
+ const basename = Paths.basename(filename);
52
+ expect(basename).toBe(filename);
53
53
 
54
- // Test filename conversion for HTML downloads
55
- const htmlFilename = Filenames.toHTML(filename);
56
- expect(htmlFilename).toMatch(/\.html$/);
57
- expect(htmlFilename).toContain(Filenames.withoutExtension(filename));
54
+ // Test filename conversion for HTML downloads
55
+ const htmlFilename = Filenames.toHTML(filename);
56
+ expect(htmlFilename).toMatch(/\.html$/);
57
+ expect(htmlFilename).toContain(Filenames.withoutExtension(filename));
58
58
 
59
- // Ensure unicode and spaces are preserved in basename
60
- const withoutExt = Filenames.withoutExtension(filename);
61
- expect(withoutExt).not.toBe("");
62
- expect(typeof withoutExt).toBe("string");
63
- });
59
+ // Ensure unicode and spaces are preserved in basename
60
+ const withoutExt = Filenames.withoutExtension(filename);
61
+ expect(withoutExt).not.toBe("");
62
+ expect(typeof withoutExt).toBe("string");
63
+ },
64
+ );
64
65
 
65
66
  it("should handle blob download filename generation", () => {
66
67
  // Mock URL.createObjectURL for blob testing
@@ -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();