@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.
- package/dist/assets/{CellStatus-DKyVv7Zj.js → CellStatus-Cf0Jlrcs.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-BUc9LHJJ.js → ConnectedDataExplorerComponent-DUxaLoL7.js} +1 -1
- package/dist/assets/{JsonOutput-D1i8P1dG.js → JsonOutput-IpD2GLtO.js} +2 -2
- package/dist/assets/{MarimoErrorOutput-RmM7djc-.js → MarimoErrorOutput-dTNCLY-Q.js} +1 -1
- package/dist/assets/{Plot-C7NE7pEx.js → Plot-BAM1jEAz.js} +72 -72
- package/dist/assets/{RenderHTML-Bmn77an6.js → RenderHTML-C5GEp4ca.js} +1 -1
- package/dist/assets/{add-cell-with-ai-RyZ9Xe2b.js → add-cell-with-ai-C0J3LyiV.js} +1 -1
- package/dist/assets/{add-connection-dialog-ogwy8tvS.js → add-connection-dialog-C42PDYI7.js} +1 -1
- package/dist/assets/{agent-panel-BHLkHj7k.js → agent-panel-CH-jHjEl.js} +1 -1
- package/dist/assets/{ai-model-dropdown-Dnf-CxbP.js → ai-model-dropdown-D14GiszF.js} +1 -1
- package/dist/assets/{app-config-button-D1Z_xsvC.js → app-config-button-v-557oRb.js} +1 -1
- package/dist/assets/{cell-editor-_GDTh-4a.js → cell-editor-Dd6UaL1A.js} +2 -2
- package/dist/assets/{cell-link-D4UrIH9w.js → cell-link-Cimoe3Fv.js} +1 -1
- package/dist/assets/{cells-ArUhhHls.js → cells-CcsG9Aum.js} +1 -1
- package/dist/assets/{chat-display-YmFjOXkV.js → chat-display-hfpeXiYe.js} +1 -1
- package/dist/assets/{chat-panel-B76rxYTh.js → chat-panel-DxT370nA.js} +1 -1
- package/dist/assets/{chat-ui-BitNq1z6.js → chat-ui-Dv4y0-td.js} +1 -1
- package/dist/assets/{column-preview-NDhbeu0E.js → column-preview-ZSErTRFA.js} +1 -1
- package/dist/assets/{command-palette-uJxkhle4.js → command-palette-CjF_cblG.js} +1 -1
- package/dist/assets/{common-CRBlPqv5.js → common-BZK7spst.js} +1 -1
- package/dist/assets/{components-DwGcJvMB.js → components-D2OlyENc.js} +1 -1
- package/dist/assets/{components-BfHGr__b.js → components-DpxyscxU.js} +1 -1
- package/dist/assets/{datasource-D9e37ifa.js → datasource-D9nfSxKS.js} +1 -1
- package/dist/assets/{dependency-graph-panel-BBmN-Vc7.js → dependency-graph-panel-5MbMtFss.js} +1 -1
- package/dist/assets/{documentation-panel-Dm2xtsTq.js → documentation-panel-DPdXS3YO.js} +1 -1
- package/dist/assets/{download-7EtMZf2Y.js → download-BFQaUFKI.js} +1 -1
- package/dist/assets/{edit-page-Cr_DnrkM.js → edit-page-CMd8_Psc.js} +4 -4
- package/dist/assets/{error-panel-C3-vTzaH.js → error-panel-DV8jpRsf.js} +1 -1
- package/dist/assets/{file-explorer-panel-g9KppC7Y.js → file-explorer-panel-Dr_ZNDk3.js} +1 -1
- package/dist/assets/{file-icons-JXAG6vK-.js → file-icons-DSJsG_mI.js} +1 -1
- package/dist/assets/{floating-outline-B6Qyid7Q.js → floating-outline-Cfa1ESSb.js} +1 -1
- package/dist/assets/{focus-DCN0oEe0.js → focus-C5u0JQUq.js} +1 -1
- package/dist/assets/{form-BVnQnVQ2.js → form-3ZUGKch9.js} +1 -1
- package/dist/assets/glide-data-editor-a3qLDl-r.js +132 -0
- package/dist/assets/{home-page-Bg02jazh.js → home-page-BrqppCUS.js} +1 -1
- package/dist/assets/{hooks-zQJ9iU_R.js → hooks-CHE17GG1.js} +1 -1
- package/dist/assets/{html-to-image-C5XSE7QT.js → html-to-image-BRbQwG7G.js} +1 -1
- package/dist/assets/{index-BaQAJwyb.css → index-BkdonYlq.css} +1 -1
- package/dist/assets/index-Bt8G6SSE.js +42 -0
- package/dist/assets/{kiosk-mode-CriCUOI1.js → kiosk-mode-Cu86-jaD.js} +1 -1
- package/dist/assets/{layout-Cudicm29.js → layout-B-lTkLKA.js} +1 -1
- package/dist/assets/{logs-panel-CoWO9c8s.js → logs-panel-CNVgwoHO.js} +1 -1
- package/dist/assets/{markdown-renderer-CyUc0f8D.js → markdown-renderer-B91NzmVT.js} +1 -1
- package/dist/assets/{name-cell-input-DeM6upjB.js → name-cell-input-hsV_b1Op.js} +1 -1
- package/dist/assets/{outline-panel-C4P3wA7Z.js → outline-panel-C3jvSnZF.js} +1 -1
- package/dist/assets/{packages-panel-DnrjjQDF.js → packages-panel-0_Z5vM7i.js} +1 -1
- package/dist/assets/{panels-BCRqI88j.js → panels-uc8QhzpO.js} +1 -1
- package/dist/assets/{process-output-e_aMblRk.js → process-output-CsvKn_Mr.js} +1 -1
- package/dist/assets/{readonly-python-code-CVgh88Tn.js → readonly-python-code-oFCRG7Wt.js} +1 -1
- package/dist/assets/{run-page-C-ySBXLo.js → run-page-DKCqiq_f.js} +1 -1
- package/dist/assets/{scratchpad-panel-C5Pogi1P.js → scratchpad-panel-ChHLgDv_.js} +1 -1
- package/dist/assets/{session-panel-DEsnZWks.js → session-panel-CPKKt31q.js} +1 -1
- package/dist/assets/{snippets-panel-DQgE3W8I.js → snippets-panel-CDqEDwpY.js} +1 -1
- package/dist/assets/{spec-CBbUxOvL.js → spec-CFx2bitO.js} +1 -1
- package/dist/assets/{state-pGNeffyB.js → state-BBVlYaRC.js} +1 -1
- package/dist/assets/{state-CV8Wy3e4.js → state-C93JW11U.js} +1 -1
- package/dist/assets/{textarea-DqzNK0s9.js → textarea-DJEKmYtw.js} +1 -1
- package/dist/assets/{tracing-BUFVOmZw.js → tracing-CLWi5jD3.js} +1 -1
- package/dist/assets/{tracing-panel-BsLloPWd.js → tracing-panel-ksnvVrMH.js} +2 -2
- package/dist/assets/{useAddCell-cC7JUC0q.js → useAddCell-mJ1PkF-E.js} +1 -1
- package/dist/assets/{useCellActionButton-BiYBXHfb.js → useCellActionButton-4HWj1rt3.js} +1 -1
- package/dist/assets/{useDeleteCell-D2p4Dz0U.js → useDeleteCell-B0OAS0ly.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-c5-eXlcr.js → useDependencyPanelTab-BuZ0fgAR.js} +1 -1
- package/dist/assets/useLifecycle-N3bfh_O1.js +1 -0
- package/dist/assets/useNotebookActions-DuHUqtII.js +1 -0
- package/dist/assets/{useRunCells-DgBY-vh9.js → useRunCells-Du76UV1R.js} +1 -1
- package/dist/assets/{useSplitCell-SS0kKwVk.js → useSplitCell-CeL7eJq1.js} +1 -1
- package/dist/index.html +25 -25
- package/package.json +1 -1
- package/src/__mocks__/common.ts +4 -4
- package/src/components/chat/acp/agent-panel.tsx +2 -2
- package/src/components/data-table/__tests__/columns.test.tsx +7 -7
- package/src/components/data-table/cell-hover-template/types.ts +1 -1
- package/src/components/data-table/cell-hover-text/types.ts +1 -1
- package/src/components/data-table/cell-selection/__tests__/feature.test.ts +1 -1
- package/src/components/data-table/cell-selection/types.ts +1 -1
- package/src/components/data-table/cell-styling/types.ts +1 -1
- package/src/components/data-table/charts/chart-spec/altair-generator.ts +2 -2
- package/src/components/data-table/column-formatting/types.ts +2 -2
- package/src/components/data-table/column-summary/legacy-chart-spec.ts +1 -1
- package/src/components/data-table/column-wrapping/types.ts +1 -1
- package/src/components/data-table/copy-column/types.ts +1 -1
- package/src/components/data-table/data-table.tsx +12 -12
- package/src/components/data-table/focus-row/types.ts +1 -1
- package/src/components/data-table/loading-table.tsx +1 -1
- package/src/components/data-table/range-focus/__tests__/atoms.test.ts +2 -2
- package/src/components/data-table/range-focus/atoms.ts +2 -2
- package/src/components/dependency-graph/dependency-graph-tree.tsx +1 -1
- package/src/components/editor/__tests__/dynamic-favicon.test.tsx +1 -1
- package/src/components/editor/actions/pair-with-agent-modal.tsx +142 -0
- package/src/components/editor/actions/useNotebookActions.tsx +10 -0
- package/src/components/editor/ai/ai-completion-editor.tsx +1 -1
- package/src/components/editor/app-container.tsx +1 -1
- package/src/components/editor/chrome/panels/empty-state.tsx +1 -0
- package/src/components/editor/controls/keyboard-shortcuts.tsx +1 -1
- package/src/components/editor/navigation/__tests__/navigation.test.ts +1 -1
- package/src/components/editor/navigation/navigation.ts +1 -1
- package/src/components/editor/notebook-cell.tsx +1 -1
- package/src/components/editor/output/JsonOutput.tsx +4 -4
- package/src/components/editor/output/ansi-reduce.ts +2 -2
- package/src/components/editor/output/console/ConsoleOutput.tsx +1 -1
- package/src/components/editor/renderers/cells-renderer.tsx +1 -1
- package/src/components/editor/renderers/grid-layout/grid-layout.tsx +1 -1
- package/src/components/editor/renderers/plugins.ts +1 -1
- package/src/components/editor/renderers/slides-layout/types.ts +2 -2
- package/src/components/editor/renderers/vertical-layout/__tests__/useFocusFirstEditor.test.ts +2 -2
- package/src/components/editor/renderers/vertical-layout/__tests__/vertical-layout.test.ts +1 -1
- package/src/components/find-replace/find-replace.tsx +3 -1
- package/src/components/forms/form.tsx +1 -1
- package/src/components/forms/options.ts +1 -1
- package/src/components/static-html/static-banner.tsx +2 -2
- package/src/components/terminal/terminal.tsx +4 -4
- package/src/components/ui/button.tsx +1 -1
- package/src/components/ui/command.tsx +1 -1
- package/src/core/ai/context/providers/__tests__/datasource.test.ts +1 -1
- package/src/core/ai/context/providers/__tests__/error.test.ts +1 -1
- package/src/core/ai/context/providers/__tests__/variable.test.ts +1 -1
- package/src/core/ai/context/registry.ts +2 -2
- package/src/core/ai/tools/registry.ts +1 -1
- package/src/core/cells/__tests__/cells.test.ts +2 -2
- package/src/core/cells/__tests__/scrollCellIntoView.test.ts +1 -1
- package/src/core/cells/__tests__/session.test.ts +1 -1
- package/src/core/cells/__tests__/utils.test.ts +1 -1
- package/src/core/cells/cells.ts +1 -1
- package/src/core/cells/ids.ts +1 -1
- package/src/core/codemirror/ai/request.ts +1 -1
- package/src/core/codemirror/copilot/__tests__/language-server.test.ts +1 -1
- package/src/core/codemirror/copilot/__tests__/transport.test.ts +1 -1
- package/src/core/codemirror/copilot/language-server.ts +1 -1
- package/src/core/codemirror/copilot/types.ts +1 -1
- package/src/core/codemirror/facet.ts +1 -1
- package/src/core/codemirror/language/__tests__/sql.test.ts +4 -4
- package/src/core/codemirror/language/languages/sql/completion-builder.ts +1 -1
- package/src/core/codemirror/language/metadata.ts +1 -1
- package/src/core/codemirror/language/types.ts +1 -1
- package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +1 -1
- package/src/core/codemirror/lsp/notebook-lsp.ts +1 -1
- package/src/core/codemirror/misc/__tests__/dnd.test.ts +1 -1
- package/src/core/codemirror/rtc/loro/awareness.ts +1 -1
- package/src/core/config/feature-flag.tsx +1 -1
- package/src/core/dom/outline.ts +1 -1
- package/src/core/export/__tests__/hooks.test.ts +1 -1
- package/src/core/hotkeys/__tests__/hotkeys.test.ts +1 -1
- package/src/core/hotkeys/shortcuts.ts +1 -1
- package/src/core/islands/__tests__/bridge.test.ts +2 -2
- package/src/core/islands/bridge.ts +2 -2
- package/src/core/islands/components/output-wrapper.tsx +1 -1
- package/src/core/islands/parse.ts +1 -1
- package/src/core/lsp/__tests__/transport.test.ts +1 -1
- package/src/core/network/DeferredRequestRegistry.ts +1 -1
- package/src/core/network/__tests__/requests-network.test.ts +1 -1
- package/src/core/network/api.ts +2 -2
- package/src/core/network/requests-lazy.ts +1 -1
- package/src/core/network/requests-toasting.tsx +1 -1
- package/src/core/static/files.ts +1 -1
- package/src/core/vscode/vscode-bindings.ts +1 -1
- package/src/core/wasm/bridge.ts +3 -3
- package/src/core/wasm/worker/tracer.ts +1 -1
- package/src/core/websocket/useWebSocket.tsx +2 -2
- package/src/css/globals.css +37 -61
- package/src/custom.d.ts +1 -1
- package/src/hooks/__tests__/useDuplicateShortcuts.test.ts +2 -2
- package/src/hooks/debug.ts +3 -3
- package/src/hooks/useDebounce.ts +1 -1
- package/src/hooks/useEventListener.ts +1 -1
- package/src/hooks/useHotkey.ts +1 -1
- package/src/hooks/useLifecycle.ts +2 -2
- package/src/hooks/useNonce.ts +1 -1
- package/src/hooks/useResizeObserver.ts +2 -2
- package/src/main.tsx +1 -1
- package/src/plugins/core/RenderHTML.tsx +3 -3
- package/src/plugins/core/__test__/registerReactComponent.test.ts +1 -1
- package/src/plugins/core/registerReactComponent.tsx +4 -4
- package/src/plugins/core/rpc.ts +1 -1
- package/src/plugins/impl/DataTablePlugin.tsx +1 -1
- package/src/plugins/impl/FileBrowserPlugin.tsx +1 -1
- package/src/plugins/impl/FormPlugin.tsx +1 -1
- package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +1 -1
- package/src/plugins/impl/anywidget/AnyWidgetPlugin.tsx +1 -1
- package/src/plugins/impl/anywidget/model.ts +1 -1
- package/src/plugins/impl/anywidget/types.ts +2 -2
- package/src/plugins/impl/anywidget/widget-binding.ts +1 -1
- package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
- package/src/plugins/impl/chat/chat-ui.tsx +1 -1
- package/src/plugins/impl/data-editor/glide-data-editor.tsx +1 -1
- package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +2 -2
- package/src/plugins/impl/data-explorer/components/query-form.tsx +1 -1
- package/src/plugins/impl/data-explorer/functions/function.ts +1 -1
- package/src/plugins/impl/data-explorer/queries/types.ts +1 -1
- package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -1
- package/src/plugins/impl/data-frames/forms/renderers.tsx +1 -1
- package/src/plugins/impl/data-frames/utils/operators.ts +1 -1
- package/src/plugins/impl/matplotlib/MatplotlibPlugin.tsx +1 -1
- package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +1 -1
- package/src/plugins/impl/panel/PanelPlugin.tsx +2 -2
- package/src/plugins/impl/plotly/Plot.tsx +3 -3
- package/src/plugins/impl/plotly/PlotlyPlugin.tsx +62 -44
- package/src/plugins/impl/plotly/__tests__/PlotlyPlugin.test.tsx +114 -0
- package/src/plugins/impl/plotly/__tests__/selection.test.ts +158 -196
- package/src/plugins/impl/plotly/selection.ts +274 -56
- package/src/plugins/impl/vega/batched.ts +1 -1
- package/src/plugins/impl/vega/make-selectable.ts +1 -1
- package/src/plugins/impl/vega/types.ts +1 -1
- package/src/plugins/layout/DownloadPlugin.tsx +1 -1
- package/src/plugins/layout/LazyPlugin.tsx +1 -1
- package/src/plugins/layout/RoutesPlugin.tsx +1 -1
- package/src/plugins/layout/mermaid/mermaid.tsx +1 -1
- package/src/plugins/plugins.ts +1 -1
- package/src/stories/data-explorer.stories.tsx +1 -1
- package/src/stories/dataframe.stories.tsx +1 -1
- package/src/stories/editor.stories.tsx +1 -1
- package/src/stories/select.stories.tsx +1 -1
- package/src/stories/switchable-multi-select.stories.tsx +1 -1
- package/src/utils/Logger.ts +1 -1
- package/src/utils/__tests__/arrays.test.ts +1 -1
- package/src/utils/__tests__/blob.test.ts +1 -1
- package/src/utils/__tests__/dates.test.ts +1 -1
- package/src/utils/__tests__/errors.test.ts +1 -1
- package/src/utils/__tests__/objects.test.ts +3 -3
- package/src/utils/__tests__/waitForWs.test.ts +1 -1
- package/src/utils/arrays.ts +1 -1
- package/src/utils/assertNever.ts +1 -1
- package/src/utils/batch-requests.ts +2 -2
- package/src/utils/createReducer.ts +2 -2
- package/src/utils/id-tree.tsx +2 -2
- package/src/utils/idle.ts +1 -1
- package/src/utils/invariant.ts +1 -2
- package/src/utils/maps.ts +1 -1
- package/src/utils/math.ts +0 -1
- package/src/utils/multi-map.ts +1 -1
- package/src/utils/objects.ts +1 -1
- package/src/utils/once.ts +2 -2
- package/src/utils/staticImplements.ts +1 -1
- package/src/utils/storage/jotai.ts +1 -1
- package/src/utils/tracer.ts +2 -2
- package/dist/assets/glide-data-editor-CDqunAkw.js +0 -132
- package/dist/assets/index-KI45dku7.js +0 -35
- package/dist/assets/useLifecycle-D202VvPd.js +0 -1
- 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
|
-
//
|
|
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
|
-
//
|
|
1725
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
1726
1726
|
const ext = extensions.find((ext) => (ext as any).facet === undefined);
|
|
1727
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
8
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
9
9
|
export type LanguageMetadata = Record<string, any>;
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -815,7 +815,7 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
815
815
|
...diag,
|
|
816
816
|
range: lens.reverseRange(diag.range, cellId),
|
|
817
817
|
};
|
|
818
|
-
//
|
|
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
|
-
/*
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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)
|
package/src/core/dom/outline.ts
CHANGED
|
@@ -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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
/*
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
/*
|
|
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
|
-
/*
|
|
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";
|
package/src/core/network/api.ts
CHANGED
|
@@ -108,7 +108,7 @@ export const API = {
|
|
|
108
108
|
response: Response;
|
|
109
109
|
}): Promise<T> => {
|
|
110
110
|
if (response.error) {
|
|
111
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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,
|
package/src/core/static/files.ts
CHANGED
|
@@ -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
|
-
//
|
|
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
|
-
//
|
|
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,
|
package/src/core/wasm/bridge.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-explicit-any */
|
|
3
3
|
|
|
4
4
|
import { 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
|
-
//
|
|
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
|
-
//
|
|
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",
|
|
@@ -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
|
-
//
|
|
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
|
-
//
|
|
86
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
87
87
|
}, [transport]);
|
|
88
88
|
|
|
89
89
|
return transport;
|
package/src/css/globals.css
CHANGED
|
@@ -147,73 +147,49 @@
|
|
|
147
147
|
--shadow-none: none;
|
|
148
148
|
--shadow-xxs: 0px 0px 2px 0px var(--base-shadow-darker);
|
|
149
149
|
|
|
150
|
-
/*
|
|
151
|
-
--shadow-xs:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
/*
|
|
166
|
-
--shadow-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
/*
|
|
181
|
-
--shadow-
|
|
182
|
-
|
|
183
|
-
|
|
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
|
-
/*
|
|
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
|
-
/*
|
|
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
|
@@ -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
|
-
//
|
|
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
|
-
//
|
|
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
|
package/src/hooks/debug.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
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
|
-
//
|
|
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
|
-
//
|
|
114
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
115
115
|
}, deps);
|
|
116
116
|
}
|
package/src/hooks/useDebounce.ts
CHANGED
|
@@ -78,7 +78,7 @@ export function useDebounceControlledState<T>(opts: {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
//
|
|
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
|
-
//
|
|
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
|
|
package/src/hooks/useHotkey.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { useEventListener } from "./useEventListener";
|
|
|
14
14
|
|
|
15
15
|
type HotkeyHandler = (
|
|
16
16
|
evt?: KeyboardEvent,
|
|
17
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
16
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
17
17
|
useEffect(() => {
|
|
18
18
|
return effect();
|
|
19
19
|
}, []);
|
package/src/hooks/useNonce.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { useCallback, useState } from "react";
|
|
3
3
|
|
|
4
4
|
export function useNonce() {
|
|
5
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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}</>; //
|
|
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}</>; //
|
|
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
|
-
//
|
|
107
|
+
// oxlint-disable-next-line react/jsx-no-useless-fragment
|
|
108
108
|
return <></>;
|
|
109
109
|
}
|
|
110
110
|
};
|