@marimo-team/frontend 0.22.1-dev38 → 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-DboWEw2n.js → JsonOutput-IpD2GLtO.js} +1 -1
- 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-DiHC8_uD.js → add-connection-dialog-C42PDYI7.js} +1 -1
- package/dist/assets/{agent-panel-CWWFNdAZ.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-CKnV9MwH.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-BvDPfcdF.js → column-preview-ZSErTRFA.js} +1 -1
- package/dist/assets/{command-palette-CPRmmNjA.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-B-kCXJQD.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-DyDct4o3.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-Byef3KYr.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-BoxLBXGI.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-B1HqiNNr.js → index-Bt8G6SSE.js} +8 -8
- package/dist/assets/{kiosk-mode-CriCUOI1.js → kiosk-mode-Cu86-jaD.js} +1 -1
- package/dist/assets/{layout-BjQtqcnj.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-aBXT7_tR.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-yA3m6QEA.js → run-page-DKCqiq_f.js} +1 -1
- package/dist/assets/{scratchpad-panel-Cul3iUG0.js → scratchpad-panel-ChHLgDv_.js} +1 -1
- package/dist/assets/{session-panel-CzPIEKo8.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-C79RsVoe.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-A-2lB6Y1.js → useNotebookActions-DuHUqtII.js} +1 -1
- 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 +24 -24
- 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/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/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/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/useLifecycle-D202VvPd.js +0 -1
|
@@ -469,7 +469,7 @@ export const Chatbot: React.FC<Props> = (props) => {
|
|
|
469
469
|
resetInput();
|
|
470
470
|
}}
|
|
471
471
|
ref={formRef}
|
|
472
|
-
//
|
|
472
|
+
// oxlint-ignore-next-line -- inert is used to disable the entire form
|
|
473
473
|
inert={props.disabled || undefined}
|
|
474
474
|
className={cn(
|
|
475
475
|
"flex w-full border-t border-(--slate-6) px-2 py-1 items-center",
|
|
@@ -227,7 +227,7 @@ export const GlideDataEditor = <T,>({
|
|
|
227
227
|
|
|
228
228
|
// Force re-render to update the total rows
|
|
229
229
|
rerender();
|
|
230
|
-
//
|
|
230
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
231
231
|
}, [data.length]);
|
|
232
232
|
|
|
233
233
|
const getCellContent = useCallback(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-base-to-string */
|
|
3
3
|
import * as cql from "compassql/build/src";
|
|
4
4
|
import { createStore, Provider, useAtomValue } from "jotai";
|
|
5
5
|
import { ListFilterIcon } from "lucide-react";
|
|
@@ -268,7 +268,7 @@ const HorizontalCarouselItem = ({
|
|
|
268
268
|
);
|
|
269
269
|
};
|
|
270
270
|
// Make the plot responsive
|
|
271
|
-
//
|
|
271
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
272
272
|
function makeResponsive(spec: any) {
|
|
273
273
|
// NOTE: for row/column, this applies to the inner plot
|
|
274
274
|
// so we tend to overflow due to the legends,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-base-to-string */
|
|
3
3
|
|
|
4
4
|
import { ExpandedType } from "compassql/build/src/query/expandedtype";
|
|
5
5
|
import { PrimitiveType, type Schema } from "compassql/build/src/schema";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-base-to-string */
|
|
3
3
|
import type { FieldQuery } from "compassql/build/src/query/encoding";
|
|
4
4
|
import { type FieldFunction, isAggregateOp, type TimeUnitOp } from "./types";
|
|
5
5
|
|
|
@@ -28,7 +28,7 @@ export interface Result {
|
|
|
28
28
|
limit: number;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
//
|
|
31
|
+
// oxlint-disable-next-line typescript/no-explicit-any, typescript/no-redundant-type-constituents
|
|
32
32
|
export type TopLevelFacetedUnitSpec = TopLevel<FacetedUnitSpec<any, any>> & {
|
|
33
33
|
data: NamedData;
|
|
34
34
|
};
|
|
@@ -54,7 +54,7 @@ interface Data {
|
|
|
54
54
|
lazy: boolean;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
//
|
|
57
|
+
// oxlint-disable-next-line typescript/consistent-type-definitions
|
|
58
58
|
type PluginFunctions = {
|
|
59
59
|
get_dataframe: (req: {}) => Promise<{
|
|
60
60
|
url: string;
|
|
@@ -194,7 +194,7 @@ export function isConditionValueValid(operator: string, value: unknown) {
|
|
|
194
194
|
return possibleSchemas.some((schema) => schema.safeParse(value).success);
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
//
|
|
197
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
198
198
|
const safeGet = (obj: any, key: string): [z.ZodType] | [] => {
|
|
199
199
|
if (obj[key]) {
|
|
200
200
|
return obj[key];
|
|
@@ -57,7 +57,7 @@ const MatplotlibComponent = (props: MatplotlibState) => {
|
|
|
57
57
|
controller.abort();
|
|
58
58
|
instance.current = null;
|
|
59
59
|
};
|
|
60
|
-
//
|
|
60
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
61
61
|
}, []);
|
|
62
62
|
|
|
63
63
|
// No dependency array: intentionally syncs all props into the imperative
|
|
@@ -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 { useCallback, useEffect, useRef, useState } from "react";
|
|
5
5
|
import { z } from "zod";
|
|
@@ -74,7 +74,7 @@ interface PanelData {
|
|
|
74
74
|
|
|
75
75
|
type T = Record<string, unknown>;
|
|
76
76
|
|
|
77
|
-
//
|
|
77
|
+
// oxlint-disable-next-line typescript/consistent-type-definitions
|
|
78
78
|
type PluginFunctions = {
|
|
79
79
|
send_to_widget: <T>(req: {
|
|
80
80
|
message?: unknown;
|
|
@@ -4,7 +4,7 @@ import type * as PlotlyTypes from "plotly.js";
|
|
|
4
4
|
// Import the pre-built dist bundle, not the source entry point.
|
|
5
5
|
// The source entry point requires Node.js polyfills (e.g. `buffer/`)
|
|
6
6
|
// that are unavailable in the browser/bundler environment.
|
|
7
|
-
//
|
|
7
|
+
// oxlint-disable-next-line typescript/ban-ts-comment
|
|
8
8
|
// @ts-expect-error — no type declarations for dist path, we use PlotlyTypes above
|
|
9
9
|
import Plotly from "plotly.js/dist/plotly";
|
|
10
10
|
import { useEffect, useRef } from "react";
|
|
@@ -107,7 +107,7 @@ export const Plot = (props: PlotProps) => {
|
|
|
107
107
|
|
|
108
108
|
const plotlyEl = el as unknown as PlotlyElement;
|
|
109
109
|
|
|
110
|
-
//
|
|
110
|
+
// oxlint-disable-next-line typescript/ban-types -- Plotly's event API uses generic function references
|
|
111
111
|
const attached: {
|
|
112
112
|
plotlyName: string;
|
|
113
113
|
handler: (...args: never[]) => void;
|
|
@@ -131,7 +131,7 @@ export const Plot = (props: PlotProps) => {
|
|
|
131
131
|
}
|
|
132
132
|
};
|
|
133
133
|
// Re-sync whenever any event handler prop changes
|
|
134
|
-
//
|
|
134
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
135
135
|
},
|
|
136
136
|
EVENT_NAMES.map((name) => props[propName(name)]),
|
|
137
137
|
);
|
|
@@ -160,7 +160,7 @@ function findCommonParams(
|
|
|
160
160
|
if (!signatureCounts.has(signature)) {
|
|
161
161
|
signatureCounts.set(signature, { count: 0, param });
|
|
162
162
|
}
|
|
163
|
-
//
|
|
163
|
+
// oxlint-disable-next-line typescript/no-non-null-assertion
|
|
164
164
|
signatureCounts.get(signature)!.count++;
|
|
165
165
|
}
|
|
166
166
|
}
|
|
@@ -25,7 +25,7 @@ export type {
|
|
|
25
25
|
} from "vega-lite/types_unstable/spec/unit.js";
|
|
26
26
|
|
|
27
27
|
export type VegaLiteUnitSpec = TopLevelUnitSpec<Field>;
|
|
28
|
-
//
|
|
28
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
29
29
|
export type GenericVegaSpec = GenericUnitSpec<any, any, any>;
|
|
30
30
|
export type EncodingType = keyof Encoding<Field>;
|
|
31
31
|
export type Encodings = Encoding<Field>;
|
|
@@ -14,7 +14,7 @@ interface Data {
|
|
|
14
14
|
showLoadingIndicator: boolean;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
//
|
|
17
|
+
// oxlint-disable-next-line typescript/consistent-type-definitions
|
|
18
18
|
type PluginFunctions = {
|
|
19
19
|
load: (req: {}) => Promise<{
|
|
20
20
|
html: string;
|
|
@@ -63,7 +63,7 @@ function randomAlpha() {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
const Mermaid: React.FC<Props> = ({ diagram }) => {
|
|
66
|
-
//
|
|
66
|
+
// oxlint-disable-next-line react/hook-use-state
|
|
67
67
|
const [id] = useState(() => randomAlpha());
|
|
68
68
|
|
|
69
69
|
const darkMode = useTheme().theme === "dark";
|
package/src/plugins/plugins.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 { NavigationMenuPlugin } from "@/plugins/layout/NavigationMenuPlugin";
|
|
5
5
|
import { initializeUIElement } from "../core/dom/ui-element";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable react-hooks/rules-of-hooks */
|
|
3
3
|
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
4
4
|
import { useState } from "react";
|
|
5
5
|
import { DataFrameComponent } from "@/plugins/impl/data-frames/DataFramePlugin";
|
|
@@ -52,7 +52,7 @@ const Editor = (opts: { extensions?: Extension[] }): React.ReactNode => {
|
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
return () => view.destroy();
|
|
55
|
-
//
|
|
55
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
56
56
|
}, [ref.current]);
|
|
57
57
|
|
|
58
58
|
return <div className="cm" ref={ref} />;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable react-hooks/rules-of-hooks */
|
|
3
3
|
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
4
4
|
import { useState } from "react";
|
|
5
5
|
import { SwitchableMultiSelect } from "@/components/forms/switchable-multi-select";
|
package/src/utils/Logger.ts
CHANGED
|
@@ -124,7 +124,7 @@ describe("arrays", () => {
|
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
it("should handle undefined/null array", () => {
|
|
127
|
-
//
|
|
127
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
128
128
|
expect(arrayToggle(undefined as any, 1)).toEqual([1]);
|
|
129
129
|
});
|
|
130
130
|
|
|
@@ -30,7 +30,7 @@ describe("Blob serialization and deserialization", () => {
|
|
|
30
30
|
const serialized = await serializeBlob(testBlob);
|
|
31
31
|
const deserialized = deserializeBlob(serialized);
|
|
32
32
|
const reader = new FileReader();
|
|
33
|
-
//
|
|
33
|
+
// oxlint-disable-next-line unicorn/prefer-blob-reading-methods
|
|
34
34
|
reader.readAsText(deserialized);
|
|
35
35
|
await new Promise((resolve) => {
|
|
36
36
|
reader.onload = () => {
|
|
@@ -73,7 +73,7 @@ describe("dates", () => {
|
|
|
73
73
|
|
|
74
74
|
describe("with different locales", () => {
|
|
75
75
|
// Save original implementation
|
|
76
|
-
//
|
|
76
|
+
// oxlint-disable-next-line typescript/unbound-method
|
|
77
77
|
const originalToLocaleDateString = Date.prototype.toLocaleDateString;
|
|
78
78
|
|
|
79
79
|
afterAll(() => {
|
|
@@ -46,7 +46,7 @@ describe("prettyError", () => {
|
|
|
46
46
|
});
|
|
47
47
|
|
|
48
48
|
it("handles circular references", () => {
|
|
49
|
-
//
|
|
49
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
50
50
|
const circular: any = { foo: "bar" };
|
|
51
51
|
circular.self = circular;
|
|
52
52
|
expect(prettyError(circular)).toBe("[object Object]");
|
|
@@ -29,9 +29,9 @@ describe("Objects", () => {
|
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
it("should return falsy input unchanged", () => {
|
|
32
|
-
//
|
|
32
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
33
33
|
expect(Objects.mapValues(null as any, (v) => v)).toBe(null);
|
|
34
|
-
//
|
|
34
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
35
35
|
expect(Objects.mapValues(undefined as any, (v) => v)).toBe(undefined);
|
|
36
36
|
});
|
|
37
37
|
});
|
|
@@ -249,7 +249,7 @@ describe("Objects", () => {
|
|
|
249
249
|
|
|
250
250
|
it("should handle omitting non-existent keys", () => {
|
|
251
251
|
const obj = { a: 1, b: 2 };
|
|
252
|
-
//
|
|
252
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
253
253
|
const result = Objects.omit(obj, ["c" as any]);
|
|
254
254
|
expect(result).toEqual({ a: 1, b: 2 });
|
|
255
255
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-explicit-any */
|
|
3
3
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
4
4
|
import { waitForWs } from "../waitForWs";
|
|
5
5
|
|
package/src/utils/arrays.ts
CHANGED
|
@@ -53,7 +53,7 @@ export function arrayShallowEquals<T>(a: T[], b: T[]): boolean {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
export const Arrays = {
|
|
56
|
-
//
|
|
56
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
57
57
|
EMPTY: [] as any,
|
|
58
58
|
zip: <T, U>(a: T[], b: U[]): [T, U][] => {
|
|
59
59
|
invariant(a.length === b.length, "Arrays must be the same length");
|
package/src/utils/assertNever.ts
CHANGED
|
@@ -15,6 +15,6 @@ export function assertNever(x: never): never {
|
|
|
15
15
|
*/
|
|
16
16
|
export function logNever(x: never): void {
|
|
17
17
|
Logger.warn(`Unexpected object: ${JSON.stringify(x)}`);
|
|
18
|
-
//
|
|
18
|
+
// oxlint-ignore-next-line -- noVoidTypeReturn: function returns void but value is needed for exhaustiveness
|
|
19
19
|
return x;
|
|
20
20
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
/*
|
|
2
|
+
/* oxlint-disable typescript/no-explicit-any */
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Debounces multiple calls to a loader function, returning the same promise for
|
|
@@ -14,7 +14,7 @@ export function batch<T, REQ extends unknown[]>(
|
|
|
14
14
|
return (...args: REQ): Promise<T> => {
|
|
15
15
|
const key = toKey(...args);
|
|
16
16
|
if (requestCache.has(key)) {
|
|
17
|
-
//
|
|
17
|
+
// oxlint-disable-next-line typescript/no-non-null-assertion
|
|
18
18
|
return requestCache.get(key)!;
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -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 { atom, useSetAtom } from "jotai";
|
|
5
5
|
import type { Reducer } from "react";
|
|
@@ -139,7 +139,7 @@ export function createReducerAndAtoms<
|
|
|
139
139
|
);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
//
|
|
142
|
+
// oxlint-disable-next-line typescript/no-non-null-assertion
|
|
143
143
|
return actionsMap.get(setState)!;
|
|
144
144
|
}
|
|
145
145
|
|
package/src/utils/id-tree.tsx
CHANGED
|
@@ -43,7 +43,7 @@ export class TreeNode<T> {
|
|
|
43
43
|
const stack = [...this.children];
|
|
44
44
|
|
|
45
45
|
while (stack.length > 0) {
|
|
46
|
-
//
|
|
46
|
+
// oxlint-disable-next-line typescript/no-non-null-assertion
|
|
47
47
|
const node = stack.pop()!;
|
|
48
48
|
count++;
|
|
49
49
|
|
|
@@ -62,7 +62,7 @@ export class TreeNode<T> {
|
|
|
62
62
|
const stack = [...this.children];
|
|
63
63
|
|
|
64
64
|
while (stack.length > 0) {
|
|
65
|
-
//
|
|
65
|
+
// oxlint-disable-next-line typescript/no-non-null-assertion
|
|
66
66
|
const node = stack.pop()!;
|
|
67
67
|
result.push(node.value);
|
|
68
68
|
|
package/src/utils/idle.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export function onIdle(callback: () => void) {
|
|
9
9
|
if ("scheduler" in window) {
|
|
10
|
-
//
|
|
10
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
11
11
|
(window as any).scheduler.postTask(callback, {
|
|
12
12
|
priority: "background",
|
|
13
13
|
});
|
package/src/utils/invariant.ts
CHANGED
|
@@ -29,8 +29,7 @@ export function invariant(
|
|
|
29
29
|
if (!expression) {
|
|
30
30
|
if (import.meta.env.DEV) {
|
|
31
31
|
// Triggers a breakpoint in development; stripped out in production builds.
|
|
32
|
-
//
|
|
33
|
-
debugger; // eslint-disable-line no-debugger
|
|
32
|
+
debugger; // oxlint-disable-line no-debugger -- stripped out in production builds
|
|
34
33
|
}
|
|
35
34
|
throw new Error(msg);
|
|
36
35
|
}
|
package/src/utils/maps.ts
CHANGED
package/src/utils/math.ts
CHANGED
package/src/utils/multi-map.ts
CHANGED
|
@@ -16,7 +16,7 @@ export class MultiMap<K, V> {
|
|
|
16
16
|
|
|
17
17
|
add(key: K, value: V): void {
|
|
18
18
|
if (this.map.has(key)) {
|
|
19
|
-
//
|
|
19
|
+
// oxlint-disable-next-line typescript/no-non-null-assertion
|
|
20
20
|
this.map.get(key)!.push(value);
|
|
21
21
|
} else {
|
|
22
22
|
this.map.set(key, [value]);
|
package/src/utils/objects.ts
CHANGED
|
@@ -106,7 +106,7 @@ export const Objects = {
|
|
|
106
106
|
return Objects.filter(obj, (_, key) => !set.has(key));
|
|
107
107
|
},
|
|
108
108
|
|
|
109
|
-
//
|
|
109
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
110
110
|
pick<V extends Record<string, any>, K extends string>(
|
|
111
111
|
obj: V,
|
|
112
112
|
keys: readonly K[],
|
package/src/utils/once.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayShallowEquals } from "./arrays";
|
|
4
4
|
|
|
5
|
-
//
|
|
5
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
6
6
|
export function once<T extends (...args: any[]) => any>(fn: T): T {
|
|
7
7
|
let result: ReturnType<T>;
|
|
8
8
|
let called = false;
|
|
@@ -18,7 +18,7 @@ export function once<T extends (...args: any[]) => any>(fn: T): T {
|
|
|
18
18
|
} as T;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
//
|
|
21
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
22
22
|
export function memoizeLastValue<T extends (...args: any[]) => any>(fn: T): T {
|
|
23
23
|
let result: ReturnType<T>;
|
|
24
24
|
let lastArgs: Parameters<T> | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
export function staticImplements<T>() {
|
|
3
3
|
return <U extends T>(_constructor: U) => {
|
|
4
|
-
//
|
|
4
|
+
// oxlint-disable-next-line typescript/no-unused-expressions
|
|
5
5
|
_constructor;
|
|
6
6
|
};
|
|
7
7
|
}
|
|
@@ -46,5 +46,5 @@ export function adaptForLocalStorage<Value, Serializable>(opts: {
|
|
|
46
46
|
/**
|
|
47
47
|
* A JSON storage adapter that uses the best available storage.
|
|
48
48
|
*/
|
|
49
|
-
//
|
|
49
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
50
50
|
export const jotaiJsonStorage = createJSONStorage<any>(() => availableStorage);
|
package/src/utils/tracer.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
/*
|
|
4
|
-
|
|
3
|
+
/* oxlint-disable typescript/no-explicit-any */
|
|
4
|
+
/* oxlint-disable no-console -- for debugging */
|
|
5
5
|
|
|
6
6
|
import { Logger } from "./Logger";
|
|
7
7
|
|