@marimo-team/frontend 0.19.9-dev7 → 0.19.9-dev9
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/{edit-page-BpIuEeU6.js → edit-page-Bx2U8f0j.js} +6 -6
- package/dist/assets/{index-DFrkvKWf.js → index-CD6Gw4UH.js} +23 -23
- package/dist/assets/panels-DW8vF5Az.js +1 -0
- package/dist/assets/{run-page-_7E2SCeQ.js → run-page-D4d7rFuk.js} +1 -1
- package/dist/assets/utilities.esm-dm9SQStE.js +3 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/src/plugins/impl/anywidget/AnyWidgetPlugin.tsx +14 -12
- package/src/plugins/impl/anywidget/__tests__/AnyWidgetPlugin.test.tsx +6 -9
- package/src/plugins/impl/anywidget/__tests__/model.test.ts +17 -0
- package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +240 -0
- package/src/plugins/impl/anywidget/model.ts +96 -148
- package/src/plugins/impl/anywidget/widget-binding.ts +216 -0
- package/dist/assets/panels-IsIZwIow.js +0 -1
- package/dist/assets/utilities.esm-MA1QpjVT.js +0 -3
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
|
|
4
|
+
import type { AnyWidget, Experimental } from "@anywidget/types";
|
|
5
|
+
import { asRemoteURL } from "@/core/runtime/config";
|
|
6
|
+
import { resolveVirtualFileURL } from "@/core/static/files";
|
|
7
|
+
import { isStaticNotebook } from "@/core/static/static-state";
|
|
8
|
+
import { Logger } from "@/utils/Logger";
|
|
9
|
+
import type { Model } from "./model";
|
|
10
|
+
import type { ModelState, WidgetModelId } from "./types";
|
|
11
|
+
|
|
12
|
+
export const experimental: Experimental = {
|
|
13
|
+
invoke: async () => {
|
|
14
|
+
const message =
|
|
15
|
+
"anywidget.invoke not supported in marimo. Please file an issue at https://github.com/marimo-team/marimo/issues";
|
|
16
|
+
Logger.warn(message);
|
|
17
|
+
throw new Error(message);
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type RenderFn = (el: HTMLElement, signal: AbortSignal) => Promise<void>;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Polyfill for AbortSignal.any. Returns a signal that aborts when any of the
|
|
25
|
+
* input signals abort. This can be removed once the Node.js test environment
|
|
26
|
+
* (jsdom) supports AbortSignal.any natively.
|
|
27
|
+
*/
|
|
28
|
+
function abortSignalAny(signals: AbortSignal[]): AbortSignal {
|
|
29
|
+
if (typeof AbortSignal.any === "function") {
|
|
30
|
+
return AbortSignal.any(signals);
|
|
31
|
+
}
|
|
32
|
+
const controller = new AbortController();
|
|
33
|
+
for (const signal of signals) {
|
|
34
|
+
if (signal.aborted) {
|
|
35
|
+
controller.abort(signal.reason);
|
|
36
|
+
return controller.signal;
|
|
37
|
+
}
|
|
38
|
+
signal.addEventListener("abort", () => controller.abort(signal.reason), {
|
|
39
|
+
once: true,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return controller.signal;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Deduplicates ESM imports by jsHash.
|
|
47
|
+
* A single import is shared across all widget instances using the same module.
|
|
48
|
+
*/
|
|
49
|
+
class WidgetDefRegistry {
|
|
50
|
+
#cache = new Map<string, Promise<any>>();
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Get (or start) the ESM import for a widget module.
|
|
54
|
+
* Cached by jsHash so multiple instances share one import.
|
|
55
|
+
*/
|
|
56
|
+
getModule(jsUrl: string, jsHash: string): Promise<any> {
|
|
57
|
+
const cached = this.#cache.get(jsHash);
|
|
58
|
+
if (cached) {
|
|
59
|
+
return cached;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const promise = this.#doImport(jsUrl).catch((error) => {
|
|
63
|
+
// On failure, remove from cache so a retry with a new URL can work
|
|
64
|
+
this.#cache.delete(jsHash);
|
|
65
|
+
throw error;
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
this.#cache.set(jsHash, promise);
|
|
69
|
+
return promise;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Invalidate a cached module (e.g. for hot-reload support).
|
|
74
|
+
*/
|
|
75
|
+
invalidate(jsHash: string): void {
|
|
76
|
+
Logger.debug(
|
|
77
|
+
`[WidgetDefRegistry] Invalidating module cache for hash=${jsHash}`,
|
|
78
|
+
);
|
|
79
|
+
this.#cache.delete(jsHash);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
async #doImport(jsUrl: string): Promise<any> {
|
|
83
|
+
let url = asRemoteURL(jsUrl).toString();
|
|
84
|
+
if (isStaticNotebook()) {
|
|
85
|
+
url = resolveVirtualFileURL(url);
|
|
86
|
+
}
|
|
87
|
+
return import(/* @vite-ignore */ url);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Connects a Model to a resolved AnyWidget definition.
|
|
93
|
+
* Owns the initialize lifecycle and produces a render function.
|
|
94
|
+
*
|
|
95
|
+
* Per AFM spec:
|
|
96
|
+
* - initialize() is called once per model (or once per hot-reload)
|
|
97
|
+
* - render() (the returned function) is called once per view
|
|
98
|
+
*/
|
|
99
|
+
class WidgetBinding<T extends ModelState = ModelState> {
|
|
100
|
+
#controller: AbortController | undefined;
|
|
101
|
+
#widgetDef: AnyWidget<T> | undefined;
|
|
102
|
+
#render: RenderFn | undefined;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Bind a widget definition to a model.
|
|
106
|
+
* If the same def is already bound, returns the cached render function.
|
|
107
|
+
* If a different def is provided (hot reload), tears down the old binding
|
|
108
|
+
* and re-initializes.
|
|
109
|
+
*/
|
|
110
|
+
async bind(widgetDef: AnyWidget<T>, model: Model<T>): Promise<RenderFn> {
|
|
111
|
+
// Already initialized with the same widget - return cached render
|
|
112
|
+
if (this.#render && this.#widgetDef === widgetDef) {
|
|
113
|
+
return this.#render;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// If widgetDef changed (hot reload), destroy old and re-initialize
|
|
117
|
+
if (this.#render && this.#widgetDef !== widgetDef) {
|
|
118
|
+
Logger.debug(
|
|
119
|
+
"[WidgetBinding] Hot-reload detected, aborting previous binding",
|
|
120
|
+
);
|
|
121
|
+
this.#controller?.abort();
|
|
122
|
+
this.#controller = undefined;
|
|
123
|
+
this.#render = undefined;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
this.#widgetDef = widgetDef;
|
|
127
|
+
this.#controller = new AbortController();
|
|
128
|
+
const bindingSignal = this.#controller.signal;
|
|
129
|
+
|
|
130
|
+
// Resolve the widget definition (call if it's a function)
|
|
131
|
+
const widget =
|
|
132
|
+
typeof widgetDef === "function" ? await widgetDef() : widgetDef;
|
|
133
|
+
|
|
134
|
+
// Call initialize once per model
|
|
135
|
+
const cleanup = await widget.initialize?.({ model, experimental });
|
|
136
|
+
if (cleanup) {
|
|
137
|
+
bindingSignal.addEventListener("abort", cleanup);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Store and return the render closure
|
|
141
|
+
this.#render = async (el: HTMLElement, viewSignal: AbortSignal) => {
|
|
142
|
+
const renderCleanup = await widget.render?.({
|
|
143
|
+
model,
|
|
144
|
+
el,
|
|
145
|
+
experimental,
|
|
146
|
+
});
|
|
147
|
+
if (renderCleanup) {
|
|
148
|
+
// Cleanup when either the view unmounts or the binding is destroyed
|
|
149
|
+
const combined = abortSignalAny([viewSignal, bindingSignal]);
|
|
150
|
+
combined.addEventListener("abort", () => {
|
|
151
|
+
const reason = viewSignal.aborted
|
|
152
|
+
? "view unmount"
|
|
153
|
+
: "binding destroyed";
|
|
154
|
+
Logger.debug(
|
|
155
|
+
`[WidgetBinding] Render cleanup triggered (reason: ${reason})`,
|
|
156
|
+
);
|
|
157
|
+
renderCleanup();
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
return this.#render;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Destroy this binding, aborting the initialize lifecycle.
|
|
167
|
+
*/
|
|
168
|
+
destroy(): void {
|
|
169
|
+
Logger.debug(
|
|
170
|
+
"[WidgetBinding] Destroying binding, aborting initialize lifecycle",
|
|
171
|
+
);
|
|
172
|
+
this.#controller?.abort();
|
|
173
|
+
this.#controller = undefined;
|
|
174
|
+
this.#widgetDef = undefined;
|
|
175
|
+
this.#render = undefined;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Maps WidgetModelId to WidgetBinding instances.
|
|
181
|
+
* Singleton that manages the lifecycle of all bindings.
|
|
182
|
+
*/
|
|
183
|
+
class BindingManager {
|
|
184
|
+
#bindings = new Map<WidgetModelId, WidgetBinding<any>>();
|
|
185
|
+
|
|
186
|
+
getOrCreate(modelId: WidgetModelId): WidgetBinding<any> {
|
|
187
|
+
let binding = this.#bindings.get(modelId);
|
|
188
|
+
if (!binding) {
|
|
189
|
+
binding = new WidgetBinding();
|
|
190
|
+
this.#bindings.set(modelId, binding);
|
|
191
|
+
}
|
|
192
|
+
return binding;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
destroy(modelId: WidgetModelId): void {
|
|
196
|
+
const binding = this.#bindings.get(modelId);
|
|
197
|
+
if (binding) {
|
|
198
|
+
Logger.debug(`[BindingManager] Destroying binding for model=${modelId}`);
|
|
199
|
+
binding.destroy();
|
|
200
|
+
this.#bindings.delete(modelId);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
has(modelId: WidgetModelId): boolean {
|
|
205
|
+
return this.#bindings.has(modelId);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export const WIDGET_DEF_REGISTRY = new WidgetDefRegistry();
|
|
210
|
+
export const BINDING_MANAGER = new BindingManager();
|
|
211
|
+
|
|
212
|
+
export const visibleForTesting = {
|
|
213
|
+
WidgetDefRegistry,
|
|
214
|
+
WidgetBinding,
|
|
215
|
+
BindingManager,
|
|
216
|
+
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var TA=Object.defineProperty;var IA=(a,A,e)=>A in a?TA(a,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[A]=e;var GA=(a,A,e)=>IA(a,typeof A!="symbol"?A+"":A,e);import{s as cA}from"./chunk-LvLJmgfZ.js";import{d as _,i as gA,l as hA,u as j}from"./useEvent-BhXAndur.js";import{t as KA}from"./react-Bj1aDYRI.js";import{D as HA,Dt as UA,Et as VA,F as XA,L as JA,N as WA,Ot as qA,ai as zA,an as $A,en as Ae,ir as ee,l as ae,li as te,lr as dA,m as BA,vn as Ge,w as oe,y as se}from"./cells-DPp5cDaO.js";import{t as B}from"./compiler-runtime-B3qBwwSJ.js";import{n as re}from"./assertNever-CBU83Y6o.js";import{B as S,F as ne,I as ke,K as Re,L as ie,M as le,P as Ze,Q as uA,R as ce,S as ge,U as YA,X as he,Y as de,Z as Be,at as ue,et as Ye,it as me,nt as fe,q as pe}from"./utilities.esm-MA1QpjVT.js";import{a as mA,d as D}from"./hotkeys-BHHWjLlp.js";import{C as xe,b as we}from"./utils-YqBXNpsM.js";import{r as oA}from"./constants-B6Cb__3x.js";import{S as sA,b as F,c as De,h as ve,o as Ee,x}from"./config-Q0O7_stz.js";import{a as ye,d as Ce}from"./switch-dWLWbbtg.js";import{n as be}from"./ErrorBoundary-B9Ifj8Jf.js";import{t as Me}from"./useEventListener-Cb-RVVEn.js";import{t as Ne}from"./jsx-runtime-ZmTK25f3.js";import{t as rA}from"./button-CZ3Cs4qb.js";import{n as _e,t as f}from"./cn-BKtXLv3a.js";import{Y as fA}from"./JsonOutput-PE5ko4gi.js";import{t as je}from"./createReducer-B3rBsy4P.js";import{t as Se}from"./requests-B4FYHTZl.js";import{t as J}from"./createLucideIcon-BCdY6lG5.js";import{a as Fe,f as pA,i as xA,n as Qe,o as Le,s as Pe}from"./layout-_O8thjaV.js";import{m as Oe}from"./download-os8QlW6l.js";import{c as Te}from"./maps-D2_Mq1pZ.js";import{c as Ie}from"./markdown-renderer-DJy8ww5d.js";import{n as Ke}from"./spinner-DA8-7wQv.js";import{i as He,n as Ue}from"./readonly-python-code-WjTf6Pdd.js";import{t as Ve}from"./uuid-DXdzqzcr.js";import{t as nA}from"./use-toast-BDYuj3zG.js";import{i as Xe}from"./session-BOFn9QrD.js";import{s as Je,u as We}from"./Combination-BAEdC-rz.js";import{t as kA}from"./tooltip-CMQz28hC.js";import{a as qe,r as wA,t as ze}from"./mode-Bn7pdJvO.js";import{_ as $e,f as Aa,g as ea,h as DA,m as vA,p as EA,v as yA,y as aa}from"./alert-dialog-BW4srmS0.js";import{r as CA}from"./share-ipf2hrOh.js";import{r as bA}from"./errors-TZBmrJmc.js";import{t as ta}from"./RenderHTML-D-of_-s7.js";import{i as Ga}from"./cell-link-B9b7J8QK.js";import{t as oa}from"./error-banner-B9ts0mNl.js";import{n as sa}from"./useAsyncData-BMGLSTg8.js";import{t as ra}from"./requests-De5yEBc8.js";import{t as na}from"./ws-DcVtI9Wj.js";import{t as ka}from"./request-registry-C5_pVc8Y.js";import{n as Ra}from"./types-iYXk7c05.js";import{n as ia}from"./runs-YUGrkyfE.js";var la=J("hourglass",[["path",{d:"M5 22h14",key:"ehvnwv"}],["path",{d:"M5 2h14",key:"pdyrp9"}],["path",{d:"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22",key:"1d314k"}],["path",{d:"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2",key:"1vvvr6"}]]),MA=J("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]),Za=J("square-arrow-right",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"m12 16 4-4-4-4",key:"1i9zcv"}]]),ca=J("unlink",[["path",{d:"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71",key:"yqzxt4"}],["path",{d:"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71",key:"4qinb0"}],["line",{x1:"8",x2:"8",y1:"2",y2:"5",key:"1041cp"}],["line",{x1:"2",x2:"5",y1:"8",y2:"8",key:"14m1p5"}],["line",{x1:"16",x2:"16",y1:"19",y2:"22",key:"rzdirn"}],["line",{x1:"19",x2:"22",y1:"16",y2:"16",key:"ox905f"}]]),ga=B(),r=cA(Ne(),1);const ha=a=>{let A=(0,ga.c)(10),{reason:e,canTakeover:t}=a,o=t===void 0?!1:t,G=da;if(o){let n;A[0]===Symbol.for("react.memo_cache_sentinel")?(n=(0,r.jsx)("div",{className:"flex justify-between",children:(0,r.jsx)("span",{className:"font-bold text-xl flex items-center mb-2",children:"Notebook already connected"})}),A[0]=n):n=A[0];let k;A[1]===e?k=A[2]:(k=(0,r.jsx)("span",{children:e}),A[1]=e,A[2]=k);let R;A[3]===o?R=A[4]:(R=o&&(0,r.jsxs)(rA,{onClick:G,variant:"outline","data-testid":"takeover-button",className:"shrink-0",children:[(0,r.jsx)(Za,{className:"w-4 h-4 mr-2"}),"Take over session"]}),A[3]=o,A[4]=R);let i;return A[5]!==k||A[6]!==R?(i=(0,r.jsx)("div",{className:"flex justify-center",children:(0,r.jsxs)(oa,{kind:"info",className:"mt-10 flex flex-col rounded p-3 max-w-[800px] mx-4",children:[n,(0,r.jsxs)("div",{className:"flex justify-between items-end text-base gap-20",children:[k,R]})]})}),A[5]=k,A[6]=R,A[7]=i):i=A[7],i}let s;return A[8]===e?s=A[9]:(s=(0,r.jsx)("div",{className:"font-mono text-center text-base text-(--red-11)",children:(0,r.jsx)("p",{children:e})}),A[8]=e,A[9]=s),s};async function da(){try{let a=new URL(window.location.href).searchParams;await ye.post(`/kernel/takeover?${a.toString()}`,{}),CA()}catch(a){nA({title:"Failed to take over session",description:bA(a),variant:"danger"})}}var Ba=B(),u=cA(KA(),1);const ua=a=>{let A=(0,Ba.c)(8),{connection:e,className:t,children:o}=a,G;A[0]!==e.canTakeover||A[1]!==e.reason||A[2]!==e.state?(G=e.state===x.CLOSED&&(0,r.jsx)(ha,{reason:e.reason,canTakeover:e.canTakeover}),A[0]=e.canTakeover,A[1]=e.reason,A[2]=e.state,A[3]=G):G=A[3];let s;return A[4]!==o||A[5]!==t||A[6]!==G?(s=(0,r.jsxs)("div",{className:t,children:[o,G]}),A[4]=o,A[5]=t,A[6]=G,A[7]=s):s=A[7],s};var Ya=B();const ma=a=>{let A=(0,Ya.c)(10),{title:e}=a,[t,o]=(0,u.useState)(e),[G,s]=(0,u.useState)(!0),n,k;A[0]!==t||A[1]!==e?(n=()=>{if(e!==t){s(!1);let g=setTimeout(()=>{o(e),s(!0)},300);return()=>clearTimeout(g)}},k=[e,t],A[0]=t,A[1]=e,A[2]=n,A[3]=k):(n=A[2],k=A[3]),(0,u.useEffect)(n,k);let R;A[4]===Symbol.for("react.memo_cache_sentinel")?(R=(0,r.jsx)(Ke,{className:"size-20 animate-spin text-primary","data-testid":"large-spinner",strokeWidth:1}),A[4]=R):R=A[4];let i=G?"opacity-100":"opacity-0",l;A[5]===i?l=A[6]:(l=f("mt-2 text-muted-foreground font-semibold text-lg transition-opacity duration-300",i),A[5]=i,A[6]=l);let c;return A[7]!==t||A[8]!==l?(c=(0,r.jsxs)("div",{className:"flex flex-col h-full flex-1 items-center justify-center p-4",children:[R,(0,r.jsx)("div",{className:l,children:t})]}),A[7]=t,A[8]=l,A[9]=c):c=A[9],c};var RA=B();const fa=a=>{let A=(0,RA.c)(2),{children:e}=a;if(!sA())return e;let t;return A[0]===e?t=A[1]:(t=(0,r.jsx)(pa,{children:e}),A[0]=e,A[1]=t),t};var pa=a=>{let A=(0,RA.c)(3),{children:e}=a,t;A[0]===Symbol.for("react.memo_cache_sentinel")?(t=[],A[0]=t):t=A[0];let{isPending:o,error:G}=sa(wa,t),s=j(de);if(o){let n;return A[1]===Symbol.for("react.memo_cache_sentinel")?(n=(0,r.jsx)(NA,{}),A[1]=n):n=A[1],n}if(!s&&ze()==="read"&&xa()){let n;return A[2]===Symbol.for("react.memo_cache_sentinel")?(n=(0,r.jsx)(NA,{}),A[2]=n):n=A[2],n}if(G)throw G;return e};function xa(){return Xe(oA.showCode,"false")||!gA.get(Ce)}const NA=a=>{let A=(0,RA.c)(2),e=j(he),t;return A[0]===e?t=A[1]:(t=(0,r.jsx)(ma,{title:e}),A[0]=e,A[1]=t),t};async function wa(){return await Re.INSTANCE.initialized.promise,!0}var Da={idle:"./favicon.ico",success:"data:image/x-icon;base64,AAABAAEAMDAAAAEACACoDgAAFgAAACgAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAAXXQAAFd3AwBWeAQAVngEAFd4AwBXeAQAVnkEAFh3AwBXdwQAVXcGAFd4BQBXeAQAWHgEAFd6AwBXeAMAVnkEAFZ5AwBXdwQAV3cFAFd4BABYeAQAV3gEAFh4BABXeAQA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYYGAYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcYGBgYGBgYGBgYGBgYGAcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGBgYGBgYGBgYGBgYGBgYGBgYCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAsYGBgYGBgYDA0OChkZGRkKDg0MGBgYGBgYGAsAAAAAAAAAAAAAAAAAAAAAAAAAAxgYGBgYGA8QGRkZGRkZGRkZGRkZEA8YGBgYGBgDAAAAAAAAAAAAAAAAAAAAAAARGBgYGBgSChkZGRkZGRkZGRkZGRkZGRkKEhgYGBgYEQAAAAAAAAAAAAAAAAAAAAMYGBgYGBMZGRkZGRkZGRkZGRkZGRkZGRkZGRMYGBgYGAMAAAAAAAAAAAAAAAAACxgYGBgUEBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkQFBgYGBgLAAAAAAAAAAAAAAAKGBgYGBQKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChQYGBgYCgAAAAAAAAAAAAAEGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYBAAAAAAAAAAAAAgYGBgYExkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkTGBgYGAgAAAAAAAAAAAkYGBgSGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZEhgYGAkAAAAAAAAAAhgYGBgKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChgYGBgCAAAAAAAABxgYGA8ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQ8YGBgHAAAAAAABGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYAQAAAAACGBgYDBkZGRkZGRkZGRkZGRkXFhYVGRkZGRkZGRkZGRkZGRkZGRkMGBgYAgAAAAADGBgYDRkZGRkZGRkZGRkZGRcYGBgYFxkZGRkZGRkZGRkZGRkZGRkNGBgYAwAAAAAEGBgYDhkZGRkZGRkZGRkZFxgYGBgYGBcZGRkZGRkZGRkZGRkZGRkOGBgYBAAAAAAFGBgYChkZGRkZGRkZGRkXGBgYGBgYGBgXGRkZGRkZGRkZGRkZGRkKGBgYBQAAAAAGGBgYGRkZGRkZGRkZGRUYGBgYGBgYGBgYFxkZGRkZGRkZGRkZGRkZGBgYBgAAAAAYGBgYGRkZGRkZGRkZGRYYGBgYFxcYGBgYGBcZGRkZGRkZGRkZGRkZGBgYGAAAAAAYGBgYGRkZGRkZGRkZGRYYGBgXGRkXGBgYGBgXGRkZGRkZGRkZGRkZGBgYGAAAAAAGGBgYGRkZGRkZGRkZGRUWFhcZGRkZFxgYGBgYFxkZGRkZGRkZGRkZGBgYBgAAAAAFGBgYChkZGRkZGRkZGRkZGRkZGRkZGRcYGBgYGBcZGRkZGRkZGRkKGBgYBQAAAAAEGBgYDhkZGRkZGRkZGRkZGRkZGRkZGRkXGBgYGBYZGRkZGRkZGRkOGBgYBAAAAAADGBgYDRkZGRkZGRkZGRkZGRkZGRkZGRkZFxgYGBYZGRkZGRkZGRkNGBgYAwAAAAACGBgYDBkZGRkZGRkZGRkZGRkZGRkZGRkZGRUWFhUZGRkZGRkZGRkMGBgYAgAAAAABGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYAQAAAAAABxgYGA8ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQ8YGBgHAAAAAAAAAhgYGBgKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChgYGBgCAAAAAAAAAAkYGBgSGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZEhgYGAkAAAAAAAAAAAgYGBgYExkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkTGBgYGAgAAAAAAAAAAAAEGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYBAAAAAAAAAAAAAAKGBgYGBQKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChQYGBgYCgAAAAAAAAAAAAAACxgYGBgUEBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkQFBgYGBgLAAAAAAAAAAAAAAAAAAMYGBgYGBMZGRkZGRkZGRkZGRkZGRkZGRkZGRMYGBgYGAMAAAAAAAAAAAAAAAAAAAARGBgYGBgSChkZGRkZGRkZGRkZGRkZGRkKEhgYGBgYEQAAAAAAAAAAAAAAAAAAAAAAAxgYGBgYGA8QGRkZGRkZGRkZGRkZEA8YGBgYGBgDAAAAAAAAAAAAAAAAAAAAAAAAAAsYGBgYGBgYDA0OChkZGRkKDg0MGBgYGBgYGAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGBgYGBgYGBgYGBgYGBgYGBgYCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcYGBgYGBgYGBgYGBgYGAcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYYGAYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP//gAH//wAA//4AAH//AAD/+AAAH/8AAP/gAAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD8AAAAAD8AAPgAAAAAHwAA+AAAAAAfAADwAAAAAA8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAADwAAAAAA8AAPgAAAAAHwAA+AAAAAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/+AAAH/8AAP/+AAB//wAA//+AAf//AAD///////8AAP///////wAA",running:"data:image/x-icon;base64,AAABAAEAMDAAAAEACACoDgAAFgAAACgAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAA0YsAAMWEAwDHgwIAx4QBAMeEAgDGhAIAyIUBAMaFAwDGhAIAxoIAAMaFAgDHhAIAx4QCAMiFAwDHhAIAx4YAAMaFAgDHhQEAxoMCAMeEAgDHgwQAx4QDAMeDAgDHhAIA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYYGAYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcYGBgYGBgYGBgYGBgYGAcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGBgYGBgYGBgYGBgYGBgYGBgYCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAsYGBgYGBgYDA0OChkZGRkKDg0MGBgYGBgYGAsAAAAAAAAAAAAAAAAAAAAAAAAAAxgYGBgYGA8QGRkZGRkZGRkZGRkZEA8YGBgYGBgDAAAAAAAAAAAAAAAAAAAAAAARGBgYGBgSChkZGRkZGRkZGRkZGRkZGRkKEhgYGBgYEQAAAAAAAAAAAAAAAAAAAAMYGBgYGBMZGRkZGRkZGRkZGRkZGRkZGRkZGRMYGBgYGAMAAAAAAAAAAAAAAAAACxgYGBgUEBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkQFBgYGBgLAAAAAAAAAAAAAAAKGBgYGBQKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChQYGBgYCgAAAAAAAAAAAAAEGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYBAAAAAAAAAAAAAgYGBgYExkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkTGBgYGAgAAAAAAAAAAAkYGBgSGRkZGRkZGRkZFRgWFxkZGRkZGRkZGRkZGRkZGRkZEhgYGAkAAAAAAAAAAhgYGBgKGRkZGRkZGRkZFhgYGBYVGRkZGRkZGRkZGRkZGRkZChgYGBgCAAAAAAAABxgYGA8ZGRkZGRkZGRkZGBgYGBgYFxkZGRkZGRkZGRkZGRkZGQ8YGBgHAAAAAAABGBgYGBAZGRkZGRkZGRkZGBgYGBgYGBYVGRkZGRkZGRkZGRkZGRAYGBgYAQAAAAACGBgYDBkZGRkZGRkZGRkZGBgYGBgYGBgYFxkZGRkZGRkZGRkZGRkMGBgYAgAAAAADGBgYDRkZGRkZGRkZGRkZGBgYGBgYGBgYGBYVGRkZGRkZGRkZGRkNGBgYAwAAAAAEGBgYDhkZGRkZGRkZGRkZGBgYGBUWGBgYGBgYFxkZGRkZGRkZGRkOGBgYBAAAAAAFGBgYChkZGRkZGRkZGRkZGBgYGBkZFxgYGBgYGBYVGRkZGRkZGRkKGBgYBQAAAAAGGBgYGRkZGRkZGRkZGRkZGBgYGBkZGRUWGBgYGBgYFxkZGRkZGRkZGBgYBgAAAAAYGBgYGRkZGRkZGRkZGRkZGBgYGBkZGRkZFxgYGBgYFxkZGRkZGRkZGBgYGAAAAAAYGBgYGRkZGRkZGRkZGRkZGBgYGBkZGRkZFxgYGBgYFhkZGRkZGRkZGBgYGAAAAAAGGBgYGRkZGRkZGRkZGRkZGBgYGBkZGRkXGBgYGBgYFRkZGRkZGRkZGBgYBgAAAAAFGBgYChkZGRkZGRkZGRkZGBgYGBkZFxgYGBgYGBcZGRkZGRkZGRkKGBgYBQAAAAAEGBgYDhkZGRkZGRkZGRkZGBgYGBkXGBgYGBgYFxkZGRkZGRkZGRkOGBgYBAAAAAADGBgYDRkZGRkZGRkZGRkZGBgYGBgYGBgYGBcZGRkZGRkZGRkZGRkNGBgYAwAAAAACGBgYDBkZGRkZGRkZGRkZGBgYGBgYGBgYFxkZGRkZGRkZGRkZGRkMGBgYAgAAAAABGBgYGBAZGRkZGRkZGRkZGBgYGBgYGBcZGRkZGRkZGRkZGRkZGRAYGBgYAQAAAAAABxgYGA8ZGRkZGRkZGRkZGBgYGBgYFxkZGRkZGRkZGRkZGRkZGQ8YGBgHAAAAAAAAAhgYGBgKGRkZGRkZGRkZFhgYGBcZGRkZGRkZGRkZGRkZGRkZChgYGBgCAAAAAAAAAAkYGBgSGRkZGRkZGRkZFRYWFxkZGRkZGRkZGRkZGRkZGRkZEhgYGAkAAAAAAAAAAAgYGBgYExkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkTGBgYGAgAAAAAAAAAAAAEGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYBAAAAAAAAAAAAAAKGBgYGBQKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChQYGBgYCgAAAAAAAAAAAAAACxgYGBgUEBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkQFBgYGBgLAAAAAAAAAAAAAAAAAAMYGBgYGBMZGRkZGRkZGRkZGRkZGRkZGRkZGRMYGBgYGAMAAAAAAAAAAAAAAAAAAAARGBgYGBgSChkZGRkZGRkZGRkZGRkZGRkKEhgYGBgYEQAAAAAAAAAAAAAAAAAAAAAAAxgYGBgYGA8QGRkZGRkZGRkZGRkZEA8YGBgYGBgDAAAAAAAAAAAAAAAAAAAAAAAAAAsYGBgYGBgYDA0OChkZGRkKDg0MGBgYGBgYGAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGBgYGBgYGBgYGBgYGBgYGBgYCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcYGBgYGBgYGBgYGBgYGAcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYYGAYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP//gAH//wAA//4AAH//AAD/+AAAH/8AAP/gAAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD8AAAAAD8AAPgAAAAAHwAA+AAAAAAfAADwAAAAAA8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAADwAAAAAA8AAPgAAAAAHwAA+AAAAAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/+AAAH/8AAP/+AAB//wAA//+AAf//AAD///////8AAP///////wAA",error:"data:image/x-icon;base64,AAABAAEAMDAAAAEACACoDgAAFgAAACgAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAALi7oACcn2wAlJdsAJibcACYm3AAmJtsAJyfdACUl3QAmJtsAKCjdACUl3AAmJtwAJyfcACYm3AAoKNcAJibcACcn3AAmJt0AJibcACUl3AAmJtwAKCjbACcn3AAmJtsAJibcAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYZGQYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcZGRkZGRkZGRkZGRkZGQcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGRkZGRkZGRkZGRkZGRkZGRkZCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAsZGRkZGRkZDA0ODxoaGhoPDg0MGRkZGRkZGQsAAAAAAAAAAAAAAAAAAAAAAAAAAxkZGRkZGRARGhoaGhoaGhoaGhoaERAZGRkZGRkDAAAAAAAAAAAAAAAAAAAAAAASGRkZGRkTDxoaGhoaGhoaGhoaGhoaGhoPExkZGRkZEgAAAAAAAAAAAAAAAAAAAAMZGRkZGRQaGhoaGhoaGhoaGhoaGhoaGhoaGhQZGRkZGQMAAAAAAAAAAAAAAAAACxkZGRkVERoaGhoaGhoaGhoaGhoaGhoaGhoaGhoRFRkZGRkLAAAAAAAAAAAAAAAKGRkZGRUPGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaDxUZGRkZCgAAAAAAAAAAAAAEGRkZGREaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhEZGRkZBAAAAAAAAAAAAAgZGRkZFBoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoUGRkZGQgAAAAAAAAAAAkZGRkTGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaExkZGQkAAAAAAAAAAhkZGRkPGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaDxkZGRkCAAAAAAAABxkZGRAaGhoaGhoaGhYXFxYaGhoaGhoaGhgXFxYaGhoaGhoaGhAZGRkHAAAAAAABGRkZGREaGhoaGhoaGhcZGRkYGhoaGhoaGBkZGRcaGhoaGhoaGhEZGRkZAQAAAAACGRkZDBoaGhoaGhoaGhcZGRkZGBoaGhoYGRkZGRcaGhoaGhoaGhoMGRkZAgAAAAADGRkZDRoaGhoaGhoaGhgZGRkZGRgaGhgZGRkZGRYaGhoaGhoaGhoNGRkZAwAAAAAEGRkZDhoaGhoaGhoaGhoYGRkZGRkYGBkZGRkZGBoaGhoaGhoaGhoOGRkZBAAAAAAFGRkZDxoaGhoaGhoaGhoaGBkZGRkZGRkZGRkYGhoaGhoaGhoaGhoPGRkZBQAAAAAGGRkZGhoaGhoaGhoaGhoaGhgZGRkZGRkZGRgaGhoaGhoaGhoaGhoaGRkZBgAAAAAZGRkZGhoaGhoaGhoaGhoaGhoYGRkZGRkZGBoaGhoaGhoaGhoaGhoaGRkZGQAAAAAZGRkZGhoaGhoaGhoaGhoaGhoYGRkZGRkZGBoaGhoaGhoaGhoaGhoaGRkZGQAAAAAGGRkZGhoaGhoaGhoaGhoaGhgZGRkZGRkZGRgaGhoaGhoaGhoaGhoaGRkZBgAAAAAFGRkZDxoaGhoaGhoaGhoaGBkZGRkZGRkZGRkYGhoaGhoaGhoaGhoPGRkZBQAAAAAEGRkZDhoaGhoaGhoaGhoYGRkZGRkYGBkZGRkZGBoaGhoaGhoaGhoOGRkZBAAAAAADGRkZDRoaGhoaGhoaGhYZGRkZGRgaGhgZGRkZGRgaGhoaGhoaGhoNGRkZAwAAAAACGRkZDBoaGhoaGhoaGhcZGRkZGBoaGhoYGRkZGRcaGhoaGhoaGhoMGRkZAgAAAAABGRkZGREaGhoaGhoaGhcZGRkYGhoaGhoaGBkZGRcaGhoaGhoaGhEZGRkZAQAAAAAABxkZGRAaGhoaGhoaGhYXFxgaGhoaGhoaGhYXFxYaGhoaGhoaGhAZGRkHAAAAAAAAAhkZGRkPGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaDxkZGRkCAAAAAAAAAAkZGRkTGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaExkZGQkAAAAAAAAAAAgZGRkZFBoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoUGRkZGQgAAAAAAAAAAAAEGRkZGREaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhEZGRkZBAAAAAAAAAAAAAAKGRkZGRUPGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaDxUZGRkZCgAAAAAAAAAAAAAACxkZGRkVERoaGhoaGhoaGhoaGhoaGhoaGhoaGhoRFRkZGRkLAAAAAAAAAAAAAAAAAAMZGRkZGRQaGhoaGhoaGhoaGhoaGhoaGhoaGhQZGRkZGQMAAAAAAAAAAAAAAAAAAAASGRkZGRkTDxoaGhoaGhoaGhoaGhoaGhoPExkZGRkZEgAAAAAAAAAAAAAAAAAAAAAAAxkZGRkZGRARGhoaGhoaGhoaGhoaERAZGRkZGRkDAAAAAAAAAAAAAAAAAAAAAAAAAAsZGRkZGRkZDA0ODxoaGhoPDg0MGRkZGRkZGQsAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGRkZGRkZGRkZGRkZGRkZGRkZCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcZGRkZGRkZGRkZGRkZGQcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYZGQYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP//gAH//wAA//4AAH//AAD/+AAAH/8AAP/gAAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD8AAAAAD8AAPgAAAAAHwAA+AAAAAAfAADwAAAAAA8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAADwAAAAAA8AAPgAAAAAHwAA+AAAAAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/+AAAH/8AAP/+AAB//wAA//+AAf//AAD///////8AAP///////wAA"};async function Q(a){return Da[a]}function va(a){if(document.visibilityState==="visible")return;let A=async()=>{a===0?new Notification("Execution completed",{body:"Your notebook run completed successfully.",icon:await Q("success")}):new Notification("Execution failed",{body:`Your notebook run encountered ${a} error(s).`,icon:await Q("error")})};!("Notification"in window)||Notification.permission==="denied"||(Notification.permission==="granted"?A():Notification.permission==="default"&&Notification.requestPermission().then(e=>{e==="granted"&&A()}))}const Ea=a=>{let{isRunning:A}=a,e=HA(),t=document.querySelector("link[rel~='icon']");t||(t=document.createElement("link"),t.rel="icon",document.getElementsByTagName("head")[0].append(t)),(0,u.useEffect)(()=>{!A&&t.href.includes("favicon")||(async()=>{let G;if(G=A?"running":e.length===0?"success":"error",t.href=await Q(G),!document.hasFocus())return;let s=setTimeout(async()=>{t.href=await Q("idle")},3e3);return()=>clearTimeout(s)})()},[A,e,t]);let o=ge(A)??A;return(0,u.useEffect)(()=>{o&&!A&&va(e.length)},[e,o,A]),Me(window,"focus",async G=>{A||(t.href=await Q("idle"))}),null};function ya(){let{cellRuntime:a}=gA.get(se),A=mA.entries(a).find(([e,t])=>t.status==="running");A&&Ga(A[0],"focus")}var L=B();const Ca=a=>{let A=(0,L.c)(22),{connection:e,isRunning:t}=a,{mode:o}=j(qe),G=e.state===x.CLOSED,s=e.state===x.OPEN,n;A[0]!==e.canTakeover||A[1]!==G?(n=G&&!e.canTakeover&&(0,r.jsx)(_a,{}),A[0]=e.canTakeover,A[1]=G,A[2]=n):n=A[2];let k=o==="read"?"fixed":"absolute",R;A[3]===k?R=A[4]:(R=f("z-50 top-4 left-4",k),A[3]=k,A[4]=R);let i;A[5]!==s||A[6]!==t?(i=s&&t&&(0,r.jsx)(Na,{}),A[5]=s,A[6]=t,A[7]=i):i=A[7];let l;A[8]!==e.canTakeover||A[9]!==G?(l=G&&!e.canTakeover&&(0,r.jsx)(ba,{}),A[8]=e.canTakeover,A[9]=G,A[10]=l):l=A[10];let c;A[11]!==e.canTakeover||A[12]!==G?(c=G&&e.canTakeover&&(0,r.jsx)(Ma,{}),A[11]=e.canTakeover,A[12]=G,A[13]=c):c=A[13];let g;A[14]!==R||A[15]!==i||A[16]!==l||A[17]!==c?(g=(0,r.jsxs)("div",{className:R,children:[i,l,c]}),A[14]=R,A[15]=i,A[16]=l,A[17]=c,A[18]=g):g=A[18];let h;return A[19]!==n||A[20]!==g?(h=(0,r.jsxs)(r.Fragment,{children:[n,g]}),A[19]=n,A[20]=g,A[21]=h):h=A[21],h};var iA="print:hidden pointer-events-auto hover:cursor-pointer",ba=()=>{let a=(0,L.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsx)(kA,{content:"App disconnected",children:(0,r.jsx)("div",{className:iA,children:(0,r.jsx)(ca,{className:"w-[25px] h-[25px] text-(--red-11)"})})}),a[0]=A):A=a[0],A},Ma=()=>{let a=(0,L.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsx)(kA,{content:"Notebook locked",children:(0,r.jsx)("div",{className:iA,children:(0,r.jsx)(He,{className:"w-[25px] h-[25px] text-(--blue-11)"})})}),a[0]=A):A=a[0],A},Na=()=>{let a=(0,L.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsx)(kA,{content:"Jump to running cell",side:"right",children:(0,r.jsx)("div",{className:iA,"data-testid":"loading-indicator",onClick:ya,children:(0,r.jsx)(la,{className:"running-app-icon",size:30,strokeWidth:1})})}),a[0]=A):A=a[0],A},_a=()=>{let a=(0,L.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"noise"}),(0,r.jsx)("div",{className:"disconnected-gradient"})]}),a[0]=A):A=a[0],A},C=B(),ja=$e,Sa=aa,Fa=Je(ea),_A=u.forwardRef((a,A)=>{let e=(0,C.c)(9),t,o;e[0]===a?(t=e[1],o=e[2]):({className:t,...o}=a,e[0]=a,e[1]=t,e[2]=o);let G;e[3]===t?G=e[4]:(G=f("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),e[3]=t,e[4]=G);let s;return e[5]!==o||e[6]!==A||e[7]!==G?(s=(0,r.jsx)(DA,{className:G,...o,ref:A}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});_A.displayName=DA.displayName;var Qa=_e("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),jA=u.forwardRef((a,A)=>{let e=(0,C.c)(15),t,o,G,s;e[0]===a?(t=e[1],o=e[2],G=e[3],s=e[4]):({side:s,className:o,children:t,...G}=a,e[0]=a,e[1]=t,e[2]=o,e[3]=G,e[4]=s);let n=s===void 0?"right":s,k;e[5]===Symbol.for("react.memo_cache_sentinel")?(k=(0,r.jsx)(_A,{}),e[5]=k):k=e[5];let R;e[6]!==o||e[7]!==n?(R=f(Qa({side:n}),o),e[6]=o,e[7]=n,e[8]=R):R=e[8];let i;e[9]===Symbol.for("react.memo_cache_sentinel")?(i=(0,r.jsxs)(Aa,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[(0,r.jsx)(Te,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]}),e[9]=i):i=e[9];let l;return e[10]!==t||e[11]!==G||e[12]!==A||e[13]!==R?(l=(0,r.jsx)(Fa,{children:(0,r.jsxs)(We,{children:[k,(0,r.jsxs)(EA,{ref:A,className:R,...G,children:[t,i]})]})}),e[10]=t,e[11]=G,e[12]=A,e[13]=R,e[14]=l):l=e[14],l});jA.displayName=EA.displayName;var La=a=>{let A=(0,C.c)(8),e,t;A[0]===a?(e=A[1],t=A[2]):({className:e,...t}=a,A[0]=a,A[1]=e,A[2]=t);let o;A[3]===e?o=A[4]:(o=f("flex flex-col space-y-2 text-center sm:text-left",e),A[3]=e,A[4]=o);let G;return A[5]!==t||A[6]!==o?(G=(0,r.jsx)("div",{className:o,...t}),A[5]=t,A[6]=o,A[7]=G):G=A[7],G};La.displayName="SheetHeader";var Pa=a=>{let A=(0,C.c)(8),e,t;A[0]===a?(e=A[1],t=A[2]):({className:e,...t}=a,A[0]=a,A[1]=e,A[2]=t);let o;A[3]===e?o=A[4]:(o=f("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),A[3]=e,A[4]=o);let G;return A[5]!==t||A[6]!==o?(G=(0,r.jsx)("div",{className:o,...t}),A[5]=t,A[6]=o,A[7]=G):G=A[7],G};Pa.displayName="SheetFooter";var Oa=u.forwardRef((a,A)=>{let e=(0,C.c)(9),t,o;e[0]===a?(t=e[1],o=e[2]):({className:t,...o}=a,e[0]=a,e[1]=t,e[2]=o);let G;e[3]===t?G=e[4]:(G=f("text-lg font-semibold text-foreground",t),e[3]=t,e[4]=G);let s;return e[5]!==o||e[6]!==A||e[7]!==G?(s=(0,r.jsx)(yA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});Oa.displayName=yA.displayName;var Ta=u.forwardRef((a,A)=>{let e=(0,C.c)(9),t,o;e[0]===a?(t=e[1],o=e[2]):({className:t,...o}=a,e[0]=a,e[1]=t,e[2]=o);let G;e[3]===t?G=e[4]:(G=f("text-sm text-muted-foreground",t),e[3]=t,e[4]=G);let s;return e[5]!==o||e[6]!==A||e[7]!==G?(s=(0,r.jsx)(vA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});Ta.displayName=vA.displayName;var Ia=B();const lA=(0,u.memo)(()=>{let a=(0,Ia.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsx)(me,{name:uA.SIDEBAR}),a[0]=A):A=a[0],A});lA.displayName="SidebarSlot";var Ka=B();const Ha=a=>{let A=(0,Ka.c)(6),{openWidth:e}=a,t;A[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)(Sa,{className:"lg:hidden",asChild:!0,children:(0,r.jsx)(rA,{variant:"ghost",className:"bg-background",children:(0,r.jsx)(MA,{className:"w-5 h-5"})})}),A[0]=t):t=A[0];let o;A[1]===e?o=A[2]:(o={maxWidth:e},A[1]=e,A[2]=o);let G;A[3]===Symbol.for("react.memo_cache_sentinel")?(G=(0,r.jsx)(lA,{}),A[3]=G):G=A[3];let s;return A[4]===o?s=A[5]:(s=(0,r.jsxs)(ja,{children:[t,(0,r.jsx)(jA,{className:"w-full px-3 h-full flex flex-col overflow-y-auto",style:o,side:"left",children:G})]}),A[4]=o,A[5]=s),s};var Ua=B();const Va=a=>{let A=(0,Ua.c)(7),{isOpen:e,toggle:t}=a,o=e?"rotate-0":"rotate-180",G;A[0]===o?G=A[1]:(G=f("h-5 w-5 transition-transform ease-in-out duration-700",o),A[0]=o,A[1]=G);let s;A[2]===G?s=A[3]:(s=(0,r.jsx)(Oe,{className:G}),A[2]=G,A[3]=s);let n;return A[4]!==s||A[5]!==t?(n=(0,r.jsx)("div",{className:"invisible lg:visible absolute top-[12px] right-[16px] z-20",children:(0,r.jsx)(rA,{onClick:t,className:"w-10 h-8",variant:"ghost",size:"icon",children:s})}),A[4]=s,A[5]=t,A[6]=n):n=A[6],n};var Xa=B();const Ja=a=>{let A=(0,Xa.c)(11),{isOpen:e,toggle:t,width:o}=a,G=e?o:ne,s;A[0]===G?s=A[1]:(s={width:G},A[0]=G,A[1]=s);let n;A[2]===Symbol.for("react.memo_cache_sentinel")?(n=f("app-sidebar auto-collapse-nav","top-0 left-0 z-20 h-full hidden lg:block relative transition-[width] ease-in-out duration-300"),A[2]=n):n=A[2];let k;A[3]!==e||A[4]!==t?(k=(0,r.jsx)(Va,{isOpen:e,toggle:t}),A[3]=e,A[4]=t,A[5]=k):k=A[5];let R;A[6]===Symbol.for("react.memo_cache_sentinel")?(R=(0,r.jsx)("div",{className:"relative h-full flex flex-col px-3 pb-16 pt-14 overflow-y-auto shadow-sm border-l",children:(0,r.jsx)(lA,{})}),A[6]=R):R=A[6];let i;return A[7]!==e||A[8]!==s||A[9]!==k?(i=(0,r.jsxs)("aside",{"data-expanded":e,style:s,className:n,children:[k,R]}),A[7]=e,A[8]=s,A[9]=k,A[10]=i):i=A[10],i};var Wa=B();const qa=a=>{let A=(0,Wa.c)(15),{children:e}=a,[t,o]=hA(ie),{isOpen:G,width:s}=t;if(ue(uA.SIDEBAR).length===0)return e;let n;A[0]===s?n=A[1]:(n=ke(s),A[0]=s,A[1]=n);let k=n,R;A[2]!==o||A[3]!==G?(R=()=>o({type:"toggle",isOpen:!G}),A[2]=o,A[3]=G,A[4]=R):R=A[4];let i;A[5]!==G||A[6]!==k||A[7]!==R?(i=(0,r.jsx)(Ja,{isOpen:G,width:k,toggle:R}),A[5]=G,A[6]=k,A[7]=R,A[8]=i):i=A[8];let l;A[9]===k?l=A[10]:(l=(0,r.jsx)("div",{className:"absolute top-3 left-4 flex items-center z-50",children:(0,r.jsx)(Ha,{openWidth:k})}),A[9]=k,A[10]=l);let c;return A[11]!==e||A[12]!==i||A[13]!==l?(c=(0,r.jsxs)("div",{className:"inset-0 absolute flex",children:[i,l,e]}),A[11]=e,A[12]=i,A[13]=l,A[14]=c):c=A[14],c};var za=B();const $a=a=>{let A=(0,za.c)(17),{width:e,connection:t,isRunning:o,children:G}=a,s=t.state,n;A[0]===o?n=A[1]:(n=(0,r.jsx)(Ea,{isRunning:o}),A[0]=o,A[1]=n);let k;A[2]!==t||A[3]!==o?(k=(0,r.jsx)(Ca,{connection:t,isRunning:o}),A[2]=t,A[3]=o,A[4]=k):k=A[4];let R;A[5]!==s||A[6]!==e?(R=f("mathjax_ignore",De(s)&&"disconnected","bg-background w-full h-full text-textColor","flex flex-col overflow-y-auto",e==="full"&&"config-width-full",e==="columns"?"overflow-x-auto":"overflow-x-hidden","print:height-fit"),A[5]=s,A[6]=e,A[7]=R):R=A[7];let i;A[8]!==G||A[9]!==s||A[10]!==R||A[11]!==e?(i=(0,r.jsx)(fa,{children:(0,r.jsx)(qa,{children:(0,r.jsx)("div",{id:"App","data-config-width":e,"data-connection-state":s,className:R,children:G})})}),A[8]=G,A[9]=s,A[10]=R,A[11]=e,A[12]=i):i=A[12];let l;return A[13]!==n||A[14]!==k||A[15]!==i?(l=(0,r.jsxs)(r.Fragment,{children:[n,k,i]}),A[13]=n,A[14]=k,A[15]=i,A[16]=l):l=A[16],l};function At(a){return a.kind==="missing"}function SA(a){return a.kind==="installing"}var{valueAtom:et,useActions:at}=je(()=>({packageAlert:null,startupLogsAlert:null,packageLogs:{}}),{addPackageAlert:(a,A)=>{var o;let e={...a.packageLogs};if(SA(A)&&A.logs&&A.log_status)for(let[G,s]of Object.entries(A.logs))switch(A.log_status){case"start":e[G]=s;break;case"append":e[G]=(e[G]||"")+s;break;case"done":e[G]=(e[G]||"")+s;break}let t=((o=a.packageAlert)==null?void 0:o.id)||Ve();return{...a,packageAlert:{id:t,...A},packageLogs:e}},clearPackageAlert:(a,A)=>a.packageAlert!==null&&a.packageAlert.id===A?{...a,packageAlert:null,packageLogs:{}}:a,addStartupLog:(a,A)=>{var t;let e=((t=a.startupLogsAlert)==null?void 0:t.content)||"";return{...a,startupLogsAlert:{...a.startupLogsAlert,content:e+A.content,status:A.status}}},clearStartupLogsAlert:a=>({...a,startupLogsAlert:null})});const tt=()=>j(et);function FA(){return at()}var QA=B();const LA=(0,u.memo)(a=>{let A=(0,QA.c)(11),{appConfig:e,mode:t,children:o}=a,{selectedLayout:G,layoutData:s}=Fe(),n=j(wA);if(t==="edit"&&!n)return o;let k;if(A[0]!==t||A[1]!==G){k=G;let c=new URLSearchParams(window.location.search);if(t==="read"&&c.has(oA.viewAs)){let g=c.get(oA.viewAs);Ra.includes(g)&&(k=g)}A[0]=t,A[1]=G,A[2]=k}else k=A[2];let R;A[3]===k?R=A[4]:(R=Le.find(c=>c.type===k),A[3]=k,A[4]=R);let i=R;if(!i)return o;let l;return A[5]!==e||A[6]!==k||A[7]!==s||A[8]!==t||A[9]!==i?(l=(0,r.jsx)(Gt,{appConfig:e,mode:t,plugin:i,layoutData:s,finalLayout:k}),A[5]=e,A[6]=k,A[7]=s,A[8]=t,A[9]=i,A[10]=l):l=A[10],l});LA.displayName="CellsRenderer";const Gt=a=>{let A=(0,QA.c)(18),{appConfig:e,mode:t,plugin:o,layoutData:G,finalLayout:s}=a,n=WA(),{setCurrentLayoutData:k}=xA(),R,i,l,c,g;if(A[0]!==e||A[1]!==s||A[2]!==G||A[3]!==t||A[4]!==n||A[5]!==o){let w=ae(n);R=o.Component,i=e,l=t,c=w,g=G[s]||o.getInitialLayout(w),A[0]=e,A[1]=s,A[2]=G,A[3]=t,A[4]=n,A[5]=o,A[6]=R,A[7]=i,A[8]=l,A[9]=c,A[10]=g}else R=A[6],i=A[7],l=A[8],c=A[9],g=A[10];let h;return A[11]!==R||A[12]!==k||A[13]!==i||A[14]!==l||A[15]!==c||A[16]!==g?(h=(0,r.jsx)(R,{appConfig:i,mode:l,cells:c,layout:g,setLayout:k}),A[11]=R,A[12]=k,A[13]=i,A[14]=l,A[15]=c,A[16]=g,A[17]=h):h=A[17],h};var ot=class PA{constructor(A){GA(this,"hasStarted",!1);GA(this,"handleReadyEvent",A=>{let e=A.detail.objectId;if(!this.uiElementRegistry.has(e))return;let t=this.uiElementRegistry.lookupValue(e);t!==void 0&&this.sendComponentValues({objectIds:[e],values:[t]}).catch(o=>{D.warn(o)})});this.uiElementRegistry=A}static get INSTANCE(){let A="_marimo_private_RuntimeState";return window[A]||(window[A]=new PA(S)),window[A]}get sendComponentValues(){if(!this._sendComponentValues)throw Error("sendComponentValues is not set");return this._sendComponentValues}start(A){if(this.hasStarted){D.warn("RuntimeState already started");return}this._sendComponentValues=A,document.addEventListener(YA.TYPE,this.handleReadyEvent),this.hasStarted=!0}stop(){if(!this.hasStarted){D.warn("RuntimeState already stopped");return}document.removeEventListener(YA.TYPE,this.handleReadyEvent),this.hasStarted=!1}};function st(a){if(a.static)return Be.empty();if(sA())return pe();let A=a.url;return new na(A,void 0,{maxRetries:10,debug:!1,startClosed:!0,connectionTimeout:1e4})}function rt(a){let{onOpen:A,onMessage:e,onClose:t,onError:o,waitToConnect:G}=a,[s]=(0,u.useState)(()=>{let n=st(a);return n.addEventListener("open",A),n.addEventListener("close",t),n.addEventListener("error",o),n.addEventListener("message",e),n});return(0,u.useEffect)(()=>(s.readyState===WebSocket.CLOSED&&G().then(()=>s.reconnect()).catch(n=>{D.error("Healthy connection never made",n),s.close()}),()=>{D.warn("useConnectionTransport is unmounting. This likely means there is a bug."),s.close(),s.removeEventListener("open",A),s.removeEventListener("close",t),s.removeEventListener("error",o),s.removeEventListener("message",e)}),[s]),s}function nt(a){let{codes:A,names:e,configs:t,cell_ids:o,last_executed_code:G,last_execution_time:s}=a,n=G||{},k=s||{};return A.map((R,i)=>{let l=o[i],c=n[l];return XA({id:l,code:R,edited:c?c!==R:!1,name:e[i],lastCodeRun:n[l]??null,lastExecutionTime:k[l]??null,config:t[i]})})}function kt(a,A,e){let t=Qe(),{layout:o}=a;if(o){let G=o.type,s=Pe({type:G,data:o.data,cells:A});t.selectedLayout=G,t.layoutData[G]=s,e({layoutView:G,data:s})}return t}function Rt(){let a=[],A=[];return S.entries.forEach((e,t)=>{a.push(t),A.push(e.value)}),{objectIds:a,values:A}}function it(a,A){let{existingCells:e,autoInstantiate:t,setCells:o,setLayoutData:G,setAppConfig:s,setCapabilities:n,setKernelState:k,onError:R}=A,{resumed:i,ui_values:l,app_config:c,capabilities:g,auto_instantiated:h}=a,w=e&&e.length>0,y=w&&!i?e:nt(a);o(y,kt(a,y,G));let v=xe.safeParse(c);if(v.success?s(v.data):D.error("Failed to parse app config",v.error),n(g),h)return;if(i){for(let[Y,m]of mA.entries(l||{}))S.set(Y,m);return}let{objectIds:b,values:M}=Rt(),N=w?Object.fromEntries(e.map(Y=>[Y.id,Y.code])):void 0;Se().sendInstantiate({objectIds:b,values:M,autoRun:t,codes:N}).then(()=>{k({isInstantiated:!0,error:null})}).catch(Y=>{k({isInstantiated:!1,error:Y}),R(Error("Failed to instantiate",{cause:Y}))})}function lt(a){let A=a.cell_id;S.removeElementsByCell(A),pA.INSTANCE.removeForCellId(A)}function Zt(a,A){A(a),pA.INSTANCE.track(a)}const W={append:a=>{let A=new URL(window.location.href);A.searchParams.append(a.key,a.value),window.history.pushState({},"",`${A.pathname}${A.search}`)},set:a=>{let A=new URL(window.location.href);Array.isArray(a.value)?(A.searchParams.delete(a.key),a.value.forEach(e=>A.searchParams.append(a.key,e))):A.searchParams.set(a.key,a.value),window.history.pushState({},"",`${A.pathname}${A.search}`)},delete:a=>{let A=new URL(window.location.href);a.value==null?A.searchParams.delete(a.key):A.searchParams.delete(a.key,a.value),window.history.pushState({},"",`${A.pathname}${A.search}`)},clear:()=>{let a=new URL(window.location.href);a.search="",window.history.pushState({},"",`${a.pathname}${a.search}`)}};var ct=B();function gt(){return Object.values(BA().cellData).filter(a=>a.id!==zA)}function ht(a){let A=(0,ct.c)(37),e=(0,u.useRef)(!0),{autoInstantiate:t,sessionId:o,setCells:G}=a,{showBoundary:s}=be(),{handleCellMessage:n,setCellCodes:k,setCellIds:R}=oe(),{addCellNotification:i}=ia(),l=_(Ue),c=we(),{setVariables:g,setMetadata:h}=Ge(),{addColumnPreview:w}=dA(),{addDatasets:y,filterDatasetsFromVariables:v}=dA(),{addDataSourceConnection:b,filterDataSourcesFromVariables:M}=ee(),{setLayoutData:N}=xA(),[Y,m]=hA(ve),{addBanner:q}=fe(),{addPackageAlert:P,addStartupLog:z}=FA(),$=_(wA),AA=_($A),E=Ee(),eA=_(ra),aA=_(Ye),O;A[0]!==q||A[1]!==i||A[2]!==w||A[3]!==b||A[4]!==y||A[5]!==P||A[6]!==z||A[7]!==t||A[8]!==M||A[9]!==v||A[10]!==n||A[11]!==c||A[12]!==eA||A[13]!==AA||A[14]!==k||A[15]!==R||A[16]!==G||A[17]!==aA||A[18]!==l||A[19]!==$||A[20]!==N||A[21]!==h||A[22]!==g||A[23]!==s?(O=d=>{let Z=te(d.data);switch(Z.data.op){case"reload":CA();return;case"kernel-ready":{let p=gt();it(Z.data,{autoInstantiate:t,setCells:G,setLayoutData:N,setAppConfig:c,setCapabilities:AA,setKernelState:l,onError:s,existingCells:p}),$(Z.data.kiosk);return}case"completed-run":return;case"interrupted":return;case"kernel-startup-error":aA(Z.data.error);return;case"send-ui-element-message":{let p=Z.data.ui_element;if(p){let OA=Ie(Z.data);S.broadcastMessage(p,Z.data.message,OA)}return}case"model-lifecycle":Ze(le,Z.data);return;case"remove-ui-elements":lt(Z.data);return;case"completion-result":Ae.resolve(Z.data.completion_id,Z.data);return;case"function-call-result":ce.resolve(Z.data.function_call_id,Z.data);return;case"cell-op":{Zt(Z.data,n);let p=BA().cellData[Z.data.cell_id];if(!p)return;i({cellNotification:Z.data,code:p.code});return}case"variables":g(Z.data.variables.map(mt)),v(Z.data.variables.map(Yt)),M(Z.data.variables.map(ut));return;case"variable-values":h(Z.data.variables.map(Bt));return;case"alert":nA({title:Z.data.title,description:ta({html:Z.data.description}),variant:Z.data.variant});return;case"banner":q(Z.data);return;case"missing-package-alert":P({...Z.data,kind:"missing"});return;case"installing-package-alert":P({...Z.data,kind:"installing"});return;case"startup-logs":z({content:Z.data.content,status:Z.data.status});return;case"query-params-append":W.append(Z.data);return;case"query-params-set":W.set(Z.data);return;case"query-params-delete":W.delete(Z.data);return;case"query-params-clear":W.clear();return;case"datasets":y(Z.data);return;case"data-column-preview":w(Z.data);return;case"sql-table-preview":VA.resolve(Z.data.request_id,Z.data);return;case"sql-table-list-preview":UA.resolve(Z.data.request_id,Z.data);return;case"validate-sql-result":qA.resolve(Z.data.request_id,Z.data);return;case"secret-keys-result":ka.resolve(Z.data.request_id,Z.data);return;case"cache-info":eA(Z.data);return;case"cache-cleared":return;case"data-source-connections":b({connections:Z.data.connections.map(dt)});return;case"reconnected":return;case"focus-cell":JA(Z.data.cell_id);return;case"update-cell-codes":k({codes:Z.data.codes,ids:Z.data.cell_ids,codeIsStale:Z.data.code_is_stale});return;case"update-cell-ids":R({cellIds:Z.data.cell_ids});return;default:re(Z.data)}},A[0]=q,A[1]=i,A[2]=w,A[3]=b,A[4]=y,A[5]=P,A[6]=z,A[7]=t,A[8]=M,A[9]=v,A[10]=n,A[11]=c,A[12]=eA,A[13]=AA,A[14]=k,A[15]=R,A[16]=G,A[17]=aA,A[18]=l,A[19]=$,A[20]=N,A[21]=h,A[22]=g,A[23]=s,A[24]=O):O=A[24];let tA=O,ZA=(d,Z)=>{e.current&&(e.current=!1,V.reconnect(d,Z))},T;A[25]===Symbol.for("react.memo_cache_sentinel")?(T=fA(),A[25]=T):T=A[25];let I;A[26]!==E||A[27]!==o?(I=()=>E.getWsURL(o).toString(),A[26]=E,A[27]=o,A[28]=I):I=A[28];let K;A[29]===m?K=A[30]:(K=async()=>{e.current=!0,m({state:x.OPEN})},A[29]=m,A[30]=K);let H;A[31]===E?H=A[32]:(H=async()=>{fA()||sA()||E.isSameOrigin||await E.waitForHealthy()},A[31]=E,A[32]=H);let U;A[33]===tA?U=A[34]:(U=d=>{try{tA(d)}catch(Z){let p=Z;D.error("Failed to handle message",d.data,p),nA({title:"Failed to handle message",description:bA(p),variant:"danger"})}},A[33]=tA,A[34]=U);let V=rt({static:T,url:I,onOpen:K,waitToConnect:H,onMessage:U,onClose:d=>{switch(D.warn("WebSocket closed",d.code,d.reason),d.reason){case"MARIMO_ALREADY_CONNECTED":m({state:x.CLOSED,code:F.ALREADY_RUNNING,reason:"another browser tab is already connected to the kernel",canTakeover:!0}),V.close();return;case"MARIMO_WRONG_KERNEL_ID":case"MARIMO_NO_FILE_KEY":case"MARIMO_NO_SESSION_ID":case"MARIMO_NO_SESSION":case"MARIMO_SHUTDOWN":m({state:x.CLOSED,code:F.KERNEL_DISCONNECTED,reason:"kernel not found"}),V.close();return;case"MARIMO_MALFORMED_QUERY":m({state:x.CLOSED,code:F.MALFORMED_QUERY,reason:"the kernel did not recognize a request; please file a bug with marimo"});return;default:if(d.reason==="MARIMO_KERNEL_STARTUP_ERROR"){m({state:x.CLOSED,code:F.KERNEL_STARTUP_ERROR,reason:"Failed to start kernel sandbox"}),V.close();return}m({state:x.CONNECTING}),ZA(d.code,d.reason)}},onError:d=>{D.warn("WebSocket error",d),m({state:x.CLOSED,code:F.KERNEL_DISCONNECTED,reason:"kernel not found"}),ZA()}}),X;return A[35]===Y?X=A[36]:(X={connection:Y},A[35]=Y,A[36]=X),X}function dt(a){return{...a,name:a.name}}function Bt(a){return{name:a.name,dataType:a.datatype,value:a.value}}function ut(a){return a.name}function Yt(a){return a.name}function mt(a){return{name:a.name,declaredBy:a.declared_by,usedBy:a.used_by}}var ft=B();const pt=a=>{let A=(0,ft.c)(2),{children:e}=a,t;return A[0]===e?t=A[1]:(t=(0,r.jsx)("div",{className:"flex flex-col flex-1 overflow-hidden absolute inset-0 print:relative",children:e}),A[0]=e,A[1]=t),t};export{SA as a,tt as c,MA as d,LA as i,$a as l,ht as n,At as o,ot as r,FA as s,pt as t,ua as u};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var Ct=Object.defineProperty;var _e=t=>{throw TypeError(t)};var _t=(t,e,n)=>e in t?Ct(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var a=(t,e,n)=>_t(t,typeof e!="symbol"?e+"":e,n),ce=(t,e,n)=>e.has(t)||_e("Cannot "+n);var u=(t,e,n)=>(ce(t,e,"read from private field"),n?n.call(t):e.get(t)),N=(t,e,n)=>e.has(t)?_e("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),P=(t,e,n,r)=>(ce(t,e,"write to private field"),r?r.call(t,n):e.set(t,n),n),ee=(t,e,n)=>(ce(t,e,"access private method"),n);var j,Z,gt,yt,le,U,z,$,q,O,Y,I,H,D,vt,xt,Et,ue;import{s as Se}from"./chunk-LvLJmgfZ.js";import{i as de,l as te,p as T,u as St}from"./useEvent-BhXAndur.js";import{t as Rt}from"./react-Bj1aDYRI.js";import{Ur as kt,Yr as Ft,b as Nt,ei as qt,mn as Mt,ti as K,y as Pt}from"./cells-DPp5cDaO.js";import{t as Re}from"./compiler-runtime-B3qBwwSJ.js";import{t as jt}from"./get-6uJrSKbw.js";import{t as At}from"./assertNever-CBU83Y6o.js";import{t as It}from"./debounce-B3mjKxHe.js";import{t as Lt}from"./_baseSet-5Rdwpmr3.js";import{d as x,p as b}from"./hotkeys-BHHWjLlp.js";import{t as Tt}from"./invariant-CAG_dYON.js";import{S as Ut}from"./utils-YqBXNpsM.js";import{S as zt}from"./config-Q0O7_stz.js";import{a as Ot}from"./switch-dWLWbbtg.js";import{n as ke}from"./globals-BgACvYmr.js";import{t as Fe}from"./ErrorBoundary-B9Ifj8Jf.js";import{t as Dt}from"./jsx-runtime-ZmTK25f3.js";import{t as Wt}from"./button-CZ3Cs4qb.js";import{t as Ht}from"./cn-BKtXLv3a.js";import{Z as Bt}from"./JsonOutput-PE5ko4gi.js";import{t as Vt}from"./createReducer-B3rBsy4P.js";import{t as me}from"./requests-B4FYHTZl.js";import{t as Ne}from"./createLucideIcon-BCdY6lG5.js";import{t as Xt}from"./x-ZP5cObgf.js";import{a as qe,l as $t,r as Me}from"./markdown-renderer-DJy8ww5d.js";import{t as Yt}from"./DeferredRequestRegistry-CMf25YiV.js";import{t as fe}from"./Deferred-DxQeE5uh.js";import{t as Pe}from"./uuid-DXdzqzcr.js";import{t as Qt}from"./use-toast-BDYuj3zG.js";import{t as je}from"./tooltip-CMQz28hC.js";import{t as Ae}from"./mode-Bn7pdJvO.js";import{n as Gt,r as Kt,t as Jt}from"./share-ipf2hrOh.js";import{r as Zt,t as en}from"./react-resizable-panels.browser.esm-Da3ksQXL.js";import{t as Ie}from"./toggle-zVW4FXNz.js";function tn(t,e,n){return t==null?t:Lt(t,e,n)}var ne=tn,nn=Ne("crosshair",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]]),rn=Ne("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);function sn(t){return{all:t||(t=new Map),on:function(e,n){var r=t.get(e);r?r.push(n):t.set(e,[n])},off:function(e,n){var r=t.get(e);r&&(n?r.splice(r.indexOf(n)>>>0,1):t.set(e,[]))},emit:function(e,n){var r=t.get(e);r&&r.slice().map(function(s){s(n)}),(r=t.get("*"))&&r.slice().map(function(s){s(e,n)})}}}var c=Se(Rt(),1),pe=(0,c.createContext)(null),an=t=>{let{controller:e}=(0,c.useContext)(pe),n=c.useRef(Symbol("fill"));return(0,c.useEffect)(()=>(e.mount({name:t.name,ref:n.current,children:t.children}),()=>{e.unmount({name:t.name,ref:n.current})}),[]),(0,c.useEffect)(()=>{e.update({name:t.name,ref:n.current,children:t.children})}),null},on=Object.defineProperty,ln=(t,e,n)=>e in t?on(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Le=(t,e,n)=>(ln(t,typeof e=="symbol"?e:e+"",n),n),Te=console,un=class{constructor(t){Le(this,"_bus"),Le(this,"_db"),this._bus=t,this.handleFillMount=this.handleFillMount.bind(this),this.handleFillUpdated=this.handleFillUpdated.bind(this),this.handleFillUnmount=this.handleFillUnmount.bind(this),this._db={byName:new Map,byFill:new Map}}mount(){this._bus.on("fill-mount",this.handleFillMount),this._bus.on("fill-updated",this.handleFillUpdated),this._bus.on("fill-unmount",this.handleFillUnmount)}unmount(){this._bus.off("fill-mount",this.handleFillMount),this._bus.off("fill-updated",this.handleFillUpdated),this._bus.off("fill-unmount",this.handleFillUnmount)}handleFillMount({fill:t}){let e=c.Children.toArray(t.children),n=t.name,r={fill:t,children:e,name:n},s=this._db.byName.get(n);s?(s.components.push(r),s.listeners.forEach(i=>i([...s.components]))):this._db.byName.set(n,{listeners:[],components:[r]}),this._db.byFill.set(t.ref,r)}handleFillUpdated({fill:t}){let e=this._db.byFill.get(t.ref),n=c.Children.toArray(t.children);if(e){e.children=n;let r=this._db.byName.get(e.name);if(r)r.listeners.forEach(s=>s([...r.components]));else throw Error("registration was expected to be defined")}else{Te.error("[handleFillUpdated] component was expected to be defined");return}}handleFillUnmount({fill:t}){let e=this._db.byFill.get(t.ref);if(!e){Te.error("[handleFillUnmount] component was expected to be defined");return}let n=e.name,r=this._db.byName.get(n);if(!r)throw Error("registration was expected to be defined");r.components=r.components.filter(s=>s!==e),this._db.byFill.delete(t.ref),r.listeners.length===0&&r.components.length===0?this._db.byName.delete(n):r.listeners.forEach(s=>s([...r.components]))}onComponentsChange(t,e){let n=this._db.byName.get(t);n?(n.listeners.push(e),e(n.components)):(this._db.byName.set(t,{listeners:[e],components:[]}),e([]))}getFillsByName(t){let e=this._db.byName.get(t);return e?e.components.map(n=>n.fill):[]}getChildrenByName(t){let e=this._db.byName.get(t);return e?e.components.map(n=>n.children).reduce((n,r)=>n.concat(r),[]):[]}removeOnComponentsChange(t,e){let n=this._db.byName.get(t);if(!n)throw Error("expected registration to be defined");let r=n.listeners;r.splice(r.indexOf(e),1)}},cn=Object.defineProperty,dn=(t,e,n)=>e in t?cn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,mn=(t,e,n)=>(dn(t,typeof e=="symbol"?e:e+"",n),n),Ue=class{constructor(){mn(this,"bus",sn())}mount(t){this.bus.emit("fill-mount",{fill:t})}unmount(t){this.bus.emit("fill-unmount",{fill:t})}update(t){this.bus.emit("fill-updated",{fill:t})}};function fn(t){let e=t||new Ue;return{controller:e,manager:new un(e.bus)}}var pn=({controller:t,children:e})=>{let[n]=c.useState(()=>{let r=fn(t);return r.manager.mount(),r});return c.useEffect(()=>()=>{n.manager.unmount()},[]),c.createElement(pe.Provider,{value:n},e)};function he(t,e){let[n,r]=(0,c.useState)([]),{manager:s}=(0,c.useContext)(pe);return(0,c.useEffect)(()=>(s.onComponentsChange(t,r),()=>{s.removeOnComponentsChange(t,r)}),[t]),n.flatMap((i,m)=>{let{children:l}=i;return l.map((h,v)=>{if(typeof h=="number"||typeof h=="string")throw Error("Only element children will work here");return c.cloneElement(h,{key:m.toString()+v.toString(),...e})})})}var ze=t=>{let e=he(t.name,t.childProps);if(typeof t.children=="function"){let n=t.children(e);if(c.isValidElement(n)||n===null)return n;throw Error("Slot rendered with function must return a valid React Element.")}return e};const hn=T(null);var{valueAtom:gn,useActions:yn}=Vt(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:Pe()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(n=>n.id!==e)}),clearBanners:t=>({...t,banners:[]})});const bn=()=>St(gn);function wn(){return yn()}const vn=new Ue,re={SIDEBAR:"sidebar",CONTEXT_AWARE_PANEL:"context-aware-panel"};var xn=class{constructor(){a(this,"subscriptions",new Map)}addSubscription(t,e){var n;this.subscriptions.has(t)||this.subscriptions.set(t,new Set),(n=this.subscriptions.get(t))==null||n.add(e)}removeSubscription(t,e){var n;(n=this.subscriptions.get(t))==null||n.delete(e)}notify(t,e){for(let n of this.subscriptions.get(t)??[])n(e)}},Oe=class Ce{constructor(e){a(this,"subscriptions",new xn);this.producer=e}static withProducerCallback(e){return new Ce(e)}static empty(){return new Ce}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,n){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,n){this.subscriptions.addSubscription(e,n),e==="open"&&n(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,n){this.subscriptions.removeSubscription(e,n)}},En=1e10,Cn=1e3;function se(t,e){let n=t.map(r=>`"${r}"`).join(", ");return Error(`This RPC instance cannot ${e} because the transport did not provide one or more of these methods: ${n}`)}function _n(t={}){let e={};function n(o){e=o}let r={};function s(o){var f;r.unregisterHandler&&r.unregisterHandler(),r=o,(f=r.registerHandler)==null||f.call(r,G)}let i;function m(o){if(typeof o=="function"){i=o;return}i=(f,y)=>{let d=o[f];if(d)return d(y);let g=o._;if(!g)throw Error(`The requested method has no handler: ${f}`);return g(f,y)}}let{maxRequestTime:l=Cn}=t;t.transport&&s(t.transport),t.requestHandler&&m(t.requestHandler),t._debugHooks&&n(t._debugHooks);let h=0;function v(){return h<=En?++h:h=0}let E=new Map,w=new Map;function _(o,...f){let y=f[0];return new Promise((d,g)=>{var V;if(!r.send)throw se(["send"],"make requests");let A=v(),W={type:"request",id:A,method:o,params:y};E.set(A,{resolve:d,reject:g}),l!==1/0&&w.set(A,setTimeout(()=>{w.delete(A),g(Error("RPC request timed out."))},l)),(V=e.onSend)==null||V.call(e,W),r.send(W)})}let S=new Proxy(_,{get:(o,f,y)=>f in o?Reflect.get(o,f,y):d=>_(f,d)}),R=S;function k(o,...f){var g;let y=f[0];if(!r.send)throw se(["send"],"send messages");let d={type:"message",id:o,payload:y};(g=e.onSend)==null||g.call(e,d),r.send(d)}let F=new Proxy(k,{get:(o,f,y)=>f in o?Reflect.get(o,f,y):d=>k(f,d)}),C=F,M=new Map,L=new Set;function B(o,f){var y;if(!r.registerHandler)throw se(["registerHandler"],"register message listeners");if(o==="*"){L.add(f);return}M.has(o)||M.set(o,new Set),(y=M.get(o))==null||y.add(f)}function Q(o,f){var y,d;if(o==="*"){L.delete(f);return}(y=M.get(o))==null||y.delete(f),((d=M.get(o))==null?void 0:d.size)===0&&M.delete(o)}async function G(o){var f,y;if((f=e.onReceive)==null||f.call(e,o),!("type"in o))throw Error("Message does not contain a type.");if(o.type==="request"){if(!r.send||!i)throw se(["send","requestHandler"],"handle requests");let{id:d,method:g,params:A}=o,W;try{W={type:"response",id:d,success:!0,payload:await i(g,A)}}catch(V){if(!(V instanceof Error))throw V;W={type:"response",id:d,success:!1,error:V.message}}(y=e.onSend)==null||y.call(e,W),r.send(W);return}if(o.type==="response"){let d=w.get(o.id);d!=null&&clearTimeout(d);let{resolve:g,reject:A}=E.get(o.id)??{};o.success?g==null||g(o.payload):A==null||A(Error(o.error));return}if(o.type==="message"){for(let g of L)g(o.id,o.payload);let d=M.get(o.id);if(!d)return;for(let g of d)g(o.payload);return}throw Error(`Unexpected RPC message type: ${o.type}`)}return{setTransport:s,setRequestHandler:m,request:S,requestProxy:R,send:F,sendProxy:C,addMessageListener:B,removeMessageListener:Q,proxy:{send:C,request:R},_setDebugHooks:n}}function Sn(t){return _n(t)}var De="[transport-id]";function Rn(t,e){let{transportId:n}=e;return n==null?t:{[De]:n,data:t}}function kn(t,e){let{transportId:n,filter:r}=e,s=r==null?void 0:r();if(n!=null&&s!=null)throw Error("Cannot use both `transportId` and `filter` at the same time");let i=t;if(n){if(t[De]!==n)return[!0];i=t.data}return s===!1?[!0]:[!1,i]}function Fn(t,e={}){let{transportId:n,filter:r,remotePort:s}=e,i=t,m=s??t,l;return{send(h){m.postMessage(Rn(h,{transportId:n}))},registerHandler(h){l=v=>{let E=v.data,[w,_]=kn(E,{transportId:n,filter:()=>r==null?void 0:r(v)});w||h(_)},i.addEventListener("message",l)},unregisterHandler(){l&&i.removeEventListener("message",l)}}}function Nn(t,e){return Fn(t,e)}function We(t){return Sn({transport:Nn(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{x.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{x.debug("[rpc] Worker -> Parent",e)}}})}const He=T("Initializing..."),qn=T(t=>{let e=t(Pt),n=Object.values(e.cellRuntime);return n.some(r=>!$t(r.output))?!0:n.every(r=>r.status==="idle")});var Be=Gt(),Ve="marimo:file",Xe=new kt(null);const Mn={saveFile(t){Xe.set(Ve,t)},readFile(){return Xe.get(Ve)}};var Pn={saveFile(t){K.setCodeForHash((0,Be.compressToEncodedURIComponent)(t))},readFile(){let t=K.getCodeFromHash()||K.getCodeFromSearchParam();return t?(0,Be.decompressFromEncodedURIComponent)(t):null}};const jn={saveFile(t){},readFile(){let t=document.querySelector("marimo-code");return t?decodeURIComponent(t.textContent||"").trim():null}};var An={saveFile(t){},readFile(){if(window.location.hostname!=="marimo.app")return null;let t=new URL("files/wasm-intro.py",document.baseURI);return fetch(t.toString()).then(e=>e.ok?e.text():null).catch(()=>null)}},In={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
|
|
2
|
-
`)}},$e=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}};const ie=new $e([jn,Pn]),ge=new $e([Mn,An,In]);var Ye=class bt{constructor(){a(this,"initialized",new fe);a(this,"sendRename",async({filename:e})=>(e===null||(K.setFilename(e),await this.rpc.proxy.request.bridge({functionName:"rename_file",payload:e})),null));a(this,"sendSave",async e=>{if(!this.saveRpc)return x.warn("Save RPC not initialized"),null;await this.saveRpc.saveNotebook(e);let n=await this.readCode();return n.contents&&(ie.saveFile(n.contents),ge.saveFile(n.contents)),this.rpc.proxy.request.saveNotebook(e).catch(r=>{x.error(r)}),null});a(this,"sendCopy",async()=>{b()});a(this,"sendStdin",async e=>(await this.rpc.proxy.request.bridge({functionName:"put_input",payload:e.text}),null));a(this,"sendPdb",async()=>{b()});a(this,"sendRun",async e=>(await this.rpc.proxy.request.loadPackages(e.codes.join(`
|
|
3
|
-
`)),await this.putControlRequest({type:"execute-cells",...e}),null));a(this,"sendRunScratchpad",async e=>(await this.rpc.proxy.request.loadPackages(e.code),await this.putControlRequest({type:"execute-scratchpad",...e}),null));a(this,"sendInterrupt",async()=>(this.interruptBuffer!==void 0&&(this.interruptBuffer[0]=2),null));a(this,"sendShutdown",async()=>(window.close(),null));a(this,"sendFormat",async e=>await this.rpc.proxy.request.bridge({functionName:"format",payload:e}));a(this,"sendDeleteCell",async e=>(await this.putControlRequest({type:"delete-cell",...e}),null));a(this,"sendInstallMissingPackages",async e=>(this.putControlRequest({type:"install-packages",...e}),null));a(this,"sendCodeCompletionRequest",async e=>(de.get(Nt)||await this.rpc.proxy.request.bridge({functionName:"code_complete",payload:e}),null));a(this,"saveUserConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_user_config",payload:e}),Ot.post("/kernel/save_user_config",e,{baseUrl:"/"}).catch(n=>(x.error(n),null))));a(this,"saveAppConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_app_config",payload:e}),null));a(this,"saveCellConfig",async e=>(await this.putControlRequest({type:"update-cell-config",...e}),null));a(this,"sendRestart",async()=>{let e=await this.readCode();return e.contents&&(ie.saveFile(e.contents),ge.saveFile(e.contents)),Kt(),null});a(this,"readCode",async()=>this.saveRpc?{contents:await this.saveRpc.readNotebook()}:(x.warn("Save RPC not initialized"),{contents:""}));a(this,"readSnippets",async()=>await this.rpc.proxy.request.bridge({functionName:"read_snippets",payload:void 0}));a(this,"openFile",async({path:e})=>{let n=Jt({code:null,baseUrl:window.location.origin});return window.open(n,"_blank"),null});a(this,"sendListFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"list_files",payload:e}));a(this,"sendSearchFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"search_files",payload:e}));a(this,"sendComponentValues",async e=>(await this.putControlRequest({type:"update-ui-element",...e,token:Pe()}),null));a(this,"sendInstantiate",async e=>null);a(this,"sendFunctionRequest",async e=>(await this.putControlRequest({type:"invoke-function",...e}),null));a(this,"sendCreateFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"create_file_or_directory",payload:e}));a(this,"sendDeleteFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"delete_file_or_directory",payload:e}));a(this,"sendRenameFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"move_file_or_directory",payload:e}));a(this,"sendUpdateFile",async e=>await this.rpc.proxy.request.bridge({functionName:"update_file",payload:e}));a(this,"sendFileDetails",async e=>await this.rpc.proxy.request.bridge({functionName:"file_details",payload:e}));a(this,"exportAsHTML",async e=>await this.rpc.proxy.request.bridge({functionName:"export_html",payload:e}));a(this,"exportAsMarkdown",async e=>await this.rpc.proxy.request.bridge({functionName:"export_markdown",payload:e}));a(this,"previewDatasetColumn",async e=>(await this.putControlRequest({type:"preview-dataset-column",...e}),null));a(this,"previewSQLTable",async e=>(await this.putControlRequest({type:"preview-sql-table",...e}),null));a(this,"previewSQLTableList",async e=>(await this.putControlRequest({type:"list-sql-tables",...e}),null));a(this,"previewDataSourceConnection",async e=>(await this.putControlRequest({type:"list-data-source-connection",...e}),null));a(this,"validateSQL",async e=>(await this.putControlRequest({type:"validate-sql",...e}),null));a(this,"sendModelValue",async e=>(await this.putControlRequest({type:"model",...e}),null));a(this,"syncCellIds",()=>Promise.resolve(null));a(this,"addPackage",async e=>this.rpc.proxy.request.addPackage(e));a(this,"removePackage",async e=>this.rpc.proxy.request.removePackage(e));a(this,"getPackageList",async()=>await this.rpc.proxy.request.listPackages());a(this,"getDependencyTree",async()=>({tree:{dependencies:[],name:"",tags:[],version:null}}));a(this,"listSecretKeys",async e=>(await this.putControlRequest({type:"list-secret-keys",...e}),null));a(this,"getUsageStats",b);a(this,"openTutorial",b);a(this,"getRecentFiles",b);a(this,"getWorkspaceFiles",b);a(this,"getRunningNotebooks",b);a(this,"shutdownSession",b);a(this,"exportAsPDF",b);a(this,"autoExportAsHTML",b);a(this,"autoExportAsMarkdown",b);a(this,"autoExportAsIPYNB",b);a(this,"updateCellOutputs",b);a(this,"writeSecret",b);a(this,"invokeAiTool",b);a(this,"clearCache",b);a(this,"getCacheInfo",b);zt()&&(this.rpc=We(new Worker(new URL(""+new URL("worker-BPV9SmHz.js",import.meta.url).href,""+import.meta.url),{type:"module",name:ke()})),this.rpc.addMessageListener("ready",()=>{this.startSession()}),this.rpc.addMessageListener("initialized",()=>{this.saveRpc=this.getSaveWorker(),this.setInterruptBuffer(),this.initialized.resolve()}),this.rpc.addMessageListener("initializingMessage",({message:e})=>{de.set(He,e)}),this.rpc.addMessageListener("initializedError",({error:e})=>{this.initialized.status==="resolved"&&(x.error(e),Qt({title:"Error initializing",description:e,variant:"danger"})),this.initialized.reject(Error(e))}),this.rpc.addMessageListener("kernelMessage",({message:e})=>{var n;(n=this.messageConsumer)==null||n.call(this,new MessageEvent("message",{data:e}))}))}static get INSTANCE(){let e="_marimo_private_PyodideBridge";return window[e]||(window[e]=new bt),window[e]}getSaveWorker(){return Ae()==="read"?(x.debug("Skipping SaveWorker in read-mode"),{readFile:b,readNotebook:b,saveNotebook:b}):We(new Worker(new URL(""+new URL("save-worker-CtJsIYIM.js",import.meta.url).href,""+import.meta.url),{type:"module",name:ke()})).proxy.request}async startSession(){let e=await ie.readFile(),n=await ge.readFile(),r=K.getFilename(),s=de.get(Ut),i={},m=new URLSearchParams(window.location.search);for(let l of m.keys()){let h=m.getAll(l);i[l]=h.length===1?h[0]:h}await this.rpc.proxy.request.startSession({queryParameters:i,code:e||n||"",filename:r,userConfig:{...s,runtime:{...s.runtime,auto_instantiate:Ae()==="read"?!0:s.runtime.auto_instantiate}}})}setInterruptBuffer(){crossOriginIsolated?(this.interruptBuffer=new Uint8Array(new SharedArrayBuffer(1)),this.rpc.proxy.request.setInterruptBuffer(this.interruptBuffer)):x.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})}};function Ln(){return Oe.withProducerCallback(t=>{Ye.INSTANCE.attachMessageConsumer(t)})}function ae(t){return()=>({TYPE:t,is(e){return e.type===t},create(e){return new CustomEvent(t,e)}})}const Qe=ae("marimo-value-input")(),Ge=ae("marimo-value-update")(),Ke=ae("marimo-value-ready")(),Je=ae("marimo-incoming-message")();function Tn(t,e){return Qe.create({bubbles:!0,composed:!0,detail:{value:t,element:e}})}var Ze=class wt{static get INSTANCE(){let e="_marimo_private_UIElementRegistry";return window[e]||(window[e]=new wt),window[e]}constructor(){this.entries=new Map}has(e){return this.entries.has(e)}set(e,n){this.entries.has(e)&&x.debug("UIElementRegistry overwriting entry for objectId.",e),this.entries.set(e,{objectId:e,value:n,elements:new Set})}registerInstance(e,n){let r=this.entries.get(e);r===void 0?this.entries.set(e,{objectId:e,value:qt(n,this),elements:new Set([n])}):r.elements.add(n)}removeInstance(e,n){let r=this.entries.get(e);r!=null&&r.elements.has(n)&&r.elements.delete(n)}removeElementsByCell(e){[...this.entries.keys()].filter(n=>n.startsWith(`${e}-`)).forEach(n=>{this.entries.delete(n)})}lookupValue(e){let n=this.entries.get(e);return n===void 0?void 0:n.value}broadcastMessage(e,n,r){let s=this.entries.get(e);s===void 0?x.warn("UIElementRegistry missing entry",e):s.elements.forEach(i=>{i.dispatchEvent(Je.create({bubbles:!1,composed:!0,detail:{objectId:e,message:n,buffers:r}}))})}broadcastValueUpdate(e,n,r){let s=this.entries.get(n);s===void 0?x.warn("UIElementRegistry missing entry",n):(s.value=r,s.elements.forEach(i=>{i!==e&&i.dispatchEvent(Ge.create({bubbles:!1,composed:!0,detail:{value:r,element:i}}))}),document.dispatchEvent(Ke.create({bubbles:!0,composed:!0,detail:{objectId:n}})))}};const Un=Ze.INSTANCE,zn=new Yt("function-call-result",async(t,e)=>{await me().sendFunctionRequest({functionCallId:t,...e})}),On="68px";var Dn="288px";const Wn=t=>t?/^\d+$/.test(t)?`${t}px`:t:Dn,Hn=Ft({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}});function ye(t,e=[]){let n=[];if(t instanceof DataView)n.push(e);else if(Array.isArray(t))for(let[r,s]of t.entries())n.push(...ye(s,[...e,r]));else if(typeof t=="object"&&t)for(let[r,s]of Object.entries(t))n.push(...ye(s,[...e,r]));return n}function Bn(t){let e=ye(t);if(e.length===0)return{state:t,buffers:[],bufferPaths:[]};let n=structuredClone(t),r=[],s=[];for(let i of e){let m=jt(t,i);if(m instanceof DataView){let l=qe(m);r.push(l),s.push(i),ne(n,i,l)}}return{state:n,buffers:r,bufferPaths:s}}function et(t){let{state:e,bufferPaths:n,buffers:r}=t;if(!n||n.length===0)return e;r&&Tt(r.length===n.length,"Buffers and buffer paths not the same length");let s=e;for(let[i,m]of n.entries()){let l=r==null?void 0:r[i];if(l==null){x.warn("[anywidget] Could not find buffer at path",m);continue}typeof l=="string"?ne(s,m,Me(l)):ne(s,m,l)}return s}var Vn=(gt=class{constructor(t=1e4){N(this,j,new Map);N(this,Z);P(this,Z,t)}get(t){let e=u(this,j).get(t);return e||(e=new fe,u(this,j).set(t,e),setTimeout(()=>{e.status==="pending"&&(e.reject(Error(`Model not found for key: ${t}`)),u(this,j).delete(t))},u(this,Z))),e.promise}set(t,e){let n=u(this,j).get(t);n||(n=new fe,u(this,j).set(t,n)),n.resolve(e)}has(t){let e=u(this,j).get(t);return e!==void 0&&e.status==="resolved"}getSync(t){let e=u(this,j).get(t);if(e&&e.status==="resolved")return e.value}delete(t){u(this,j).delete(t)}},j=new WeakMap,Z=new WeakMap,gt),tt=Symbol("marimo"),nt={invoke:async()=>{let t="anywidget.invoke not supported in marimo. Please file an issue at https://github.com/marimo-team/marimo/issues";throw x.warn(t),Error(t)}};function J(t){return t[tt]}const be=new Vn;var Xn=(yt=tt,H=class{constructor(e,n){N(this,D);N(this,le,"change");N(this,U);N(this,z);N(this,$);N(this,q,{});N(this,O,new AbortController);N(this,Y);N(this,I);a(this,yt,{updateAndEmitDiffs:e=>ee(this,D,xt).call(this,e),emitCustomMessage:(e,n)=>ee(this,D,Et).call(this,e,n),resolveWidget:async e=>{var s;if(u(this,I)&&u(this,Y)===e)return u(this,I);u(this,I)&&u(this,Y)!==e&&(u(this,O).abort(),P(this,O,new AbortController),P(this,I,void 0)),P(this,Y,e);let n=typeof e=="function"?await e():e,r=await((s=n.initialize)==null?void 0:s.call(n,{model:this,experimental:nt}));return r&&u(this,O).signal.addEventListener("abort",r),P(this,I,async(i,m)=>{var h;let l=await((h=n.render)==null?void 0:h.call(n,{model:this,el:i,experimental:nt}));l&&AbortSignal.any([m,u(this,O).signal]).addEventListener("abort",l)}),u(this,I)},destroy:()=>{u(this,O).abort()}});a(this,"widget_manager",{async get_model(e){let n=await H._modelManager.get(e);if(!n)throw Error(`Model not found with id: ${e}. This is likely because the model was not registered.`);return n}});N(this,ue,It(()=>{let e=u(this,q)[u(this,le)];if(e)for(let n of e)try{n()}catch(r){x.error("Error emitting event",r)}},0));P(this,z,e),P(this,$,n),P(this,U,new Map)}off(e,n){var r;if(!e){P(this,q,{});return}if(!n){u(this,q)[e]=new Set;return}(r=u(this,q)[e])==null||r.delete(n)}send(e,n,r){let s=(r??[]).map(i=>i instanceof ArrayBuffer?new DataView(i):new DataView(i.buffer,i.byteOffset,i.byteLength));return u(this,$).sendCustomMessage(e,s).then(()=>n==null?void 0:n())}get(e){return u(this,z)[e]}set(e,n){P(this,z,{...u(this,z),[e]:n}),u(this,U).set(e,n),ee(this,D,vt).call(this,`change:${e}`,n),u(this,ue).call(this)}save_changes(){if(u(this,U).size===0)return;let e=Object.fromEntries(u(this,U).entries());u(this,U).clear(),u(this,$).sendUpdate(e)}on(e,n){u(this,q)[e]||(u(this,q)[e]=new Set),u(this,q)[e].add(n)}},le=new WeakMap,U=new WeakMap,z=new WeakMap,$=new WeakMap,q=new WeakMap,O=new WeakMap,Y=new WeakMap,I=new WeakMap,D=new WeakSet,vt=function(e,n){if(!u(this,q)[e])return;let r=u(this,q)[e];for(let s of r)try{s(n)}catch(i){x.error("Error emitting event",i)}},xt=function(e){e!=null&&Object.keys(e).forEach(n=>{let r=n;u(this,z)[r]!==e[r]&&this.set(r,e[r])})},Et=function(e,n=[]){let r=u(this,q)["msg:custom"];if(r)for(let s of r)try{s(e.content,n)}catch(i){x.error("Error emitting event",i)}},ue=new WeakMap,a(H,"_modelManager",be),H);async function $n(t,e){let n=e.model_id,r=e.message;x.debug("AnyWidget message",r);let s=("buffers"in r?r.buffers:[]).map(Me);switch(r.method){case"open":{let{state:i,buffer_paths:m=[]}=r,l=et({state:i,bufferPaths:m,buffers:s}),h=t.getSync(n);if(h){J(h).updateAndEmitDiffs(l);return}let v=new Xn(l,{async sendUpdate(E){let{state:w,buffers:_,bufferPaths:S}=Bn(E);await me().sendModelValue({modelId:n,message:{method:"update",state:w,bufferPaths:S},buffers:_})},async sendCustomMessage(E,w){await me().sendModelValue({modelId:n,message:{method:"custom",content:E},buffers:w.map(qe)})}});t.set(n,v);return}case"custom":J(await t.get(n)).emitCustomMessage({method:"custom",content:r.content},s);return;case"close":{let i=t.getSync(n);i&&J(i).destroy(),t.delete(n);return}case"update":{let{state:i,buffer_paths:m=[]}=r,l=et({state:i,bufferPaths:m,buffers:s});J(await t.get(n)).updateAndEmitDiffs(l);return}default:At(r)}}Mt(be,"MODEL_MANAGER");const rt=T(null),Yn=T(null),st=T(!1),Qn=T(!1),it=T(!1);var Gn=Re();const at=t=>{let e=(0,Gn.c)(8),{onResize:n,startingWidth:r,minWidth:s,maxWidth:i}=t,m=(0,c.useRef)(null),l=(0,c.useRef)(null),h=(0,c.useRef)(null),v,E;e[0]!==i||e[1]!==s||e[2]!==n?(v=()=>{let R=m.current,k=l.current,F=h.current;if(!R||!k&&!F)return;let C=Number.parseInt(window.getComputedStyle(R).width,10),M=0,L=!1,B=null,Q=d=>{if(!R||!L||!B)return;let g=d.clientX-M;M=d.clientX,C=B==="left"?C-g:C+g,s&&(C=Math.max(s,C)),i&&(C=Math.min(i,C)),R.style.width=`${C}px`},G=()=>{L&&(n==null||n(C),L=!1,B=null),document.removeEventListener("mousemove",Q),document.removeEventListener("mouseup",G)},o=(d,g)=>{d.preventDefault(),L=!0,B=g,M=d.clientX,document.addEventListener("mousemove",Q),document.addEventListener("mouseup",G)},f=d=>o(d,"left"),y=d=>o(d,"right");return k&&k.addEventListener("mousedown",f),F&&F.addEventListener("mousedown",y),()=>{k&&k.removeEventListener("mousedown",f),F&&F.removeEventListener("mousedown",y),document.removeEventListener("mousemove",Q),document.removeEventListener("mouseup",G)}},E=[s,i,n],e[0]=i,e[1]=s,e[2]=n,e[3]=v,e[4]=E):(v=e[3],E=e[4]),(0,c.useEffect)(v,E);let w;e[5]===Symbol.for("react.memo_cache_sentinel")?(w={left:l,right:h},e[5]=w):w=e[5];let _=r==="contentWidth"?"var(--content-width-medium)":`${r}px`,S;return e[6]===_?S=e[7]:(S={resizableDivRef:m,handleRefs:w,style:{width:_}},e[6]=_,e[7]=S),S};function ot(t){t||window.dispatchEvent(new Event("resize"))}var lt=Re(),p=Se(Dt(),1);const Kn=()=>{let t=(0,lt.c)(16),[e,n]=te(rt),[r,s]=te(st),[i,m]=te(Qn),[l,h]=te(it),v;t[0]!==s||t[1]!==n?(v=()=>{n(null),s(!1)},t[0]=s,t[1]=n,t[2]=v):v=t[2];let E=v;if(he(re.CONTEXT_AWARE_PANEL).length===0||!e||!r)return null;let w;t[3]!==l||t[4]!==i||t[5]!==h||t[6]!==m?(w=()=>(0,p.jsxs)("div",{className:"flex flex-row items-center gap-3",children:[(0,p.jsx)(je,{content:i?"Unpin panel":"Pin panel",children:(0,p.jsx)(Ie,{size:"xs",onPressedChange:()=>m(!i),pressed:i,"aria-label":i?"Unpin panel":"Pin panel",children:i?(0,p.jsx)(rn,{className:"w-4 h-4"}):(0,p.jsx)(Bt,{className:"w-4 h-4"})})}),(0,p.jsx)(je,{content:l?(0,p.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,p.jsx)("span",{children:"Follow focused table"}),(0,p.jsx)("span",{className:"text-xs text-muted-foreground w-64",children:"The panel updates as cells that output tables are focused. Click to fix to the current cell."})]}):(0,p.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,p.jsx)("span",{children:"Focus on current table"}),(0,p.jsx)("span",{className:"text-xs text-muted-foreground w-64",children:"The panel is focused on the current table. Click to update based on which cell is focused."})]}),children:(0,p.jsx)(Ie,{size:"xs",onPressedChange:()=>h(!l),pressed:l,"aria-label":l?"Follow focused cell":"Fixed",children:(0,p.jsx)(nn,{className:Ht("w-4 h-4",l&&"text-primary")})})})]}),t[3]=l,t[4]=i,t[5]=h,t[6]=m,t[7]=w):w=t[7];let _=w,S;t[8]!==E||t[9]!==_?(S=()=>(0,p.jsxs)("div",{className:"mt-2 pb-7 mb-4 h-full overflow-auto",children:[(0,p.jsxs)("div",{className:"flex flex-row justify-between items-center mx-2",children:[_(),(0,p.jsx)(Wt,{variant:"linkDestructive",size:"icon",onClick:E,"aria-label":"Close selection panel",children:(0,p.jsx)(Xt,{className:"w-4 h-4"})})]}),(0,p.jsx)(Fe,{children:(0,p.jsx)(ze,{name:re.CONTEXT_AWARE_PANEL})})]}),t[8]=E,t[9]=_,t[10]=S):S=t[10];let R=S;if(!i){let C;return t[11]===R?C=t[12]:(C=(0,p.jsx)(Zn,{children:R()}),t[11]=R,t[12]=C),C}let k;t[13]===Symbol.for("react.memo_cache_sentinel")?(k=(0,p.jsx)(Zt,{onDragging:ot,className:"resize-handle border-border z-20 print:hidden border-l"}),t[13]=k):k=t[13];let F;return t[14]===R?F=t[15]:(F=(0,p.jsxs)(p.Fragment,{children:[k,(0,p.jsx)(en,{defaultSize:20,minSize:15,maxSize:80,children:R()})]}),t[14]=R,t[15]=F),F},Jn=t=>{let e=(0,lt.c)(2),{children:n}=t,r;return e[0]===n?r=e[1]:(r=(0,p.jsx)(Fe,{children:(0,p.jsx)(an,{name:re.CONTEXT_AWARE_PANEL,children:n})}),e[0]=n,e[1]=r),r};var Zn=({children:t})=>{let{resizableDivRef:e,handleRefs:n,style:r}=at({startingWidth:400,minWidth:300,maxWidth:1500});return(0,p.jsxs)("div",{className:"absolute z-40 right-0 h-full bg-background flex flex-row",children:[(0,p.jsx)("div",{ref:n.left,className:"w-1 h-full cursor-col-resize border-l"}),(0,p.jsx)("div",{ref:e,style:r,children:t})]})};function er(){var t=[...arguments];return(0,c.useMemo)(()=>e=>{t.forEach(n=>n(e))},t)}var ut=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0;function oe(t){let e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function we(t){return"nodeType"in t}function X(t){var e;return t?oe(t)?t:we(t)?((e=t.ownerDocument)==null?void 0:e.defaultView)??window:window:window}function ct(t){let{Document:e}=X(t);return t instanceof e}function dt(t){return oe(t)?!1:t instanceof X(t).HTMLElement}function mt(t){return t instanceof X(t).SVGElement}function tr(t){return t?oe(t)?t.document:we(t)?ct(t)?t:dt(t)||mt(t)?t.ownerDocument:document:document:document}var ve=ut?c.useLayoutEffect:c.useEffect;function ft(t){let e=(0,c.useRef)(t);return ve(()=>{e.current=t}),(0,c.useCallback)(function(){var n=[...arguments];return e.current==null?void 0:e.current(...n)},[])}function nr(){let t=(0,c.useRef)(null);return[(0,c.useCallback)((e,n)=>{t.current=setInterval(e,n)},[]),(0,c.useCallback)(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[])]}function rr(t,e){e===void 0&&(e=[t]);let n=(0,c.useRef)(t);return ve(()=>{n.current!==t&&(n.current=t)},e),n}function sr(t,e){let n=(0,c.useRef)();return(0,c.useMemo)(()=>{let r=t(n.current);return n.current=r,r},[...e])}function ir(t){let e=ft(t),n=(0,c.useRef)(null);return[n,(0,c.useCallback)(r=>{r!==n.current&&(e==null||e(r,n.current)),n.current=r},[])]}function ar(t){let e=(0,c.useRef)();return(0,c.useEffect)(()=>{e.current=t},[t]),e.current}var xe={};function or(t,e){return(0,c.useMemo)(()=>{if(e)return e;let n=xe[t]==null?0:xe[t]+1;return xe[t]=n,t+"-"+n},[t,e])}function pt(t){return function(e){return[...arguments].slice(1).reduce((n,r)=>{let s=Object.entries(r);for(let[i,m]of s){let l=n[i];l!=null&&(n[i]=l+t*m)}return n},{...e})}}var lr=pt(1),ur=pt(-1);function cr(t){return"clientX"in t&&"clientY"in t}function dr(t){if(!t)return!1;let{KeyboardEvent:e}=X(t.target);return e&&t instanceof e}function mr(t){if(!t)return!1;let{TouchEvent:e}=X(t.target);return e&&t instanceof e}function fr(t){if(mr(t)){if(t.touches&&t.touches.length){let{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){let{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return cr(t)?{x:t.clientX,y:t.clientY}:null}var Ee=Object.freeze({Translate:{toString(t){if(!t)return;let{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;let{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[Ee.Translate.toString(t),Ee.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),ht="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function pr(t){return t.matches(ht)?t:t.querySelector(ht)}export{vn as $,Yn as A,Un as B,or as C,at as D,ot as E,On as F,Tn as G,Qe as H,Wn as I,ie as J,Ye as K,Hn as L,be as M,J as N,st as O,$n as P,re as Q,zn as R,ar as S,Jn as T,Ke as U,Je as V,Ge as W,He as X,qn as Y,Oe as Z,nr as _,fr as a,he as at,sr as b,ct as c,we as d,hn as et,mt as f,ft as g,er as h,pr as i,ze as it,it as j,rt as k,dt as l,ur as m,lr as n,wn as nt,tr as o,ne as ot,oe as p,Ln as q,ut as r,pn as rt,X as s,Ee as t,bn as tt,dr as u,ve as v,Kn as w,ir as x,rr as y,Ze as z};
|