@marimo-team/frontend 0.22.1-dev34 → 0.22.1-dev39

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 (239) hide show
  1. package/dist/assets/{CellStatus-DKyVv7Zj.js → CellStatus-Cf0Jlrcs.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-BUc9LHJJ.js → ConnectedDataExplorerComponent-DUxaLoL7.js} +1 -1
  3. package/dist/assets/{JsonOutput-D1i8P1dG.js → JsonOutput-IpD2GLtO.js} +2 -2
  4. package/dist/assets/{MarimoErrorOutput-RmM7djc-.js → MarimoErrorOutput-dTNCLY-Q.js} +1 -1
  5. package/dist/assets/{Plot-C7NE7pEx.js → Plot-BAM1jEAz.js} +72 -72
  6. package/dist/assets/{RenderHTML-Bmn77an6.js → RenderHTML-C5GEp4ca.js} +1 -1
  7. package/dist/assets/{add-cell-with-ai-RyZ9Xe2b.js → add-cell-with-ai-C0J3LyiV.js} +1 -1
  8. package/dist/assets/{add-connection-dialog-ogwy8tvS.js → add-connection-dialog-C42PDYI7.js} +1 -1
  9. package/dist/assets/{agent-panel-BHLkHj7k.js → agent-panel-CH-jHjEl.js} +1 -1
  10. package/dist/assets/{ai-model-dropdown-Dnf-CxbP.js → ai-model-dropdown-D14GiszF.js} +1 -1
  11. package/dist/assets/{app-config-button-D1Z_xsvC.js → app-config-button-v-557oRb.js} +1 -1
  12. package/dist/assets/{cell-editor-_GDTh-4a.js → cell-editor-Dd6UaL1A.js} +2 -2
  13. package/dist/assets/{cell-link-D4UrIH9w.js → cell-link-Cimoe3Fv.js} +1 -1
  14. package/dist/assets/{cells-ArUhhHls.js → cells-CcsG9Aum.js} +1 -1
  15. package/dist/assets/{chat-display-YmFjOXkV.js → chat-display-hfpeXiYe.js} +1 -1
  16. package/dist/assets/{chat-panel-B76rxYTh.js → chat-panel-DxT370nA.js} +1 -1
  17. package/dist/assets/{chat-ui-BitNq1z6.js → chat-ui-Dv4y0-td.js} +1 -1
  18. package/dist/assets/{column-preview-NDhbeu0E.js → column-preview-ZSErTRFA.js} +1 -1
  19. package/dist/assets/{command-palette-uJxkhle4.js → command-palette-CjF_cblG.js} +1 -1
  20. package/dist/assets/{common-CRBlPqv5.js → common-BZK7spst.js} +1 -1
  21. package/dist/assets/{components-DwGcJvMB.js → components-D2OlyENc.js} +1 -1
  22. package/dist/assets/{components-BfHGr__b.js → components-DpxyscxU.js} +1 -1
  23. package/dist/assets/{datasource-D9e37ifa.js → datasource-D9nfSxKS.js} +1 -1
  24. package/dist/assets/{dependency-graph-panel-BBmN-Vc7.js → dependency-graph-panel-5MbMtFss.js} +1 -1
  25. package/dist/assets/{documentation-panel-Dm2xtsTq.js → documentation-panel-DPdXS3YO.js} +1 -1
  26. package/dist/assets/{download-7EtMZf2Y.js → download-BFQaUFKI.js} +1 -1
  27. package/dist/assets/{edit-page-Cr_DnrkM.js → edit-page-CMd8_Psc.js} +4 -4
  28. package/dist/assets/{error-panel-C3-vTzaH.js → error-panel-DV8jpRsf.js} +1 -1
  29. package/dist/assets/{file-explorer-panel-g9KppC7Y.js → file-explorer-panel-Dr_ZNDk3.js} +1 -1
  30. package/dist/assets/{file-icons-JXAG6vK-.js → file-icons-DSJsG_mI.js} +1 -1
  31. package/dist/assets/{floating-outline-B6Qyid7Q.js → floating-outline-Cfa1ESSb.js} +1 -1
  32. package/dist/assets/{focus-DCN0oEe0.js → focus-C5u0JQUq.js} +1 -1
  33. package/dist/assets/{form-BVnQnVQ2.js → form-3ZUGKch9.js} +1 -1
  34. package/dist/assets/glide-data-editor-a3qLDl-r.js +132 -0
  35. package/dist/assets/{home-page-Bg02jazh.js → home-page-BrqppCUS.js} +1 -1
  36. package/dist/assets/{hooks-zQJ9iU_R.js → hooks-CHE17GG1.js} +1 -1
  37. package/dist/assets/{html-to-image-C5XSE7QT.js → html-to-image-BRbQwG7G.js} +1 -1
  38. package/dist/assets/{index-BaQAJwyb.css → index-BkdonYlq.css} +1 -1
  39. package/dist/assets/index-Bt8G6SSE.js +42 -0
  40. package/dist/assets/{kiosk-mode-CriCUOI1.js → kiosk-mode-Cu86-jaD.js} +1 -1
  41. package/dist/assets/{layout-Cudicm29.js → layout-B-lTkLKA.js} +1 -1
  42. package/dist/assets/{logs-panel-CoWO9c8s.js → logs-panel-CNVgwoHO.js} +1 -1
  43. package/dist/assets/{markdown-renderer-CyUc0f8D.js → markdown-renderer-B91NzmVT.js} +1 -1
  44. package/dist/assets/{name-cell-input-DeM6upjB.js → name-cell-input-hsV_b1Op.js} +1 -1
  45. package/dist/assets/{outline-panel-C4P3wA7Z.js → outline-panel-C3jvSnZF.js} +1 -1
  46. package/dist/assets/{packages-panel-DnrjjQDF.js → packages-panel-0_Z5vM7i.js} +1 -1
  47. package/dist/assets/{panels-BCRqI88j.js → panels-uc8QhzpO.js} +1 -1
  48. package/dist/assets/{process-output-e_aMblRk.js → process-output-CsvKn_Mr.js} +1 -1
  49. package/dist/assets/{readonly-python-code-CVgh88Tn.js → readonly-python-code-oFCRG7Wt.js} +1 -1
  50. package/dist/assets/{run-page-C-ySBXLo.js → run-page-DKCqiq_f.js} +1 -1
  51. package/dist/assets/{scratchpad-panel-C5Pogi1P.js → scratchpad-panel-ChHLgDv_.js} +1 -1
  52. package/dist/assets/{session-panel-DEsnZWks.js → session-panel-CPKKt31q.js} +1 -1
  53. package/dist/assets/{snippets-panel-DQgE3W8I.js → snippets-panel-CDqEDwpY.js} +1 -1
  54. package/dist/assets/{spec-CBbUxOvL.js → spec-CFx2bitO.js} +1 -1
  55. package/dist/assets/{state-pGNeffyB.js → state-BBVlYaRC.js} +1 -1
  56. package/dist/assets/{state-CV8Wy3e4.js → state-C93JW11U.js} +1 -1
  57. package/dist/assets/{textarea-DqzNK0s9.js → textarea-DJEKmYtw.js} +1 -1
  58. package/dist/assets/{tracing-BUFVOmZw.js → tracing-CLWi5jD3.js} +1 -1
  59. package/dist/assets/{tracing-panel-BsLloPWd.js → tracing-panel-ksnvVrMH.js} +2 -2
  60. package/dist/assets/{useAddCell-cC7JUC0q.js → useAddCell-mJ1PkF-E.js} +1 -1
  61. package/dist/assets/{useCellActionButton-BiYBXHfb.js → useCellActionButton-4HWj1rt3.js} +1 -1
  62. package/dist/assets/{useDeleteCell-D2p4Dz0U.js → useDeleteCell-B0OAS0ly.js} +1 -1
  63. package/dist/assets/{useDependencyPanelTab-c5-eXlcr.js → useDependencyPanelTab-BuZ0fgAR.js} +1 -1
  64. package/dist/assets/useLifecycle-N3bfh_O1.js +1 -0
  65. package/dist/assets/useNotebookActions-DuHUqtII.js +1 -0
  66. package/dist/assets/{useRunCells-DgBY-vh9.js → useRunCells-Du76UV1R.js} +1 -1
  67. package/dist/assets/{useSplitCell-SS0kKwVk.js → useSplitCell-CeL7eJq1.js} +1 -1
  68. package/dist/index.html +25 -25
  69. package/package.json +1 -1
  70. package/src/__mocks__/common.ts +4 -4
  71. package/src/components/chat/acp/agent-panel.tsx +2 -2
  72. package/src/components/data-table/__tests__/columns.test.tsx +7 -7
  73. package/src/components/data-table/cell-hover-template/types.ts +1 -1
  74. package/src/components/data-table/cell-hover-text/types.ts +1 -1
  75. package/src/components/data-table/cell-selection/__tests__/feature.test.ts +1 -1
  76. package/src/components/data-table/cell-selection/types.ts +1 -1
  77. package/src/components/data-table/cell-styling/types.ts +1 -1
  78. package/src/components/data-table/charts/chart-spec/altair-generator.ts +2 -2
  79. package/src/components/data-table/column-formatting/types.ts +2 -2
  80. package/src/components/data-table/column-summary/legacy-chart-spec.ts +1 -1
  81. package/src/components/data-table/column-wrapping/types.ts +1 -1
  82. package/src/components/data-table/copy-column/types.ts +1 -1
  83. package/src/components/data-table/data-table.tsx +12 -12
  84. package/src/components/data-table/focus-row/types.ts +1 -1
  85. package/src/components/data-table/loading-table.tsx +1 -1
  86. package/src/components/data-table/range-focus/__tests__/atoms.test.ts +2 -2
  87. package/src/components/data-table/range-focus/atoms.ts +2 -2
  88. package/src/components/dependency-graph/dependency-graph-tree.tsx +1 -1
  89. package/src/components/editor/__tests__/dynamic-favicon.test.tsx +1 -1
  90. package/src/components/editor/actions/pair-with-agent-modal.tsx +142 -0
  91. package/src/components/editor/actions/useNotebookActions.tsx +10 -0
  92. package/src/components/editor/ai/ai-completion-editor.tsx +1 -1
  93. package/src/components/editor/app-container.tsx +1 -1
  94. package/src/components/editor/chrome/panels/empty-state.tsx +1 -0
  95. package/src/components/editor/controls/keyboard-shortcuts.tsx +1 -1
  96. package/src/components/editor/navigation/__tests__/navigation.test.ts +1 -1
  97. package/src/components/editor/navigation/navigation.ts +1 -1
  98. package/src/components/editor/notebook-cell.tsx +1 -1
  99. package/src/components/editor/output/JsonOutput.tsx +4 -4
  100. package/src/components/editor/output/ansi-reduce.ts +2 -2
  101. package/src/components/editor/output/console/ConsoleOutput.tsx +1 -1
  102. package/src/components/editor/renderers/cells-renderer.tsx +1 -1
  103. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +1 -1
  104. package/src/components/editor/renderers/plugins.ts +1 -1
  105. package/src/components/editor/renderers/slides-layout/types.ts +2 -2
  106. package/src/components/editor/renderers/vertical-layout/__tests__/useFocusFirstEditor.test.ts +2 -2
  107. package/src/components/editor/renderers/vertical-layout/__tests__/vertical-layout.test.ts +1 -1
  108. package/src/components/find-replace/find-replace.tsx +3 -1
  109. package/src/components/forms/form.tsx +1 -1
  110. package/src/components/forms/options.ts +1 -1
  111. package/src/components/static-html/static-banner.tsx +2 -2
  112. package/src/components/terminal/terminal.tsx +4 -4
  113. package/src/components/ui/button.tsx +1 -1
  114. package/src/components/ui/command.tsx +1 -1
  115. package/src/core/ai/context/providers/__tests__/datasource.test.ts +1 -1
  116. package/src/core/ai/context/providers/__tests__/error.test.ts +1 -1
  117. package/src/core/ai/context/providers/__tests__/variable.test.ts +1 -1
  118. package/src/core/ai/context/registry.ts +2 -2
  119. package/src/core/ai/tools/registry.ts +1 -1
  120. package/src/core/cells/__tests__/cells.test.ts +2 -2
  121. package/src/core/cells/__tests__/scrollCellIntoView.test.ts +1 -1
  122. package/src/core/cells/__tests__/session.test.ts +1 -1
  123. package/src/core/cells/__tests__/utils.test.ts +1 -1
  124. package/src/core/cells/cells.ts +1 -1
  125. package/src/core/cells/ids.ts +1 -1
  126. package/src/core/codemirror/ai/request.ts +1 -1
  127. package/src/core/codemirror/copilot/__tests__/language-server.test.ts +1 -1
  128. package/src/core/codemirror/copilot/__tests__/transport.test.ts +1 -1
  129. package/src/core/codemirror/copilot/language-server.ts +1 -1
  130. package/src/core/codemirror/copilot/types.ts +1 -1
  131. package/src/core/codemirror/facet.ts +1 -1
  132. package/src/core/codemirror/language/__tests__/sql.test.ts +4 -4
  133. package/src/core/codemirror/language/languages/sql/completion-builder.ts +1 -1
  134. package/src/core/codemirror/language/metadata.ts +1 -1
  135. package/src/core/codemirror/language/types.ts +1 -1
  136. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +1 -1
  137. package/src/core/codemirror/lsp/notebook-lsp.ts +1 -1
  138. package/src/core/codemirror/misc/__tests__/dnd.test.ts +1 -1
  139. package/src/core/codemirror/rtc/loro/awareness.ts +1 -1
  140. package/src/core/config/feature-flag.tsx +1 -1
  141. package/src/core/dom/outline.ts +1 -1
  142. package/src/core/export/__tests__/hooks.test.ts +1 -1
  143. package/src/core/hotkeys/__tests__/hotkeys.test.ts +1 -1
  144. package/src/core/hotkeys/shortcuts.ts +1 -1
  145. package/src/core/islands/__tests__/bridge.test.ts +2 -2
  146. package/src/core/islands/bridge.ts +2 -2
  147. package/src/core/islands/components/output-wrapper.tsx +1 -1
  148. package/src/core/islands/parse.ts +1 -1
  149. package/src/core/lsp/__tests__/transport.test.ts +1 -1
  150. package/src/core/network/DeferredRequestRegistry.ts +1 -1
  151. package/src/core/network/__tests__/requests-network.test.ts +1 -1
  152. package/src/core/network/api.ts +2 -2
  153. package/src/core/network/requests-lazy.ts +1 -1
  154. package/src/core/network/requests-toasting.tsx +1 -1
  155. package/src/core/static/files.ts +1 -1
  156. package/src/core/vscode/vscode-bindings.ts +1 -1
  157. package/src/core/wasm/bridge.ts +3 -3
  158. package/src/core/wasm/worker/tracer.ts +1 -1
  159. package/src/core/websocket/useWebSocket.tsx +2 -2
  160. package/src/css/globals.css +37 -61
  161. package/src/custom.d.ts +1 -1
  162. package/src/hooks/__tests__/useDuplicateShortcuts.test.ts +2 -2
  163. package/src/hooks/debug.ts +3 -3
  164. package/src/hooks/useDebounce.ts +1 -1
  165. package/src/hooks/useEventListener.ts +1 -1
  166. package/src/hooks/useHotkey.ts +1 -1
  167. package/src/hooks/useLifecycle.ts +2 -2
  168. package/src/hooks/useNonce.ts +1 -1
  169. package/src/hooks/useResizeObserver.ts +2 -2
  170. package/src/main.tsx +1 -1
  171. package/src/plugins/core/RenderHTML.tsx +3 -3
  172. package/src/plugins/core/__test__/registerReactComponent.test.ts +1 -1
  173. package/src/plugins/core/registerReactComponent.tsx +4 -4
  174. package/src/plugins/core/rpc.ts +1 -1
  175. package/src/plugins/impl/DataTablePlugin.tsx +1 -1
  176. package/src/plugins/impl/FileBrowserPlugin.tsx +1 -1
  177. package/src/plugins/impl/FormPlugin.tsx +1 -1
  178. package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +1 -1
  179. package/src/plugins/impl/anywidget/AnyWidgetPlugin.tsx +1 -1
  180. package/src/plugins/impl/anywidget/model.ts +1 -1
  181. package/src/plugins/impl/anywidget/types.ts +2 -2
  182. package/src/plugins/impl/anywidget/widget-binding.ts +1 -1
  183. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  184. package/src/plugins/impl/chat/chat-ui.tsx +1 -1
  185. package/src/plugins/impl/data-editor/glide-data-editor.tsx +1 -1
  186. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +2 -2
  187. package/src/plugins/impl/data-explorer/components/query-form.tsx +1 -1
  188. package/src/plugins/impl/data-explorer/functions/function.ts +1 -1
  189. package/src/plugins/impl/data-explorer/queries/types.ts +1 -1
  190. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -1
  191. package/src/plugins/impl/data-frames/forms/renderers.tsx +1 -1
  192. package/src/plugins/impl/data-frames/utils/operators.ts +1 -1
  193. package/src/plugins/impl/matplotlib/MatplotlibPlugin.tsx +1 -1
  194. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +1 -1
  195. package/src/plugins/impl/panel/PanelPlugin.tsx +2 -2
  196. package/src/plugins/impl/plotly/Plot.tsx +3 -3
  197. package/src/plugins/impl/plotly/PlotlyPlugin.tsx +62 -44
  198. package/src/plugins/impl/plotly/__tests__/PlotlyPlugin.test.tsx +114 -0
  199. package/src/plugins/impl/plotly/__tests__/selection.test.ts +158 -196
  200. package/src/plugins/impl/plotly/selection.ts +274 -56
  201. package/src/plugins/impl/vega/batched.ts +1 -1
  202. package/src/plugins/impl/vega/make-selectable.ts +1 -1
  203. package/src/plugins/impl/vega/types.ts +1 -1
  204. package/src/plugins/layout/DownloadPlugin.tsx +1 -1
  205. package/src/plugins/layout/LazyPlugin.tsx +1 -1
  206. package/src/plugins/layout/RoutesPlugin.tsx +1 -1
  207. package/src/plugins/layout/mermaid/mermaid.tsx +1 -1
  208. package/src/plugins/plugins.ts +1 -1
  209. package/src/stories/data-explorer.stories.tsx +1 -1
  210. package/src/stories/dataframe.stories.tsx +1 -1
  211. package/src/stories/editor.stories.tsx +1 -1
  212. package/src/stories/select.stories.tsx +1 -1
  213. package/src/stories/switchable-multi-select.stories.tsx +1 -1
  214. package/src/utils/Logger.ts +1 -1
  215. package/src/utils/__tests__/arrays.test.ts +1 -1
  216. package/src/utils/__tests__/blob.test.ts +1 -1
  217. package/src/utils/__tests__/dates.test.ts +1 -1
  218. package/src/utils/__tests__/errors.test.ts +1 -1
  219. package/src/utils/__tests__/objects.test.ts +3 -3
  220. package/src/utils/__tests__/waitForWs.test.ts +1 -1
  221. package/src/utils/arrays.ts +1 -1
  222. package/src/utils/assertNever.ts +1 -1
  223. package/src/utils/batch-requests.ts +2 -2
  224. package/src/utils/createReducer.ts +2 -2
  225. package/src/utils/id-tree.tsx +2 -2
  226. package/src/utils/idle.ts +1 -1
  227. package/src/utils/invariant.ts +1 -2
  228. package/src/utils/maps.ts +1 -1
  229. package/src/utils/math.ts +0 -1
  230. package/src/utils/multi-map.ts +1 -1
  231. package/src/utils/objects.ts +1 -1
  232. package/src/utils/once.ts +2 -2
  233. package/src/utils/staticImplements.ts +1 -1
  234. package/src/utils/storage/jotai.ts +1 -1
  235. package/src/utils/tracer.ts +2 -2
  236. package/dist/assets/glide-data-editor-CDqunAkw.js +0 -132
  237. package/dist/assets/index-KI45dku7.js +0 -35
  238. package/dist/assets/useLifecycle-D202VvPd.js +0 -1
  239. package/dist/assets/useNotebookActions-Bb4xxjuJ.js +0 -1
