@marimo-team/frontend 0.19.5-dev2 → 0.19.5-dev21
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-BXh1gynf.js → CellStatus-CkHNEnSR.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-BKJwCHu7.js → ConnectedDataExplorerComponent-D9wGP6tv.js} +1 -1
- package/dist/assets/{JsonOutput-CLNTeasj.js → JsonOutput-DMMGGSXv.js} +1 -1
- package/dist/assets/{MarimoErrorOutput-Czq-EaOv.js → MarimoErrorOutput-DuFSglTT.js} +1 -1
- package/dist/assets/{RenderHTML-IHLDwtNi.js → RenderHTML-wR1-1y1P.js} +1 -1
- package/dist/assets/{add-cell-with-ai-i5LNDjJf.js → add-cell-with-ai-CbaApRYx.js} +1 -1
- package/dist/assets/{add-database-form-DiiD1Vbr.js → add-database-form-DHXYzyiI.js} +1 -1
- package/dist/assets/{agent-panel-CURqRcNk.js → agent-panel-3PTqPJTj.js} +1 -1
- package/dist/assets/{ai-model-dropdown-B4PTfGxC.js → ai-model-dropdown-ChmbKArd.js} +1 -1
- package/dist/assets/{app-config-button-CwTpgJrH.js → app-config-button-D6XweFDT.js} +1 -1
- package/dist/assets/{cell-editor-7OTv5JEt.js → cell-editor-6dMXQ0RL.js} +2 -2
- package/dist/assets/{cell-link-PmjS89xh.js → cell-link-DVWmB29p.js} +1 -1
- package/dist/assets/{cells-CqQgFV4b.js → cells-dG69fEtz.js} +2 -2
- package/dist/assets/{chat-components-BqIcG4qc.js → chat-components-WF7xAOzH.js} +1 -1
- package/dist/assets/{chat-display-DwogmR6s.js → chat-display-CSZE5mc2.js} +1 -1
- package/dist/assets/{chat-panel-CdPM1nVX.js → chat-panel-C3O3gAi9.js} +1 -1
- package/dist/assets/{client-DACzP75m.js → client-pvw6NZnl.js} +3 -3
- package/dist/assets/{column-preview-Dpc2R1kk.js → column-preview-BI3bmg8t.js} +1 -1
- package/dist/assets/{command-CrXI4rKp.js → command-C4F8xArq.js} +1 -1
- package/dist/assets/{command-palette-DlpYob2_.js → command-palette-DXCid2fN.js} +1 -1
- package/dist/assets/{common-UAJeFXMa.js → common-BWquCRv0.js} +1 -1
- package/dist/assets/{config-D6nhy4FA.js → config-CENq_7Pd.js} +1 -1
- package/dist/assets/{datasource-DuzaeKzi.js → datasource-wJp5J7GL.js} +1 -1
- package/dist/assets/{dependency-graph-panel-D6739nh_.js → dependency-graph-panel-C5ASDepz.js} +1 -1
- package/dist/assets/{documentation-panel-Buzk5Fu4.js → documentation-panel-DjP7xcas.js} +1 -1
- package/dist/assets/{download-7BValYrD.js → download-B5nrQ7oh.js} +1 -1
- package/dist/assets/{edit-page-BWYYclv8.js → edit-page-D8qZ-cED.js} +6 -6
- package/dist/assets/{error-panel-B20u-a2k.js → error-panel-C3ZWSKyy.js} +1 -1
- package/dist/assets/{es-DZXbHzby.js → es-CXayDCrt.js} +1 -1
- package/dist/assets/file-explorer-panel-DEAwmqNS.js +1 -0
- package/dist/assets/{floating-outline-D1jZFEZq.js → floating-outline-DmMqfgvM.js} +1 -1
- package/dist/assets/{focus-iNK7gxqn.js → focus-De0fAFlq.js} +1 -1
- package/dist/assets/{form-BRyVMnbz.js → form-CA9PbMgX.js} +1 -1
- package/dist/assets/{glide-data-editor-CRb9AiCG.js → glide-data-editor-Cp7ovNOX.js} +1 -1
- package/dist/assets/{globals-DSc2kOiG.js → globals-G25bi28X.js} +1 -1
- package/dist/assets/{home-page-DLOc5LxS.js → home-page-CpVwL4qV.js} +1 -1
- package/dist/assets/{index-DDc_1b-N.css → index-BI9O54ok.css} +1 -1
- package/dist/assets/{index-C4W61Wkp.js → index-CLIGiIEq.js} +7 -7
- package/dist/assets/{kiosk-mode-gpZZHb2k.js → kiosk-mode-BzPmO2rQ.js} +1 -1
- package/dist/assets/{layout-cqf4jVVJ.js → layout-CcJbEqnj.js} +1 -1
- package/dist/assets/links-nCUz50vX.js +1 -0
- package/dist/assets/{logs-panel-C61Ke6Vh.js → logs-panel-D81EnMXO.js} +1 -1
- package/dist/assets/{markdown-renderer-zLvh4wvy.js → markdown-renderer-CRVtPH5D.js} +1 -1
- package/dist/assets/{mermaid--ZwxKP7u.js → mermaid-PR_LvTgS.js} +1 -1
- package/dist/assets/{mode-D8wBTHYr.js → mode-ChYHAM7i.js} +1 -1
- package/dist/assets/{name-cell-input-Z3jP-uGb.js → name-cell-input-CpZt0vsF.js} +1 -1
- package/dist/assets/{outline-panel-yzZ-47YC.js → outline-panel-C9vRV5y9.js} +1 -1
- package/dist/assets/{packages-panel-CLSDsvMc.js → packages-panel-BQt2iLJb.js} +1 -1
- package/dist/assets/{panels-B_82vyOa.js → panels-D2M0X4Da.js} +1 -1
- package/dist/assets/{process-output-BoMxmckb.js → process-output-Nbtlvi7C.js} +1 -1
- package/dist/assets/{readonly-python-code-BsfcjvYh.js → readonly-python-code-Crr_9chk.js} +1 -1
- package/dist/assets/renderShortcut-DQ1H8wv8.js +1 -0
- package/dist/assets/{run-page-CDNWv23n.js → run-page-Zmcxhaf1.js} +1 -1
- package/dist/assets/{scratchpad-panel--7282IFi.js → scratchpad-panel-B7hgkWTO.js} +1 -1
- package/dist/assets/{session-panel-TIK7tELJ.js → session-panel-CCw-hpml.js} +1 -1
- package/dist/assets/{snippets-panel-DN67yVtB.js → snippets-panel-CftBFK7b.js} +1 -1
- package/dist/assets/{state-DxSsbZ2U.js → state-B_RAyPJZ.js} +1 -1
- package/dist/assets/{state-QEMH_vzx.js → state-dz5q1XdV.js} +1 -1
- package/dist/assets/{switch-DXFFGBN1.js → switch-CH7JBQ6U.js} +1 -1
- package/dist/assets/{terminal-BhbNfCNw.js → terminal-DWEf_1Us.js} +1 -1
- package/dist/assets/{textarea-CLcDrTce.js → textarea-C1B1m2rU.js} +1 -1
- package/dist/assets/{tracing--sgFXj_b.js → tracing-CAY6F2mI.js} +1 -1
- package/dist/assets/{tracing-panel-Vgs_QVja.js → tracing-panel-Dl60o0Ok.js} +2 -2
- package/dist/assets/{types-CaZe7wKe.js → types-D_eS2JEf.js} +1 -1
- package/dist/assets/{useAddCell-Ck7_02t2.js → useAddCell-BSOKbqcD.js} +1 -1
- package/dist/assets/{useBoolean-B_S7yTZz.js → useBoolean-CULqj1dx.js} +1 -1
- package/dist/assets/{useCellActionButton-BQ25CkMM.js → useCellActionButton-fUOTJQY2.js} +1 -1
- package/dist/assets/{useDeleteCell-D6tJT52g.js → useDeleteCell-CNPKeGD6.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-DFsNyv7m.js → useDependencyPanelTab-Coe6wSmK.js} +1 -1
- package/dist/assets/{useNotebookActions-CgaHkAAt.js → useNotebookActions-UzFwrgYv.js} +1 -1
- package/dist/assets/{useRunCells-1OSi36uT.js → useRunCells-B7y_sG8R.js} +1 -1
- package/dist/assets/{useSplitCell-BZjrUoCW.js → useSplitCell-D5TLJkuE.js} +1 -1
- package/dist/assets/{useTheme-CNj0G_ol.js → useTheme-BSVRc0kJ.js} +1 -1
- package/dist/assets/{utilities.esm-Bc0J_PzK.js → utilities.esm-CRKmwR4M.js} +1 -1
- package/dist/assets/utils-Czt8B2GX.js +1 -0
- package/dist/assets/{vega-component-C1voDf5W.js → vega-component-CZVqD10k.js} +1 -1
- package/dist/index.html +37 -37
- package/package.json +1 -1
- package/src/components/app-config/user-config-form.tsx +1 -1
- package/src/components/editor/controls/Controls.tsx +1 -8
- package/src/components/editor/file-tree/file-explorer.tsx +4 -2
- package/src/components/editor/file-tree/file-viewer.tsx +9 -6
- package/src/core/config/config-schema.ts +5 -1
- package/src/core/config/config.ts +4 -0
- package/src/core/lsp/__tests__/transport.test.ts +149 -0
- package/src/core/lsp/transport.ts +48 -0
- package/src/css/app/Cell.css +0 -2
- package/src/plugins/layout/TexPlugin.tsx +7 -5
- package/dist/assets/file-explorer-panel-DDFHsvy9.js +0 -1
- package/dist/assets/links-D529u6GQ.js +0 -1
- package/dist/assets/renderShortcut-eU5Hsfml.js +0 -1
- package/dist/assets/utils-pfqq9IdB.js +0 -1
|
@@ -41,6 +41,8 @@ describe("ReconnectingWebSocketTransport", () => {
|
|
|
41
41
|
this.connect = vi.fn().mockResolvedValue(undefined);
|
|
42
42
|
this.close = vi.fn();
|
|
43
43
|
this.sendData = vi.fn().mockResolvedValue({ result: "success" });
|
|
44
|
+
this.subscribe = vi.fn();
|
|
45
|
+
this.unsubscribe = vi.fn();
|
|
44
46
|
});
|
|
45
47
|
});
|
|
46
48
|
|
|
@@ -287,4 +289,151 @@ describe("ReconnectingWebSocketTransport", () => {
|
|
|
287
289
|
"Reconnect callback failed",
|
|
288
290
|
);
|
|
289
291
|
});
|
|
292
|
+
|
|
293
|
+
describe("subscribe", () => {
|
|
294
|
+
it("should track subscriptions", () => {
|
|
295
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
296
|
+
const transport = new ReconnectingWebSocketTransport({ getWsUrl });
|
|
297
|
+
|
|
298
|
+
const handler = vi.fn();
|
|
299
|
+
transport.subscribe("notification", handler);
|
|
300
|
+
|
|
301
|
+
expect((transport as any).pendingSubscriptions).toHaveLength(1);
|
|
302
|
+
expect((transport as any).pendingSubscriptions[0]).toEqual({
|
|
303
|
+
event: "notification",
|
|
304
|
+
handler,
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
it("should register handler on delegate if it exists", async () => {
|
|
309
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
310
|
+
const transport = new ReconnectingWebSocketTransport({ getWsUrl });
|
|
311
|
+
|
|
312
|
+
await transport.connect();
|
|
313
|
+
|
|
314
|
+
const handler = vi.fn();
|
|
315
|
+
transport.subscribe("notification", handler);
|
|
316
|
+
|
|
317
|
+
const delegate = (transport as any).delegate;
|
|
318
|
+
expect(delegate.subscribe).toHaveBeenCalledWith("notification", handler);
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
it("should register pending subscriptions when delegate is created", async () => {
|
|
322
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
323
|
+
const transport = new ReconnectingWebSocketTransport({ getWsUrl });
|
|
324
|
+
|
|
325
|
+
const handler1 = vi.fn();
|
|
326
|
+
const handler2 = vi.fn();
|
|
327
|
+
transport.subscribe("notification", handler1);
|
|
328
|
+
transport.subscribe("response", handler2);
|
|
329
|
+
|
|
330
|
+
await transport.connect();
|
|
331
|
+
|
|
332
|
+
const delegate = (transport as any).delegate;
|
|
333
|
+
expect(delegate.subscribe).toHaveBeenCalledWith("notification", handler1);
|
|
334
|
+
expect(delegate.subscribe).toHaveBeenCalledWith("response", handler2);
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
it("should re-register subscriptions on reconnection", async () => {
|
|
338
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
339
|
+
const transport = new ReconnectingWebSocketTransport({ getWsUrl });
|
|
340
|
+
|
|
341
|
+
// Add subscription before connection
|
|
342
|
+
const handler = vi.fn();
|
|
343
|
+
transport.subscribe("notification", handler);
|
|
344
|
+
|
|
345
|
+
// First connection
|
|
346
|
+
await transport.connect();
|
|
347
|
+
const firstDelegate = (transport as any).delegate;
|
|
348
|
+
expect(firstDelegate.subscribe).toHaveBeenCalledWith(
|
|
349
|
+
"notification",
|
|
350
|
+
handler,
|
|
351
|
+
);
|
|
352
|
+
|
|
353
|
+
// Clear mock calls
|
|
354
|
+
firstDelegate.subscribe.mockClear();
|
|
355
|
+
|
|
356
|
+
// Simulate connection loss
|
|
357
|
+
mockConnection.readyState = WebSocket.CLOSED;
|
|
358
|
+
|
|
359
|
+
// Reconnect by sending data
|
|
360
|
+
const data: any = { method: "test", params: [] };
|
|
361
|
+
await transport.sendData(data, 5000);
|
|
362
|
+
|
|
363
|
+
// New delegate should have been created
|
|
364
|
+
const secondDelegate = (transport as any).delegate;
|
|
365
|
+
expect(secondDelegate).not.toBe(firstDelegate);
|
|
366
|
+
|
|
367
|
+
// Subscription should be re-registered on new delegate
|
|
368
|
+
expect(secondDelegate.subscribe).toHaveBeenCalledWith(
|
|
369
|
+
"notification",
|
|
370
|
+
handler,
|
|
371
|
+
);
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
describe("unsubscribe", () => {
|
|
376
|
+
it("should remove subscription from tracking", () => {
|
|
377
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
378
|
+
const transport = new ReconnectingWebSocketTransport({ getWsUrl });
|
|
379
|
+
|
|
380
|
+
const handler = vi.fn();
|
|
381
|
+
transport.subscribe("notification", handler);
|
|
382
|
+
expect((transport as any).pendingSubscriptions).toHaveLength(1);
|
|
383
|
+
|
|
384
|
+
transport.unsubscribe("notification", handler);
|
|
385
|
+
expect((transport as any).pendingSubscriptions).toHaveLength(0);
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
it("should unregister from delegate if it exists", async () => {
|
|
389
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
390
|
+
const transport = new ReconnectingWebSocketTransport({ getWsUrl });
|
|
391
|
+
|
|
392
|
+
await transport.connect();
|
|
393
|
+
|
|
394
|
+
const handler = vi.fn();
|
|
395
|
+
transport.subscribe("notification", handler);
|
|
396
|
+
|
|
397
|
+
const delegate = (transport as any).delegate;
|
|
398
|
+
delegate.unsubscribe.mockClear();
|
|
399
|
+
|
|
400
|
+
transport.unsubscribe("notification", handler);
|
|
401
|
+
|
|
402
|
+
expect(delegate.unsubscribe).toHaveBeenCalledWith(
|
|
403
|
+
"notification",
|
|
404
|
+
handler,
|
|
405
|
+
);
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
it("should not re-register unsubscribed handlers on reconnection", async () => {
|
|
409
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
410
|
+
const transport = new ReconnectingWebSocketTransport({ getWsUrl });
|
|
411
|
+
|
|
412
|
+
const handler1 = vi.fn();
|
|
413
|
+
const handler2 = vi.fn();
|
|
414
|
+
transport.subscribe("notification", handler1);
|
|
415
|
+
transport.subscribe("response", handler2);
|
|
416
|
+
|
|
417
|
+
await transport.connect();
|
|
418
|
+
|
|
419
|
+
// Unsubscribe handler1
|
|
420
|
+
transport.unsubscribe("notification", handler1);
|
|
421
|
+
|
|
422
|
+
// Simulate connection loss
|
|
423
|
+
mockConnection.readyState = WebSocket.CLOSED;
|
|
424
|
+
|
|
425
|
+
// Reconnect by sending data
|
|
426
|
+
const data: any = { method: "test", params: [] };
|
|
427
|
+
await transport.sendData(data, 5000);
|
|
428
|
+
|
|
429
|
+
const newDelegate = (transport as any).delegate;
|
|
430
|
+
|
|
431
|
+
// Only handler2 should be registered on the new delegate
|
|
432
|
+
expect(newDelegate.subscribe).not.toHaveBeenCalledWith(
|
|
433
|
+
"notification",
|
|
434
|
+
handler1,
|
|
435
|
+
);
|
|
436
|
+
expect(newDelegate.subscribe).toHaveBeenCalledWith("response", handler2);
|
|
437
|
+
});
|
|
438
|
+
});
|
|
290
439
|
});
|
|
@@ -23,6 +23,11 @@ export interface ReconnectingWebSocketTransportOptions {
|
|
|
23
23
|
onReconnect?: () => Promise<void>;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
interface Subscription {
|
|
27
|
+
event: "pending" | "notification" | "response" | "error";
|
|
28
|
+
handler: Parameters<Transport["subscribe"]>[1];
|
|
29
|
+
}
|
|
30
|
+
|
|
26
31
|
/**
|
|
27
32
|
* A WebSocket transport that automatically reconnects when the connection is lost.
|
|
28
33
|
* This handles cases like computer sleep/wake or network interruptions.
|
|
@@ -33,6 +38,7 @@ export class ReconnectingWebSocketTransport extends Transport {
|
|
|
33
38
|
private connectionPromise: Promise<void> | undefined;
|
|
34
39
|
private isClosed = false;
|
|
35
40
|
private hasConnectedBefore = false;
|
|
41
|
+
private pendingSubscriptions: Subscription[] = [];
|
|
36
42
|
|
|
37
43
|
constructor(options: ReconnectingWebSocketTransportOptions) {
|
|
38
44
|
super();
|
|
@@ -55,6 +61,12 @@ export class ReconnectingWebSocketTransport extends Transport {
|
|
|
55
61
|
|
|
56
62
|
// Create a new delegate
|
|
57
63
|
this.delegate = new WebSocketTransport(this.options.getWsUrl());
|
|
64
|
+
|
|
65
|
+
// Re-register all pending subscriptions on the new delegate
|
|
66
|
+
for (const { event, handler } of this.pendingSubscriptions) {
|
|
67
|
+
this.delegate.subscribe(event, handler);
|
|
68
|
+
}
|
|
69
|
+
|
|
58
70
|
return this.delegate;
|
|
59
71
|
}
|
|
60
72
|
|
|
@@ -134,6 +146,42 @@ export class ReconnectingWebSocketTransport extends Transport {
|
|
|
134
146
|
this.connectionPromise = undefined;
|
|
135
147
|
}
|
|
136
148
|
|
|
149
|
+
override subscribe(...args: Parameters<Transport["subscribe"]>): void {
|
|
150
|
+
// Register handler on parent Transport
|
|
151
|
+
super.subscribe(...args);
|
|
152
|
+
|
|
153
|
+
const [event, handler] = args;
|
|
154
|
+
|
|
155
|
+
// Track the subscription
|
|
156
|
+
this.pendingSubscriptions.push({ event, handler });
|
|
157
|
+
|
|
158
|
+
// Also register on delegate if it exists
|
|
159
|
+
if (this.delegate) {
|
|
160
|
+
this.delegate.subscribe(event, handler);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
override unsubscribe(
|
|
165
|
+
...args: Parameters<Transport["unsubscribe"]>
|
|
166
|
+
): import("events").EventEmitter | undefined {
|
|
167
|
+
// Unregister from parent
|
|
168
|
+
const result = super.unsubscribe(...args);
|
|
169
|
+
|
|
170
|
+
const [event, handler] = args;
|
|
171
|
+
|
|
172
|
+
// Remove from pending subscriptions
|
|
173
|
+
this.pendingSubscriptions = this.pendingSubscriptions.filter(
|
|
174
|
+
(sub) => !(sub.event === event && sub.handler === handler),
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
// Also unregister from delegate if it exists
|
|
178
|
+
if (this.delegate) {
|
|
179
|
+
this.delegate.unsubscribe(event, handler);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
|
|
137
185
|
override async sendData(
|
|
138
186
|
data: JSONRPCRequestData,
|
|
139
187
|
timeout: number | null | undefined,
|
package/src/css/app/Cell.css
CHANGED
|
@@ -249,7 +249,6 @@
|
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
/* Borderless styles for Cell */
|
|
252
|
-
|
|
253
252
|
&.borderless {
|
|
254
253
|
border-color: transparent;
|
|
255
254
|
|
|
@@ -258,7 +257,6 @@
|
|
|
258
257
|
}
|
|
259
258
|
|
|
260
259
|
/* Apply the original styles */
|
|
261
|
-
&:hover,
|
|
262
260
|
&:focus {
|
|
263
261
|
border: 1px solid var(--gray-4);
|
|
264
262
|
}
|
|
@@ -115,16 +115,18 @@ const TexComponent = ({
|
|
|
115
115
|
// isn't a simple way to do that in Python without bringing in a new
|
|
116
116
|
// dependency.
|
|
117
117
|
//
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
//
|
|
118
|
+
// When nested, the inner marimo-tex should not render because the outer
|
|
119
|
+
// marimo-tex's textContent includes the nested delimiters (||(||(x||)||))
|
|
120
|
+
// and will render correctly with displayMode: true. We detect this by
|
|
121
|
+
// checking if the parent element is also a marimo-tex.
|
|
122
|
+
const isNested = host.parentElement?.tagName.toLowerCase() === "marimo-tex";
|
|
121
123
|
|
|
122
124
|
// Re-render when the text content changes.
|
|
123
125
|
useLayoutEffect(() => {
|
|
124
|
-
if (ref.current) {
|
|
126
|
+
if (ref.current && !isNested) {
|
|
125
127
|
renderLatex(ref.current, currentTex);
|
|
126
128
|
}
|
|
127
|
-
}, [currentTex]);
|
|
129
|
+
}, [currentTex, isNested]);
|
|
128
130
|
|
|
129
131
|
return <span ref={ref} />;
|
|
130
132
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var He=Object.defineProperty;var Te=(t,e,i)=>e in t?He(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var R=(t,e,i)=>Te(t,typeof e!="symbol"?e+"":e,i);import{s as je}from"./chunk-LvLJmgfZ.js";import{i as Be,l as de,n as A,p as ge,u as ye}from"./useEvent-DlWF5OMa.js";import{t as qe}from"./react-BGmjiNul.js";import{Kn as $e,Pt as ce,Wr as Ve,pn as Le,qr as Ue,w as Ke}from"./cells-CqQgFV4b.js";import"./react-dom-C9fstfnp.js";import{t as ae}from"./compiler-runtime-DeeZ7FnK.js";import"./tooltip-CrRUCOBw.js";import{d as Ye,f as Ze}from"./hotkeys-uKX61F1_.js";import{t as Ge}from"./invariant-C6yE60hi.js";import{f as Je}from"./utils-pfqq9IdB.js";import{j as ie}from"./config-D6nhy4FA.js";import{t as Qe}from"./jsx-runtime-DN_bIXfG.js";import{n as Xe,t as I}from"./button-B8cGZzP5.js";import{t as he}from"./cn-C1rgT0yh.js";import{St as et,at as tt}from"./dist-CAcX026F.js";import{a as at,c as it,i as rt,o as nt,s as st}from"./JsonOutput-CLNTeasj.js";import"./cjs-Bj40p_Np.js";import"./main-CwSdzVhm.js";import"./useNonce-EAuSVK-5.js";import{n as lt,r as me}from"./requests-C0HaHO6a.js";import{t as K}from"./createLucideIcon-CW2xpJ57.js";import{t as ot}from"./arrow-left-DdsrQ78n.js";import{n as dt,t as ct}from"./LazyAnyLanguageCodeMirror-Cp2punaU.js";import{_ as ht}from"./select-D9lTzMzP.js";import{n as mt,t as ve}from"./download-7BValYrD.js";import{t as pt}from"./chevron-right-CqEd11Di.js";import{f as pe}from"./maps-s2pQkyf5.js";import{n as ft}from"./markdown-renderer-zLvh4wvy.js";import{a as S,c as Y,p as xt,r as ut,t as jt}from"./dropdown-menu-BP4_BZLr.js";import{t as be}from"./copy-gBVL4NN-.js";import{t as we}from"./download-DobaYJPt.js";import{t as gt}from"./ellipsis-vertical-CasjS3M6.js";import{t as yt}from"./eye-off-D9zAYqG9.js";import{n as ke,r as vt,t as bt}from"./types-CaZe7wKe.js";import{t as Fe}from"./file-plus-corner-BO_uS88s.js";import{t as wt}from"./spinner-C1czjtp7.js";import{t as kt}from"./refresh-ccw-DbW1_PHb.js";import{t as Ft}from"./refresh-cw-Din9uFKE.js";import{t as Ct}from"./save-BOTLFf-P.js";import{t as Nt}from"./trash-2-C-lF7BNB.js";import{t as St}from"./triangle-alert-CbD0f2J6.js";import{i as Dt,n as Pt,t as _t}from"./es-FiXEquL2.js";import"./dist-HGZzCB0y.js";import"./dist-CVj-_Iiz.js";import"./dist-BVf1IY4_.js";import"./dist-Cq_4nPfh.js";import"./dist-RKnr9SNh.js";import{t as W}from"./use-toast-Bzf3rpev.js";import{r as zt}from"./useTheme-CNj0G_ol.js";import"./Combination-D1TsGrBC.js";import{t as O}from"./tooltip-CvjcEpZC.js";import"./dates-CdsE1R40.js";import{o as Ot}from"./alert-dialog-jcHA5geR.js";import"./popover-DtnzNVk-.js";import{n as Ce}from"./ImperativeModal-DVhvP4lH.js";import{a as Mt,n as Ne}from"./error-banner-DvT0IGDZ.js";import"./vega-loader.browser-C8wT63Va.js";import"./defaultLocale-BLUna9fQ.js";import"./defaultLocale-DzliDDTm.js";import{t as re}from"./copy-DRhpWiOq.js";import"./purify.es-N-2faAGj.js";import{a as Rt,i as At,n as fe,r as Wt,t as It}from"./tree-CeX0mTvA.js";import{n as Et,t as Ht}from"./alert-BEdExd6A.js";import{n as Se}from"./useAsyncData-BJJJOr9W.js";import"./chunk-OGVTOU66-CjNLT2C3.js";import"./katex-AwOI3EvM.js";import"./marked.esm-CHnOtnr3.js";import"./es-DZXbHzby.js";import{o as Tt}from"./focus-iNK7gxqn.js";import{a as Bt}from"./renderShortcut-eU5Hsfml.js";import{n as qt}from"./blob-Dg_vNTSs.js";import{t as $t}from"./bundle.esm-B0Sy2M4C.js";import{t as Vt}from"./links-D529u6GQ.js";import{t as Lt}from"./icon-32x32-ZZIB7rLH.js";import{t as Z}from"./Inputs-DmoeP8nh.js";var Ut=K("copy-minus",[["line",{x1:"12",x2:"18",y1:"15",y2:"15",key:"1nscbv"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),De=K("folder-plus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),Pe=K("list-tree",[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]]),Kt=K("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]),Yt=K("square-play",[["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}],["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}]]),Zt=K("view",[["path",{d:"M21 17v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2",key:"mrq65r"}],["path",{d:"M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2",key:"be3xqs"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0",key:"11ak4c"}]]),_e=ae(),F=je(qe(),1),a=je(Qe(),1),ze=(0,F.createContext)(null);function Gt(){return(0,F.useContext)(ze)??void 0}var Jt=t=>{let e=(0,_e.c)(3),{children:i}=t,n=At(),s;return e[0]!==i||e[1]!==n?(s=(0,a.jsx)(ze.Provider,{value:n,children:i}),e[0]=i,e[1]=n,e[2]=s):s=e[2],s};const Qt=t=>{let e=(0,_e.c)(5),{children:i}=t,[n,s]=(0,F.useState)(null),r;e[0]!==i||e[1]!==n?(r=n&&(0,a.jsx)(Rt,{backend:Wt,options:{rootElement:n},children:(0,a.jsx)(Jt,{children:i})}),e[0]=i,e[1]=n,e[2]=r):r=e[2];let d;return e[3]===r?d=e[4]:(d=(0,a.jsx)("div",{ref:s,className:"contents",children:r}),e[3]=r,e[4]=d),d};var xe=new Map;const Xt=({file:t,onOpenNotebook:e})=>{let{theme:i}=zt(),{sendFileDetails:n,sendUpdateFile:s}=me(),r=ye(Je),d=ye(Ve),[c,x]=(0,F.useState)(""),{data:l,isPending:g,error:u,setData:b,refetch:h}=Se(async()=>{let o=await n({path:t.path}),j=o.contents||"";return x(xe.get(t.path)||j),o},[t.path]),p=async()=>{c!==(l==null?void 0:l.contents)&&await s({path:t.path,contents:c}).then(o=>{o.success&&(b(j=>({...j,contents:c})),x(c))})},y=(0,F.useRef)(c);if(y.current=c,(0,F.useEffect)(()=>()=>{if(!(l!=null&&l.contents))return;let o=y.current;o===l.contents?xe.delete(t.path):xe.set(t.path,o)},[t.path,l==null?void 0:l.contents]),u)return(0,a.jsx)(Ne,{error:u});if(g||!l)return null;let f=l.mimeType||"text/plain",k=f in ue,D=d&&l.file.isMarimoFile&&(t.path===d||t.path.endsWith(`/${d}`));if(!l.contents&&!k)return(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-2 p-6",children:[(0,a.jsx)("div",{className:"font-bold text-muted-foreground",children:"Name"}),(0,a.jsx)("div",{children:l.file.name}),(0,a.jsx)("div",{className:"font-bold text-muted-foreground",children:"Type"}),(0,a.jsx)("div",{children:f})]});let v=(0,a.jsxs)("div",{className:"text-xs text-muted-foreground p-1 flex justify-end gap-2 border-b",children:[(0,a.jsx)(O,{content:"Refresh",children:(0,a.jsx)(Z,{size:"small",onClick:h,children:(0,a.jsx)(Ft,{})})}),t.isMarimoFile&&!ie()&&(0,a.jsx)(O,{content:"Open notebook",children:(0,a.jsx)(Z,{size:"small",onClick:o=>e(o),children:(0,a.jsx)(pe,{})})}),(0,a.jsx)(O,{content:"Download",children:(0,a.jsx)(Z,{size:"small",onClick:()=>{if(Oe(f)){mt(ft(l.contents,f),l.file.name);return}ve(new Blob([l.contents||c],{type:f}),l.file.name)},children:(0,a.jsx)(we,{})})}),!Oe(f)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(O,{content:"Copy contents to clipboard",children:(0,a.jsx)(Z,{size:"small",onClick:async()=>{await re(c)},children:(0,a.jsx)(be,{})})}),(0,a.jsx)(O,{content:Bt("global.save"),children:(0,a.jsx)(Z,{size:"small",color:c===l.contents?void 0:"green",onClick:p,disabled:c===l.contents,children:(0,a.jsx)(Ct,{})})})]})]});return f.startsWith("image/")?(0,a.jsxs)(a.Fragment,{children:[v,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(nt,{base64:l.contents,mime:f})})]}):f==="text/csv"&&l.contents?(0,a.jsxs)(a.Fragment,{children:[v,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(at,{contents:l.contents})})]}):f.startsWith("audio/")?(0,a.jsxs)(a.Fragment,{children:[v,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(rt,{base64:l.contents,mime:f})})]}):f.startsWith("video/")?(0,a.jsxs)(a.Fragment,{children:[v,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(it,{base64:l.contents,mime:f})})]}):f.startsWith("application/pdf")?(0,a.jsxs)(a.Fragment,{children:[v,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(st,{base64:l.contents,mime:f})})]}):(0,a.jsxs)(a.Fragment,{children:[v,D&&(0,a.jsxs)(Ht,{variant:"warning",className:"rounded-none",children:[(0,a.jsx)(St,{className:"h-4 w-4"}),(0,a.jsx)(Et,{children:"Editing the notebook file directly while running in marimo's editor may cause unintended changes. Please use with caution."})]}),(0,a.jsx)("div",{className:"flex-1 overflow-auto",children:(0,a.jsx)(F.Suspense,{children:(0,a.jsx)(ct,{theme:i==="dark"?"dark":"light",language:ue[f]||ue.default,className:"border-b",extensions:[tt.lineWrapping,et.of([{key:r.getHotkey("global.save").key,stopPropagation:!0,run:()=>c===l.contents?!1:(p(),!0)}])],value:c,onChange:x})})})]})};var Oe=t=>t?t.startsWith("image/")||t.startsWith("audio/")||t.startsWith("video/")||t.startsWith("application/pdf"):!1,ue={"application/javascript":"javascript","text/markdown":"markdown","text/html":"html","text/css":"css","text/x-python":"python","application/json":"json","application/xml":"xml","text/x-yaml":"yaml","text/csv":"markdown","text/plain":"markdown",default:"markdown"},ea=class{constructor(t){R(this,"delegate",new fe([]));R(this,"rootPath","");R(this,"onChange",Ze.NOOP);R(this,"path",new ce("/"));R(this,"initialize",async t=>{if(this.onChange=t,this.delegate.data.length===0)try{let e=await this.callbacks.listFiles({path:this.rootPath});this.delegate=new fe(e.files),this.rootPath=e.root,this.path=ce.guessDeliminator(e.root)}catch(e){W({title:"Failed",description:Mt(e)})}this.onChange(this.delegate.data)});R(this,"refreshAll",async t=>{let e=[this.rootPath,...t.map(n=>{var s;return(s=this.delegate.find(n))==null?void 0:s.data.path})].filter(Boolean),i=await Promise.all(e.map(n=>this.callbacks.listFiles({path:n}).catch(()=>({files:[]}))));for(let[n,s]of e.entries()){let r=i[n];s===this.rootPath?this.delegate=new fe(r.files):this.delegate.update({id:s,changes:{children:r.files}})}this.onChange(this.delegate.data)});R(this,"relativeFromRoot",t=>{let e=this.rootPath.endsWith(this.path.deliminator)?this.rootPath:`${this.rootPath}${this.path.deliminator}`;return t.startsWith(e)?t.slice(e.length):t});R(this,"handleResponse",t=>t.success?t:(W({title:"Failed",description:t.message}),null));this.callbacks=t}async expand(t){let e=this.delegate.find(t);if(!e||!e.data.isDirectory)return!1;if(e.children&&e.children.length>0)return!0;let i=await this.callbacks.listFiles({path:e.data.path});return this.delegate.update({id:t,changes:{children:i.files}}),this.onChange(this.delegate.data),!0}async rename(t,e){let i=this.delegate.find(t);if(!i)return;let n=i.data.path,s=this.path.join(this.path.dirname(n),e);await this.callbacks.renameFileOrFolder({path:n,newPath:s}).then(this.handleResponse),this.delegate.update({id:t,changes:{name:e,path:s}}),this.onChange(this.delegate.data),await this.refreshAll([s])}async move(t,e){var n;let i=e?((n=this.delegate.find(e))==null?void 0:n.data.path)??e:this.rootPath;await Promise.all(t.map(s=>{this.delegate.move({id:s,parentId:e,index:0});let r=this.delegate.find(s);if(!r)return Promise.resolve();let d=this.path.join(i,this.path.basename(r.data.path));return this.delegate.update({id:s,changes:{path:d}}),this.callbacks.renameFileOrFolder({path:r.data.path,newPath:d}).then(this.handleResponse)})),this.onChange(this.delegate.data),await this.refreshAll([i])}async createFile(t,e){var s;let i=e?((s=this.delegate.find(e))==null?void 0:s.data.path)??e:this.rootPath,n=await this.callbacks.createFileOrFolder({path:i,type:"file",name:t}).then(this.handleResponse);n!=null&&n.info&&(this.delegate.create({parentId:e,index:0,data:n.info}),this.onChange(this.delegate.data),await this.refreshAll([i]))}async createFolder(t,e){var s;let i=e?((s=this.delegate.find(e))==null?void 0:s.data.path)??e:this.rootPath,n=await this.callbacks.createFileOrFolder({path:i,type:"directory",name:t}).then(this.handleResponse);n!=null&&n.info&&(this.delegate.create({parentId:e,index:0,data:n.info}),this.onChange(this.delegate.data),await this.refreshAll([i]))}async delete(t){let e=this.delegate.find(t);e&&(await this.callbacks.deleteFileOrFolder({path:e.data.path}).then(this.handleResponse),this.delegate.drop({id:t}),this.onChange(this.delegate.data))}};const Me=ge(t=>{let e=t(lt);return Ge(e,"no requestClientAtom set"),new ea({listFiles:e.sendListFiles,createFileOrFolder:e.sendCreateFileOrFolder,deleteFileOrFolder:e.sendDeleteFileOrFolder,renameFileOrFolder:e.sendRenameFileOrFolder})}),ta=ge({});async function aa(){await Be.get(Me).refreshAll([])}var ia=ae(),ra=1024*1024*100;function Re(t){let e=(0,ia.c)(7),i;e[0]===t?i=e[1]:(i=t===void 0?{}:t,e[0]=t,e[1]=i);let n=i,{sendCreateFileOrFolder:s}=me(),r;e[2]===s?r=e[3]:(r=async c=>{for(let x of c){let l=ca(da(x)),g="";l&&(g=ce.guessDeliminator(l).dirname(l));let u=(await qt(x)).split(",")[1];await s({path:g,type:"file",name:x.name,contents:u})}await aa()},e[2]=s,e[3]=r);let d;return e[4]!==n||e[5]!==r?(d={multiple:!0,maxSize:ra,onError:oa,onDropRejected:na,onDrop:r,...n},e[4]=n,e[5]=r,e[6]=d):d=e[6],_t(d)}function na(t){W({title:"File upload failed",description:(0,a.jsx)("div",{className:"flex flex-col gap-1",children:t.map(sa)}),variant:"danger"})}function sa(t){return(0,a.jsxs)("div",{children:[t.file.name," (",t.errors.map(la).join(", "),")"]},t.file.name)}function la(t){return t.message}function oa(t){Ye.error(t),W({title:"File upload failed",description:t.message,variant:"danger"})}function da(t){if(t.webkitRelativePath)return t.webkitRelativePath;if("path"in t&&typeof t.path=="string")return t.path;if("relativePath"in t&&typeof t.relativePath=="string")return t.relativePath}function ca(t){if(t)return t.replace(/^\/+/,"")}var G=ae(),ha=Ue("marimo:showHiddenFiles",!0,Le,{getOnInit:!0}),Ae=F.createContext(null);const ma=t=>{let e=(0,G.c)(68),{height:i}=t,n=(0,F.useRef)(null),s=Gt(),[r]=de(Me),d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=[],e[0]=d):d=e[0];let[c,x]=(0,F.useState)(d),[l,g]=(0,F.useState)(null),[u,b]=de(ha),{openPrompt:h}=Ce(),[p,y]=de(ta),f;e[1]===r?f=e[2]:(f=()=>r.initialize(x),e[1]=r,e[2]=f);let k;e[3]===Symbol.for("react.memo_cache_sentinel")?(k=[],e[3]=k):k=e[3];let{isPending:D,error:v}=Se(f,k),o;e[4]!==p||e[5]!==r?(o=()=>{r.refreshAll(Object.keys(p).filter(m=>p[m]))},e[4]=p,e[5]=r,e[6]=o):o=e[6];let j=A(o),z;e[7]!==b||e[8]!==u?(z=()=>{b(!u)},e[7]=b,e[8]=u,e[9]=z):z=e[9];let C=A(z),P;e[10]!==h||e[11]!==r?(P=async()=>{h({title:"Folder name",onConfirm:async m=>{r.createFolder(m,null)}})},e[10]=h,e[11]=r,e[12]=P):P=e[12];let N=A(P),M;e[13]!==h||e[14]!==r?(M=async()=>{h({title:"File name",onConfirm:async m=>{r.createFile(m,null)}})},e[13]=h,e[14]=r,e[15]=M):M=e[15];let ne=A(M),J;e[16]===y?J=e[17]:(J=()=>{var m;(m=n.current)==null||m.closeAll(),y({})},e[16]=y,e[17]=J);let se=A(J),Q;e[18]!==c||e[19]!==u?(Q=Ie(c,u),e[18]=c,e[19]=u,e[20]=Q):Q=e[20];let le=Q;if(D){let m;return e[21]===Symbol.for("react.memo_cache_sentinel")?(m=(0,a.jsx)(wt,{size:"medium",centered:!0}),e[21]=m):m=e[21],m}if(v){let m;return e[22]===v?m=e[23]:(m=(0,a.jsx)(Ne,{error:v}),e[22]=v,e[23]=m),m}if(l){let m;e[24]===Symbol.for("react.memo_cache_sentinel")?(m=()=>g(null),e[24]=m):m=e[24];let w;e[25]===Symbol.for("react.memo_cache_sentinel")?(w=(0,a.jsx)(I,{onClick:m,"data-testid":"file-explorer-back-button",variant:"text",size:"xs",className:"mb-0",children:(0,a.jsx)(ot,{size:16})}),e[25]=w):w=e[25];let _;e[26]===l.name?_=e[27]:(_=(0,a.jsxs)("div",{className:"flex items-center pl-1 pr-3 shrink-0 border-b justify-between",children:[w,(0,a.jsx)("span",{className:"font-bold",children:l.name})]}),e[26]=l.name,e[27]=_);let L;e[28]!==l.path||e[29]!==r?(L=Ee=>We(Ee,r.relativeFromRoot(l.path)),e[28]=l.path,e[29]=r,e[30]=L):L=e[30];let U;e[31]!==l||e[32]!==L?(U=(0,a.jsx)(F.Suspense,{children:(0,a.jsx)(Xt,{onOpenNotebook:L,file:l})}),e[31]=l,e[32]=L,e[33]=U):U=e[33];let te;return e[34]!==_||e[35]!==U?(te=(0,a.jsxs)(a.Fragment,{children:[_,U]}),e[34]=_,e[35]=U,e[36]=te):te=e[36],te}let E;e[37]!==se||e[38]!==ne||e[39]!==N||e[40]!==C||e[41]!==j||e[42]!==r?(E=(0,a.jsx)(fa,{onRefresh:j,onHidden:C,onCreateFile:ne,onCreateFolder:N,onCollapseAll:se,tree:r}),e[37]=se,e[38]=ne,e[39]=N,e[40]=C,e[41]=j,e[42]=r,e[43]=E):E=e[43];let oe=i-33,H,T,B;e[44]===r?(H=e[45],T=e[46],B=e[47]):(H=async m=>{let{ids:w}=m;for(let _ of w)await r.delete(_)},T=async m=>{let{id:w,name:_}=m;await r.rename(w,_)},B=async m=>{let{dragIds:w,parentId:_}=m;await r.move(w,_)},e[44]=r,e[45]=H,e[46]=T,e[47]=B);let X;e[48]===Symbol.for("react.memo_cache_sentinel")?(X=m=>{let w=m[0];w&&(w.data.isDirectory||g(w.data))},e[48]=X):X=e[48];let q;e[49]!==p||e[50]!==y||e[51]!==r?(q=async m=>{if(await r.expand(m)){let w=p[m]??!1;y({...p,[m]:!w})}},e[49]=p,e[50]=y,e[51]=r,e[52]=q):q=e[52];let $;e[53]!==s||e[54]!==p||e[55]!==oe||e[56]!==H||e[57]!==T||e[58]!==B||e[59]!==q||e[60]!==le?($=(0,a.jsx)(It,{width:"100%",ref:n,height:oe,className:"h-full",data:le,initialOpenState:p,openByDefault:!1,dndManager:s,renderCursor:va,disableDrop:ba,onDelete:H,onRename:T,onMove:B,onSelect:X,onToggle:q,padding:15,rowHeight:30,indent:pa,overscanCount:1e3,disableMultiSelection:!0,children:ja}),e[53]=s,e[54]=p,e[55]=oe,e[56]=H,e[57]=T,e[58]=B,e[59]=q,e[60]=le,e[61]=$):$=e[61];let V;e[62]!==$||e[63]!==r?(V=(0,a.jsx)(Ae,{value:r,children:$}),e[62]=$,e[63]=r,e[64]=V):V=e[64];let ee;return e[65]!==E||e[66]!==V?(ee=(0,a.jsxs)(a.Fragment,{children:[E,V]}),e[65]=E,e[66]=V,e[67]=ee):ee=e[67],ee};var pa=15,fa=t=>{let e=(0,G.c)(34),{onRefresh:i,onHidden:n,onCreateFile:s,onCreateFolder:r,onCollapseAll:d}=t,c;e[0]===Symbol.for("react.memo_cache_sentinel")?(c={noDrag:!0,noDragEventsBubbling:!0},e[0]=c):c=e[0];let{getRootProps:x,getInputProps:l}=Re(c),g;e[1]===Symbol.for("react.memo_cache_sentinel")?(g=(0,a.jsx)(Fe,{size:16}),e[1]=g):g=e[1];let u;e[2]===s?u=e[3]:(u=(0,a.jsx)(O,{content:"Add file",children:(0,a.jsx)(I,{"data-testid":"file-explorer-add-file-button",onClick:s,variant:"text",size:"xs",children:g})}),e[2]=s,e[3]=u);let b;e[4]===Symbol.for("react.memo_cache_sentinel")?(b=(0,a.jsx)(De,{size:16}),e[4]=b):b=e[4];let h;e[5]===r?h=e[6]:(h=(0,a.jsx)(O,{content:"Add folder",children:(0,a.jsx)(I,{"data-testid":"file-explorer-add-folder-button",onClick:r,variant:"text",size:"xs",children:b})}),e[5]=r,e[6]=h);let p;e[7]===x?p=e[8]:(p=x({}),e[7]=x,e[8]=p);let y,f;e[9]===Symbol.for("react.memo_cache_sentinel")?(y=Xe({variant:"text",size:"xs"}),f=(0,a.jsx)(Dt,{size:16}),e[9]=y,e[10]=f):(y=e[9],f=e[10]);let k;e[11]===p?k=e[12]:(k=(0,a.jsx)(O,{content:"Upload file",children:(0,a.jsx)("button",{"data-testid":"file-explorer-upload-button",...p,className:y,children:f})}),e[11]=p,e[12]=k);let D;e[13]===l?D=e[14]:(D=l({}),e[13]=l,e[14]=D);let v;e[15]===D?v=e[16]:(v=(0,a.jsx)("input",{...D,type:"file"}),e[15]=D,e[16]=v);let o;e[17]===Symbol.for("react.memo_cache_sentinel")?(o=(0,a.jsx)(kt,{size:16}),e[17]=o):o=e[17];let j;e[18]===i?j=e[19]:(j=(0,a.jsx)(O,{content:"Refresh",children:(0,a.jsx)(I,{"data-testid":"file-explorer-refresh-button",onClick:i,variant:"text",size:"xs",children:o})}),e[18]=i,e[19]=j);let z;e[20]===Symbol.for("react.memo_cache_sentinel")?(z=(0,a.jsx)(yt,{size:16}),e[20]=z):z=e[20];let C;e[21]===n?C=e[22]:(C=(0,a.jsx)(O,{content:"Toggle hidden files",children:(0,a.jsx)(I,{"data-testid":"file-explorer-hidden-files-button",onClick:n,variant:"text",size:"xs",children:z})}),e[21]=n,e[22]=C);let P;e[23]===Symbol.for("react.memo_cache_sentinel")?(P=(0,a.jsx)(Ut,{size:16}),e[23]=P):P=e[23];let N;e[24]===d?N=e[25]:(N=(0,a.jsx)(O,{content:"Collapse all folders",children:(0,a.jsx)(I,{"data-testid":"file-explorer-collapse-button",onClick:d,variant:"text",size:"xs",children:P})}),e[24]=d,e[25]=N);let M;return e[26]!==v||e[27]!==j||e[28]!==C||e[29]!==N||e[30]!==u||e[31]!==h||e[32]!==k?(M=(0,a.jsxs)("div",{className:"flex items-center justify-end px-2 shrink-0 border-b",children:[u,h,k,v,j,C,N]}),e[26]=v,e[27]=j,e[28]=C,e[29]=N,e[30]=u,e[31]=h,e[32]=k,e[33]=M):M=e[33],M},xa=t=>{let e=(0,G.c)(9),{node:i,onOpenMarimoFile:n}=t,s;e[0]===i?s=e[1]:(s=c=>{i.data.isDirectory||(c.stopPropagation(),i.select())},e[0]=i,e[1]=s);let r;e[2]!==i.data.isMarimoFile||e[3]!==n?(r=i.data.isMarimoFile&&!ie()&&(0,a.jsxs)("span",{className:"shrink-0 ml-2 text-sm hidden group-hover:inline hover:underline",onClick:n,children:["open ",(0,a.jsx)(pe,{className:"inline ml-1",size:12})]}),e[2]=i.data.isMarimoFile,e[3]=n,e[4]=r):r=e[4];let d;return e[5]!==i.data.name||e[6]!==s||e[7]!==r?(d=(0,a.jsxs)("span",{className:"flex-1 overflow-hidden text-ellipsis",onClick:s,children:[i.data.name,r]}),e[5]=i.data.name,e[6]=s,e[7]=r,e[8]=d):d=e[8],d},ua=t=>{let e=(0,G.c)(10),{node:i}=t,n=(0,F.useRef)(null),s,r;e[0]===i.data.name?(s=e[1],r=e[2]):(s=()=>{var l,g;(l=n.current)==null||l.focus(),(g=n.current)==null||g.setSelectionRange(0,i.data.name.lastIndexOf("."))},r=[i.data.name],e[0]=i.data.name,e[1]=s,e[2]=r),(0,F.useEffect)(s,r);let d,c;e[3]===i?(d=e[4],c=e[5]):(d=()=>i.reset(),c=l=>{l.key==="Escape"&&i.reset(),l.key==="Enter"&&i.submit(l.currentTarget.value)},e[3]=i,e[4]=d,e[5]=c);let x;return e[6]!==i.data.name||e[7]!==d||e[8]!==c?(x=(0,a.jsx)("input",{ref:n,className:"flex-1 bg-transparent border border-border text-muted-foreground",defaultValue:i.data.name,onClick:wa,onBlur:d,onKeyDown:c}),e[6]=i.data.name,e[7]=d,e[8]=c,e[9]=x):x=e[9],x},ja=({node:t,style:e,dragHandle:i})=>{let{openFile:n,sendCreateFileOrFolder:s,sendFileDetails:r}=me(),d=t.data.isDirectory?"directory":vt(t.data.name),c=bt[d],{openConfirm:x,openPrompt:l}=Ce(),{createNewCell:g}=Ke(),u=Tt(),b=o=>{g({code:o,before:!1,cellId:u??"__end__"})},h=(0,F.use)(Ae),p=async o=>{We(o,h?h.relativeFromRoot(t.data.path):t.data.path)},y=async o=>{o.stopPropagation(),o.preventDefault(),x({title:"Delete file",description:`Are you sure you want to delete ${t.data.name}?`,confirmAction:(0,a.jsx)(Ot,{onClick:async()=>{await t.tree.delete(t.id)},"aria-label":"Confirm",children:"Delete"})})},f=A(async()=>{t.open(),l({title:"Folder name",onConfirm:async o=>{h==null||h.createFolder(o,t.id)}})}),k=A(async()=>{t.open(),l({title:"File name",onConfirm:async o=>{h==null||h.createFile(o,t.id)}})}),D=A(async()=>{var C;if(!h||t.data.isDirectory)return;let[o,j]=Pt(t.data.name),z=`${o}_copy${j}`;try{let P=await r({path:t.data.path}),N=((C=t.parent)==null?void 0:C.data.path)||"";await s({path:N,type:"file",name:z,contents:P.contents?btoa(P.contents):void 0}),await h.refreshAll([N])}catch{W({title:"Failed to duplicate file",description:"Unable to create a duplicate of the file",variant:"danger"})}}),v=()=>{let o={size:14,strokeWidth:1.5,className:"mr-2"};return(0,a.jsxs)(ut,{align:"end",className:"no-print w-[220px]",onClick:j=>j.stopPropagation(),onCloseAutoFocus:j=>j.preventDefault(),children:[!t.data.isDirectory&&(0,a.jsxs)(S,{onSelect:()=>t.select(),children:[(0,a.jsx)(Zt,{...o}),"Open file"]}),!t.data.isDirectory&&!ie()&&(0,a.jsxs)(S,{onSelect:()=>{n({path:t.data.path})},children:[(0,a.jsx)(pe,{...o}),"Open file in external editor"]}),t.data.isDirectory&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(S,{onSelect:()=>k(),children:[(0,a.jsx)(Fe,{...o}),"Create file"]}),(0,a.jsxs)(S,{onSelect:()=>f(),children:[(0,a.jsx)(De,{...o}),"Create folder"]}),(0,a.jsx)(Y,{})]}),(0,a.jsxs)(S,{onSelect:()=>t.edit(),children:[(0,a.jsx)(Kt,{...o}),"Rename"]}),!t.data.isDirectory&&(0,a.jsxs)(S,{onSelect:D,children:[(0,a.jsx)(be,{...o}),"Duplicate"]}),(0,a.jsxs)(S,{onSelect:async()=>{await re(t.data.path),W({title:"Copied to clipboard"})},children:[(0,a.jsx)(Pe,{...o}),"Copy path"]}),h&&(0,a.jsxs)(S,{onSelect:async()=>{await re(h.relativeFromRoot(t.data.path)),W({title:"Copied to clipboard"})},children:[(0,a.jsx)(Pe,{...o}),"Copy relative path"]}),(0,a.jsx)(Y,{}),(0,a.jsxs)(S,{onSelect:()=>{let{path:j}=t.data;b(ke[d](j))},children:[(0,a.jsx)(dt,{...o}),"Insert snippet for reading file"]}),(0,a.jsxs)(S,{onSelect:async()=>{W({title:"Copied to clipboard",description:"Code to open the file has been copied to your clipboard. You can also drag and drop this file into the editor"});let{path:j}=t.data;await re(ke[d](j))},children:[(0,a.jsx)($e,{...o}),"Copy snippet for reading file"]}),t.data.isMarimoFile&&!ie()&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(Y,{}),(0,a.jsxs)(S,{onSelect:p,children:[(0,a.jsx)(Yt,{...o}),"Open notebook"]})]}),(0,a.jsx)(Y,{}),!t.data.isDirectory&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(S,{onSelect:async()=>{let j=(await r({path:t.data.path})).contents||"";ve(new Blob([j]),t.data.name)},children:[(0,a.jsx)(we,{...o}),"Download"]}),(0,a.jsx)(Y,{})]}),(0,a.jsxs)(S,{onSelect:y,variant:"danger",children:[(0,a.jsx)(Nt,{...o}),"Delete"]})]})};return(0,a.jsxs)("div",{style:e,ref:i,className:he("flex items-center cursor-pointer ml-1 text-muted-foreground whitespace-nowrap group"),draggable:!0,onClick:o=>{o.stopPropagation(),t.data.isDirectory&&t.toggle()},children:[(0,a.jsx)(ga,{node:t}),(0,a.jsxs)("span",{className:he("flex items-center pl-1 py-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden group",t.willReceiveDrop&&t.data.isDirectory&&"bg-accent/80 hover:bg-accent/80 text-accent-foreground"),children:[t.data.isMarimoFile?(0,a.jsx)("img",{src:Lt,className:"w-5 h-5 shrink-0 mr-2 filter grayscale",alt:"Marimo"}):(0,a.jsx)(c,{className:"w-5 h-5 shrink-0 mr-2",strokeWidth:1.5}),t.isEditing?(0,a.jsx)(ua,{node:t}):(0,a.jsx)(xa,{node:t,onOpenMarimoFile:p}),(0,a.jsxs)(jt,{modal:!1,children:[(0,a.jsx)(xt,{asChild:!0,tabIndex:-1,onClick:o=>o.stopPropagation(),children:(0,a.jsx)(I,{"data-testid":"file-explorer-more-button",variant:"text",tabIndex:-1,size:"xs",className:"mb-0","aria-label":"More options",children:(0,a.jsx)(gt,{strokeWidth:2,className:"w-5 h-5 hidden group-hover:block"})})}),v()]})]})]})},ga=t=>{let e=(0,G.c)(3),{node:i}=t;if(!i.data.isDirectory){let s;return e[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsx)("span",{className:"w-5 h-5 shrink-0"}),e[0]=s):s=e[0],s}let n;return e[1]===i.isOpen?n=e[2]:(n=i.isOpen?(0,a.jsx)(ht,{className:"w-5 h-5 shrink-0"}):(0,a.jsx)(pt,{className:"w-5 h-5 shrink-0"}),e[1]=i.isOpen,e[2]=n),n};function We(t,e){t.stopPropagation(),t.preventDefault(),Vt(e)}function Ie(t,e){if(e)return t;let i=[];for(let n of t){if(ya(n.name))continue;let s=n;if(n.children){let r=Ie(n.children,e);r!==n.children&&(s={...n,children:r})}i.push(s)}return i}function ya(t){return!!t.startsWith(".")}function va(){return null}function ba(t){let{parentNode:e}=t;return!e.data.isDirectory}function wa(t){return t.stopPropagation()}var ka=ae(),Fa=()=>{let t=(0,ka.c)(20),{ref:e,height:i}=$t(),n=i===void 0?1:i,s;t[0]===Symbol.for("react.memo_cache_sentinel")?(s={noClick:!0,noKeyboard:!0},t[0]=s):s=t[0];let{getRootProps:r,getInputProps:d,isDragActive:c}=Re(s),x;t[1]===r?x=t[2]:(x=r(),t[1]=r,t[2]=x);let l;t[3]===Symbol.for("react.memo_cache_sentinel")?(l=he("flex flex-col flex-1 overflow-hidden relative"),t[3]=l):l=t[3];let g;t[4]===d?g=t[5]:(g=d(),t[4]=d,t[5]=g);let u;t[6]===g?u=t[7]:(u=(0,a.jsx)("input",{...g}),t[6]=g,t[7]=u);let b;t[8]===c?b=t[9]:(b=c&&(0,a.jsx)("div",{className:"absolute inset-0 flex items-center uppercase justify-center text-xl font-bold text-primary/90 bg-accent/85 z-10 border-2 border-dashed border-primary/90 rounded-lg pointer-events-none",children:"Drop files here"}),t[8]=c,t[9]=b);let h;t[10]===n?h=t[11]:(h=(0,a.jsx)(ma,{height:n}),t[10]=n,t[11]=h);let p;t[12]!==e||t[13]!==h?(p=(0,a.jsx)("div",{ref:e,className:"flex flex-col flex-1 overflow-hidden",children:h}),t[12]=e,t[13]=h,t[14]=p):p=t[14];let y;return t[15]!==x||t[16]!==u||t[17]!==b||t[18]!==p?(y=(0,a.jsx)(Qt,{children:(0,a.jsxs)("div",{...x,className:l,children:[u,b,p]})}),t[15]=x,t[16]=u,t[17]=b,t[18]=p,t[19]=y):y=t[19],y};export{Fa as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as n}from"./config-D6nhy4FA.js";function t(o){window.open(n(`?file=${o}`).toString(),"_blank")}export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as g}from"./chunk-LvLJmgfZ.js";import{u as d}from"./useEvent-DlWF5OMa.js";import{t as A}from"./compiler-runtime-DeeZ7FnK.js";import{s as v,t as b}from"./hotkeys-uKX61F1_.js";import{f as p}from"./utils-pfqq9IdB.js";import{t as D}from"./jsx-runtime-DN_bIXfG.js";import{t as y}from"./cn-C1rgT0yh.js";import{l as S}from"./dropdown-menu-BP4_BZLr.js";import{t as h}from"./tooltip-CvjcEpZC.js";import{t as x}from"./kbd-Czc5z_04.js";var f=A(),m=g(D(),1);function _(o,e=!0){return(0,m.jsx)(E,{shortcut:o,includeName:e})}var E=o=>{let e=(0,f.c)(11),{shortcut:l,includeName:s}=o,t=s===void 0?!0:s,a=d(p),n;e[0]!==a||e[1]!==l?(n=a.getHotkey(l),e[0]=a,e[1]=l,e[2]=n):n=e[2];let r=n,c;e[3]!==r.name||e[4]!==t?(c=t&&(0,m.jsx)("span",{className:"mr-2",children:r.name}),e[3]=r.name,e[4]=t,e[5]=c):c=e[5];let i;e[6]===r.key?i=e[7]:(i=(0,m.jsx)(j,{shortcut:r.key}),e[6]=r.key,e[7]=i);let u;return e[8]!==c||e[9]!==i?(u=(0,m.jsxs)("span",{className:"inline-flex",children:[c,i]}),e[8]=c,e[9]=i,e[10]=u):u=e[10],u};const j=o=>{let e=(0,f.c)(10),{shortcut:l,className:s}=o;if(l===b||l===""){let r;return e[0]===Symbol.for("react.memo_cache_sentinel")?(r=(0,m.jsx)("span",{}),e[0]=r):r=e[0],r}let t,a;if(e[1]!==s||e[2]!==l){let r=l.split("-");e[5]===s?t=e[6]:(t=y("flex gap-1",s),e[5]=s,e[6]=t),a=r.map(k).map(L),e[1]=s,e[2]=l,e[3]=t,e[4]=a}else t=e[3],a=e[4];let n;return e[7]!==t||e[8]!==a?(n=(0,m.jsx)("div",{className:t,children:a}),e[7]=t,e[8]=a,e[9]=n):n=e[9],n};function H(o){return(0,m.jsx)(w,{shortcut:o})}const w=o=>{let e=(0,f.c)(6),{className:l,shortcut:s}=o,t=d(p),a;e[0]!==t||e[1]!==s?(a=t.getHotkey(s),e[0]=t,e[1]=s,e[2]=a):a=e[2];let n=a,r;return e[3]!==l||e[4]!==n.key?(r=(0,m.jsx)(C,{shortcut:n.key,className:l}),e[3]=l,e[4]=n.key,e[5]=r):r=e[5],r},C=o=>{let e=(0,f.c)(12),{shortcut:l,className:s}=o;if(l===b||l===""){let c;return e[0]===Symbol.for("react.memo_cache_sentinel")?(c=(0,m.jsx)("span",{}),e[0]=c):c=e[0],c}let t,a,n;if(e[1]!==s||e[2]!==l){let c=l.split("-");t=S,e[6]===s?a=e[7]:(a=y("flex gap-1 items-center",s),e[6]=s,e[7]=a),n=c.map(k).map(F),e[1]=s,e[2]=l,e[3]=t,e[4]=a,e[5]=n}else t=e[3],a=e[4],n=e[5];let r;return e[8]!==t||e[9]!==a||e[10]!==n?(r=(0,m.jsx)(t,{className:a,children:n}),e[8]=t,e[9]=a,e[10]=n,e[11]=r):r=e[11],r};function k(o){let e=v()?"mac":"default",l=o.toLowerCase(),s=I[o.toLowerCase()];if(s){let t=s.symbols[e]||s.symbols.default;return[s.label,t]}return[l]}var I={ctrl:{symbols:{mac:"\u2303",default:"Ctrl"},label:"Control"},control:{symbols:{mac:"\u2303",default:"Ctrl"},label:"Control"},shift:{symbols:{mac:"\u21E7",default:"Shift"},label:"Shift"},alt:{symbols:{mac:"\u2325",default:"Alt"},label:"Alt/Option"},escape:{symbols:{mac:"\u238B",default:"Esc"},label:"Escape"},arrowup:{symbols:{default:"\u2191"},label:"Arrow Up"},arrowdown:{symbols:{default:"\u2193"},label:"Arrow Down"},arrowleft:{symbols:{default:"\u2190"},label:"Arrow Left"},arrowright:{symbols:{default:"\u2192"},label:"Arrow Right"},backspace:{symbols:{mac:"\u232B",default:"\u27F5"},label:"Backspace"},tab:{symbols:{mac:"\u21E5",default:"\u2B7E"},label:"Tab"},capslock:{symbols:{default:"\u21EA"},label:"Caps Lock"},fn:{symbols:{default:"Fn"},label:"Fn"},cmd:{symbols:{mac:"\u2318",windows:"\u229E Win",default:"Command"},label:"Command"},insert:{symbols:{default:"Ins"},label:"Insert"},delete:{symbols:{mac:"\u2326",default:"Del"},label:"Delete"},home:{symbols:{mac:"\u2196",default:"Home"},label:"Home"},end:{symbols:{mac:"\u2198",default:"End"},label:"End"},mod:{symbols:{mac:"\u2318",windows:"\u229E Win",default:"Ctrl"},label:"Control"}};function N(o){return o.charAt(0).toUpperCase()+o.slice(1)}function L(o){let[e,l]=o;return l?(0,m.jsx)(h,{asChild:!1,tabIndex:-1,content:e,delayDuration:300,children:(0,m.jsx)(x,{children:l},e)},e):(0,m.jsx)(x,{children:N(e)},e)}function F(o){let[e,l]=o;return l?(0,m.jsx)(h,{content:e,delayDuration:300,tabIndex:-1,children:(0,m.jsx)("span",{children:l},e)},e):(0,m.jsx)("span",{children:N(e)},e)}export{_ as a,H as i,C as n,w as r,j as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as w,i as x,l as z,p as r,u as C}from"./useEvent-DlWF5OMa.js";import{A as l,B as D,I as j,J as I,N as d,P as h,R as t,T as n,U as J,b as o,w as _}from"./zod-Cg4WLWh2.js";import{t as N}from"./compiler-runtime-DeeZ7FnK.js";import{t as R}from"./merge-BBX6ug-N.js";import{d as m,n as S,u as U}from"./hotkeys-uKX61F1_.js";import{t as F}from"./invariant-C6yE60hi.js";const M=["pip","uv","rye","poetry","pixi"];var $=["normal","compact","medium","full","columns"],q=["auto","native","polars","lazy-polars","pandas"];const G="openai/gpt-4o";var O=["html","markdown","ipynb"];const H=["manual","ask","agent"];var p=h({api_key:t().optional(),base_url:t().optional(),project:t().optional()}).loose(),K=h({chat_model:t().nullish(),edit_model:t().nullish(),autocomplete_model:t().nullish(),displayed_models:_(t()).default([]),custom_models:_(t()).default([])});const v=l({completion:h({activate_on_typing:n().prefault(!0),signature_hint_on_typing:n().prefault(!1),copilot:D([n(),o(["github","codeium","custom"])]).prefault(!1).transform(a=>a===!0?"github":a),codeium_api_key:t().nullish()}).prefault({}),save:l({autosave:o(["off","after_delay"]).prefault("after_delay"),autosave_delay:d().nonnegative().transform(a=>Math.max(a,1e3)).prefault(1e3),format_on_save:n().prefault(!1)}).prefault({}),formatting:l({line_length:d().nonnegative().prefault(79).transform(a=>Math.min(a,1e3))}).prefault({}),keymap:l({preset:o(["default","vim"]).prefault("default"),overrides:j(t(),t()).prefault({}),destructive_delete:n().prefault(!0)}).prefault({}),runtime:l({auto_instantiate:n().prefault(!0),on_cell_change:o(["lazy","autorun"]).prefault("autorun"),auto_reload:o(["off","lazy","autorun"]).prefault("off"),reactive_tests:n().prefault(!0),watcher_on_save:o(["lazy","autorun"]).prefault("lazy"),default_sql_output:o(q).prefault("auto"),default_auto_download:_(o(O)).prefault([])}).prefault({}),display:l({theme:o(["light","dark","system"]).prefault("light"),code_editor_font_size:d().nonnegative().prefault(14),cell_output:o(["above","below"]).prefault("below"),dataframes:o(["rich","plain"]).prefault("rich"),default_table_page_size:d().prefault(10),default_table_max_columns:d().prefault(50),default_width:o($).prefault("medium").transform(a=>a==="normal"?"compact":a),locale:t().nullable().optional(),reference_highlighting:n().prefault(!0)}).prefault({}),package_management:l({manager:o(M).prefault("pip")}).prefault({}),ai:l({rules:t().prefault(""),mode:o(H).prefault("manual"),inline_tooltip:n().prefault(!1),open_ai:p.optional(),anthropic:p.optional(),google:p.optional(),ollama:p.optional(),openrouter:p.optional(),wandb:p.optional(),open_ai_compatible:p.optional(),azure:p.optional(),bedrock:l({region_name:t().optional(),profile_name:t().optional(),aws_access_key_id:t().optional(),aws_secret_access_key:t().optional()}).optional(),custom_providers:j(t(),p).prefault({}),models:K.prefault({displayed_models:[],custom_models:[]})}).prefault({}),experimental:l({markdown:n().optional(),rtc:n().optional()}).prefault(()=>({})),server:l({}).prefault(()=>({})),diagnostics:l({enabled:n().optional(),sql_linter:n().optional()}).prefault(()=>({})),sharing:l({html:n().optional(),wasm:n().optional()}).optional(),mcp:l({presets:_(o(["marimo","context7"])).optional()}).optional().prefault({})}).partial().prefault(()=>({completion:{},save:{},formatting:{},keymap:{},runtime:{},display:{},diagnostics:{},experimental:{},server:{},ai:{},package_management:{},mcp:{}})),E=t(),L=o(q).prefault("auto"),b=h({width:o($).prefault("medium").transform(a=>a==="normal"?"compact":a),app_title:E.nullish(),css_file:t().nullish(),html_head_file:t().nullish(),auto_download:_(o(O)).prefault([]),sql_output:L}).prefault(()=>({width:"medium",auto_download:[],sql_output:"auto"}));function P(a){try{return b.parse(a)}catch(e){return m.error(`Marimo got an unexpected value in the configuration file: ${e}`),b.parse({})}}function Q(a){try{let e=v.parse(a);for(let[u,s]of Object.entries(e.experimental??{}))s===!0&&m.log(`\u{1F9EA} Experimental feature "${u}" is enabled.`);return e}catch(e){return e instanceof J?m.error(`Marimo got an unexpected value in the configuration file: ${I(e)}`):m.error(`Marimo got an unexpected value in the configuration file: ${e}`),T()}}function V(a){try{let e=a;return F(typeof e=="object","internal-error: marimo-config-overrides is not an object"),Object.keys(e).length>0&&m.log("\u{1F527} Project configuration overrides:",e),e}catch(e){return m.error(`Marimo got an unexpected configuration overrides: ${e}`),{}}}function T(){return v.parse({completion:{},save:{},formatting:{},keymap:{},runtime:{},display:{},diagnostics:{},experimental:{},server:{},ai:{},package_management:{},mcp:{}})}var W=N();const y=r(T()),A=r({}),i=r(a=>{let e=a(A);return R({},a(y),e)}),X=r(a=>a(i).runtime.auto_instantiate),Y=r(a=>a(i).keymap.overrides??{}),Z=r(U()),aa=r(a=>new S(a(Y),{platform:a(Z)})),ea=r(a=>a(i).save),ta=r(a=>a(i).ai),oa=r(a=>a(i).completion),ra=r(a=>a(i).keymap.preset);function na(){return z(y)}function la(){let a=(0,W.c)(3),e=C(i),u=w(y),s;return a[0]!==e||a[1]!==u?(s=[e,u],a[0]=e,a[1]=u,a[2]=s):s=a[2],s}function ia(){return x.get(i)}const sa=r(a=>B(a(i)));r(a=>a(i).display.code_editor_font_size);const ua=r(a=>a(i).display.locale);function B(a){var e,u,s,f,c,k;return!!((u=(e=a.ai)==null?void 0:e.models)!=null&&u.chat_model)||!!((f=(s=a.ai)==null?void 0:s.models)!=null&&f.edit_model)||!!((k=(c=a.ai)==null?void 0:c.models)!=null&&k.autocomplete_model)}const g=r(P({}));function pa(){return z(g)}function ma(){return w(g)}function fa(){return x.get(g)}const ca=r(a=>a(g).width);r(a=>{var f,c;let e=a(i),u=((f=e.snippets)==null?void 0:f.custom_paths)??[],s=(c=e.snippets)==null?void 0:c.include_default_snippets;return u.length>0||s===!0});function da(){return!1}export{E as C,P as D,v as E,V as O,b as S,M as T,pa as _,ca as a,na as b,oa as c,ia as d,aa as f,i as g,ua as h,g as i,Q as k,A as l,ra as m,ta as n,X as o,B as p,sa as r,ea as s,da as t,fa as u,la as v,G as w,y as x,ma as y};
|