@marimo-team/frontend 0.24.1-dev2 → 0.24.1-dev4
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-DqJypoFY.js → CellStatus-B_dBNTJO.js} +1 -1
- package/dist/assets/{JsonOutput-DnrBQBRT.js → JsonOutput-C5g_bqiZ.js} +1 -1
- package/dist/assets/{MarimoErrorOutput-BVdFtnJz.js → MarimoErrorOutput-Cb0evuEp.js} +1 -1
- package/dist/assets/{RenderHTML-X9kskQZ0.js → RenderHTML-BoN8Qu7U.js} +1 -1
- package/dist/assets/{RunButton-D83R2wvd.js → RunButton-C3V3v58F.js} +1 -1
- package/dist/assets/{add-cell-with-ai-HD16K3PB.js → add-cell-with-ai-Bg0VJ1RI.js} +1 -1
- package/dist/assets/{add-connection-dialog-V86wrXca.js → add-connection-dialog-DHyonb9T.js} +1 -1
- package/dist/assets/{agent-panel-XdLSrKjl.js → agent-panel-E3KZlygO.js} +1 -1
- package/dist/assets/{ai-model-dropdown-BJp70TST.js → ai-model-dropdown-g49r1wqa.js} +4 -4
- package/dist/assets/{app-config-button-C2zJXSrK.js → app-config-button-CKy0e-KL.js} +1 -1
- package/dist/assets/{blob-BKW9TqBu.js → blob-XD7AvCQ1.js} +1 -1
- package/dist/assets/{cell-editor-DQSrfeL3.js → cell-editor-1OeZIuhU.js} +1 -1
- package/dist/assets/{cell-link-D26WjdN1.js → cell-link-WDIIwzUn.js} +1 -1
- package/dist/assets/{cells-DTFqEQb0.js → cells-BvgwUKB9.js} +1 -1
- package/dist/assets/{chat-display-CclXFQQP.js → chat-display-mkz-zuZI.js} +1 -1
- package/dist/assets/{chat-panel-ft0VIKS8.js → chat-panel-T7HagF03.js} +1 -1
- package/dist/assets/{chat-ui-DUYenr6D.js → chat-ui-LLM6wWNd.js} +1 -1
- package/dist/assets/{column-preview-BLap3eAk.js → column-preview-DMqGohE5.js} +1 -1
- package/dist/assets/{command-palette-C7nz0zHt.js → command-palette-CrL7qYTw.js} +1 -1
- package/dist/assets/{common-DKQZgzC9.js → common-Dx_4ekWj.js} +1 -1
- package/dist/assets/{components-Bf_hykBb.js → components-DVs9Yu7X.js} +1 -1
- package/dist/assets/config-DFK5eCC3.js +1 -0
- package/dist/assets/{datasource-DZgUyqAK.js → datasource-Le540Ng6.js} +1 -1
- package/dist/assets/{dependency-graph-panel-CH6kIoat.js → dependency-graph-panel-BsdBM_AS.js} +1 -1
- package/dist/assets/{documentation-panel-BQYA8gCW.js → documentation-panel-RJNMjUK6.js} +1 -1
- package/dist/assets/{download-_oAlkvj6.js → download-B8NwKEtr.js} +1 -1
- package/dist/assets/{edit-page-DnXTBsfC.js → edit-page-CZXyH2lw.js} +6 -6
- package/dist/assets/{error-entries-uxjSsTal.js → error-entries-yYB8PZoo.js} +1 -1
- package/dist/assets/{error-panel-Bq0TKquh.js → error-panel-Dr928gBs.js} +1 -1
- package/dist/assets/{file-explorer-panel-uhg7VNMd.js → file-explorer-panel-Brf39GIG.js} +1 -1
- package/dist/assets/{file-icons-V3puz20c.js → file-icons-D39zbjsS.js} +1 -1
- package/dist/assets/{file-name-input-DWf6YZwM.js → file-name-input-BLH5fTEA.js} +1 -1
- package/dist/assets/{floating-outline-Vqr5D17R.js → floating-outline-UPrDtFZF.js} +1 -1
- package/dist/assets/{focus-BTlyH5K_.js → focus-BArgHYf8.js} +1 -1
- package/dist/assets/{form-CRSnWxLR.js → form-BN1AKD58.js} +1 -1
- package/dist/assets/{form-Bb1JVuzT.js → form-BvzcNsxB.js} +1 -1
- package/dist/assets/{home-page-RduyhdYP.js → home-page-BkL-m7rQ.js} +1 -1
- package/dist/assets/{html-to-image-BsXiWo0v.js → html-to-image-DKEUbBwc.js} +1 -1
- package/dist/assets/{index-C5WESBbZ.js → index-BBkaSMl2.js} +17 -17
- package/dist/assets/{kiosk-mode-BH15-Gn-.js → kiosk-mode-B8UhlOLw.js} +1 -1
- package/dist/assets/{layout-1X5SpE18.js → layout-CFJK8lGt.js} +3 -3
- package/dist/assets/{logs-panel-CVxksxou.js → logs-panel-DItocggZ.js} +1 -1
- package/dist/assets/{markdown-renderer-BjuEVUOa.js → markdown-renderer-D7RLn6TA.js} +1 -1
- package/dist/assets/{name-cell-input-CtYGGTR5.js → name-cell-input-jausH-CL.js} +1 -1
- package/dist/assets/{outline-panel-BhxoKAbS.js → outline-panel-C_pASL6b.js} +1 -1
- package/dist/assets/{packages-panel-BWP3YWNW.js → packages-panel-CBntOYOs.js} +1 -1
- package/dist/assets/{pair-with-agent-modal-BCMZbqSR.js → pair-with-agent-modal-DiDLAjxV.js} +1 -1
- package/dist/assets/{panel-accordion-state-0CKLFeAf.js → panel-accordion-state-DaMmC7UV.js} +1 -1
- package/dist/assets/{panels-D40pa9F1.js → panels-Cmq_7QuQ.js} +1 -1
- package/dist/assets/{process-output-WaMx3G7b.js → process-output-ClE9lj2U.js} +1 -1
- package/dist/assets/{radio-group-5KDs5aO1.js → radio-group-CSwRGU0A.js} +1 -1
- package/dist/assets/{readonly-code-display-DnHcjfFl.js → readonly-code-display-kRUXu5aJ.js} +1 -1
- package/dist/assets/{readonly-python-code-BV8otm7e.js → readonly-python-code-BCOkadQf.js} +1 -1
- package/dist/assets/{reveal-component-yVci-fc9.js → reveal-component-CvKpfAMl.js} +1 -1
- package/dist/assets/{run-page-aQycuCjn.js → run-page-DSI-PP21.js} +1 -1
- package/dist/assets/{scratchpad-panel-lsqN24Au.js → scratchpad-panel-DUKOmuWE.js} +1 -1
- package/dist/assets/{session-panel-C4JUkPt7.js → session-panel-CidCOM4_.js} +1 -1
- package/dist/assets/{skeleton-DOZFvsSE.js → skeleton-Clf6EBLu.js} +1 -1
- package/dist/assets/{snippets-panel-QNY_Dl2J.js → snippets-panel-V4x4wLMQ.js} +1 -1
- package/dist/assets/state-C7arWhwL.js +3 -0
- package/dist/assets/{state-ByxLiTvP.js → state-m2zUPztG.js} +1 -1
- package/dist/assets/{switch-CDT2KH2g.js → switch-ulnbZFaI.js} +1 -1
- package/dist/assets/{terminal-UyHT9ie2.js → terminal-Bo6pnmSU.js} +1 -1
- package/dist/assets/{tracing-BiBPyXVg.js → tracing-Cmwuiwj9.js} +1 -1
- package/dist/assets/{tracing-panel-D8LtcU_g.js → tracing-panel-CCXeYfOu.js} +2 -2
- package/dist/assets/{tree-actions-DUAdNn1i.js → tree-actions-QMLf8Qhz.js} +1 -1
- package/dist/assets/{useBoolean-CgN_4RAl.js → useBoolean-C_UV6tQ7.js} +1 -1
- package/dist/assets/{useCellActionButton-Bp2eEIzO.js → useCellActionButton-D8qyXNKv.js} +1 -1
- package/dist/assets/{useDeleteCell-DO-9USfB.js → useDeleteCell-Ctnxl8AT.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-Bi8pUBnn.js → useDependencyPanelTab-CYSEZi6j.js} +1 -1
- package/dist/assets/useNotebookActions-CZaPneWs.js +12 -0
- package/dist/assets/{useRunCells-BpZ_0Xuz.js → useRunCells-DjQN3XYP.js} +1 -1
- package/dist/assets/{useSplitCell-C2fjcfID.js → useSplitCell-BG8Zd4lw.js} +1 -1
- package/dist/assets/{vega-component-3G_aA1Wa.js → vega-component-1VoQOWvU.js} +1 -1
- package/dist/index.html +26 -26
- package/package.json +1 -1
- package/src/__mocks__/requests.ts +4 -0
- package/src/components/editor/actions/export-dialog/__tests__/export-dialog.test.tsx +206 -34
- package/src/components/editor/actions/export-dialog/export-dialog.tsx +9 -3
- package/src/components/editor/actions/export-dialog/format-notice.tsx +69 -24
- package/src/components/editor/actions/export-dialog/use-export-dialog.ts +27 -2
- package/src/components/ui/toaster.tsx +14 -1
- package/src/core/islands/bridge.ts +1 -0
- package/src/core/mode.ts +6 -1
- package/src/core/network/__tests__/requests-lazy.test.ts +40 -0
- package/src/core/network/__tests__/requests-network.test.ts +13 -0
- package/src/core/network/requests-lazy.ts +11 -4
- package/src/core/network/requests-network.ts +8 -0
- package/src/core/network/requests-static.ts +1 -0
- package/src/core/network/requests-toasting.tsx +1 -0
- package/src/core/network/types.ts +5 -0
- package/src/core/wasm/bridge.ts +1 -0
- package/dist/assets/config-EoJoeZuK.js +0 -1
- package/dist/assets/state-Ci7n55A9.js +0 -3
- package/dist/assets/useNotebookActions-Bm9VzJ_M.js +0 -12
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
4
4
|
import { cellId, requestId, uiElementId } from "@/__tests__/branded";
|
|
5
|
+
import { waitForKernelToBeInstantiated } from "../../kernel/state";
|
|
5
6
|
import type { RuntimeManager } from "../../runtime/runtime";
|
|
7
|
+
import { waitForConnectionOpen } from "../connection";
|
|
6
8
|
import { createLazyRequests } from "../requests-lazy";
|
|
7
9
|
import type {
|
|
8
10
|
EditRequests,
|
|
@@ -55,6 +57,10 @@ describe("createLazyRequests", () => {
|
|
|
55
57
|
sendInterrupt: vi.fn().mockResolvedValue({ interrupted: true }),
|
|
56
58
|
sendPdb: vi.fn().mockResolvedValue({ pdb: true }),
|
|
57
59
|
sendRunScratchpad: vi.fn().mockResolvedValue({ run: true }),
|
|
60
|
+
installExportRequirements: vi.fn().mockResolvedValue({
|
|
61
|
+
source: "server",
|
|
62
|
+
formats: [],
|
|
63
|
+
}),
|
|
58
64
|
} as unknown as EditRequests & RunRequests;
|
|
59
65
|
});
|
|
60
66
|
|
|
@@ -104,6 +110,40 @@ describe("createLazyRequests", () => {
|
|
|
104
110
|
expect(mockDelegate.getExportAvailability).toHaveBeenCalledOnce();
|
|
105
111
|
});
|
|
106
112
|
|
|
113
|
+
it("installs export requirements without waiting for the kernel", async () => {
|
|
114
|
+
const lazyRequests = createLazyRequests(
|
|
115
|
+
mockDelegate,
|
|
116
|
+
mockGetRuntimeManager,
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
await lazyRequests.installExportRequirements({ format: "pdf" });
|
|
120
|
+
|
|
121
|
+
expect(mockInit).toHaveBeenCalledOnce();
|
|
122
|
+
expect(waitForConnectionOpen).toHaveBeenCalledOnce();
|
|
123
|
+
expect(waitForKernelToBeInstantiated).not.toHaveBeenCalled();
|
|
124
|
+
expect(mockDelegate.installExportRequirements).toHaveBeenCalledWith({
|
|
125
|
+
format: "pdf",
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it("sends instantiate without waiting for the kernel", async () => {
|
|
130
|
+
const lazyRequests = createLazyRequests(
|
|
131
|
+
mockDelegate,
|
|
132
|
+
mockGetRuntimeManager,
|
|
133
|
+
);
|
|
134
|
+
const request = {
|
|
135
|
+
objectIds: [uiElementId("obj1")],
|
|
136
|
+
values: [],
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
await lazyRequests.sendInstantiate(request);
|
|
140
|
+
|
|
141
|
+
expect(mockInit).toHaveBeenCalledOnce();
|
|
142
|
+
expect(waitForConnectionOpen).toHaveBeenCalledOnce();
|
|
143
|
+
expect(waitForKernelToBeInstantiated).not.toHaveBeenCalled();
|
|
144
|
+
expect(mockDelegate.sendInstantiate).toHaveBeenCalledWith(request);
|
|
145
|
+
});
|
|
146
|
+
|
|
107
147
|
it("should call init once before first request", async () => {
|
|
108
148
|
const lazyRequests = createLazyRequests(
|
|
109
149
|
mockDelegate,
|
|
@@ -143,6 +143,19 @@ describe("createNetworkRequests", () => {
|
|
|
143
143
|
expect(mockClient.GET).toHaveBeenCalledWith("/api/export/availability");
|
|
144
144
|
});
|
|
145
145
|
|
|
146
|
+
it("installExportRequirements should POST the export format", async () => {
|
|
147
|
+
const requests = createNetworkRequests();
|
|
148
|
+
await requests.installExportRequirements({ format: "pdf" });
|
|
149
|
+
|
|
150
|
+
expect(mockClient.POST).toHaveBeenCalledWith(
|
|
151
|
+
"/api/export/requirements/install",
|
|
152
|
+
expect.objectContaining({
|
|
153
|
+
body: { format: "pdf" },
|
|
154
|
+
params: expect.anything(),
|
|
155
|
+
}),
|
|
156
|
+
);
|
|
157
|
+
});
|
|
158
|
+
|
|
146
159
|
it("discoverDataSources should POST to the discovery endpoint", async () => {
|
|
147
160
|
const requests = createNetworkRequests();
|
|
148
161
|
const request = { requestId: "discovery-request" } as any;
|
|
@@ -26,6 +26,10 @@ type AllRequests = EditRequests & RunRequests;
|
|
|
26
26
|
// executing. Use for user-initiated actions that should "just work" and
|
|
27
27
|
// kick off the kernel if needed (e.g., clicking Run).
|
|
28
28
|
//
|
|
29
|
+
// - startConnectionWithoutKernel: Initializes the runtime and waits for an open
|
|
30
|
+
// connection. Use for session-scoped server requests that do not need an
|
|
31
|
+
// instantiated kernel.
|
|
32
|
+
//
|
|
29
33
|
// - waitForConnectionOpen: Waits for an existing connection but won't start one.
|
|
30
34
|
// Use for operations that depend on a running kernel but shouldn't be the
|
|
31
35
|
// trigger to start it (e.g., saving, interrupting).
|
|
@@ -38,6 +42,7 @@ type Action =
|
|
|
38
42
|
| "throwError"
|
|
39
43
|
| "dropRequest"
|
|
40
44
|
| "startConnection"
|
|
45
|
+
| "startConnectionWithoutKernel"
|
|
41
46
|
| "waitForConnectionOpen"
|
|
42
47
|
| "serverOnly";
|
|
43
48
|
|
|
@@ -45,7 +50,7 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
|
|
|
45
50
|
// These will start a connection if not already connected and then wait until the connection is open
|
|
46
51
|
sendComponentValues: "startConnection",
|
|
47
52
|
sendModelValue: "startConnection",
|
|
48
|
-
sendInstantiate: "
|
|
53
|
+
sendInstantiate: "startConnectionWithoutKernel",
|
|
49
54
|
sendRun: "startConnection",
|
|
50
55
|
sendDeleteCell: "startConnection",
|
|
51
56
|
sendRunScratchpad: "startConnection",
|
|
@@ -107,6 +112,9 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
|
|
|
107
112
|
getEnvironmentInfo: "serverOnly",
|
|
108
113
|
getExportAvailability: "serverOnly",
|
|
109
114
|
|
|
115
|
+
// Session-scoped server operations
|
|
116
|
+
installExportRequirements: "startConnectionWithoutKernel",
|
|
117
|
+
|
|
110
118
|
// Home operations throw errors
|
|
111
119
|
getRecentFiles: "startConnection",
|
|
112
120
|
getWorkspaceFiles: "startConnection",
|
|
@@ -186,13 +194,12 @@ export function createLazyRequests(
|
|
|
186
194
|
await waitForKernelToBeInstantiated();
|
|
187
195
|
return request(...args);
|
|
188
196
|
|
|
197
|
+
case "startConnectionWithoutKernel":
|
|
189
198
|
case "startConnection":
|
|
190
199
|
// Start connection and wait for it to be open
|
|
191
200
|
await initOnce(runtimeManager);
|
|
192
201
|
await waitForConnectionOpen();
|
|
193
|
-
if (
|
|
194
|
-
// We don't need to wait for kernel to be instantiated if we are sending an instantiate request
|
|
195
|
-
// otherwise we will wait forever
|
|
202
|
+
if (action === "startConnection") {
|
|
196
203
|
await waitForKernelToBeInstantiated();
|
|
197
204
|
}
|
|
198
205
|
return request(...args);
|
|
@@ -417,6 +417,14 @@ export function createNetworkRequests(): EditRequests & RunRequests {
|
|
|
417
417
|
getExportAvailability: () => {
|
|
418
418
|
return getClient().GET("/api/export/availability").then(handleResponse);
|
|
419
419
|
},
|
|
420
|
+
installExportRequirements: (request) => {
|
|
421
|
+
return getClient()
|
|
422
|
+
.POST("/api/export/requirements/install", {
|
|
423
|
+
body: request,
|
|
424
|
+
params: getParams(),
|
|
425
|
+
})
|
|
426
|
+
.then(handleResponse);
|
|
427
|
+
},
|
|
420
428
|
exportAsHTML: async (request) => {
|
|
421
429
|
if (
|
|
422
430
|
process.env.NODE_ENV === "development" ||
|
|
@@ -84,6 +84,7 @@ export function createStaticRequests(): EditRequests & RunRequests {
|
|
|
84
84
|
getRunningNotebooks: throwNotInEditMode,
|
|
85
85
|
shutdownSession: throwNotInEditMode,
|
|
86
86
|
getExportAvailability: throwNotInEditMode,
|
|
87
|
+
installExportRequirements: throwNotInEditMode,
|
|
87
88
|
exportAsHTML: throwNotInEditMode,
|
|
88
89
|
exportAsIPYNB: throwNotInEditMode,
|
|
89
90
|
exportAsMarkdown: throwNotInEditMode,
|
|
@@ -65,6 +65,7 @@ export function createErrorToastingRequests(
|
|
|
65
65
|
getRunningNotebooks: "Failed to get running notebooks",
|
|
66
66
|
shutdownSession: "Failed to shutdown session",
|
|
67
67
|
getExportAvailability: "", // No toast
|
|
68
|
+
installExportRequirements: "Failed to install export requirements",
|
|
68
69
|
exportAsHTML: "Failed to export HTML",
|
|
69
70
|
exportAsIPYNB: "Failed to export ipynb",
|
|
70
71
|
exportAsMarkdown: "Failed to export Markdown",
|
|
@@ -29,6 +29,8 @@ export type ExportAsIPYNBRequest = schemas["ExportAsIPYNBRequest"];
|
|
|
29
29
|
export type ExportAsScriptRequest = schemas["ExportAsScriptRequest"];
|
|
30
30
|
export type ExportAsPDFRequest = schemas["ExportAsPDFRequest"];
|
|
31
31
|
export type ExportAvailabilityResponse = schemas["ExportAvailabilityResponse"];
|
|
32
|
+
export type InstallExportRequirementsRequest =
|
|
33
|
+
schemas["InstallExportRequirementsRequest"];
|
|
32
34
|
export type UpdateCellOutputsRequest = schemas["UpdateCellOutputsRequest"];
|
|
33
35
|
|
|
34
36
|
export interface ExportedFile<T extends BlobPart = BlobPart> {
|
|
@@ -223,6 +225,9 @@ export interface EditRequests {
|
|
|
223
225
|
) => Promise<RunningNotebooksResponse>;
|
|
224
226
|
// Export requests
|
|
225
227
|
getExportAvailability: () => Promise<ExportAvailabilityResponse>;
|
|
228
|
+
installExportRequirements: (
|
|
229
|
+
request: InstallExportRequirementsRequest,
|
|
230
|
+
) => Promise<ExportAvailabilityResponse>;
|
|
226
231
|
exportAsHTML: (request: ExportAsHTMLRequest) => Promise<ExportedFile<string>>;
|
|
227
232
|
exportAsIPYNB: (
|
|
228
233
|
request: ExportAsIPYNBRequest,
|
package/src/core/wasm/bridge.ts
CHANGED
|
@@ -675,6 +675,7 @@ export class PyodideBridge implements RunRequests, EditRequests {
|
|
|
675
675
|
getRunningNotebooks = throwNotImplemented;
|
|
676
676
|
shutdownSession = throwNotImplemented;
|
|
677
677
|
getExportAvailability = throwNotImplemented;
|
|
678
|
+
installExportRequirements = throwNotImplemented;
|
|
678
679
|
exportAsIPYNB = throwNotImplemented;
|
|
679
680
|
exportAsPDF = throwNotImplemented;
|
|
680
681
|
autoExportAsHTML = throwNotImplemented;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var b=Object.defineProperty;var v=(t,e,r)=>e in t?b(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var R=(t,e,r)=>v(t,typeof e!="symbol"?e+"":e,r);import{i as h,l as I,n as D,o as _,p as s,u as g}from"./useEvent-GCVIknuR.js";import{t as H}from"./compiler-runtime-DnimoHo0.js";import{g as c}from"./useEventListener-DpNnLPuE.js";import{t as L}from"./invariant-BUdrueMv.js";import{t as w}from"./utils-C8Yt16Y7.js";import{r as u}from"./constants-DifUxsbZ.js";import{t as $}from"./Deferred-CP7vq682.js";import{t as N}from"./session-D-SddyN0.js";function S(t,e){if(t==null)throw Error(e||`Expected value but got ${t}`)}function T(){return typeof document<"u"&&document.querySelector("marimo-wasm")!==null}function W(){let t=h.get(p);return S(t,"internal-error: initial mode not found"),L(t!=="present","internal-error: initial mode cannot be 'present'"),t}function G(t){return t==="read"||t==="home"||t==="gallery"?t:t==="edit"?"present":"edit"}async function M(t){let e=h.get(l);if(e.mode!=="edit"){await t();return}h.set(l,{...e,mode:"present"});try{await new Promise(r=>setTimeout(r,100)),await new Promise(r=>requestAnimationFrame(r)),await new Promise(r=>requestAnimationFrame(r)),await t()}finally{h.set(l,e)}}const l=s({mode:w()?"read":"not-set",cellAnchor:null}),p=s(void 0);function z(){let t=h.get(p);return t!=="home"&&t!=="gallery"}const F=s(!1);function K(){let{mode:t}=g(l);return t!=="read"}const a={NOT_STARTED:"NOT_STARTED",CONNECTING:"CONNECTING",OPEN:"OPEN",CLOSING:"CLOSING",CLOSED:"CLOSED"},j={KERNEL_DISCONNECTED:"KERNEL_DISCONNECTED",KERNEL_STARTUP_ERROR:"KERNEL_STARTUP_ERROR"},o=s({state:a.NOT_STARTED});function E(){return _(o,t=>t.state===a.OPEN)}function q(){return z()?E():Promise.resolve()}const x=s(t=>t(o).state===a.CONNECTING);s(t=>t(o).state===a.OPEN);const B=s(t=>{let e=t(o);return e.state===a.OPEN||e.state===a.NOT_STARTED}),Q=s(t=>t(o).state===a.CLOSED),J=s(t=>t(o).state===a.NOT_STARTED);function V(t){return t===a.CLOSED}function X(t){return t===a.CONNECTING}function Y(t){return t===a.OPEN}function Z(t){return t===a.CLOSING}function y(t){return t===a.NOT_STARTED}function tt(t){return t===a.CLOSED||t===a.CLOSING||t===a.CONNECTING}function et(t){switch(t){case a.CLOSED:return"App disconnected";case a.CONNECTING:return"Connecting to a runtime ...";case a.CLOSING:return"App disconnecting...";case a.OPEN:return"";case a.NOT_STARTED:return"Click to connect to a runtime";default:return""}}function rt(t){if(typeof t!="object"||!t||Array.isArray(t))return!1;for(let e of Object.values(t))if(typeof e!="string")return!1;return!0}function at(t){if(typeof t!="object"||!t||Array.isArray(t))return!1;let e=t;return!(!rt(e.files)||e.modelNotifications!==void 0&&!Array.isArray(e.modelNotifications))}function d(){let t=typeof window>"u"?void 0:window.__MARIMO_STATIC__;return at(t)?t:void 0}function O(){return d()!==void 0}function nt(){let t=d();return L(t!==void 0,"Not a static notebook"),t.files}function st(){var t;return(t=d())==null?void 0:t.modelNotifications}var it=class{constructor(t,e=!1){R(this,"initialHealthyCheck",new $);this.config=t,this.lazy=e;try{new URL(this.config.url)}catch(r){throw Error(`Invalid runtime URL: ${this.config.url}. ${r instanceof Error?r.message:"Unknown error"}`,{cause:r})}this.lazy||this.init()}get isLazy(){return this.lazy}get httpURL(){return new URL(this.config.url)}get isSameOrigin(){return this.httpURL.origin===window.location.origin}get isServerless(){return T()||w()||O()}formatHttpURL({path:t="",searchParams:e,restrictToKnownQueryParams:r=!0}){let n=this.httpURL,i=new URLSearchParams(window.location.search);if(e)for(let[m,f]of e.entries())n.searchParams.set(m,f);for(let[m,f]of i.entries())r&&!Object.values(u).includes(m)||n.searchParams.set(m,f);return n.pathname=`${n.pathname.replace(/\/$/,"")}/${t.replace(/^\//,"")}`,n.hash="",n}appendCrossOriginAuth(t){return!this.isSameOrigin&&this.config.authToken&&t.searchParams.set(u.accessToken,this.config.authToken),t}formatNavigableHttpURL(t,e){let r=this.formatHttpURL({path:t,searchParams:e});return r.searchParams.delete(u.accessToken),this.appendCrossOriginAuth(r)}formatWsURL(t,e){let r=this.formatHttpURL({path:t,searchParams:e,restrictToKnownQueryParams:!1});return ot(this.appendCrossOriginAuth(r).toString())}getSessionSearchParams(t){let e=new URL(this.config.url),r=new URLSearchParams(e.search);return new URLSearchParams(window.location.search).forEach((n,i)=>{r.has(i)||r.set(i,n)}),r.set(u.sessionId,t),r}getWsURL(t){return this.formatWsURL("/ws",this.getSessionSearchParams(t))}getSseURL(t){let e=this.formatHttpURL({path:"/sse",searchParams:this.getSessionSearchParams(t),restrictToKnownQueryParams:!1});return e.searchParams.delete(u.accessToken),e}getWsSyncURL(t){return this.formatWsURL("/ws_sync",this.getSessionSearchParams(t))}getTerminalWsURL(){return this.formatWsURL("/terminal/ws")}getLSPURL(t){if(t==="copilot"){let e=this.formatWsURL(`/lsp/${t}`),r=e.searchParams.get(u.accessToken);return e.search="",r&&e.searchParams.set(u.accessToken,r),e}return this.formatWsURL(`/lsp/${t}`)}getAiURL(t){return this.formatHttpURL({path:`/api/ai/${t}`})}healthURL(){return this.formatHttpURL({path:"/health"})}async fetchHealth(){try{return await fetch(this.healthURL().toString())}catch(t){return c.error(`Failed to check health: ${t instanceof Error?t.message:"Unknown error"}`,{cause:t}),null}}async reconcileFromHealth(){if(this.isServerless)return!0;let t=await this.fetchHealth();if(!t)return!1;if(t.redirected){c.debug(`Runtime redirected to ${t.url}`);let e=new URL(t.url);e.pathname=e.pathname.replace(/\/health$/,""),this.config.url=e.toString()}return t.ok&&this.setDOMBaseUri(this.config.url),t.ok}async probeHealth(){var t;return this.isServerless?!0:((t=await this.fetchHealth())==null?void 0:t.ok)??!1}setDOMBaseUri(t){t=t.split("?",1)[0],t.endsWith("/")||(t+="/");let e=document.querySelector("base");e?e.setAttribute("href",t):(e=document.createElement("base"),e.setAttribute("href",t),document.head.append(e))}async init(t){c.debug("Initializing runtime...");let e=0;for(;!await this.reconcileFromHealth();){if(e>=25){c.error("Failed to connect after 25 retries"),this.initialHealthyCheck.reject(Error("Failed to connect after 25 retries"));return}if(!(t!=null&&t.disableRetryDelay)){let r=Math.min(100*1.2**e,2e3);await new Promise(n=>setTimeout(n,r))}e++}c.debug("Runtime is healthy"),this.initialHealthyCheck.resolve()}async waitForHealthy(){return this.initialHealthyCheck.promise}headers(){let t={"Marimo-Session-Id":N(),"Marimo-Server-Token":this.config.serverToken??"","x-runtime-url":this.httpURL.toString()};return this.config.authToken&&(t.Authorization=`Bearer ${this.config.authToken}`),t}sessionHeaders(){return{"Marimo-Session-Id":N()}}};function ot(t){if(!t.startsWith("http")){c.warn(`URL must start with http: ${t}`);let e=new URL(t);return e.protocol="ws",e}return new URL(t.replace(/^http/,"ws"))}var ct=H();function ut(){let t=new URL(document.baseURI);return t.search="",t.hash="",t.toString()}const U={lazy:!0,url:ut()},C=s(U);var P=s(t=>{let e=t(C);return new it(e,e.lazy)});function A(){return g(P)}function ht(){let t=(0,ct.c)(4),e=A(),[r,n]=I(o),i;return t[0]!==r.state||t[1]!==e||t[2]!==n?(i=async()=>{y(r.state)?(n({state:a.CONNECTING}),await e.init()):c.log("Runtime already started or starting...")},t[0]=r.state,t[1]=e,t[2]=n,t[3]=i):i=t[3],D(i)}function k(){return h.get(P)}function lt(t){if(t.startsWith("http"))return new URL(t);let e=k().httpURL.toString();return e.startsWith("blob:")&&(e=e.replace("blob:","")),new URL(t,e)}export{G as A,q as C,p as D,W as E,l as M,T as N,F as O,S as P,E as S,a as T,B as _,ht as a,x as b,nt as c,V as d,Z as f,y as g,tt as h,C as i,K as j,M as k,O as l,X as m,lt as n,A as o,Y as p,k as r,st as s,U as t,et as u,o as v,j as w,J as x,Q as y};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var $r=Object.defineProperty;var Rt=m=>{throw TypeError(m)};var jr=(m,y,_)=>y in m?$r(m,y,{enumerable:!0,configurable:!0,writable:!0,value:_}):m[y]=_;var o=(m,y,_)=>jr(m,typeof y!="symbol"?y+"":y,_),We=(m,y,_)=>y.has(m)||Rt("Cannot "+_);var i=(m,y,_)=>(We(m,y,"read from private field"),_?_.call(m):y.get(m)),u=(m,y,_)=>y.has(m)?Rt("Cannot add the same private member more than once"):y instanceof WeakSet?y.add(m):y.set(m,_),h=(m,y,_,le)=>(We(m,y,"write to private field"),le?le.call(m,_):y.set(m,_),_),p=(m,y,_)=>(We(m,y,"access private method"),_);import{i as W,p as qt,u as Hr}from"./useEvent-GCVIknuR.js";import{Gt as kt,Kt as ie,Qi as Dr,Yi as Or,b as zr,ca as Br,ea as Vr,er as Qr,la as _e,ra as Gr,__tla as Yr}from"./cells-DTFqEQb0.js";import{t as Kr}from"./get-DuxuLRGI.js";import{t as Jr}from"./debounce-DhnxH9Rh.js";import{t as Xr}from"./_baseSet-DehVzRp6.js";import{g as f,v}from"./useEventListener-DpNnLPuE.js";import{t as Zr}from"./invariant-BUdrueMv.js";import{E as es}from"./utils-C8Yt16Y7.js";import{E as Pt,M as ts,N as rs,c as $e,l as Ft,n as ss}from"./config-EoJoeZuK.js";import{n as ns}from"./switch-CDT2KH2g.js";import{c as is}from"./readonly-python-code-BV8otm7e.js";import{t as as}from"./createReducer-C1MhlItJ.js";import{r as os}from"./strings-DmKKoXrM.js";import{t as je}from"./requests-B9zEd_sW.js";import{c as Nt,o as At,__tla as ls}from"./markdown-renderer-BjuEVUOa.js";import{t as ds}from"./DeferredRequestRegistry-6TRSC3VZ.js";import{t as us}from"./preload-helper-BPPi7vOr.js";import{t as It}from"./Deferred-CP7vq682.js";import{t as Lt}from"./uuid-e9lSomwA.js";import{t as cs}from"./use-toast-DjpWVza6.js";import{n as hs}from"./RenderHTML-X9kskQZ0.js";import{t as ps}from"./useRunCells-BpZ_0Xuz.js";import{r as fs,t as gs}from"./blob-BKW9TqBu.js";import{n as ms,r as ys,t as ws}from"./share-c5Zh8BM8.js";import{i as Tt,r as vs,t as bs}from"./events-CPoJAfgx.js";let xe,He,De,Ut,Wt,$t,jt,ae,oe,Ht,Oe,Dt,Ot,zt,ze,Bt,Fe,Vt,Ne,Be,Qt,Gt,Ss=Promise.all([(()=>{try{return Yr}catch{}})(),(()=>{try{return ls}catch{}})()]).then(async()=>{var St,qe,$,F,Z,q,j,Qe,Kt,Jt,de,ee,z,ke,Xt,_t,te,ue,ce,he,pe,B,re,V,Zt,Ge,se,O,fe,ge,me,ye,N,C,Q,I,L,G,E,we,Y,b,Ye,Ke,er,Je,tr,Xe,Ze,rr,xt,T,ve,be,H,X,Et;function m(t,e,r){return t==null?t:Xr(t,e,r)}xe=m,Gt=qt(null);var{valueAtom:y,useActions:_}=as(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:Lt()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(r=>r.id!==e)}),clearBanners:t=>({...t,banners:[]})});Ut=()=>Hr(y),Qt=function(){return _()};let le,et;Be=class{constructor(){o(this,"subscriptions",new Map)}addSubscription(t,e){var r;this.subscriptions.has(t)||this.subscriptions.set(t,new Set),(r=this.subscriptions.get(t))==null||r.add(e)}removeSubscription(t,e){var r;(r=this.subscriptions.get(t))==null||r.delete(e)}notify(t,e){for(let r of this.subscriptions.get(t)??[])r(e)}},He=class Ve{constructor(e){o(this,"subscriptions",new Be);this.producer=e}static withProducerCallback(e){return new Ve(e)}static empty(){return new Ve}startProducer(){this.producer&&this.producer(e=>{this.subscriptions.notify("message",e)})}connect(){return new Promise(e=>setTimeout(e,0)).then(()=>{this.subscriptions.notify("open",new Event("open"))})}get readyState(){return WebSocket.OPEN}reconnect(e,r){this.close(),this.connect()}close(){this.subscriptions.notify("close",new Event("close"))}send(e){return this.subscriptions.notify("message",new MessageEvent("message",{data:e})),Promise.resolve()}addEventListener(e,r){this.subscriptions.addSubscription(e,r),e==="open"&&r(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,r){this.subscriptions.removeSubscription(e,r)}},le=1e10,et=1e3;function Ee(t,e){let r=t.map(s=>`"${s}"`).join(", ");return Error(`This RPC instance cannot ${e} because the transport did not provide one or more of these methods: ${r}`)}function nr(t={}){let e={};function r(d){e=d}let s={};function n(d){var g;s.unregisterHandler&&s.unregisterHandler(),s=d,(g=s.registerHandler)==null||g.call(s,Wr)}let a;function l(d){if(typeof d=="function"){a=d;return}a=(g,x)=>{let S=d[g];if(S)return S(x);let M=d._;if(!M)throw Error(`The requested method has no handler: ${g}`);return M(g,x)}}let{maxRequestTime:c=et}=t;t.transport&&n(t.transport),t.requestHandler&&l(t.requestHandler),t._debugHooks&&r(t._debugHooks);let w=0;function R(){return w<=le?++w:w=0}let k=new Map,P=new Map;function D(d,...g){let x=g[0];return new Promise((S,M)=>{var ne;if(!s.send)throw Ee(["send"],"make requests");let U=R(),J={type:"request",id:U,method:d,params:x};k.set(U,{resolve:S,reject:M}),c!==1/0&&P.set(U,setTimeout(()=>{P.delete(U),M(Error("RPC request timed out."))},c)),(ne=e.onSend)==null||ne.call(e,J),s.send(J)})}let A=new Proxy(D,{get:(d,g,x)=>g in d?Reflect.get(d,g,x):S=>D(g,S)}),Pe=A;function Se(d,...g){var M;let x=g[0];if(!s.send)throw Ee(["send"],"send messages");let S={type:"message",id:d,payload:x};(M=e.onSend)==null||M.call(e,S),s.send(S)}let Mt=new Proxy(Se,{get:(d,g,x)=>g in d?Reflect.get(d,g,x):S=>Se(g,S)}),Ct=Mt,K=new Map,Ue=new Set;function Tr(d,g){var x;if(!s.registerHandler)throw Ee(["registerHandler"],"register message listeners");if(d==="*"){Ue.add(g);return}K.has(d)||K.set(d,new Set),(x=K.get(d))==null||x.add(g)}function Ur(d,g){var x,S;if(d==="*"){Ue.delete(g);return}(x=K.get(d))==null||x.delete(g),((S=K.get(d))==null?void 0:S.size)===0&&K.delete(d)}async function Wr(d){var g,x;if((g=e.onReceive)==null||g.call(e,d),!("type"in d))throw Error("Message does not contain a type.");if(d.type==="request"){if(!s.send||!a)throw Ee(["send","requestHandler"],"handle requests");let{id:S,method:M,params:U}=d,J;try{J={type:"response",id:S,success:!0,payload:await a(M,U)}}catch(ne){if(!(ne instanceof Error))throw ne;J={type:"response",id:S,success:!1,error:ne.message}}(x=e.onSend)==null||x.call(e,J),s.send(J);return}if(d.type==="response"){let S=P.get(d.id);S!=null&&clearTimeout(S);let{resolve:M,reject:U}=k.get(d.id)??{};d.success?M==null||M(d.payload):U==null||U(Error(d.error));return}if(d.type==="message"){for(let M of Ue)M(d.id,d.payload);let S=K.get(d.id);if(!S)return;for(let M of S)M(d.payload);return}throw Error(`Unexpected RPC message type: ${d.type}`)}return{setTransport:n,setRequestHandler:l,request:A,requestProxy:Pe,send:Mt,sendProxy:Ct,addMessageListener:Tr,removeMessageListener:Ur,proxy:{send:Ct,request:Pe},_setDebugHooks:r}}function ir(t){return nr(t)}var tt="[transport-id]";function ar(t,e){let{transportId:r}=e;return r==null?t:{[tt]:r,data:t}}function or(t,e){let{transportId:r,filter:s}=e,n=s==null?void 0:s();if(r!=null&&n!=null)throw Error("Cannot use both `transportId` and `filter` at the same time");let a=t;if(r){if(t[tt]!==r)return[!0];a=t.data}return n===!1?[!0]:[!1,a]}function lr(t,e={}){let{transportId:r,filter:s,remotePort:n}=e,a=t,l=n??t,c;return{send(w){l.postMessage(ar(w,{transportId:r}))},registerHandler(w){c=R=>{let k=R.data,[P,D]=or(k,{transportId:r,filter:()=>s==null?void 0:s(R)});P||w(D)},a.addEventListener("message",c)},unregisterHandler(){c&&a.removeEventListener("message",c)}}}function dr(t,e){return lr(t,e)}function rt(t){return ir({transport:dr(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{f.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{f.debug("[rpc] Worker -> Parent",e)}}})}ae=qt({kind:"loading",message:"Initializing..."});var st=ms(),nt="marimo:file",it=new Or(null);const ur={saveFile(t){it.set(nt,t)},readFile(){return it.get(nt)}};var cr={saveFile(t){_e.setCodeForHash((0,st.compressToEncodedURIComponent)(t))},readFile(){let t=_e.getCodeFromHash()||_e.getCodeFromSearchParam();return t?(0,st.decompressFromEncodedURIComponent)(t):null}};const hr={saveFile(t){},readFile(){let t=document.querySelector("marimo-code");return t?decodeURIComponent(t.textContent||"").trim():null}};var pr={saveFile(t){},readFile(){if(window.location.hostname!=="marimo.app")return null;let t=new URL("export_demos/wasm-intro.py",document.baseURI);return fetch(t.toString()).then(e=>e.ok?e.text():null).catch(()=>null)}};const fr={saveFile(t){},readFile(){return W.get(Dr)??null}};var gr={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
|
|
2
|
-
`)}},at=class{constructor(t){this.stores=t}insert(t,e){this.stores.splice(t,0,e)}saveFile(t){this.stores.forEach(e=>e.saveFile(t))}readFile(){for(let t of this.stores){let e=t.readFile();if(e)return e}return null}};let Me;oe=new at([fr,hr,cr]),Me=new at([ur,pr,gr]),ze=class Yt{constructor(){o(this,"pendingSessionSave",Promise.resolve());o(this,"initialized",new It);o(this,"sendRename",async({filename:e})=>(e===null||(_e.setFilename(e),await this.rpc.proxy.request.bridge({functionName:"rename_file",payload:e})),null));o(this,"sendSave",async e=>{if(!this.saveRpc)return f.warn("Save RPC not initialized"),null;let r=this.saveRpc.saveNotebook(e);this.pendingSessionSave=this.pendingSessionSave.catch(()=>{}).then(async()=>{await r,await this.rpc.proxy.request.saveNotebook(e)}),this.pendingSessionSave.catch(n=>{f.error(n)}),await r;let s=await this.readCode();return s.contents&&(oe.saveFile(s.contents),Me.saveFile(s.contents)),null});o(this,"sendCopy",async()=>{v()});o(this,"sendStdin",async e=>(await this.rpc.proxy.request.bridge({functionName:"put_input",payload:e.text}),null));o(this,"sendPdb",async()=>{v()});o(this,"sendSetBreakpoints",async()=>{v()});o(this,"sendRun",async e=>(await this.rpc.proxy.request.loadPackages(e.codes.join(`
|
|
3
|
-
`)),await this.putControlRequest({type:"execute-cells",...e}),null));o(this,"sendRunScratchpad",async e=>(await this.rpc.proxy.request.loadPackages(e.code),await this.putControlRequest({type:"execute-scratchpad",...e}),null));o(this,"sendInterrupt",async()=>(this.interruptBuffer!==void 0&&(this.interruptBuffer[0]=2),null));o(this,"sendShutdown",async()=>(window.close(),null));o(this,"sendFormat",async e=>await this.rpc.proxy.request.bridge({functionName:"format",payload:e}));o(this,"sendDeleteCell",async e=>(await this.putControlRequest({type:"delete-cell",...e}),null));o(this,"sendInstallMissingPackages",async e=>(this.putControlRequest({type:"install-packages",...e}),null));o(this,"sendCodeCompletionRequest",async e=>(W.get(zr)||await this.rpc.proxy.request.bridge({functionName:"code_complete",payload:e}),null));o(this,"saveUserConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_user_config",payload:e}),ns.post("/kernel/save_user_config",e,{baseUrl:"/"}).catch(r=>(f.error(r),null))));o(this,"saveAppConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_app_config",payload:e}),null));o(this,"saveCellConfig",async e=>(await this.putControlRequest({type:"update-cell-config",...e}),null));o(this,"sendRestart",async()=>{let e=await this.readCode();return e.contents&&(oe.saveFile(e.contents),Me.saveFile(e.contents)),ys(),null});o(this,"readCode",async()=>this.saveRpc?{contents:await this.saveRpc.readNotebook()}:(f.warn("Save RPC not initialized"),{contents:""}));o(this,"readSnippets",async()=>await this.rpc.proxy.request.bridge({functionName:"read_snippets",payload:void 0}));o(this,"openFile",async({path:e})=>{let r=ws({code:null,baseUrl:window.location.origin});return window.open(r,"_blank"),null});o(this,"sendListFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"list_files",payload:e}));o(this,"sendSearchFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"search_files",payload:e}));o(this,"sendComponentValues",async e=>(await this.putControlRequest({type:"update-ui-element",...e,token:Lt()}),null));o(this,"sendInstantiate",async e=>null);o(this,"sendFunctionRequest",async e=>(await this.putControlRequest({type:"invoke-function",...e}),null));o(this,"sendCreateFileOrFolder",async e=>{let r=null;return e.file&&(r=(await fs(e.file)).split(",")[1]??""),await this.rpc.proxy.request.bridge({functionName:"create_file_or_directory",payload:{path:e.path,type:e.type,name:e.name,contents:r}})});o(this,"sendDeleteFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"delete_file_or_directory",payload:e}));o(this,"sendCopyFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"copy_file_or_directory",payload:e}));o(this,"sendRenameFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"move_file_or_directory",payload:e}));o(this,"sendUpdateFile",async e=>await this.rpc.proxy.request.bridge({functionName:"update_file",payload:e}));o(this,"sendFileDetails",async e=>await this.rpc.proxy.request.bridge({functionName:"file_details",payload:e}));o(this,"exportAsHTML",async e=>(await this.pendingSessionSave,await this.rpc.proxy.request.bridge({functionName:"export_html",payload:e})));o(this,"exportAsMarkdown",async e=>(await this.pendingSessionSave,await this.rpc.proxy.request.bridge({functionName:"export_markdown",payload:e})));o(this,"exportAsScript",async e=>(await this.pendingSessionSave,await this.rpc.proxy.request.bridge({functionName:"export_script",payload:e})));o(this,"previewDatasetColumn",async e=>(await this.putControlRequest({type:"preview-dataset-column",...e}),null));o(this,"previewSQLTable",async e=>(await this.putControlRequest({type:"preview-sql-table",...e}),null));o(this,"previewSQLTableList",async e=>(await this.putControlRequest({type:"list-sql-tables",...e}),null));o(this,"previewSQLSchemaList",async e=>(await this.putControlRequest({type:"list-sql-schemas",...e}),null));o(this,"previewDataSourceConnection",async e=>(await this.putControlRequest({type:"list-data-source-connection",...e}),null));o(this,"validateSQL",async e=>(await this.putControlRequest({type:"validate-sql",...e}),null));o(this,"sendModelValue",async e=>(await this.putControlRequest({type:"model",...e}),null));o(this,"sendDocumentTransaction",()=>Promise.resolve(null));o(this,"addPackage",async e=>this.rpc.proxy.request.addPackage(e));o(this,"removePackage",async e=>this.rpc.proxy.request.removePackage(e));o(this,"getPackageList",async()=>await this.rpc.proxy.request.listPackages());o(this,"getDependencyTree",async()=>({tree:{dependencies:[],name:"",tags:[],version:null}}));o(this,"listSecretKeys",async e=>(await this.putControlRequest({type:"list-secret-keys",...e}),null));o(this,"discoverDataSources",async e=>(await this.putControlRequest({type:"discover-data-sources",...e}),null));o(this,"getUsageStats",v);o(this,"getEnvironmentInfo",async()=>await this.rpc.proxy.request.bridge({functionName:"get_environment_info",payload:void 0}));o(this,"openTutorial",v);o(this,"getRecentFiles",v);o(this,"getWorkspaceFiles",v);o(this,"getRunningNotebooks",v);o(this,"shutdownSession",v);o(this,"getExportAvailability",v);o(this,"exportAsIPYNB",v);o(this,"exportAsPDF",v);o(this,"autoExportAsHTML",v);o(this,"autoExportAsMarkdown",v);o(this,"autoExportAsIPYNB",v);o(this,"updateCellOutputs",v);o(this,"writeSecret",v);o(this,"invokeAiTool",v);o(this,"clearCache",v);o(this,"getCacheInfo",v);o(this,"listStorageEntries",v);o(this,"downloadStorage",v);rs()&&(this.rpc=rt(new Worker(new URL(""+new URL("worker-BM73L67p.js",import.meta.url).href,""+import.meta.url),{type:"module",name:ot()})),this.rpc.addMessageListener("ready",()=>{this.startSession()}),this.rpc.addMessageListener("initialized",()=>{this.saveRpc=this.getSaveWorker(),this.setInterruptBuffer(),W.set(ae,{kind:"ready"}),this.initialized.resolve()}),this.rpc.addMessageListener("initializingMessage",({message:e})=>{W.get(ae).kind==="loading"&&W.set(ae,{kind:"loading",message:e})}),this.rpc.addMessageListener("initializedError",({error:e})=>{if(this.initialized.status==="resolved"){f.error(e),cs({title:"Error initializing",description:e,variant:"danger"});return}W.set(ae,{kind:"error",message:e}),this.initialized.reject(Error(e))}),this.rpc.addMessageListener("kernelMessage",({message:e})=>{var r;(r=this.messageConsumer)==null||r.call(this,new MessageEvent("message",{data:e}))}))}static get INSTANCE(){let e="_marimo_private_PyodideBridge";return window[e]||(window[e]=new Yt),window[e]}getSaveWorker(){return Pt()==="read"?(f.debug("Using partially disabled SaveWorker in read-mode"),{readFile:v,readNotebook:async()=>await oe.readFile()??"",saveNotebook:v}):rt(new Worker(new URL(""+new URL("save-worker-_Qc1hOeF.js",import.meta.url).href,""+import.meta.url),{type:"module",name:ot()})).proxy.request}async startSession(){let e=await oe.readFile(),r=await Me.readFile(),s=W.get(Vr)??_e.getFilename(),n=W.get(es),a={},l=new URLSearchParams(window.location.search);for(let c of l.keys()){let w=l.getAll(c);a[c]=w.length===1?w[0]:w}await this.rpc.proxy.request.startSession({queryParameters:a,code:e||r||"",filename:s,userConfig:{...n,runtime:{...n.runtime,auto_instantiate:Pt()==="read"?!0:n.runtime.auto_instantiate}}})}setInterruptBuffer(){crossOriginIsolated?(this.interruptBuffer=new Uint8Array(new SharedArrayBuffer(1)),this.rpc.proxy.request.setInterruptBuffer(this.interruptBuffer)):f.warn("Not running in a secure context; interrupts are not available.")}attachMessageConsumer(e){this.messageConsumer=e,this.rpc.proxy.send.consumerReady({})}async putControlRequest(e){await this.rpc.proxy.request.bridge({functionName:"put_control_request",payload:e})}},Dt=function(){return He.withProducerCallback(t=>{ze.INSTANCE.attachMessageConsumer(t)})};function ot(){let t=typeof window<"u"&&window.__MARIMO_HAS_WASM_CONTROLLER__===!0;return is()+(t?"::controller":"")}$t=function(t=$e()){let e=window.fetch;return window.fetch=async(r,s)=>{let n=r instanceof Request?r.url:r.toString();if(n.startsWith("data:"))return e(r,s);try{let a=Ce(n,t);if(a){let l=await(await e(a)).arrayBuffer();return new Response(l,{headers:{"Content-Type":mr(n)}})}return e(r,s)}catch(a){return f.error("Error parsing URL",a),e(r,s)}},()=>{window.fetch=e}};function mr(t){return t.endsWith(".csv")?"text/csv":t.endsWith(".json")?"application/json":t.endsWith(".txt")?"text/plain":"application/octet-stream"}jt=function(t,e=$e()){let r=t.http.bind(t),s=t.load.bind(t);return t.http=async n=>{let a=Ce(n,e);if(a)return await window.fetch(a).then(l=>l.text());try{return await r(n)}catch(l){if(n.startsWith("data:"))return await window.fetch(n).then(c=>c.text());throw l}},t.load=async n=>{let a=Ce(n,e);if(a)return await window.fetch(a).then(l=>l.text());try{return await s(n)}catch(l){if(n.startsWith("data:"))return await window.fetch(n).then(c=>c.text());throw l}},()=>{t.http=r,t.load=s}};function lt(t){return t.startsWith(".")?t.slice(1):t}function yr(t,e=$e()){let r=Ce(t,e);if(!r)return t;let s=gs(r);return URL.createObjectURL(s)}function Ce(t,e){let r=document.baseURI;r.startsWith("blob:")&&(r=r.replace("blob:",""));let s=new URL(t,r).pathname,n=dt(t),a=dt(s);return e[t]||e[lt(t)]||e[s]||e[lt(s)]||n&&e[n]||a&&e[a]}function dt(t){let e=t.indexOf("/@file/");return e===-1?null:t.slice(e)}function Re(t,e){return{get(r){return t.get(r)},set(r,s){t.set(r,s)},save_changes(){t.save_changes()},send:t.send.bind(t),on(r,s){e.aborted||(t.on(r,s),e.addEventListener("abort",()=>t.off(r,s),{once:!0}))},off(r,s){t.off(r??null,s??null)},widget_manager:{async get_model(r){return Re(await t.widget_manager.get_model(r),e)}}}}Ne=function(t){return typeof t=="string"&&t.length>0};function ut(t){if(typeof t=="string"&&t.startsWith("anywidget:")){let e=t.slice(10);if(Ne(e))return e}throw Error(`[anywidget] Invalid widget reference: ${JSON.stringify(t)}`)}function wr(t,e){return{async getModel(r){let s=ut(r);return Re(await t.getModel(s),e)},async getWidget(r){let s=ut(r),n=await t.getWidget(s);return{exports:n.exports,async render({el:a,signal:l}){await n.render({el:a,signal:l??e})}}}}}var ct=Symbol("marimo");function Ae(t){return t[ct]}var ht=(St=ct,ee=class{constructor(e,r,s){u(this,j);u(this,qe,"change");u(this,$);u(this,F);u(this,Z);u(this,q,{});o(this,St,{updateAndEmitDiffs:e=>p(this,j,Kt).call(this,e),emitCustomMessage:(e,r)=>p(this,j,Jt).call(this,e,r)});o(this,"widget_manager",{async get_model(e){let r=await ee._modelManager.getModel(e);if(!r)throw Error(`Model not found with id: ${e}. This is likely because the model was not registered.`);return r}});u(this,de,Jr(()=>{let e=i(this,q)[i(this,qe)];if(e)for(let r of[...e])try{r()}catch(s){f.error("Error emitting event",s)}},0));h(this,F,e),h(this,Z,r),h(this,$,new Set),s&&s.addEventListener("abort",()=>{f.debug("[Model] Signal aborted, clearing all listeners"),h(this,q,{})})}off(e,r){var s;if(!e){h(this,q,{});return}if(!r){i(this,q)[e]=new Set;return}(s=i(this,q)[e])==null||s.delete(r)}send(e,r,s){let n=(s??[]).map(a=>a instanceof ArrayBuffer?new DataView(a):new DataView(a.buffer,a.byteOffset,a.byteLength));return i(this,Z).sendCustomMessage(e,n).then(()=>r==null?void 0:r())}get(e){return i(this,F)[e]}set(e,r){h(this,F,{...i(this,F),[e]:r}),i(this,$).add(e),p(this,j,Qe).call(this,`change:${e}`,r),i(this,de).call(this)}save_changes(){if(i(this,$).size===0)return;let e=Object.fromEntries([...i(this,$)].map(r=>[r,i(this,F)[r]]));i(this,$).clear(),i(this,Z).sendUpdate(e)}on(e,r,s){let n=s==null?void 0:s.signal;n!=null&&n.aborted||(i(this,q)[e]||(i(this,q)[e]=new Set),i(this,q)[e].add(r),n==null||n.addEventListener("abort",()=>this.off(e,r),{once:!0}))}},qe=new WeakMap,$=new WeakMap,F=new WeakMap,Z=new WeakMap,q=new WeakMap,j=new WeakSet,Qe=function(e,r){let s=i(this,q)[e];if(s)for(let n of[...s])try{n(r)}catch(a){f.error("Error emitting event",a)}},Kt=function(e){e!=null&&Object.keys(e).forEach(r=>{let s=r;i(this,$).delete(s),i(this,F)[s]!==e[s]&&(h(this,F,{...i(this,F),[s]:e[s]}),p(this,j,Qe).call(this,`change:${s}`,e[s]),i(this,de).call(this))})},Jt=function(e,r=[]){let s=i(this,q)["msg:custom"];if(s)for(let n of[...s])try{n(e.content,r)}catch(a){f.error("Error emitting event",a)}},de=new WeakMap,ee);function pt(t){return typeof t=="function"}function ft(t){return typeof t=="function"}function vr(t){return ie(t)&&(pt(t.render)||ft(t.initialize))}function br(t){return typeof t=="function"||vr(t)}function Sr(t){return ie(t)&&br(t.default)}var gt=new Set,mt=new WeakMap;function _r(t,e){if(Sr(t))return t.default;if(!ie(t)||t.default!==void 0)return null;let r=pt(t.render)?t.render:void 0,s=ft(t.initialize)?t.initialize:void 0;if(r===void 0&&s===void 0)return null;let n=mt.get(t);if(n)return n;gt.has(e)||(gt.add(e),f.warn(`Anywidget module at ${e} uses deprecated top-level named exports (\`render\`/\`initialize\`). Per the AFM spec, use a default export instead: \`export default { render }\`. See https://anywidget.dev/en/afm/`));let a={render:r,initialize:s};return mt.set(t,a),a}function xr(t,e){let r="https://anywidget.dev/en/afm/",s=ie(t)&&kt(t,"render"),n=ie(t)&&kt(t,"initialize");if(ie(t)&&t.default!==void 0)return Error(`Anywidget module at ${e} has an invalid default export. Expected a factory function or an object with \`render\` or \`initialize\`. See ${r}`);if(s||n){let a=[s?"`render`":null,n?"`initialize`":null].filter(Boolean).join(" and "),l=[s?"render":null,n?"initialize":null].filter(R=>R!==null),c=`export default { ${l.join(", ")} }`,w=l.length===1?`export function ${l[0]}`:"named export function ...";return Error(`Anywidget module at ${e} uses named exports (${a}). Per the AFM spec, use a default export instead: \`${c}\` (not \`${w}\`). See ${r}`)}return Error(`Anywidget module at ${e} is missing a default export. Per the AFM spec, use \`export default { render }\` or \`export default async () => ({ render })\`. See ${r}`)}Oe=function(t){return typeof t!="string"||t.length===0?!1:!!(/^(\.?\/)?@file\/[^?#]+$/.test(t)||Mr(t))};function Er(){return W.get(ps)||hs()}function Mr(t){return t.startsWith("data:text/javascript;base64,")||t.startsWith("data:application/javascript;base64,")||t.startsWith("data:text/css;base64,")?Er():!1}const yt={invoke:async()=>{let t="anywidget.invoke not supported in marimo. Please file an issue at https://github.com/marimo-team/marimo/issues";throw f.warn(t),Error(t)}};function Cr(t){if(typeof AbortSignal.any=="function")return AbortSignal.any(t);let e=new AbortController;for(let r of t){if(r.aborted)return e.abort(r.reason),e.signal;r.addEventListener("abort",()=>e.abort(r.reason),{once:!0})}return e.signal}var Rr=(_t=class{constructor(){u(this,ke);u(this,z,new Map)}getModule(t){let{jsUrl:e,jsHash:r,kernelAuthored:s=!1}=t,n=i(this,z).get(r);if(n)return n;let a=p(this,ke,Xt).call(this,e,{kernelAuthored:s}).catch(l=>{throw i(this,z).delete(r),l});return i(this,z).set(r,a),a}invalidate(t){i(this,z).delete(t)}},z=new WeakMap,ke=new WeakSet,Xt=async function(t,e={}){if(!(Oe(t)||e.kernelAuthored===!0&&/^(https?:|data:)/.test(t)))throw Error(`Refusing to load anywidget module from untrusted URL: ${String(t)}`);let r=ss(t).toString();return Ft()&&(r=yr(r)),us(()=>import(r).then(async s=>(await s.__tla,s)),[],import.meta.url)},_t);function Ie(t){return typeof t=="function"}async function wt(t,e){try{await t()}catch(r){f.warn(`[WidgetBinding] ${e} cleanup failed`,r)}}var qr=(se=class{constructor(e){u(this,V);u(this,te);u(this,ue);u(this,ce);u(this,he);u(this,pe);u(this,B,new Set);u(this,re,new Set);h(this,ue,e.widget),h(this,ce,e.model),h(this,he,e.exports),h(this,te,e.controller),h(this,pe,e.createHost)}static async create({widgetDef:e,model:r,createHost:s,controller:n=new AbortController}){var D;let a=n.signal,l=typeof e=="function"?await e():e,c=Promise.resolve((D=l.initialize)==null?void 0:D.call(l,{model:Re(r,a),experimental:yt,signal:a}));c.then(async A=>{a.aborted&&Ie(A)&&await wt(A,"late initialize")}).catch(()=>{});let w=await Promise.race([c,new Promise((A,Pe)=>{let Se=()=>Pe(Error("[anywidget] binding destroyed"));if(a.aborted){Se();return}a.addEventListener("abort",Se,{once:!0})})]);if(a.aborted)throw Error("[anywidget] binding destroyed");let R,k;Ie(w)?(k=w,R=void 0):R=typeof w=="object"&&w?w:void 0;let P=new se({widget:l,model:r,exports:R,controller:n,createHost:s});return k&&a.addEventListener("abort",()=>{var A;p(A=P,V,Ge).call(A,k,"initialize")},{once:!0}),P}get exports(){return i(this,he)}async createView(e,r){let s=p(this,V,Zt).call(this,e,r);i(this,re).add(s);try{await s}finally{i(this,re).delete(s)}}async destroy(){for(f.debug("[WidgetBinding] Destroying binding generation"),i(this,te).abort(),await Promise.allSettled(i(this,re));i(this,B).size>0;)await Promise.all(i(this,B))}},te=new WeakMap,ue=new WeakMap,ce=new WeakMap,he=new WeakMap,pe=new WeakMap,B=new WeakMap,re=new WeakMap,V=new WeakSet,Zt=async function(e,r){let s=i(this,ue);if(!s.render)return;let n=Cr([r.signal,i(this,te).signal]);if(n.aborted)return;e.el.innerHTML="";let a=i(this,pe).call(this,n),l=await s.render({model:Re(i(this,ce),n),el:e.el,experimental:yt,signal:n,host:a});if(Ie(l)){let c=()=>{let w=r.signal.aborted?"view unmount":"binding destroyed";return f.debug(`[WidgetBinding] Render cleanup triggered (reason: ${w})`),p(this,V,Ge).call(this,l,"render")};if(n.aborted){await c();return}n.addEventListener("abort",()=>{c()},{once:!0})}},Ge=function(e,r){let s=wt(e,r);return i(this,B).add(s),s.finally(()=>i(this,B).delete(s)),s},se);const vt=new Rr;var kr=(xt=class{constructor(t,e){u(this,b);u(this,O);u(this,fe);u(this,ge);u(this,me);u(this,ye);u(this,N,new AbortController);u(this,C,new It);u(this,Q,new Set);u(this,I,new Map);u(this,L);u(this,G);u(this,E);u(this,we,Promise.resolve());u(this,Y,"");h(this,O,t),h(this,fe,e.timeout),h(this,ge,e.isEditMode),h(this,me,e.createHost),h(this,ye,e.onModelTimeout)}getModel(){return i(this,C).status==="pending"&&!i(this,L)&&h(this,L,setTimeout(()=>{i(this,C).status==="pending"&&(h(this,L,void 0),i(this,C).reject(Error(`Model not found for key: ${i(this,O)}`)),i(this,ye).call(this))},i(this,fe))),i(this,C).promise}getModelSync(){return i(this,C).status==="resolved"?i(this,C).value:void 0}createModel(t){i(this,C).status==="pending"&&p(this,b,Ye).call(this,t(i(this,N).signal))}setModel(t){i(this,C).status==="pending"&&p(this,b,Ye).call(this,t)}setSpec(t){if(!i(this,G)){h(this,G,t);return}i(this,ge).call(this)&&(h(this,G,t),i(this,E)&&i(this,E).hash!==t.hash&&p(this,b,tr).call(this,t))}async getWidget(){return{exports:(await p(this,b,Ke).call(this)).exports,render:async({el:t,signal:e})=>{await this.createView({el:t,signal:e??i(this,N).signal})}}}async createView(t){if(t.signal.aborted||i(this,N).signal.aborted)return;let e={el:t.el,signal:t.signal};i(this,Q).add(e),p(this,b,rr).call(this,e),t.signal.addEventListener("abort",()=>i(this,Q).delete(e),{once:!0}),await p(this,b,Ze).call(this,e)}dispose(){if(!i(this,N).signal.aborted){f.debug(`[WidgetRuntime] Disposing model=${i(this,O)}`),i(this,L)&&h(this,L,(clearTimeout(i(this,L)),void 0)),i(this,C).status==="pending"&&(i(this,C).promise.catch(()=>{}),i(this,C).reject(Error("[anywidget] widget runtime destroyed"))),i(this,E)&&p(this,b,Xe).call(this,i(this,E)),i(this,N).abort(),i(this,Q).clear();for(let t of i(this,I).values())t.dispose();i(this,I).clear()}}},O=new WeakMap,fe=new WeakMap,ge=new WeakMap,me=new WeakMap,ye=new WeakMap,N=new WeakMap,C=new WeakMap,Q=new WeakMap,I=new WeakMap,L=new WeakMap,G=new WeakMap,E=new WeakMap,we=new WeakMap,Y=new WeakMap,b=new WeakSet,Ye=function(t){i(this,L)&&h(this,L,(clearTimeout(i(this,L)),void 0)),i(this,C).resolve(t);let e=t.get("_css");h(this,Y,typeof e=="string"?e:""),t.on("change:_css",r=>{h(this,Y,typeof r=="string"?r:"");for(let s of i(this,I).values())s.update(i(this,Y))},{signal:i(this,N).signal})},Ke=async function(){for(;!i(this,N).signal.aborted;){let t=await this.getModel(),e=i(this,E);if(!e){let r=i(this,G);if(!r)throw Error(`[anywidget] No ESM spec for model ${i(this,O)}: nothing ever provided this widget's code`);e=p(this,b,Je).call(this,r,t)}try{let r=await e.promise;if(e===i(this,E))return r}catch(r){if(!i(this,E)||e===i(this,E))throw r}}throw Error("[anywidget] widget runtime destroyed")},er=async function(t){let{spec:e,model:r,controller:s}=t,n=await vt.getModule({jsUrl:e.url,jsHash:e.hash,kernelAuthored:!0}),a=_r(n,e.url);if(!a)throw vt.invalidate(e.hash),xr(n,e.url);return qr.create({widgetDef:a,model:r,createHost:i(this,me),controller:s})},Je=function(t,e){let r=new AbortController,s={hash:t.hash,controller:r,promise:p(this,b,er).call(this,{spec:t,model:e,controller:r})};return s.promise.catch(()=>{i(this,E)===s&&h(this,E,void 0)}),h(this,E,s),s},tr=function(t){let e=i(this,E);if(!e)return;f.debug(`[WidgetRuntime] Hot-swapping generation for model=${i(this,O)}`);let r=p(this,b,Xe).call(this,e),s=this.getModelSync();if(!s)return;let n=p(this,b,Je).call(this,t,s);for(let a of i(this,Q))a.generation=void 0,r.then(()=>p(this,b,Ze).call(this,a,n)).catch(l=>{f.error("[WidgetRuntime] Error replacing widget view",l)})},Xe=function(t){t.controller.abort();let e=i(this,we).then(async()=>{try{await(await t.promise).destroy()}catch{}});return h(this,we,e),e},Ze=async function(t,e){if(t.signal.aborted||i(this,N).signal.aborted)return;let r=e??i(this,E),s=r?await r.promise:await p(this,b,Ke).call(this),n=i(this,E);if(!(!n||n!==(r??n))&&t.generation!==n){t.generation=n;try{await s.createView({el:t.el},{signal:t.signal})}catch(a){if(n!==i(this,E)){t.generation=void 0;return}throw a}}},rr=function(t){let e=t.el.getRootNode();if(!Le(e)&&!Pr(e))return;let r=i(this,I).get(e);r||(r=Fr(e,i(this,Y)),i(this,I).set(e,r)),r.references+=1;let s=!1;t.signal.addEventListener("abort",()=>{if(s)return;s=!0;let n=i(this,I).get(e);n&&(--n.references,n.references===0&&(n.dispose(),i(this,I).delete(e)))},{once:!0})},xt);function Le(t){return t.nodeType===Node.DOCUMENT_NODE}function Pr(t){return t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&"host"in t}function Fr(t,e){let r=Le(t)?t:t.ownerDocument??document,s=r.defaultView??window;if("adoptedStyleSheets"in t&&s.CSSStyleSheet!==void 0&&typeof s.CSSStyleSheet.prototype.replaceSync=="function")try{let a=new s.CSSStyleSheet;return a.replaceSync(e),t.adoptedStyleSheets=[...t.adoptedStyleSheets,a],{references:0,update(l){a.replaceSync(l)},dispose(){t.adoptedStyleSheets=t.adoptedStyleSheets.filter(l=>l!==a)}}}catch{}let n=r.createElement("style");return n.textContent=e,Le(t)?r.head.append(n):t.append(n),{references:0,update(a){n.textContent=a},dispose(){n.remove()}}}function Te(t,e=[]){let r=[];if(t instanceof DataView)r.push(e);else if(Array.isArray(t))for(let[s,n]of t.entries())r.push(...Te(n,[...e,s]));else if(typeof t=="object"&&t)for(let[s,n]of Object.entries(t))r.push(...Te(n,[...e,s]));return r}function Nr(t){let e=Te(t);if(e.length===0)return{state:t,buffers:[],bufferPaths:[]};let r=structuredClone(t),s=[],n=[];for(let a of e){let l=Kr(t,a);if(l instanceof DataView){let c=Nt(l);s.push(c),n.push(a),xe(r,a,c)}}return{state:r,buffers:s,bufferPaths:n}}function bt(t){let{state:e,bufferPaths:r,buffers:s}=t;if(!r||r.length===0)return e;s&&Zr(s.length===r.length,"Buffers and buffer paths not the same length");let n=e;for(let[a,l]of r.entries()){let c=s==null?void 0:s[a];if(c==null){f.warn("[anywidget] Could not find buffer at path",l);continue}typeof c=="string"?xe(n,l,At(c)):xe(n,l,c)}return n}function Ar(){let t=W.get(ts).mode;return t==="edit"||t==="present"}Fe=new(Et=class{constructor(t=1e4,e=Ar){u(this,H);u(this,T,new Map);u(this,ve);u(this,be);h(this,ve,t),h(this,be,e)}getModel(t){return p(this,H,X).call(this,t).getModel()}getModelSync(t){var e;return(e=i(this,T).get(t))==null?void 0:e.getModelSync()}createModel(t,e){p(this,H,X).call(this,t).createModel(e)}setModel(t,e){p(this,H,X).call(this,t).setModel(e)}setSpec(t,e){p(this,H,X).call(this,t).setSpec(e)}getWidget(t){return p(this,H,X).call(this,t).getWidget()}createView(t){return p(this,H,X).call(this,t.modelId).createView(t)}delete(t){let e=i(this,T).get(t);e&&(e.dispose(),i(this,T).delete(t))}},T=new WeakMap,ve=new WeakMap,be=new WeakMap,H=new WeakSet,X=function(t){let e=i(this,T).get(t);if(!e){let r=new kr(t,{timeout:i(this,ve),isEditMode:i(this,be),createHost:s=>wr(this,s),onModelTimeout:()=>{i(this,T).get(t)===r&&(r.dispose(),i(this,T).delete(t))}});e=r,i(this,T).set(t,e)}return e},Et),ht._modelManager=Fe,Wt=async function(t,e){let r=e.model_id;if(!Ne(r))throw Error(`[anywidget] Invalid model id: ${String(r)}`);let s=e.message,n=("buffers"in s?s.buffers:[]).map(At);switch(s.method){case"open":{let{state:a,buffer_paths:l=[]}=s;s.esm_spec&&t.setSpec(r,s.esm_spec);let c=bt({state:a,bufferPaths:l,buffers:n}),w=t.getModelSync(r);if(w){Ae(w).updateAndEmitDiffs(c);return}t.createModel(r,R=>new ht(c,Ft()?{sendUpdate:async()=>{},sendCustomMessage:async()=>{}}:{async sendUpdate(k){if(R.aborted){f.debug(`[Model] sendUpdate suppressed for model=${r} (signal aborted)`);return}let{state:P,buffers:D,bufferPaths:A}=Nr(k);await je().sendModelValue({modelId:r,message:{method:"update",state:P,bufferPaths:A},buffers:D})},async sendCustomMessage(k,P){if(R.aborted){f.debug(`[Model] sendCustomMessage suppressed for model=${r} (signal aborted)`);return}await je().sendModelValue({modelId:r,message:{method:"custom",content:k},buffers:P.map(Nt)})}},R));return}case"custom":Ae(await t.getModel(r)).emitCustomMessage({method:"custom",content:s.content},n);return;case"close":t.delete(r);return;case"update":{let{state:a,buffer_paths:l=[]}=s;s.esm_spec&&t.setSpec(r,s.esm_spec);let c=bt({state:a,bufferPaths:l,buffers:n});Ae(await t.getModel(r)).updateAndEmitDiffs(c);return}default:os(s)}},Qr(Fe,"WIDGET_REGISTRY");function Ir(t){return typeof t!="object"||!t?!1:"type"in t&&t.type==="marimo-ui-value-update"}De=class sr{static get INSTANCE(){let e="_marimo_private_UIElementRegistry";return window[e]||(window[e]=new sr),window[e]}constructor(){this.entries=new Map}has(e){return this.entries.has(e)}set(e,r){this.entries.has(e)&&f.debug("UIElementRegistry overwriting entry for objectId.",e),this.entries.set(e,{objectId:e,value:r,elements:new Set})}registerInstance(e,r){let s=this.entries.get(e);s===void 0?this.entries.set(e,{objectId:e,value:Br(r,this),elements:new Set([r])}):s.elements.add(r)}removeInstance(e,r){let s=this.entries.get(e);s!=null&&s.elements.has(r)&&s.elements.delete(r)}removeElementsByCell(e){[...this.entries.keys()].filter(r=>r.startsWith(`${e}-`)).forEach(r=>{this.entries.delete(r)})}lookupValue(e){let r=this.entries.get(e);return r===void 0?void 0:r.value}broadcastMessage(e,r,s){let n=this.entries.get(e);if(n===void 0){f.warn("UIElementRegistry missing entry",e);return}if(Ir(r)){n.value=r.value,n.elements.forEach(a=>{a.dispatchEvent(Tt.create({bubbles:!1,composed:!0,detail:{value:r.value,element:a}}))});return}n.elements.forEach(a=>{a.dispatchEvent(bs.create({bubbles:!1,composed:!0,detail:{objectId:e,message:r,buffers:s}}))})}broadcastValueUpdate(e,r,s){let n=this.entries.get(r);n===void 0?f.warn("UIElementRegistry missing entry",r):(n.value=s,n.elements.forEach(a=>{a!==e&&a.dispatchEvent(Tt.create({bubbles:!1,composed:!0,detail:{value:s,element:a}}))}),document.dispatchEvent(vs.create({bubbles:!0,composed:!0,detail:{objectId:r}})))}},zt=De.INSTANCE,Ht=new ds("function-call-result",async(t,e)=>{await je().sendFunctionRequest({functionCallId:t,...e})}),Vt="68px";var Lr="288px";Ot=t=>t?/^\d+$/.test(t)?`${t}px`:t:Lr,Bt=Gr({isOpen:!0},(t,e)=>{if(!e)return t;switch(e.type){case"toggle":return{...t,isOpen:e.isOpen??t.isOpen};case"setWidth":return{...t,width:e.width};default:return t}})});export{xe as S,He as _,Ss as __tla,De as a,Ut as b,Wt as c,$t as d,jt as f,ae as g,oe as h,Ht as i,Oe as l,Dt as m,Ot as n,zt as o,ze as p,Bt as r,Fe as s,Vt as t,Ne as u,Be as v,Qt as x,Gt as y};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{o as Ge}from"./chunk-C4rtOYze.js";import{d as le,i as ua,l as Oe,p as ma,u as ee}from"./useEvent-GCVIknuR.js";import{t as pa}from"./react-C60yClUi.js";import{$n as ha,Bn as fa,E as Ke,Gn as Ye,Hn as ba,Hr as Je,In as xa,Ir as Xe,Jt as ya,Kr as ka,Lr as Qe,Nt as Ze,Rr as ga,T as va,Vn as wa,Vr as ja,Wn as Na,Yi as Ca,bi as Sa,ea as za,fa as _e,g as Ma,ia as et,m as tt,t as Oa,y as _a}from"./cells-DTFqEQb0.js";import{P as at,T as pe,b as we}from"./zod-BIDX-mZr.js";import{t as T}from"./compiler-runtime-DnimoHo0.js";import{n as Fa,r as Ia,x as La}from"./ai-model-dropdown-BJp70TST.js";import{g as de,n as Pa}from"./useEventListener-DpNnLPuE.js";import{t as st}from"./objects-CrbstYTV.js";import{C as Wa,r as Ea}from"./utils-C8Yt16Y7.js";import{n as K,t as nt}from"./constants-DifUxsbZ.js";import{A as Aa,M as ot,N as he,O as Da,T as rt,k as qa,v as it}from"./config-EoJoeZuK.js";import{t as Ta}from"./switch-CDT2KH2g.js";import{c as Ra}from"./readonly-python-code-BV8otm7e.js";import{t as fe}from"./cn-DCUzRj2J.js";import{t as $a}from"./jsx-runtime-3wZU7vFS.js";import{o as Ha}from"./alert-dialog-D_kB5FIu.js";import{a as Va,c as Ba,o as Ua,s as Ga}from"./popover-B96fOqfH.js";import{a as Ka,c as lt,i as dt,n as ct,r as Ya,s as ut,t as mt}from"./select-CPo-KTTe.js";import{$ as Ja,Lt as pt}from"./JsonOutput-DnrBQBRT.js";import{a as Xa,c as Qa,o as Za,p as ce,t as es}from"./download-_oAlkvj6.js";import{n as ts,t as as}from"./radio-group-5KDs5aO1.js";import{t as ss}from"./tooltip-C9LWGQ7Y.js";import{n as ns,r as os,t as re}from"./button-W__YVea9.js";import{i as rs,r as ht,t as Fe}from"./strings-DmKKoXrM.js";import{r as ne}from"./requests-B9zEd_sW.js";import{t as E}from"./createLucideIcon-B8oVfJNp.js";import{F as is,I as ls,L as ft,P as bt,a as xt,i as yt,u as ds}from"./layout-1X5SpE18.js";import{t as kt}from"./check-CyyJPf_5.js";import{r as cs}from"./useCellActionButton-Bp2eEIzO.js";import{t as Ie}from"./code-DzY0vbKf.js";import{t as us}from"./copy-DlR5UiIE.js";import{t as gt}from"./eye-off-DfXRjba3.js";import{t as vt}from"./external-link-C8y9rFms.js";import{t as be}from"./file-BjlLTeSV.js";import{t as wt}from"./globe-C2tUp3NL.js";import{n as ms,r as ps,t as hs}from"./youtube-Bm-0BwCx.js";import{n as fs}from"./components-CozWCL5N.js";import{i as bs,n as xs,r as ys}from"./markdown-export-D-ZHIs71.js";import{t as jt}from"./image-Dvcyi0uu.js";import{t as ks}from"./link-DCLOj_aN.js";import{t as Le}from"./spinner-Cj3eM5bt.js";import{r as gs}from"./input-BN98e517.js";import{t as vs}from"./settings-IZvUqDP4.js";import{t as ws}from"./sparkles-DwqcWrJl.js";import{g as js}from"./form-Bb1JVuzT.js";import{t as Ns}from"./square-DVd8Y612.js";import{t as Nt}from"./triangle-alert-DGiOSARf.js";import{t as ie}from"./use-toast-DjpWVza6.js";import{n as Pe,t as Cs}from"./paths-D5zczhUD.js";import{o as Ss}from"./session-D-SddyN0.js";import{n as je}from"./copy-HCSOwOwk.js";import{t as We}from"./copy-icon-Cn8LzPNx.js";import{r as zs}from"./useRunCells-BpZ_0Xuz.js";import{a as Ee,c as Ae,i as Ms,n as De,r as qe}from"./dialog-WU4x2UpK.js";import{n as Ne}from"./ImperativeModal-Dxj31V4A.js";import{r as Os,t as Ct}from"./share-c5Zh8BM8.js";import{n as St,t as zt}from"./alert-CHWQT4zh.js";import{a as Mt}from"./cell-link-D26WjdN1.js";import{n as Te}from"./useAsyncData-BcvSvTUt.js";import{t as _s}from"./icons-BwSNDWAP.js";import{i as Fs,n as Ot}from"./error-entries-uxjSsTal.js";import{n as _t,t as Is}from"./pair-with-agent-modal-BCMZbqSR.js";import{n as Ft}from"./add-connection-dialog-V86wrXca.js";import{t as Ls}from"./github-6F3RzPv3.js";import{n as It}from"./marimo-icons-CW8-Txe-.js";import{t as Ps}from"./links-STGde2qx.js";import{i as Ws,n as Es,t as Re}from"./skeleton-DOZFvsSE.js";import{t as Lt}from"./types-C7hjolXC.js";var As=E("circle-chevron-down",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 10-4 4-4-4",key:"894hmk"}]]),Ds=E("circle-chevron-right",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m10 8 4 4-4 4",key:"1wy4r4"}]]),Pt=E("clipboard-copy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]),Wt=E("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]),Et=E("diamond-plus",[["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z",key:"1ey20j"}],["path",{d:"M8 12h8",key:"1wcyev"}]]),qs=E("fast-forward",[["path",{d:"M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z",key:"b19h5q"}],["path",{d:"M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z",key:"h7h5ge"}]]),Ts=E("files",[["path",{d:"M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"14sh0y"}],["path",{d:"M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",key:"1970lx"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]]),Rs=E("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]),At=E("message-circle-question-mark",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),Dt=E("notebook",[["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["path",{d:"M16 2v20",key:"rotuqe"}]]),$s=E("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]),qt=E("presentation",[["path",{d:"M2 3h20",key:"91anmk"}],["path",{d:"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3",key:"2k9sn8"}],["path",{d:"m7 21 5-5 5 5",key:"bip4we"}]]),Hs=E("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),Vs=E("square-power",[["path",{d:"M12 7v4",key:"xawao1"}],["path",{d:"M7.998 9.003a5 5 0 1 0 8-.005",key:"1pek45"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]]),Tt=E("undo-2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]),Bs=T(),A=Ge(pa(),1);function $e(t,e){let s=(0,Bs.c)(11),n;s[0]===e?n=s[1]:(n=new Ca(e),s[0]=e,s[1]=n);let r=n,i;s[2]!==t||s[3]!==r?(i=()=>r.get(t),s[2]=t,s[3]=r,s[4]=i):i=s[4];let[o,l]=(0,A.useState)(i),d;s[5]!==t||s[6]!==r?(d=m=>{l(m),r.set(t,m)},s[5]=t,s[6]=r,s[7]=d):d=s[7];let c=d,u;return s[8]!==c||s[9]!==o?(u=[o,c],s[8]=c,s[9]=o,s[10]=u):u=s[10],u}function Us(t,e){return{...t,Binaries:{...t.Binaries,Browser:e}}}function Gs(t,e,s,n){return{marimo:t,Locale:s||void 0,Binaries:{Browser:e},"Environment Collection Error":n}}function He(t,e){let s=Math.max(2,...Array.from(e.matchAll(/`+/g),r=>r[0].length)),n="`".repeat(s+1);return`${n}${t}
|
|
2
|
-
${e}
|
|
3
|
-
${n}`}function Ks(t,e){let s=t.includes("?")?"&":"?",n=[],r=t,i=0;for(let[o,l]of Object.entries(e)){if(l.length===0)continue;let d=`${o}=${encodeURIComponent(l)}`,c=`${r}${i===0?s:"&"}${d}`;if(c.length>6e3){n.push(o);continue}r=c,i+=1}return{url:r,omitted:n}}function Ve(t,e){return["<details>",`<summary>${Fe.htmlEscape(t)??""}</summary>`,"",e,"","</details>"].join(`
|
|
4
|
-
`)}function Ys(t){return Ve("Environment",He("json",JSON.stringify(t,null,2)))}function Rt(t){return Ve("Errors",He("text",t.map(Ot).join(`
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
`)))}function Js(t){return Ve("Code",He("python",t))}var $t=T(),a=Ge($a(),1),Xs=Pa,Ht=t=>{let e=(0,$t.c)(16),{content:s}=t,[n,r]=(0,A.useState)(!1),i=!n&&"max-h-24 overflow-hidden",o;e[0]===i?o=e[1]:(o=fe("text-xs bg-muted rounded p-2 overflow-x-auto whitespace-pre-wrap",i),e[0]=i,e[1]=o);let l;e[2]!==s||e[3]!==o?(l=(0,a.jsx)("pre",{className:o,children:s}),e[2]=s,e[3]=o,e[4]=l):l=e[4];let d;e[5]===n?d=e[6]:(d=!n&&(0,a.jsx)("div",{className:"pointer-events-none absolute inset-x-0 bottom-0 h-10 rounded-b bg-gradient-to-b from-transparent to-muted"}),e[5]=n,e[6]=d);let c;e[7]!==l||e[8]!==d?(c=(0,a.jsxs)("div",{className:"relative",children:[l,d]}),e[7]=l,e[8]=d,e[9]=c):c=e[9];let u;e[10]===Symbol.for("react.memo_cache_sentinel")?(u=()=>r(Zs),e[10]=u):u=e[10];let m=n?"Show less":"Show more",h;e[11]===m?h=e[12]:(h=(0,a.jsx)(re,{type:"button",variant:"link",size:"xs",className:"self-start",onClick:u,children:m}),e[11]=m,e[12]=h);let b;return e[13]!==c||e[14]!==h?(b=(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[c,h]}),e[13]=c,e[14]=h,e[15]=b):b=e[15],b};const Qs=t=>{let e=(0,$t.c)(6),{children:s}=t,{openModal:n,closeModal:r}=Ne(),i;e[0]!==r||e[1]!==n?(i=()=>n((0,a.jsx)(Vt,{onClose:r})),e[0]=r,e[1]=n,e[2]=i):i=e[2];let o;return e[3]!==s||e[4]!==i?(o=(0,a.jsx)(Xs,{onClick:i,children:s}),e[3]=s,e[4]=i,e[5]=o):o=e[5],o},Vt=()=>{let{getEnvironmentInfo:t,readCode:e}=ne(),s=Te(async()=>t(),[t]),n=ee(_a),r=(0,A.useMemo)(()=>Fs(ua),[n]),i=ds(n.cellIds.inOrderIds.map(x=>n.cellData[x])),o=ee(za),l=ee(it),d=o!==null&&i&&l.state===rt.OPEN,c=d?void 0:o===null?"Save the notebook first.":i?"Connect the notebook to include its source.":"Notebook source is hidden in this view.",[u,m]=$e("marimo:issue-report:include-errors",!1),[h,b]=$e("marimo:issue-report:include-code",!1),f=s.data?Us(s.data,navigator.userAgent):s.status==="error"?Gs(Ra(),navigator.userAgent,navigator.language,"Server environment information unavailable"):void 0,p=Te(async()=>{if(!h||!d)return;let{contents:x}=await e();return x},[h,d,e]),{url:g,omitted:k}=(0,A.useMemo)(()=>{if(!f)return{url:K.bugReportUrl,omitted:[]};let x={env:Ys(f)};return u&&r.length>0&&(x["bug-description"]=Rt(r)),h&&p.data&&(x["reproduction-code"]=Js(p.data)),Ks(K.bugReportUrl,x)},[f,r,u,h,p.data]),v=k.map(x=>x==="bug-description"?"errors":x==="reproduction-code"?"code":x).join(", ");return(0,a.jsxs)(De,{className:"w-[540px] max-w-[90vw]",children:[(0,a.jsxs)(Ee,{children:[(0,a.jsx)(Ae,{children:"Report an issue"}),(0,a.jsx)(qe,{children:"Open a GitHub bug report prefilled with your environment, and optionally your current errors and notebook code. Nothing is uploaded automatically; review the details before posting."})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4 max-h-[60vh] overflow-y-auto",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsx)(re,{type:"button",variant:"default",size:"xs",asChild:!0,className:"self-start",children:(0,a.jsxs)("a",{href:g,target:"_blank",rel:"noreferrer",children:[(0,a.jsx)(vt,{className:"w-4 h-4 mr-2"}),"Open GitHub issue"]})}),(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,a.jsx)(Ze,{id:"issue-include-errors",checked:u,disabled:r.length===0,onCheckedChange:x=>m(x===!0),"aria-label":"Include errors"}),(0,a.jsx)("label",{htmlFor:"issue-include-errors",children:"Include errors"})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,a.jsx)(Ze,{id:"issue-include-code",checked:h,disabled:!d,onCheckedChange:x=>b(x===!0),"aria-label":"Include notebook code"}),(0,a.jsx)("label",{htmlFor:"issue-include-code",children:"Include notebook code"})]}),c&&(0,a.jsx)("span",{className:"text-xs text-muted-foreground ml-6",children:c}),h&&p.status==="error"&&(0,a.jsx)("span",{className:"text-xs text-(--red-11) ml-6",children:"Notebook source could not be loaded."})]})]}),v?(0,a.jsxs)("div",{className:"flex items-start gap-2 text-xs text-(--yellow-11)",children:[(0,a.jsx)(Nt,{className:"w-3.5 h-3.5 shrink-0 mt-0.5"}),(0,a.jsxs)("span",{children:["Too large to prefill and left out of the link: ",v,". Paste them into the issue manually."]})]}):(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Your environment is always included."})]}),s.status==="pending"&&(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"Loading environment details\u2026"}),(0,a.jsx)(Re,{className:"h-4 w-full"}),(0,a.jsx)(Re,{className:"h-4 w-3/4"}),(0,a.jsx)(Re,{className:"h-4 w-1/2"})]}),s.status==="error"&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,a.jsx)(Nt,{className:"w-4 h-4 text-(--yellow-11) shrink-0"}),(0,a.jsx)("span",{children:"Server environment information unavailable"}),(0,a.jsx)(re,{type:"button",variant:"link",size:"xs",onClick:()=>s.refetch(),children:"Retry"})]}),f&&(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:"Environment details"}),(0,a.jsx)(We,{className:"w-3.5 h-3.5",value:JSON.stringify(f,null,2),ariaLabel:"Copy environment JSON",toastTitle:"Environment details copied"})]}),(0,a.jsx)(Ht,{content:JSON.stringify(f,null,2)})]}),f&&r.length>0&&(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm font-medium",children:"Errors"}),(0,a.jsx)(We,{className:"w-3.5 h-3.5",value:Rt(r),ariaLabel:"Copy errors",toastTitle:"Errors copied"})]}),(0,a.jsx)(Ht,{content:r.map(Ot).join(`
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
`)})]}),f&&r.length===0&&(0,a.jsx)("span",{className:"text-sm text-muted-foreground",children:"No errors detected."}),(0,a.jsx)("div",{className:"border-t pt-3",children:(0,a.jsxs)("p",{className:"text-sm text-muted-foreground",children:["Other feedback? Take our"," ",(0,a.jsx)("a",{href:K.feedbackForm,target:"_blank",rel:"noreferrer",className:"underline",children:"two-minute survey"})," ","or chat with us on"," ",(0,a.jsx)("a",{href:K.discordLink,target:"_blank",rel:"noreferrer",className:"underline",children:"Discord"}),"."]})})]})]})};function Zs(t){return!t}var Bt=T(),Ce="https://static.marimo.app";const en=t=>{let e=(0,Bt.c)(25),{onClose:s}=t,[n,r]=(0,A.useState)(""),{exportAsHTML:i}=ne(),o=`${n}-${Math.random().toString(36).slice(2,6)}`,l=`${Ce}/static/${o}`,d;e[0]!==i||e[1]!==s||e[2]!==o?(d=async x=>{x.preventDefault(),s();let{contents:w}=await i({download:!1,includeCode:!0,files:bt.INSTANCE.filenames()}),y=ie({title:"Uploading static notebook...",description:"Please wait."});await fetch(`${Ce}/api/static`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({html:w,path:o})}).catch(()=>{y.dismiss(),ie({title:"Error uploading static page",description:(0,a.jsxs)("div",{children:["Please try again later. If the problem persists, please file a bug report on"," ",(0,a.jsx)("a",{href:K.issuesPage,target:"_blank",className:"underline",children:"GitHub"}),"."]})})}),y.dismiss(),ie({title:"Static page uploaded!",description:(0,a.jsxs)("div",{children:["The URL has been copied to your clipboard.",(0,a.jsx)("br",{}),"You can share it with anyone."]})})},e[0]=i,e[1]=s,e[2]=o,e[3]=d):d=e[3];let c;e[4]===Symbol.for("react.memo_cache_sentinel")?(c=(0,a.jsx)(Ae,{children:"Share static notebook"}),e[4]=c):c=e[4];let u;e[5]===Symbol.for("react.memo_cache_sentinel")?(u=(0,a.jsxs)(Ee,{children:[c,(0,a.jsxs)(qe,{children:["You can publish a static, non-interactive version of this notebook to the public web. We will create a link for you that lives on"," ",(0,a.jsx)("a",{href:Ce,target:"_blank",children:Ce}),"."]})]}),e[5]=u):u=e[5];let m;e[6]===Symbol.for("react.memo_cache_sentinel")?(m=x=>{r(x.target.value.toLowerCase().replaceAll(/\s/g,"-").replaceAll(/[^\da-z-]/g,""))},e[6]=m):m=e[6];let h;e[7]===n?h=e[8]:(h=(0,a.jsx)(gs,{"data-testid":"slug-input",id:"slug",autoFocus:!0,value:n,placeholder:"Notebook slug",onChange:m,required:!0,autoComplete:"off"}),e[7]=n,e[8]=h);let b;e[9]===l?b=e[10]:(b=(0,a.jsxs)("div",{className:"font-semibold text-sm text-muted-foreground gap-2 flex flex-col",children:["Anyone will be able to access your notebook at this URL:",(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(tn,{text:l}),(0,a.jsx)("span",{className:"text-primary",children:l})]})]}),e[9]=l,e[10]=b);let f;e[11]!==h||e[12]!==b?(f=(0,a.jsxs)("div",{className:"flex flex-col gap-6 py-4",children:[h,b]}),e[11]=h,e[12]=b,e[13]=f):f=e[13];let p;e[14]===s?p=e[15]:(p=(0,a.jsx)(re,{"data-testid":"cancel-share-static-notebook-button",variant:"secondary",onClick:s,children:"Cancel"}),e[14]=s,e[15]=p);let g;e[16]===l?g=e[17]:(g=(0,a.jsx)(re,{"data-testid":"share-static-notebook-button","aria-label":"Save",variant:"default",type:"submit",onClick:async()=>{await je(l)},children:"Create"}),e[16]=l,e[17]=g);let k;e[18]!==p||e[19]!==g?(k=(0,a.jsxs)(Ms,{children:[p,g]}),e[18]=p,e[19]=g,e[20]=k):k=e[20];let v;return e[21]!==d||e[22]!==k||e[23]!==f?(v=(0,a.jsx)(De,{className:"w-fit",children:(0,a.jsxs)("form",{onSubmit:d,children:[u,f,k]})}),e[21]=d,e[22]=k,e[23]=f,e[24]=v):v=e[24],v};var tn=t=>{let e=(0,Bt.c)(8),[s,n]=A.useState(!1),r;e[0]===t.text?r=e[1]:(r=os.stopPropagation(async c=>{c.preventDefault(),await je(t.text),n(!0),setTimeout(()=>n(!1),2e3)}),e[0]=t.text,e[1]=r);let i=r,o;e[2]===Symbol.for("react.memo_cache_sentinel")?(o=(0,a.jsx)(us,{size:14,strokeWidth:1.5}),e[2]=o):o=e[2];let l;e[3]===i?l=e[4]:(l=(0,a.jsx)(re,{"data-testid":"copy-static-notebook-url-button",onClick:i,size:"xs",variant:"secondary",children:o}),e[3]=i,e[4]=l);let d;return e[5]!==s||e[6]!==l?(d=(0,a.jsx)(ss,{content:"Copied!",open:s,children:l}),e[5]=s,e[6]=l,e[7]=d):d=e[7],d},an=T();function sn(){let t=document.getElementsByClassName(nt.outputArea);for(let e of t){let s=e.getBoundingClientRect();if(s.bottom>0&&s.top<window.innerHeight){let n=_e.findElement(e);if(!n){de.warn("Could not find HTMLCellId for visible output area",e);continue}return{cellId:_e.parse(n.id)}}}return de.warn("No visible output area found for scroll anchor"),null}function nn(t){if(!t){de.warn("No scroll anchor provided to restore scroll position");return}let e=document.getElementById(_e.create(t.cellId));if(!e){de.warn("Could not find cell element to restore scroll position",t.cellId);return}if(!e.querySelector(`.${nt.outputArea}`)){de.warn("Could not find output area to restore scroll position",t.cellId);return}e.scrollIntoView({block:"start",behavior:"auto"})}function Ut(){let t=(0,an.c)(2),e=le(ot),s;return t[0]===e?s=t[1]:(s=()=>{let n=sn();e(r=>({mode:Aa(r.mode),cellAnchor:(n==null?void 0:n.cellId)??null})),requestAnimationFrame(()=>{requestAnimationFrame(()=>{nn(n)})})},t[0]=e,t[1]=s),s}const Gt=ma(!1);var on=T();const rn=()=>{let t=(0,on.c)(7),{selectedLayout:e}=xt(),{setLayoutView:s}=yt();if(he()&&!ha("wasm_layouts"))return null;let n;t[0]===s?n=t[1]:(n=l=>s(l),t[0]=s,t[1]=n);let r;t[2]===Symbol.for("react.memo_cache_sentinel")?(r=(0,a.jsx)(ut,{className:"min-w-[110px] border-border bg-background","data-testid":"layout-select",children:(0,a.jsx)(lt,{placeholder:"Select a view"})}),t[2]=r):r=t[2];let i;t[3]===Symbol.for("react.memo_cache_sentinel")?(i=(0,a.jsx)(ct,{children:(0,a.jsxs)(Ya,{children:[(0,a.jsx)(Ka,{children:"View as"}),Lt.map(dn)]})}),t[3]=i):i=t[3];let o;return t[4]!==e||t[5]!==n?(o=(0,a.jsxs)(mt,{"data-testid":"layout-select",value:e,onValueChange:n,children:[r,i]}),t[4]=e,t[5]=n,t[6]=o):o=t[6],o};function ln(t){return(0,a.jsx)(Kt(t),{className:"h-4 w-4"})}function Kt(t){switch(t){case"vertical":return Rs;case"grid":return ps;case"slides":return qt;default:return rs(t),Ns}}function Yt(t){return Fe.startCase(t)}function dn(t){return(0,a.jsx)(dt,{value:t,children:(0,a.jsxs)("div",{className:"flex items-center gap-1.5 leading-5",children:[ln(t),(0,a.jsx)("span",{children:Yt(t)})]})},t)}const Jt=["html","markdown","ipynb","pdf","script","png"],Xt=["pymdown","qmd","mystmd","mdx"],Qt=["topological","top-down"],Zt=["document","slides"],ea=["source","flat"];function ta(t){return typeof t=="string"&&Jt.some(e=>e===t)}const Y={html:{includeCode:!0},markdown:{flavor:null},ipynb:{sortMode:"topological",includeOutputs:!1},pdf:{preset:"document",includeInputs:!0,includeOutputs:!0,webpdf:!0},script:{type:"source"}};function te(t,e){return t.default(e).catch(e)}function xe(t){return at(t).optional().catch(void 0)}var cn=at({html:xe({includeCode:te(pe(),Y.html.includeCode)}),markdown:xe({flavor:te(we(Xt).nullable(),Y.markdown.flavor)}),ipynb:xe({sortMode:te(we(Qt),Y.ipynb.sortMode),includeOutputs:te(pe(),Y.ipynb.includeOutputs)}),pdf:xe({preset:te(we(Zt),Y.pdf.preset),includeInputs:te(pe(),Y.pdf.includeInputs),includeOutputs:te(pe(),Y.pdf.includeOutputs),webpdf:te(pe(),Y.pdf.webpdf)}),script:xe({type:te(we(ea),Y.script.type)})}).catch({});function aa(t,e){let s={...t},n=r=>{s[r]={...t[r],...e[r]}};for(let r of Object.keys(e))n(r);return s}function un(t){return aa(Y,cn.parse(t))}const sa=et("marimo:export:options:v1",Y,Ye({toSerializable:t=>t,fromSerializable:un}),{getOnInit:!0}),mn=et("marimo:export:last-format:v1","html",Ye({toSerializable:t=>t,fromSerializable:t=>ta(t)?t:"html"}),{getOnInit:!0});var na={html:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!1,checksServerAvailability:!1},markdown:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!1,checksServerAvailability:!1},ipynb:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!0,checksServerAvailability:!0},pdf:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!0,checksServerAvailability:!0},script:{requiresNamedNotebookOnServer:!1,requiresServerRuntime:!1,checksServerAvailability:!1},png:{requiresNamedNotebookOnServer:!1,requiresServerRuntime:!1,checksServerAvailability:!1}};function oa(t,e){return t==="wasm"&&e==="pdf"}function pn({format:t,options:e,runtime:s,filename:n,availability:r}){let i=t==="script"&&e.script.type==="source"?{...na.script,requiresNamedNotebookOnServer:!0}:na[t],o=oa(s,t);if(s==="wasm"&&i.requiresServerRuntime)return{available:o,reason:{type:"wasm-runtime"}};if(s==="server"&&i.requiresNamedNotebookOnServer&&!n)return{available:!1,reason:{type:"notebook-must-be-named"}};if(s==="wasm"||!i.checksServerAvailability)return{available:!0};if(r.status==="pending")return{available:!1,reason:{type:"checking-requirements"}};if(r.status==="error"||!r.data)return{available:!0,availabilityCheckFailed:!0};let l=r.data.formats.find(d=>d.format===t);return l?l.dependenciesAvailable?{available:!0}:l.missingPackages.length>0?{available:!1,reason:{type:"missing-packages",packages:l.missingPackages}}:l.missingSetup.length>0?{available:!1,reason:{type:"missing-setup",requirements:l.missingSetup}}:{available:!0,availabilityCheckFailed:!0}:{available:!0,availabilityCheckFailed:!0}}var Q=T();function ye(t,e){return t.map(s=>({value:s,...e[s]}))}var hn=ye(["automatic",...Xt],{automatic:{label:"Automatic",description:"Chooses a format from the notebook filename. Defaults to Markdown (.md)."},pymdown:{label:"Markdown (.md)",description:"Creates a .md file with Python code blocks."},qmd:{label:"Quarto (.qmd)",description:"Creates a .qmd file for Quarto."},mystmd:{label:"MyST (.myst.md)",description:"Creates a .myst.md file for MyST."},mdx:{label:"MDX (.mdx)",description:"Creates a .mdx file for MDX."}}),fn=ye(Qt,{"top-down":{label:"Top to bottom",description:"Keeps cells in the same order as this notebook."},topological:{label:"Dependency order",description:"Reorders cells so each cell appears after the cells it depends on."}}),bn=ye(Zt,{document:{label:"Document",description:"Creates pages for reading or printing."},slides:{label:"Slides",description:"Creates presentation slides from the notebook."}}),xn=ye(["browser","latex"],{browser:{label:"Browser",description:"Uses browser rendering to preserve the notebook's visual output."},latex:{label:"LaTeX first",description:"Uses Pandoc and TeX when available, then falls back to browser rendering."}}),yn=ye(ea,{source:{label:"Notebook source",description:"Downloads the saved notebook source for continued editing in marimo."},flat:{label:"Flat script",description:"Reorders cells so the Python script runs from top to bottom."}});const Be={html:{label:"HTML",actionLabel:"Export HTML",description:"Save the current notebook as an HTML page.",Icon:wt,Options:kn},markdown:{label:"Markdown",actionLabel:"Export Markdown",description:"Save code and text in a Markdown-based file. Cell outputs are not included.",Icon:Xe,Options:gn},ipynb:{label:"Jupyter",actionLabel:"Export Jupyter notebook",description:"Open the notebook in Jupyter and other compatible tools.",Icon:Dt,Options:vn},pdf:{label:"PDF",actionLabel:"Export PDF",description:"Save the notebook as a PDF for printing or sharing.",Icon:be,Options:wn},script:{label:"Python",actionLabel:"Export flat script",description:"Save the notebook as a Python file.",Icon:Ie,Options:jn},png:{label:"PNG",actionLabel:"Export PNG",description:"Capture the current app view as an image.",Icon:jt,Options:Nn}};function kn(t){let e=(0,Q.c)(7),{options:s,updateOptions:n,disabled:r}=t,i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i={checked:"Includes code cells in the webpage.",unchecked:"Leaves code cells out of the webpage."},e[0]=i):i=e[0];let o;e[1]===n?o=e[2]:(o=d=>n("html",{includeCode:d}),e[1]=n,e[2]=o);let l;return e[3]!==r||e[4]!==s.html.includeCode||e[5]!==o?(l=(0,a.jsx)(ke,{children:(0,a.jsx)(Se,{label:"Include code",descriptions:i,checked:s.html.includeCode,disabled:r,onCheckedChange:o})}),e[3]=r,e[4]=s.html.includeCode,e[5]=o,e[6]=l):l=e[6],l}function gn(t){let e=(0,Q.c)(6),{options:s,updateOptions:n,disabled:r}=t,i=s.markdown.flavor??"automatic",o;e[0]===n?o=e[1]:(o=d=>n("markdown",{flavor:d==="automatic"?null:d}),e[0]=n,e[1]=o);let l;return e[2]!==r||e[3]!==i||e[4]!==o?(l=(0,a.jsx)(ke,{children:(0,a.jsx)(Sn,{label:"Format",value:i,disabled:r,onValueChange:o,options:hn})}),e[2]=r,e[3]=i,e[4]=o,e[5]=l):l=e[5],l}function vn(t){let e=(0,Q.c)(16),{options:s,updateOptions:n,disabled:r}=t,i;e[0]===n?i=e[1]:(i=m=>n("ipynb",{sortMode:m}),e[0]=n,e[1]=i);let o;e[2]!==r||e[3]!==s.ipynb.sortMode||e[4]!==i?(o=(0,a.jsx)(ze,{label:"Cell order",value:s.ipynb.sortMode,disabled:r,onValueChange:i,options:fn}),e[2]=r,e[3]=s.ipynb.sortMode,e[4]=i,e[5]=o):o=e[5];let l;e[6]===Symbol.for("react.memo_cache_sentinel")?(l={checked:"Keeps the outputs currently shown in the notebook.",unchecked:"Leaves cell outputs out of the Jupyter notebook."},e[6]=l):l=e[6];let d;e[7]===n?d=e[8]:(d=m=>n("ipynb",{includeOutputs:m}),e[7]=n,e[8]=d);let c;e[9]!==r||e[10]!==s.ipynb.includeOutputs||e[11]!==d?(c=(0,a.jsx)(Se,{label:"Include outputs",descriptions:l,checked:s.ipynb.includeOutputs,disabled:r,onCheckedChange:d}),e[9]=r,e[10]=s.ipynb.includeOutputs,e[11]=d,e[12]=c):c=e[12];let u;return e[13]!==o||e[14]!==c?(u=(0,a.jsxs)(ke,{children:[o,c]}),e[13]=o,e[14]=c,e[15]=u):u=e[15],u}function wn(t){let e=(0,Q.c)(30),{options:s,updateOptions:n,disabled:r}=t,i;e[0]===n?i=e[1]:(i=p=>n("pdf",{preset:p}),e[0]=n,e[1]=i);let o;e[2]!==r||e[3]!==s.pdf.preset||e[4]!==i?(o=(0,a.jsx)(ze,{label:"Layout",value:s.pdf.preset,disabled:r,onValueChange:i,options:bn}),e[2]=r,e[3]=s.pdf.preset,e[4]=i,e[5]=o):o=e[5];let l;e[6]===Symbol.for("react.memo_cache_sentinel")?(l={checked:"Includes code cells in the PDF.",unchecked:"Leaves code cells out of the PDF."},e[6]=l):l=e[6];let d;e[7]===n?d=e[8]:(d=p=>n("pdf",{includeInputs:p}),e[7]=n,e[8]=d);let c;e[9]!==r||e[10]!==s.pdf.includeInputs||e[11]!==d?(c=(0,a.jsx)(Se,{label:"Include code",descriptions:l,checked:s.pdf.includeInputs,disabled:r,onCheckedChange:d}),e[9]=r,e[10]=s.pdf.includeInputs,e[11]=d,e[12]=c):c=e[12];let u;e[13]===Symbol.for("react.memo_cache_sentinel")?(u={checked:"Keeps the outputs currently shown in the notebook.",unchecked:"Leaves cell outputs out of the PDF."},e[13]=u):u=e[13];let m;e[14]===n?m=e[15]:(m=p=>n("pdf",{includeOutputs:p}),e[14]=n,e[15]=m);let h;e[16]!==r||e[17]!==s.pdf.includeOutputs||e[18]!==m?(h=(0,a.jsx)(Se,{label:"Include outputs",descriptions:u,checked:s.pdf.includeOutputs,disabled:r,onCheckedChange:m}),e[16]=r,e[17]=s.pdf.includeOutputs,e[18]=m,e[19]=h):h=e[19];let b;e[20]!==r||e[21]!==s.pdf.preset||e[22]!==s.pdf.webpdf||e[23]!==n?(b=s.pdf.preset==="document"?(0,a.jsx)(ze,{label:"Method",value:s.pdf.webpdf?"browser":"latex",disabled:r,onValueChange:p=>n("pdf",{webpdf:p==="browser"}),options:xn}):null,e[20]=r,e[21]=s.pdf.preset,e[22]=s.pdf.webpdf,e[23]=n,e[24]=b):b=e[24];let f;return e[25]!==o||e[26]!==c||e[27]!==h||e[28]!==b?(f=(0,a.jsxs)(ke,{children:[o,c,h,b]}),e[25]=o,e[26]=c,e[27]=h,e[28]=b,e[29]=f):f=e[29],f}function jn(t){let e=(0,Q.c)(6),{options:s,updateOptions:n,disabled:r}=t,i;e[0]===n?i=e[1]:(i=l=>n("script",{type:l}),e[0]=n,e[1]=i);let o;return e[2]!==r||e[3]!==s.script.type||e[4]!==i?(o=(0,a.jsx)(ke,{children:(0,a.jsx)(ze,{label:"Format",value:s.script.type,disabled:r,onValueChange:i,options:yn})}),e[2]=r,e[3]=s.script.type,e[4]=i,e[5]=o):o=e[5],o}function Nn(){return null}function ke(t){let e=(0,Q.c)(2),{children:s}=t,n;return e[0]===s?n=e[1]:(n=(0,a.jsx)("div",{className:"divide-y rounded-md border",children:s}),e[0]=s,e[1]=n),n}function Se(t){let e=(0,Q.c)(26),{label:s,descriptions:n,descriptionOverride:r,checked:i,disabled:o,onCheckedChange:l}=t,d=(0,A.useId)(),c=`${d}-description`,u=r??(i?n.checked:n.unchecked),m;e[0]===r?m=e[1]:(m=r?[r]:[],e[0]=r,e[1]=m);let h;e[2]!==n.checked||e[3]!==n.unchecked||e[4]!==m?(h=[n.checked,n.unchecked,...m],e[2]=n.checked,e[3]=n.unchecked,e[4]=m,e[5]=h):h=e[5];let b=h,f;e[6]!==d||e[7]!==s?(f=(0,a.jsx)("label",{htmlFor:d,className:"text-sm font-medium leading-5",children:s}),e[6]=d,e[7]=s,e[8]=f):f=e[8];let p;e[9]!==u||e[10]!==c||e[11]!==b?(p=(0,a.jsx)(Ue,{id:c,description:u,possibleDescriptions:b}),e[9]=u,e[10]=c,e[11]=b,e[12]=p):p=e[12];let g;e[13]!==f||e[14]!==p?(g=(0,a.jsxs)("div",{className:"min-w-0",children:[f,p]}),e[13]=f,e[14]=p,e[15]=g):g=e[15];let k;e[16]!==i||e[17]!==c||e[18]!==o||e[19]!==d||e[20]!==s||e[21]!==l?(k=(0,a.jsx)(Ta,{id:d,size:"sm",checked:i,disabled:o,onCheckedChange:l,"aria-label":s,"aria-describedby":c}),e[16]=i,e[17]=c,e[18]=o,e[19]=d,e[20]=s,e[21]=l,e[22]=k):k=e[22];let v;return e[23]!==g||e[24]!==k?(v=(0,a.jsxs)("div",{className:"flex min-h-14 items-center justify-between gap-4 px-3 py-2",children:[g,k]}),e[23]=g,e[24]=k,e[25]=v):v=e[25],v}function ze(t){var w;let e=(0,Q.c)(31),{label:s,value:n,disabled:r,onValueChange:i,options:o}=t,l=(0,A.useId)(),d=`${l}-description`,c;e[0]!==o||e[1]!==n?(c=(w=o.find(y=>y.value===n))==null?void 0:w.description,e[0]=o,e[1]=n,e[2]=c):c=e[2];let u=c,m;e[3]===s?m=e[4]:(m=(0,a.jsx)("div",{className:"text-sm font-medium leading-5",children:s}),e[3]=s,e[4]=m);let h=u??"",b;e[5]===o?b=e[6]:(b=o.map(Cn),e[5]=o,e[6]=b);let f;e[7]!==d||e[8]!==h||e[9]!==b?(f=(0,a.jsx)(Ue,{id:d,description:h,possibleDescriptions:b}),e[7]=d,e[8]=h,e[9]=b,e[10]=f):f=e[10];let p;e[11]!==m||e[12]!==f?(p=(0,a.jsxs)("div",{className:"min-w-0",children:[m,f]}),e[11]=m,e[12]=f,e[13]=p):p=e[13];let g;e[14]===i?g=e[15]:(g=y=>i(y),e[14]=i,e[15]=g);let k;if(e[16]!==l||e[17]!==o){let y;e[19]===l?y=e[20]:(y=(N,M)=>{let S=`${l}-${M}`;return(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(ts,{id:S,value:N.value}),(0,a.jsx)("label",{htmlFor:S,className:"text-sm",children:N.label})]},N.value)},e[19]=l,e[20]=y),k=o.map(y),e[16]=l,e[17]=o,e[18]=k}else k=e[18];let v;e[21]!==d||e[22]!==r||e[23]!==s||e[24]!==g||e[25]!==k||e[26]!==n?(v=(0,a.jsx)(as,{value:n,onValueChange:g,className:"flex shrink-0 flex-wrap gap-x-5 gap-y-2 sm:justify-end","aria-label":s,"aria-describedby":d,disabled:r,children:k}),e[21]=d,e[22]=r,e[23]=s,e[24]=g,e[25]=k,e[26]=n,e[27]=v):v=e[27];let x;return e[28]!==p||e[29]!==v?(x=(0,a.jsxs)("div",{className:"flex min-h-14 flex-col items-stretch gap-2 px-3 py-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4",children:[p,v]}),e[28]=p,e[29]=v,e[30]=x):x=e[30],x}function Cn(t){return t.description}function Sn(t){var M;let e=(0,Q.c)(34),{label:s,value:n,disabled:r,onValueChange:i,options:o}=t,l=(0,A.useId)(),d=`${l}-description`,c;e[0]!==o||e[1]!==n?(c=(M=o.find(S=>S.value===n))==null?void 0:M.description,e[0]=o,e[1]=n,e[2]=c):c=e[2];let u=c,m;e[3]!==l||e[4]!==s?(m=(0,a.jsx)("label",{htmlFor:l,className:"text-sm font-medium leading-5",children:s}),e[3]=l,e[4]=s,e[5]=m):m=e[5];let h=u??"",b;e[6]===o?b=e[7]:(b=o.map(Mn),e[6]=o,e[7]=b);let f;e[8]!==d||e[9]!==h||e[10]!==b?(f=(0,a.jsx)(Ue,{id:d,description:h,possibleDescriptions:b}),e[8]=d,e[9]=h,e[10]=b,e[11]=f):f=e[11];let p;e[12]!==m||e[13]!==f?(p=(0,a.jsxs)("div",{className:"min-w-0",children:[m,f]}),e[12]=m,e[13]=f,e[14]=p):p=e[14];let g;e[15]===i?g=e[16]:(g=S=>i(S),e[15]=i,e[16]=g);let k;e[17]===Symbol.for("react.memo_cache_sentinel")?(k=(0,a.jsx)(lt,{}),e[17]=k):k=e[17];let v;e[18]!==d||e[19]!==l?(v=(0,a.jsx)(ut,{id:l,"aria-describedby":d,className:"h-8 w-full shrink-0 sm:w-44",children:k}),e[18]=d,e[19]=l,e[20]=v):v=e[20];let x;e[21]===o?x=e[22]:(x=o.map(zn),e[21]=o,e[22]=x);let w;e[23]===x?w=e[24]:(w=(0,a.jsx)(ct,{children:x}),e[23]=x,e[24]=w);let y;e[25]!==r||e[26]!==w||e[27]!==g||e[28]!==v||e[29]!==n?(y=(0,a.jsxs)(mt,{value:n,disabled:r,onValueChange:g,children:[v,w]}),e[25]=r,e[26]=w,e[27]=g,e[28]=v,e[29]=n,e[30]=y):y=e[30];let N;return e[31]!==y||e[32]!==p?(N=(0,a.jsxs)("div",{className:"flex min-h-14 flex-col items-stretch gap-2 px-3 py-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4",children:[p,y]}),e[31]=y,e[32]=p,e[33]=N):N=e[33],N}function zn(t){return(0,a.jsx)(dt,{value:t.value,children:t.label},t.value)}function Mn(t){return t.description}function Ue(t){let e=(0,Q.c)(15),{id:s,description:n,possibleDescriptions:r}=t,i;e[0]===r?i=e[1]:(i=new Set(r),e[0]=r,e[1]=i);let o;e[2]===i?o=e[3]:(o=[...i],e[2]=i,e[3]=o);let l;e[4]!==n||e[5]!==o?(l=o.filter(h=>h!==n),e[4]=n,e[5]=o,e[6]=l):l=e[6];let d=l,c;e[7]!==n||e[8]!==s?(c=(0,a.jsx)("p",{id:s,"aria-live":"polite",className:"col-start-1 row-start-1",children:n}),e[7]=n,e[8]=s,e[9]=c):c=e[9];let u;e[10]===d?u=e[11]:(u=d.map(On),e[10]=d,e[11]=u);let m;return e[12]!==c||e[13]!==u?(m=(0,a.jsxs)("div",{className:"mt-0.5 grid text-xs leading-4 text-muted-foreground",children:[c,u]}),e[12]=c,e[13]=u,e[14]=m):m=e[14],m}function On(t){return(0,a.jsx)("p",{"aria-hidden":!0,className:"invisible col-start-1 row-start-1",children:t},t)}var Me=T(),_n={"playwright-chromium":{description:"PDF export requires Playwright Chromium."}};function Fn(t){var c;let e=(0,Me.c)(10),{status:s}=t;if(s.available&&!s.availabilityCheckFailed)return null;if(((c=s.reason)==null?void 0:c.type)==="checking-requirements"){let u;return e[0]===Symbol.for("react.memo_cache_sentinel")?(u=(0,a.jsxs)("span",{className:"ml-auto flex shrink-0",children:[(0,a.jsx)(Le,{size:"small",className:"size-3"}),(0,a.jsx)("span",{className:"sr-only",children:"Checking requirements"})]}),e[0]=u):u=e[0],u}let n=s.availabilityCheckFailed?"Requirements unknown":"Unavailable",r=s.availabilityCheckFailed?"text-muted-foreground":"text-(--yellow-11)",i;e[1]===r?i=e[2]:(i=fe("size-3",r),e[1]=r,e[2]=i);let o;e[3]===i?o=e[4]:(o=(0,a.jsx)(Je,{className:i}),e[3]=i,e[4]=o);let l;e[5]===n?l=e[6]:(l=(0,a.jsx)("span",{className:"sr-only",children:n}),e[5]=n,e[6]=l);let d;return e[7]!==o||e[8]!==l?(d=(0,a.jsxs)("span",{className:"ml-auto flex shrink-0",children:[o,l]}),e[7]=o,e[8]=l,e[9]=d):d=e[9],d}function In(t){let e=(0,Me.c)(5),{format:s,formatLabel:n,status:r}=t;if(r.availabilityCheckFailed){let o;return e[0]===Symbol.for("react.memo_cache_sentinel")?(o=(0,a.jsx)("div",{className:"mb-2.5",children:(0,a.jsx)(ge,{children:"Couldn't check whether this export is available. You can still try it."})}),e[0]=o):o=e[0],o}if(!r.reason)return null;let i;return e[1]!==s||e[2]!==n||e[3]!==r.reason?(i=(0,a.jsx)("div",{className:"mb-2.5",children:(0,a.jsx)(Ln,{format:s,formatLabel:n,reason:r.reason})}),e[1]=s,e[2]=n,e[3]=r.reason,e[4]=i):i=e[4],i}function ge(t){let e=(0,Me.c)(3),{children:s}=t,n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=(0,a.jsx)(Je,{className:"mt-0.5 size-4 shrink-0 sm:mt-0"}),e[0]=n):n=e[0];let r;return e[1]===s?r=e[2]:(r=(0,a.jsxs)(zt,{variant:"warning",className:"flex items-start gap-2.5 p-3 text-(--yellow-12) has-[svg]:pl-3 sm:items-center [&>svg]:static [&>svg+div]:translate-y-0",children:[n,(0,a.jsx)(St,{className:"min-w-0 flex-1 text-sm leading-5",children:s})]}),e[1]=s,e[2]=r),r}function Ln(t){let e=(0,Me.c)(14),{format:s,formatLabel:n,reason:r}=t;switch(r.type){case"checking-requirements":{let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=(0,a.jsx)(Le,{className:"size-4 shrink-0",size:"small"}),e[0]=i):i=e[0];let o;return e[1]===n?o=e[2]:(o=(0,a.jsxs)(zt,{role:"status",variant:"info",className:"flex items-center gap-2.5 p-3 has-[svg]:pl-3 [&>svg]:static [&>svg+div]:translate-y-0",children:[i,(0,a.jsxs)(St,{className:"min-w-0 flex-1 text-sm leading-5",children:["Checking ",n," requirements\u2026"]})]}),e[1]=n,e[2]=o),o}case"notebook-must-be-named":{let i;return e[3]===Symbol.for("react.memo_cache_sentinel")?(i=(0,a.jsx)(ge,{children:"Name and save this notebook before exporting."}),e[3]=i):i=e[3],i}case"missing-packages":{let i;e[4]===r.packages?i=e[5]:(i=r.packages.join(", "),e[4]=r.packages,e[5]=i);let o;return e[6]===i?o=e[7]:(o=(0,a.jsxs)(ge,{children:["Install"," ",(0,a.jsx)("code",{className:"break-words font-mono",children:i})," ","where marimo is running to use this export."]}),e[6]=i,e[7]=o),o}case"missing-setup":{let i;e[8]===r.requirements?i=e[9]:(i=r.requirements.map(Pn),e[8]=r.requirements,e[9]=i);let o;return e[10]===i?o=e[11]:(o=(0,a.jsx)(ge,{children:(0,a.jsx)("span",{className:"block min-w-0",children:i})}),e[10]=i,e[11]=o),o}case"wasm-runtime":{let i=s==="pdf"?"Use your browser's print dialog to save the current app view as a PDF.":"Open this notebook in a local marimo session to use this export.",o;return e[12]===i?o=e[13]:(o=(0,a.jsx)(ge,{children:i}),e[12]=i,e[13]=o),o}default:ht(r)}}function Pn(t){let e=_n[t.name];return(0,a.jsxs)("span",{className:"block",children:[e.description,(0,a.jsx)("code",{className:"mt-1 block break-all font-mono",children:t.command})]},t.name)}function Wn(t){return t.endsWith(".myst.md")?"mystmd":t.endsWith(".qmd")?"qmd":t.endsWith(".mdx")?"mdx":"pymdown"}function En(t,e){let s=xs[e??Wn(t)],n=ys.find(o=>t.endsWith(o)),r=ce.withoutExtension(t);n&&(r=t.slice(0,-n.length));let i=`${r}.${s}`;return i===t?`${t.slice(0,-(s.length+1))}.export.${s}`:i}function An(t){return Object.entries(t).flatMap(([e,s])=>s===null?[]:s===!0?[`--${e}`]:s===!1?[`--no-${e}`]:[`--${e}=${s}`])}function Dn(t){return t.preset==="document"?t.webpdf:null}var qn={html:{subcommand:"html",flags:({html:t})=>({"include-code":t.includeCode}),outputFilename:t=>ce.toHTML(t)},markdown:{subcommand:"md",flags:({markdown:t})=>({flavor:t.flavor}),outputFilename:(t,{markdown:e})=>En(t,e.flavor)},ipynb:{subcommand:"ipynb",flags:({ipynb:t})=>({sort:t.sortMode,"include-outputs":t.includeOutputs}),outputFilename:t=>ce.toIPYNB(t)},pdf:{subcommand:"pdf",flags:({pdf:t})=>({as:t.preset,"include-inputs":t.includeInputs,"include-outputs":t.includeOutputs,webpdf:Dn(t)}),outputFilename:t=>ce.toPDF(t)},script:{subcommand:"script",flags:()=>({}),outputFilename:t=>`${ce.withoutExtension(t)}.script.py`}};function Tn({format:t,filename:e,options:s}){if(t==="png"||t==="script"&&s.script.type==="source"||!e)return null;let n=qn[t];return["marimo","export",n.subcommand,_t(e),...An(n.flags(s)),"-o",_t(n.outputFilename(e,s))].join(" ")}async function Rn(t){let{exportOptions:e,captureOutputs:s,downloadPDF:n}=t;e.includeOutputs&&await s(),await n(e)}async function $n({format:t,options:e,requests:s,sourceFilename:n,htmlFiles:r,captureOutputs:i,capturePNG:o,downloadFile:l}){switch(t){case"html":l(await s.exportAsHTML({download:!1,files:r,includeCode:e.html.includeCode}));return;case"markdown":l(await s.exportAsMarkdown({download:!1,flavor:e.markdown.flavor}));return;case"ipynb":e.ipynb.includeOutputs&&await i(),l(await s.exportAsIPYNB({download:!1,sortMode:e.ipynb.sortMode,includeOutputs:e.ipynb.includeOutputs}));return;case"pdf":await Rn({exportOptions:e.pdf,captureOutputs:i,downloadPDF:async d=>{l(await s.exportAsPDF(d))}});return;case"script":if(e.script.type==="source"){l({contents:(await s.readCode()).contents,filename:n,mediaType:"text/plain"});return}l(await s.exportAsScript({download:!1}));return;case"png":await o();return;default:ht(t)}}var ra=T(),Hn={source:{actionLabel:"Export notebook source",progressLabel:"notebook source"},flat:{actionLabel:"Export flat script",progressLabel:"flat script"}};function Vn(t,e){if(t==="wasm")return{status:"success",data:null};switch(e.status){case"pending":case"loading":return{status:"pending"};case"error":return{status:"error"};case"success":return{status:"success",data:e.data}}}function Bn(t,e){return t==="server"&&e?Pe.basename(e):ce.toPY(document.title)}function Un({usesBrowserPrint:t,hasCommand:e,format:s,isNotebookSource:n}){return t?"Uses the browser's print settings for page size and filename.":e?"Uses the current session state. The copied command exports the saved notebook.":s!=="png"&&!n?"Save the notebook to copy an equivalent shell command.":null}function Gn(t){let e=(0,ra.c)(52),s=Mt(),[n,r]=Oe(sa),[i,o]=Oe(mn),[l,d]=(0,A.useState)(t??i),c=he()?"wasm":"server",u=ne(),m,h;e[0]===u?(m=e[1],h=e[2]):(m=async()=>c==="wasm"?null:u.getExportAvailability(),h=[c,u],e[0]=u,e[1]=m,e[2]=h);let b=Te(m,h),f,p;if(e[3]!==b||e[4]!==s||e[5]!==l||e[6]!==n){let j=Vn(c,b),O=C=>pn({format:C,options:n,runtime:c,filename:s,availability:j});f=O(l),p=Jt.map(C=>({format:C,status:O(C)})),e[3]=b,e[4]=s,e[5]=l,e[6]=n,e[7]=f,e[8]=p}else f=e[7],p=e[8];let g=p,k,v,x,w,y;if(e[9]!==s||e[10]!==l||e[11]!==n){y=oa(c,l);let j=Be[l],O=l==="script"&&n.script.type==="source",C;e[17]!==j||e[18]!==l||e[19]!==n?(C=l==="script"?Hn[n.script.type]:{actionLabel:j.actionLabel,progressLabel:j.label},e[17]=j,e[18]=l,e[19]=n,e[20]=C):C=e[20],{actionLabel:k,progressLabel:x}=C,v=y?null:Tn({format:l,filename:s,options:n}),w=Un({usesBrowserPrint:y,hasCommand:!!v,format:l,isNotebookSource:O}),e[9]=s,e[10]=l,e[11]=n,e[12]=k,e[13]=v,e[14]=x,e[15]=w,e[16]=y}else k=e[12],v=e[13],x=e[14],w=e[15],y=e[16];let N=w,M,S;e[21]!==t||e[22]!==o?(M=()=>{t&&o(t)},S=[t,o],e[21]=t,e[22]=o,e[23]=M,e[24]=S):(M=e[23],S=e[24]),(0,A.useEffect)(M,S);let q;e[25]===o?q=e[26]:(q=j=>{ta(j)&&(d(j),o(j))},e[25]=o,e[26]=q);let $=q,P;e[27]===r?P=e[28]:(P=(j,O)=>{r(C=>{let H={...C};return H[j]={...C[j],...O},H})},e[27]=r,e[28]=P);let D=P,z;e[29]!==k||e[30]!==v||e[31]!==N||e[32]!==l||e[33]!==f||e[34]!==y?(z={format:l,status:f,usesBrowserPrint:y,actionLabel:k,command:v,footerDescription:N},e[29]=k,e[30]=v,e[31]=N,e[32]=l,e[33]=f,e[34]=y,e[35]=z):z=e[35];let F;e[36]===s?F=e[37]:(F=Bn(c,s),e[36]=s,e[37]=F);let I;e[38]!==l||e[39]!==n||e[40]!==x||e[41]!==f.available||e[42]!==F||e[43]!==y?(I={format:l,options:n,sourceFilename:F,available:f.available,usesBrowserPrint:y,progressLabel:x},e[38]=l,e[39]=n,e[40]=x,e[41]=f.available,e[42]=F,e[43]=y,e[44]=I):I=e[44];let R;return e[45]!==g||e[46]!==n||e[47]!==$||e[48]!==I||e[49]!==z||e[50]!==D?(R={formats:g,options:n,selected:z,exportRequest:I,selectFormat:$,updateOptions:D},e[45]=g,e[46]=n,e[47]=$,e[48]=I,e[49]=z,e[50]=D,e[51]=R):R=e[51],R}async function Kn(t){let e=document.getElementById("App");if(!e){let r="The current app view could not be captured.";throw ie({title:"Failed to download as PNG",description:r,variant:"danger"}),Error(r)}let s=t==null?void 0:t.style.visibility,n=t==null?void 0:t.classList.contains("print:hidden");if(!await Za({element:e,filename:document.title,prepare:()=>{let r=es();return t&&(t.classList.add("print:hidden"),t.style.visibility="hidden"),()=>{r(),t&&(n||t.classList.remove("print:hidden"),t.style.visibility=s??"")}}}))throw Error("Failed to capture the current app view.")}function Yn(t){t(),requestAnimationFrame(()=>{setTimeout(()=>{window.print()},0)})}function Jn({format:t,options:e,sourceFilename:s,available:n,usesBrowserPrint:r,progressLabel:i,onClose:o}){let l=ne(),d=Ws(),[c,u]=(0,A.useState)(!1),m=(0,A.useRef)(null),h=(0,A.useRef)(!0);(0,A.useEffect)(()=>(h.current=!0,()=>{h.current=!1}),[]);let b=async p=>{await Es({takeScreenshots:()=>d({progress:p}),updateCellOutputs:l.updateCellOutputs})},f=async()=>{await qa(()=>{var p;return Kn(((p=m.current)==null?void 0:p.parentElement)??null)})};return{dialogRef:m,isExporting:c,submit:async()=>{if(!(!n||c)){if(r){Yn(o);return}u(!0);try{await Qa(`Exporting ${i}\u2026`,async p=>{await $n({format:t,options:e,requests:l,sourceFilename:s,htmlFiles:bt.INSTANCE.filenames(),captureOutputs:()=>b(p),capturePNG:f,downloadFile:Xa})}),h.current&&o()}catch(p){de.error("Export failed",p)}finally{h.current&&u(!1)}}}}}function Xn(t){let e=(0,ra.c)(14),{initialFormat:s,onClose:n}=t,r=Gn(s),i,o,l;e[0]===r?(i=e[1],o=e[2],l=e[3]):({exportRequest:i,selectFormat:o,...l}=r,e[0]=r,e[1]=i,e[2]=o,e[3]=l);let d;e[4]!==i||e[5]!==n?(d={...i,onClose:n},e[4]=i,e[5]=n,e[6]=d):d=e[6];let c=Jn(d),u;e[7]!==c||e[8]!==o?(u=h=>{c.isExporting||o(h)},e[7]=c,e[8]=o,e[9]=u):u=e[9];let m;return e[10]!==c||e[11]!==l||e[12]!==u?(m={...l,...c,selectFormat:u},e[10]=c,e[11]=l,e[12]=u,e[13]=m):m=e[13],m}var Qn=T(),Zn="(min-width: 640px)";const eo=t=>{let e=(0,Qn.c)(69),{initialFormat:s,onClose:n,returnFocusRef:r}=t,i;e[0]!==s||e[1]!==n?(i={initialFormat:s,onClose:n},e[0]=s,e[1]=n,e[2]=i):i=e[2];let{dialogRef:o,isExporting:l,formats:d,options:c,selected:u,selectFormat:m,updateOptions:h,submit:b}=Xn(i),f=Ja(Zn),{format:p,status:g,usesBrowserPrint:k,actionLabel:v,command:x,footerDescription:w}=u,y=Be[p],N=y.Options,M;e[3]===r?M=e[4]:(M=r?{onCloseAutoFocus:L=>{var G;L.preventDefault(),(G=r.current)==null||G.focus()}}:{},e[3]=r,e[4]=M);let S=M,q;e[5]===Symbol.for("react.memo_cache_sentinel")?(q=(0,a.jsxs)(Ee,{className:"border-b px-5 py-4 pr-12",children:[(0,a.jsx)(Ae,{children:"Export notebook"}),(0,a.jsx)(qe,{children:"Choose a format and adjust its options."})]}),e[5]=q):q=e[5];let $=f?"vertical":"horizontal",P;if(e[6]!==d||e[7]!==l){let L;e[9]===l?L=e[10]:(L=G=>{let{format:X,status:ve}=G,me=Be[X];return(0,a.jsxs)(Ba,{value:X,disabled:l,className:"min-w-0 justify-start gap-2 px-2.5 py-2 text-xs data-[state=active]:shadow-xs sm:w-full sm:text-sm","data-testid":`export-format-${X}`,children:[(0,a.jsx)(me.Icon,{className:"size-3.5 shrink-0",strokeWidth:1.5}),(0,a.jsx)("span",{className:"truncate",children:me.label}),(0,a.jsx)(Fn,{status:ve})]},X)},e[9]=l,e[10]=L),P=d.map(L),e[6]=d,e[7]=l,e[8]=P}else P=e[8];let D;e[11]===P?D=e[12]:(D=(0,a.jsx)(Ga,{"aria-label":"Export format",className:"grid max-h-none shrink-0 grid-cols-2 items-stretch justify-start gap-1 overflow-auto rounded-none border-b bg-muted/20 p-2 min-[360px]:grid-cols-3 sm:flex sm:h-full sm:flex-col sm:border-b-0 sm:border-r",children:P}),e[11]=P,e[12]=D);let z;if(e[13]!==N||e[14]!==y.description||e[15]!==y.label||e[16]!==p||e[17]!==d||e[18]!==l||e[19]!==c||e[20]!==g||e[21]!==h||e[22]!==k){let L;e[24]!==N||e[25]!==y.description||e[26]!==y.label||e[27]!==p||e[28]!==l||e[29]!==c||e[30]!==g||e[31]!==h||e[32]!==k?(L=G=>{let{format:X}=G;return(0,a.jsxs)(Ua,{value:X,className:"mt-0 min-h-0 min-w-0 overflow-y-auto px-4 py-3",children:[(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsx)("h3",{className:"text-base font-semibold",children:y.label}),(0,a.jsx)("p",{className:"mt-0.5 text-sm text-muted-foreground",children:y.description})]}),(0,a.jsx)(In,{format:p,formatLabel:y.label,status:g}),k?null:(0,a.jsx)(N,{options:c,updateOptions:h,disabled:l})]},X)},e[24]=N,e[25]=y.description,e[26]=y.label,e[27]=p,e[28]=l,e[29]=c,e[30]=g,e[31]=h,e[32]=k,e[33]=L):L=e[33],z=d.map(L),e[13]=N,e[14]=y.description,e[15]=y.label,e[16]=p,e[17]=d,e[18]=l,e[19]=c,e[20]=g,e[21]=h,e[22]=k,e[23]=z}else z=e[23];let F;e[34]!==p||e[35]!==m||e[36]!==$||e[37]!==D||e[38]!==z?(F=(0,a.jsxs)(Va,{value:p,onValueChange:m,orientation:$,className:"flex min-h-0 min-w-0 flex-col overflow-hidden sm:grid sm:grid-cols-[168px_minmax(0,1fr)]",children:[D,z]}),e[34]=p,e[35]=m,e[36]=$,e[37]=D,e[38]=z,e[39]=F):F=e[39];let I;e[40]===x?I=e[41]:(I=x?(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-2 rounded-md border bg-background px-2.5 py-2 font-mono text-xs",children:[(0,a.jsx)("span",{className:"select-none text-muted-foreground","aria-hidden":!0,children:"$"}),(0,a.jsx)("code",{className:"min-w-0 flex-1 overflow-x-auto whitespace-nowrap","data-testid":"export-cli-command","aria-label":"Equivalent POSIX shell command",children:x}),(0,a.jsx)(We,{value:x,className:"size-3.5",buttonClassName:fe(ns({variant:"ghost",size:"icon"}),"shrink-0"),tooltip:"Copy POSIX shell command",ariaLabel:"Copy POSIX shell command",toastTitle:"Command copied"})]}):null,e[40]=x,e[41]=I);let R=x&&"mt-3",j;e[42]===R?j=e[43]:(j=fe("flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",R),e[42]=R,e[43]=j);let O;e[44]===w?O=e[45]:(O=w?(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:w}):null,e[44]=w,e[45]=O);let C=!g.available||l,H=!w&&"sm:ml-auto",V;e[46]===H?V=e[47]:(V=fe("border-(--blue-11) bg-(--blue-11) hover:border-(--blue-12) hover:bg-(--blue-12) sm:min-w-36 dark:border-(--blue-7) dark:bg-(--blue-5) dark:text-(--blue-12) dark:hover:border-(--blue-8) dark:hover:bg-(--blue-6)",H),e[46]=H,e[47]=V);let B;e[48]===l?B=e[49]:(B=l&&(0,a.jsx)(Le,{size:"small",className:"mr-2","aria-hidden":!0}),e[48]=l,e[49]=B);let ae=k?"Print to PDF":v,J;e[50]!==l||e[51]!==b||e[52]!==C||e[53]!==V||e[54]!==B||e[55]!==ae?(J=(0,a.jsxs)(re,{type:"button",disabled:C,"aria-busy":l,onClick:b,className:V,"data-testid":"export-submit",children:[B,ae]}),e[50]=l,e[51]=b,e[52]=C,e[53]=V,e[54]=B,e[55]=ae,e[56]=J):J=e[56];let se;e[57]!==j||e[58]!==O||e[59]!==J?(se=(0,a.jsxs)("div",{className:j,children:[O,J]}),e[57]=j,e[58]=O,e[59]=J,e[60]=se):se=e[60];let U;e[61]!==se||e[62]!==I?(U=(0,a.jsxs)("footer",{className:"min-w-0 border-t bg-muted/20 px-4 py-3",children:[I,se]}),e[61]=se,e[62]=I,e[63]=U):U=e[63];let _;return e[64]!==o||e[65]!==S||e[66]!==U||e[67]!==F?(_=(0,a.jsxs)(De,{ref:o,className:"grid h-dvh max-h-[760px] min-w-0 w-[calc(100vw-2rem)] grid-rows-[auto_minmax(0,1fr)_auto] gap-0 overflow-hidden p-0 sm:top-[5vh] sm:h-[90vh] sm:max-h-[640px] sm:max-w-3xl","data-testid":"export-dialog",...S,children:[q,F,U]}),e[64]=o,e[65]=S,e[66]=U,e[67]=F,e[68]=_):_=e[68],_};var to=T();function ao(t){let e=(0,to.c)(5),{openPrompt:s,closeModal:n}=Ne(),{sendCopy:r}=ne(),i;return e[0]!==n||e[1]!==s||e[2]!==r||e[3]!==t?(i=()=>{if(!t)return null;let o=Cs.guessDeliminator(t);s({title:"Copy notebook",description:"Enter a new filename for the notebook copy.",defaultValue:`_${Pe.basename(t)}`,confirmText:"Copy notebook",spellCheck:!1,onConfirm:l=>{let d=o.join(Pe.dirname(t),l);r({source:t,destination:d}).then(()=>{n(),ie({title:"Notebook copied",description:"A copy of the notebook has been created."}),Ps(d)})}})},e[0]=n,e[1]=s,e[2]=r,e[3]=t,e[4]=i):i=e[4],i}var so=T();function ia(){let t=(0,so.c)(4),{openConfirm:e}=Ne(),s=le(it),{sendRestart:n}=ne(),r;return t[0]!==e||t[1]!==n||t[2]!==s?(r=()=>{e({title:"Restart Kernel",description:"This will restart the Python kernel. You'll lose all data that's in memory. You will also lose any unsaved changes, so make sure to save your work before restarting.",variant:"destructive",confirmAction:(0,a.jsx)(Ha,{onClick:async()=>{s({state:rt.CLOSING}),await n(),Os()},"aria-label":"Confirm Restart",children:"Restart"})})},t[0]=e,t[1]=n,t[2]=s,t[3]=r):r=t[3],r}var no=T(),oo=new ya,ro=t=>oo.isSupported(t)?"markdown":"code";const la=()=>{let t=(0,no.c)(3),{updateCellConfig:e}=Ke(),{saveCellConfig:s}=ne(),n;return t[0]!==s||t[1]!==e?(n=async(r,i)=>{let o=tt(),l={};for(let c of o.cellIds.inOrderIds){let u=o.cellData[c];u===void 0||u.config.hide_code===r||ro(u.code)===i&&(l[c]={hide_code:r})}let d=st.entries(l);if(d.length!==0){await s({configs:l});for(let[c,u]of d)e({cellId:c,config:u})}},t[0]=s,t[1]=e,t[2]=n):n=t[2],n};var io=T(),ue=t=>{t==null||t.preventDefault(),t==null||t.stopPropagation()};function lo(t){var X,ve,me;let e=(0,io.c)(45),s;e[0]===t?s=e[1]:(s=t===void 0?{}:t,e[0]=t,e[1]=s);let{exportDialogReturnFocusRef:n}=s,r=Mt(),{openModal:i,closeModal:o}=Ne(),{toggleApplication:l}=fa(),{selectedPanel:d}=wa(),[c]=Oe(ot),u=ee(Da),m=la(),[h]=Wa(),b=ee(xa),f=ee(Ea),{updateCellConfig:p,undoDeleteCell:g,clearAllCellOutputs:k,addSetupCellIfDoesntExist:v,collapseAllCells:x,expandAllCells:w}=Ke(),y=ia(),N=zs(),M=ao(r),S=le(Gt),q=le(Fa),{handleClick:$}=Ia(),P=le(La),D=le(sa),{readCode:z,saveCellConfig:F}=ne(),I=ee(Ma),R=ee(Oa),j=ee(va),{selectedLayout:O}=xt(),{setLayoutView:C}=yt(),H=Ut(),V=((X=h.sharing)==null?void 0:X.html)??!0,B=((ve=h.sharing)==null?void 0:ve.wasm)??!0,ae=((me=h.sharing)==null?void 0:me.molab)??!0,J=O==="slides",se=No,U;e[2]!==o||e[3]!==n||e[4]!==i||e[5]!==D?(U=(W,Z)=>{Z&&D(oe=>aa(oe,Z)),i((0,a.jsx)(eo,{initialFormat:W,onClose:o,returnFocusRef:n}))},e[2]=o,e[3]=n,e[4]=i,e[5]=D,e[6]=U):U=e[6];let _=U,L;e[7]===Symbol.for("react.memo_cache_sentinel")?(L=(0,a.jsx)(pt,{size:14,strokeWidth:1.5}),e[7]=L):L=e[7];let G;return e[8]!==v||e[9]!==f||e[10]!==R||e[11]!==b||e[12]!==k||e[13]!==o||e[14]!==x||e[15]!==M||e[16]!==w||e[17]!==r||e[18]!==I||e[19]!==J||e[20]!==u||e[21]!==_||e[22]!==i||e[23]!==$||e[24]!==z||e[25]!==y||e[26]!==N||e[27]!==F||e[28]!==O||e[29]!==d||e[30]!==m||e[31]!==S||e[32]!==P||e[33]!==C||e[34]!==q||e[35]!==V||e[36]!==ae||e[37]!==B||e[38]!==l||e[39]!==H||e[40]!==g||e[41]!==j||e[42]!==p||e[43]!==c.mode?(G=[{icon:L,label:"Export\u2026",additionalKeywords:["download","html","markdown","ipynb","pdf","script","png"],handle:()=>_()},{icon:(0,a.jsx)(pt,{size:14,strokeWidth:1.5}),label:"Download",handle:ue,dropdown:[{icon:(0,a.jsx)(ft,{size:14,strokeWidth:1.5}),label:"Download as HTML",handle:()=>_("html",{html:{includeCode:!0}})},{icon:(0,a.jsx)(ft,{size:14,strokeWidth:1.5}),label:"Download as HTML (exclude code)",handle:()=>_("html",{html:{includeCode:!1}})},{icon:(0,a.jsx)(_s,{strokeWidth:1.5,style:{width:14,height:14}}),label:"Download as Markdown",handle:()=>_("markdown")},{icon:(0,a.jsx)(Dt,{size:14,strokeWidth:1.5}),label:"Download as ipynb",handle:()=>_("ipynb")},{icon:(0,a.jsx)(Ie,{size:14,strokeWidth:1.5}),label:"Download notebook source",handle:()=>_("script",{script:{type:"source"}})},{icon:(0,a.jsx)(Ie,{size:14,strokeWidth:1.5}),label:"Download flat script",handle:()=>_("script",{script:{type:"flat"}})},{divider:!0,icon:(0,a.jsx)(jt,{size:14,strokeWidth:1.5}),label:"Download as PNG",handle:()=>_("png")},J?{divider:!0,icon:(0,a.jsx)(be,{size:14,strokeWidth:1.5}),label:"Download as PDF",handle:ue,dropdown:[{icon:(0,a.jsx)(be,{size:14,strokeWidth:1.5}),label:"Document Layout",handle:()=>_("pdf",{pdf:{preset:"document"}})},{icon:(0,a.jsx)(be,{size:14,strokeWidth:1.5}),label:"Slides Layout",hidden:he(),rightElement:(0,a.jsx)("span",{className:"ml-3 shrink-0 rounded-full border border-emerald-200 bg-emerald-50 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-emerald-700",children:"Recommended"}),handle:()=>_("pdf",{pdf:{preset:"slides"}})}]}:{divider:!0,icon:(0,a.jsx)(be,{size:14,strokeWidth:1.5}),label:"Download as PDF",handle:()=>_("pdf",{pdf:{preset:"document"}})}]},{icon:(0,a.jsx)(ws,{size:14,strokeWidth:1.5}),label:"Pair with an agent",hidden:he(),handle:async()=>{i((0,a.jsx)(Is,{onClose:o}))}},{icon:(0,a.jsx)(Hs,{size:14,strokeWidth:1.5}),label:"Share",handle:ue,hidden:!V&&!B&&!ae,dropdown:[{icon:(0,a.jsx)(wt,{size:14,strokeWidth:1.5}),label:"Publish HTML to web",hidden:!V,handle:async()=>{i((0,a.jsx)(en,{onClose:o}))}},{icon:(0,a.jsx)(ks,{size:14,strokeWidth:1.5}),label:"Create WebAssembly link",hidden:!B,handle:async()=>{await je(Ct({code:(await z()).contents})),ie({title:"Copied",description:"Link copied to clipboard."})}},{icon:(0,a.jsx)(It,{size:14,strokeWidth:1.5}),label:"Create molab notebook",hidden:!ae,handle:async()=>{let W=Ct({code:(await z()).contents,baseUrl:`${K.molab}/new`});window.open(W,"_blank")}}]},{icon:(0,a.jsx)($s,{size:14,strokeWidth:1.5}),label:"Helper panel",redundant:!0,handle:ue,dropdown:ba.flatMap(W=>{let Z=W.type==="ai"&&!f;if(Na({panel:W,capabilities:b,aiEnabled:f})&&!Z)return[];let{type:oe,Icon:da,additionalKeywords:ca}=W;return{label:Fe.startCase(oe),rightElement:se(d===oe),icon:(0,a.jsx)(da,{size:14,strokeWidth:1.5}),handle:()=>{if(Z){$("ai","ai-features");return}l(oe)},additionalKeywords:ca}})},{icon:(0,a.jsx)(qt,{size:14,strokeWidth:1.5}),label:"Present as",handle:ue,dropdown:[{icon:c.mode==="present"?(0,a.jsx)(js,{size:14,strokeWidth:1.5}):(0,a.jsx)(is,{size:14,strokeWidth:1.5}),label:"Toggle app view",hotkey:"global.hideCode",handle:()=>{H()}},...Lt.map((W,Z)=>{let oe=Kt(W);return{divider:Z===0,label:Yt(W),icon:(0,a.jsx)(oe,{size:14,strokeWidth:1.5}),rightElement:(0,a.jsx)("div",{className:"w-8 flex justify-end",children:O===W&&(0,a.jsx)(kt,{size:14})}),handle:()=>{C(W),c.mode==="edit"&&H()}}})]},{icon:(0,a.jsx)(Ts,{size:14,strokeWidth:1.5}),label:"Duplicate notebook",hidden:!r||he(),handle:M},{icon:(0,a.jsx)(Pt,{size:14,strokeWidth:1.5}),label:"Copy code to clipboard",hidden:!r,handle:async()=>{await je((await z()).contents),ie({title:"Copied",description:"Code copied to clipboard."})}},{icon:(0,a.jsx)(cs,{size:14,strokeWidth:1.5}),label:"Enable all cells",hidden:!I||u,handle:async()=>{let W=Sa(tt());await F({configs:st.fromEntries(W.map(jo))});for(let Z of W)p({cellId:Z,config:{disabled:!1}})}},{divider:!0,icon:(0,a.jsx)(Et,{size:14,strokeWidth:1.5}),label:"Add setup cell",handle:()=>{v({})}},{icon:(0,a.jsx)(ga,{size:14,strokeWidth:1.5}),label:"Add database connection",handle:()=>{i((0,a.jsx)(Ft,{onClose:o}))}},{icon:(0,a.jsx)(fs,{size:14,strokeWidth:1.5}),label:"Add remote storage",handle:()=>{i((0,a.jsx)(Ft,{defaultTab:"storage",onClose:o}))}},{icon:(0,a.jsx)(Tt,{size:14,strokeWidth:1.5}),label:j,hidden:!R||u,handle:()=>{g()}},{icon:(0,a.jsx)(Vs,{size:14,strokeWidth:1.5}),label:"Restart kernel",variant:"danger",handle:y,additionalKeywords:["reset","reload","restart"]},{icon:(0,a.jsx)(qs,{size:14,strokeWidth:1.5}),label:"Re-run all cells",redundant:!0,hotkey:"global.runAll",handle:async()=>{N()}},{icon:(0,a.jsx)(ja,{size:14,strokeWidth:1.5}),label:"Clear all outputs",redundant:!0,handle:()=>{k()}},{icon:(0,a.jsx)(Qe,{size:14,strokeWidth:1.5}),label:"Show all code",hotkey:"global.showAllCode",handle:()=>m(!1,"code"),redundant:!0},{icon:(0,a.jsx)(gt,{size:14,strokeWidth:1.5}),label:"Hide all code",hotkey:"global.hideAllCode",handle:()=>m(!0,"code"),redundant:!0},{icon:(0,a.jsx)(Qe,{size:14,strokeWidth:1.5}),label:"Show all markdown code",hotkey:"global.showAllMarkdownCode",handle:()=>m(!1,"markdown"),redundant:!0},{icon:(0,a.jsx)(gt,{size:14,strokeWidth:1.5}),label:"Hide all markdown code",hotkey:"global.hideAllMarkdownCode",handle:()=>m(!0,"markdown"),redundant:!0},{icon:(0,a.jsx)(Ds,{size:14,strokeWidth:1.5}),label:"Collapse all sections",hotkey:"global.collapseAllSections",handle:x,redundant:!0},{icon:(0,a.jsx)(As,{size:14,strokeWidth:1.5}),label:"Expand all sections",hotkey:"global.expandAllSections",handle:w,redundant:!0},{divider:!0,icon:(0,a.jsx)(Wt,{size:14,strokeWidth:1.5}),label:"Command palette",hotkey:"global.commandPalette",handle:()=>S(wo)},{icon:(0,a.jsx)(ls,{size:14,strokeWidth:1.5}),label:"Keyboard shortcuts",hotkey:"global.showHelp",handle:()=>P(vo)},{icon:(0,a.jsx)(vs,{size:14,strokeWidth:1.5}),label:"User settings",handle:()=>q(go),redundant:!0,additionalKeywords:["preferences","options","configuration"]},{icon:(0,a.jsx)(At,{size:14,strokeWidth:1.5}),label:"Report an issue",additionalKeywords:["feedback","bug","issue","report","diagnostics"],handle:()=>i((0,a.jsx)(Vt,{onClose:o}))},{icon:(0,a.jsx)(vt,{size:14,strokeWidth:1.5}),label:"Resources",handle:ue,dropdown:[{icon:(0,a.jsx)(ka,{size:14,strokeWidth:1.5}),label:"Documentation",handle:ko},{icon:(0,a.jsx)(Ls,{className:"h-3.5 w-3.5"}),label:"GitHub",handle:yo},{icon:(0,a.jsx)(ms,{size:14,strokeWidth:1.5}),label:"Discord Community",handle:xo},{icon:(0,a.jsx)(hs,{className:"h-3.5 w-3.5"}),label:"YouTube",handle:bo},{icon:(0,a.jsx)(Xe,{size:14,strokeWidth:1.5}),label:"Changelog",handle:fo}]},{divider:!0,icon:(0,a.jsx)(bs,{size:14,strokeWidth:1.5}),label:"Open home",hidden:!location.search.includes("file"),handle:ho},{icon:(0,a.jsx)(It,{size:14,strokeWidth:1.5}),label:"New notebook",hidden:!location.search.includes("file"),handle:po}].filter(mo).map(co),e[8]=v,e[9]=f,e[10]=R,e[11]=b,e[12]=k,e[13]=o,e[14]=x,e[15]=M,e[16]=w,e[17]=r,e[18]=I,e[19]=J,e[20]=u,e[21]=_,e[22]=i,e[23]=$,e[24]=z,e[25]=y,e[26]=N,e[27]=F,e[28]=O,e[29]=d,e[30]=m,e[31]=S,e[32]=P,e[33]=C,e[34]=q,e[35]=V,e[36]=ae,e[37]=B,e[38]=l,e[39]=H,e[40]=g,e[41]=j,e[42]=p,e[43]=c.mode,e[44]=G):G=e[44],G}function co(t){return t.dropdown?{...t,dropdown:t.dropdown.filter(uo)}:t}function uo(t){return!t.hidden}function mo(t){return!t.hidden}function po(){let t=Ss();window.open(t,"_blank")}function ho(){let t=document.baseURI.split("?")[0];window.open(t,"_blank","noopener")}function fo(){window.open(K.releasesPage,"_blank")}function bo(){window.open(K.youtube,"_blank")}function xo(){window.open(K.discordLink,"_blank")}function yo(){window.open(K.githubPage,"_blank")}function ko(){window.open(K.docsPage,"_blank")}function go(t){return!t}function vo(t){return!t}function wo(t){return!t}function jo(t){return[t,{disabled:!1}]}function No(t){return(0,a.jsx)("div",{className:"w-8 flex justify-end",children:t&&(0,a.jsx)(kt,{size:14})})}export{Gt as a,$e as c,Et as d,Wt as f,rn as i,Tt as l,la as n,Ut as o,Pt as p,ia as r,Qs as s,lo as t,At as u};
|