@@ -15,7 +15,7 @@ import { Facet } from "@codemirror/state";
15
15
  export function singleFacet<T>() {
16
16
  return Facet.define<T, T>({
17
17
  combine: (values) => {
18
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
18
+ // oxlint-disable-next-line typescript/no-non-null-assertion
19
19
  return values.find((v) => v !== undefined)!;
20
20
  },
21
21
  });
@@ -1722,9 +1722,9 @@ describe("tablesCompletionSource", () => {
1722
1722
  };
1723
1723
 
1724
1724
  const getCompletion = (extensions: Extension[]) => {
1725
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1725
+ // oxlint-disable-next-line typescript/no-explicit-any
1726
1726
  const ext = extensions.find((ext) => (ext as any).facet === undefined);
1727
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1727
+ // oxlint-disable-next-line typescript/no-explicit-any
1728
1728
  return (ext as any)?.value?.override?.[0];
1729
1729
  };
1730
1730
 
@@ -2140,7 +2140,7 @@ describe("tablesCompletionSource", () => {
2140
2140
  ...mockStore.get(dataSourceConnectionsAtom),
2141
2141
  connectionsMap: new Map([
2142
2142
  [TEST_ENGINE, newConnection],
2143
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
2143
+ // oxlint-disable-next-line typescript/no-explicit-any
2144
2144
  ]) as any,
2145
2145
  latestEngineSelected: TEST_ENGINE,
2146
2146
  });
@@ -2153,7 +2153,7 @@ describe("tablesCompletionSource", () => {
2153
2153
  mockStore.set(dataSourceConnectionsAtom, {
2154
2154
  connectionsMap: new Map([
2155
2155
  [TEST_ENGINE, mockConnection],
2156
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
2156
+ // oxlint-disable-next-line typescript/no-explicit-any
2157
2157
  ]) as any,
2158
2158
  latestEngineSelected: TEST_ENGINE,
2159
2159
  });
@@ -76,7 +76,7 @@ export class CompletionBuilder {
76
76
  * Set a value at a nested path, creating intermediate objects as needed
77
77
  */
78
78
  private setAt(path: string[], value: SQLNamespace): void {
79
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
+ // oxlint-disable-next-line typescript/no-explicit-any
80
80
  let current: any = this.schema;
81
81
  for (const key of path.slice(0, -1)) {
82
82
  if (!current[key]) {
@@ -5,7 +5,7 @@ import type { EditorView } from "@codemirror/view";
5
5
  /**
6
6
  * Metadata for language adapters
7
7
  */
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ // oxlint-disable-next-line typescript/no-explicit-any
9
9
  export type LanguageMetadata = Record<string, any>;
10
10
 
11
11
  /**
@@ -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 { Extension } from "@codemirror/state";
5
5
  import type { CellId } from "@/core/cells/ids";
@@ -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 { EditorView } from "@codemirror/view";
5
5
  import {
@@ -815,7 +815,7 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
815
815
  ...diag,
816
816
  range: lens.reverseRange(diag.range, cellId),
817
817
  };
818
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
818
+ // oxlint-disable-next-line typescript/no-non-null-assertion
819
819
  diagnosticsByCellId.get(cellId)!.push(cellDiag);
820
820
  break; // Exit inner loop once we find the matching cell
821
821
  }
@@ -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
  import { EditorView } from "@codemirror/view";
4
4
  import { afterEach, beforeEach, describe, expect, it } from "vitest";
5
5
  import { dndBundle } from "../dnd";
@@ -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(
@@ -4,7 +4,7 @@ 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)
@@ -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
@@ -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
 
@@ -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";
@@ -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";
@@ -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;
@@ -49,7 +49,7 @@ function createConnectionTransport(
49
49
  export function useConnectionTransport(options: UseConnectionTransportOptions) {
50
50
  const { onOpen, onMessage, onClose, onError, waitToConnect } = options;
51
51
 
52
- // eslint-disable-next-line react/hook-use-state
52
+ // oxlint-disable-next-line react/hook-use-state
53
53
  const [transport] = useState<IConnectionTransport>(() => {
54
54
  const socket = createConnectionTransport(options);
55
55
 
@@ -83,7 +83,7 @@ export function useConnectionTransport(options: UseConnectionTransportOptions) {
83
83
  transport.removeEventListener("error", onError);
84
84
  transport.removeEventListener("message", onMessage);
85
85
  };
86
- // eslint-disable-next-line react-hooks/exhaustive-deps
86
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
87
87
  }, [transport]);
88
88
 
89
89
  return transport;
@@ -147,73 +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 */
151
- --shadow-xs:
152
- 1px 1px 2px 0px var(--base-shadow),
153
- 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
154
-
155
- /* biome-ignore format: definition needs to be oneline or breaks variants */
156
- --shadow-sm:
157
- 2px 2px 2px 0px var(--base-shadow),
158
- 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
159
-
160
- /* biome-ignore format: definition needs to be oneline or breaks variants */
161
- --shadow-md:
162
- 4px 4px 4px 0px var(--base-shadow),
163
- 0 0px 4px 0px hsl(0deg 0% 60% / var(--base-shadow-opacity));
164
-
165
- /* biome-ignore format: definition needs to be oneline or breaks variants */
166
- --shadow-lg:
167
- 5px 6px 4px 0px var(--base-shadow),
168
- 0 0px 4px 0px hsl(0deg 0% 75% / var(--base-shadow-opacity));
169
-
170
- /* biome-ignore format: definition needs to be oneline or breaks variants */
171
- --shadow-xl:
172
- 8px 9px 4px 0px var(--base-shadow),
173
- 0 0px 6px 0px hsl(0deg 0% 85% / var(--base-shadow-opacity));
174
-
175
- /* biome-ignore format: definition needs to be oneline or breaks variants */
176
- --shadow-2xl:
177
- 10px 12px 10px 0px var(--base-shadow),
178
- 0 0px 8px 0px hsl(0deg 0% 90% / var(--base-shadow-opacity));
179
-
180
- /* biome-ignore format: definition needs to be oneline or breaks variants */
181
- --shadow-xs-solid:
182
- 1px 1px 0px 0px var(--base-shadow-darker),
183
- 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
184
-
185
- /* biome-ignore format: definition needs to be oneline or breaks variants */
186
- --shadow-sm-solid:
187
- 2px 2px 0px 0px var(--base-shadow-darker),
188
- 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
189
-
190
- /* biome-ignore format: definition needs to be oneline or breaks variants */
191
- --shadow-md-solid:
192
- 4px 4px 0px 0px var(--base-shadow-darker),
193
- 0 0px 2px 0px hsl(0deg 0% 60% / 50%);
194
-
195
- /* biome-ignore format: definition needs to be oneline or breaks variants */
196
- --shadow-lg-solid:
197
- 5px 6px 0px 0px var(--base-shadow-darker),
198
- 0 0px 4px 0px hsl(0deg 0% 75% / 50%);
199
-
200
- /* biome-ignore format: definition needs to be oneline or breaks variants */
201
- --shadow-xl-solid:
202
- 7px 8px 0px 0px var(--base-shadow-darker),
203
- 0 0px 4px 0px hsl(0deg 0% 85% / 50%);
204
-
205
- /* biome-ignore format: definition needs to be oneline or breaks variants */
206
- --shadow-2xl-solid:
207
- 10px 12px 0px 0px var(--base-shadow-darker),
208
- 0 0px 8px 0px hsl(0deg 0% 90% / 50%);
150
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
151
+ --shadow-xs: 1px 1px 2px 0px var(--base-shadow), 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
152
+
153
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
154
+ --shadow-sm: 2px 2px 2px 0px var(--base-shadow), 0px 0px 2px 0px hsl(0deg 0% 25% / var(--base-shadow-opacity));
155
+
156
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
157
+ --shadow-md: 4px 4px 4px 0px var(--base-shadow), 0 0px 4px 0px hsl(0deg 0% 60% / var(--base-shadow-opacity));
158
+
159
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
160
+ --shadow-lg: 5px 6px 4px 0px var(--base-shadow), 0 0px 4px 0px hsl(0deg 0% 75% / var(--base-shadow-opacity));
161
+
162
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
163
+ --shadow-xl: 8px 9px 4px 0px var(--base-shadow), 0 0px 6px 0px hsl(0deg 0% 85% / var(--base-shadow-opacity));
164
+
165
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
166
+ --shadow-2xl: 10px 12px 10px 0px var(--base-shadow), 0 0px 8px 0px hsl(0deg 0% 90% / var(--base-shadow-opacity));
167
+
168
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
169
+ --shadow-xs-solid: 1px 1px 0px 0px var(--base-shadow-darker), 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
170
+
171
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
172
+ --shadow-sm-solid: 2px 2px 0px 0px var(--base-shadow-darker), 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
173
+
174
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
175
+ --shadow-md-solid: 4px 4px 0px 0px var(--base-shadow-darker), 0 0px 2px 0px hsl(0deg 0% 60% / 50%);
176
+
177
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
178
+ --shadow-lg-solid: 5px 6px 0px 0px var(--base-shadow-darker), 0 0px 4px 0px hsl(0deg 0% 75% / 50%);
179
+
180
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
181
+ --shadow-xl-solid: 7px 8px 0px 0px var(--base-shadow-darker), 0 0px 4px 0px hsl(0deg 0% 85% / 50%);
182
+
183
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
184
+ --shadow-2xl-solid: 10px 12px 0px 0px var(--base-shadow-darker), 0 0px 8px 0px hsl(0deg 0% 90% / 50%);
209
185
 
210
186
  /* Solid shadows with lighter shade color */
211
187
 
212
- /* biome-ignore format: definition needs to be oneline or breaks variants */
188
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
213
189
  --shadow-sm-solid-shade:
214
190
  2px 2px 0px 0px var(--base-shadow), 0px 0px 2px 0px hsl(0deg 0% 50% / 20%);
215
191
 
216
- /* biome-ignore format: definition needs to be oneline or breaks variants */
192
+ /* oxfmt-ignore: definition needs to be oneline or breaks variants */
217
193
  --shadow-md-solid-shade:
218
194
  4px 4px 0px 0px var(--base-shadow), 0 0px 2px 0px hsl(0deg 0% 60% / 50%);
219
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") {
@@ -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__) {
@@ -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
  };