@marimo-team/frontend 0.23.1-dev22 → 0.23.1-dev23
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-BDgzn0ig.js → edit-page-DD4uEDmX.js} +2 -2
- package/dist/assets/{index-C7hH7rgL.js → index-y6osgSWB.js} +17 -17
- package/dist/assets/{panels--5tTbFBo.js → panels-1u-RE72f.js} +1 -1
- package/dist/assets/{run-page-DN26u83D.js → run-page-DfWH_1mz.js} +1 -1
- package/dist/assets/state-D1n-olwf.js +3 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/src/plugins/core/__test__/trusted-url.test.ts +48 -0
- package/src/plugins/core/trusted-url.ts +20 -0
- package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +27 -1
- package/src/plugins/impl/anywidget/widget-binding.ts +13 -0
- package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +21 -0
- package/src/plugins/impl/mpl-interactive/__tests__/MplInteractivePlugin.test.tsx +119 -0
- package/src/plugins/impl/panel/PanelPlugin.tsx +31 -10
- package/src/plugins/impl/panel/__tests__/PanelPlugin.test.ts +60 -0
- package/dist/assets/state-DAlJ-NbL.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
var VA=Object.defineProperty;var qA=(a,A,e)=>A in a?VA(a,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[A]=e;var nA=(a,A,e)=>qA(a,typeof A!="symbol"?A+"":A,e);import{s as uA}from"./chunk-LvLJmgfZ.js";import{d as F,i as mA,l as YA,u as C}from"./useEvent-D91BmmQi.js";import{t as WA}from"./react-Bj1aDYRI.js";import{E as fA,Ei as XA,F as JA,Ht as zA,L as $A,Mi as Ae,Pn as ee,T as ae,Ut as te,Vt as Ge,Wt as oe,b as se,ct as re,gn as ne,h as kA,it as ke,k as ie,kr as pA,l as Re,ot as xA,rt as le,wr as Ze,xn as ce,z as ge}from"./cells-BqYYXi6G.js";import{t as d}from"./compiler-runtime-B3qBwwSJ.js";import{_ as he,c as de,g as Be,i as ue,m as me,n as Ye,o as Q,p as fe,r as pe,s as xe,t as we,v as De,x as ve,y as Ee}from"./state-DAlJ-NbL.js";import{_ as D,d as wA,t as ye}from"./useEventListener-DGjKht0c.js";import{C as Ce,b as be}from"./utils-8btzWeZg.js";import{r as iA}from"./constants-tOPFFcLZ.js";import{S as RA,b as P,c as Me,h as Ne,o as _e,x as p}from"./config-DoZCLcOb.js";import{n as je,o as Se}from"./switch-YkPg_CVc.js";import{n as Fe}from"./ErrorBoundary-CxTq44MI.js";import{n as Qe,t as Y}from"./cn-DYvqRARy.js";import{t as Pe}from"./jsx-runtime-Blw4afVn.js";import{a as Le,n as Oe}from"./fullscreen-k58KVlT-.js";import{_ as Te,f as Ie,g as Ke,h as DA,m as vA,p as EA,v as yA,y as He}from"./alert-dialog-C2mTH3GM.js";import{dt as Ue,ft as Ve,ot as CA,st as bA}from"./JsonOutput-CavtrueA.js";import{h as qe}from"./download-5XbM3TL_.js";import{t as lA}from"./tooltip-DmqhBBs6.js";import{t as ZA}from"./button-COIw2x9i.js";import{t as We}from"./createReducer-CYlwteGD.js";import{i as Xe}from"./strings-pfr2N700.js";import{t as Je}from"./requests-9-v2bhoi.js";import{t as J}from"./createLucideIcon-w-Qo9n0R.js";import{O as ze,a as $e,i as MA,k as NA,n as Aa,o as ea,s as aa}from"./layout-erv8pLIP.js";import{o as ta,r as Ga,s as oa}from"./state-BgrGQPFs.js";import{c as sa}from"./markdown-renderer-DNANigO8.js";import{n as ra}from"./spinner-C5wIpWgQ.js";import{i as na,n as ka}from"./readonly-python-code-CI_b818F.js";import{t as ia}from"./uuid-DXdzqzcr.js";import{t as cA}from"./use-toast-BDYuj3zG.js";import{i as Ra}from"./session-DdnWW30b.js";import{t as la}from"./RenderHTML-CM3WMmA8.js";import{r as _A}from"./share-0LPgOyiW.js";import{r as jA}from"./errors-CZb6hI2x.js";import{s as Za}from"./react-icons.esm-BUYTQ32a.js";import{r as SA}from"./events-Qeh-bHlj.js";import{i as ca}from"./cell-link-CRkrHl-y.js";import{t as ga}from"./error-banner-frvr6JXK.js";import{n as ha}from"./useAsyncData-aCoWDe-l.js";import{t as da}from"./requests-CsNnmup3.js";import{t as Ba}from"./request-registry-1QRLEb_0.js";import{t as ua}from"./ws-BApgRfsy.js";import{n as ma}from"./types-DOdUT9LT.js";import{n as Ya}from"./runs-Qc-nusQ0.js";var fa=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"}]]),FA=J("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]),pa=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"}]]),xa=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"}]]),wa=d(),n=uA(Pe(),1);const Da=a=>{let A=(0,wa.c)(10),{reason:e,canTakeover:t}=a,o=t===void 0?!1:t,G=va;if(o){let k;A[0]===Symbol.for("react.memo_cache_sentinel")?(k=(0,n.jsx)("div",{className:"flex justify-between",children:(0,n.jsx)("span",{className:"font-bold text-xl flex items-center mb-2",children:"Notebook already connected"})}),A[0]=k):k=A[0];let r;A[1]===e?r=A[2]:(r=(0,n.jsx)("span",{children:e}),A[1]=e,A[2]=r);let i;A[3]===o?i=A[4]:(i=o&&(0,n.jsxs)(ZA,{onClick:G,variant:"outline","data-testid":"takeover-button",className:"shrink-0",children:[(0,n.jsx)(pa,{className:"w-4 h-4 mr-2"}),"Take over session"]}),A[3]=o,A[4]=i);let R;return A[5]!==r||A[6]!==i?(R=(0,n.jsx)("div",{className:"flex justify-center",children:(0,n.jsxs)(ga,{kind:"info",className:"mt-10 flex flex-col rounded p-3 max-w-[800px] mx-4",children:[k,(0,n.jsxs)("div",{className:"flex justify-between items-end text-base gap-20",children:[r,i]})]})}),A[5]=r,A[6]=i,A[7]=R):R=A[7],R}let s;return A[8]===e?s=A[9]:(s=(0,n.jsx)("div",{className:"font-mono text-center text-base text-(--red-11)",children:(0,n.jsx)("p",{children:e})}),A[8]=e,A[9]=s),s};async function va(){try{let a=new URL(window.location.href).searchParams;await je.post(`/kernel/takeover?${a.toString()}`,{}),_A()}catch(a){cA({title:"Failed to take over session",description:jA(a),variant:"danger"})}}var Ea=d(),u=uA(WA(),1);const ya=a=>{let A=(0,Ea.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===p.CLOSED&&(0,n.jsx)(Da,{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,n.jsxs)("div",{className:t,children:[o,G]}),A[4]=o,A[5]=t,A[6]=G,A[7]=s):s=A[7],s};var Ca=d();const ba=a=>{let A=(0,Ca.c)(10),{title:e}=a,[t,o]=(0,u.useState)(e),[G,s]=(0,u.useState)(!0),k,r;A[0]!==t||A[1]!==e?(k=()=>{if(e!==t){s(!1);let g=setTimeout(()=>{o(e),s(!0)},300);return()=>clearTimeout(g)}},r=[e,t],A[0]=t,A[1]=e,A[2]=k,A[3]=r):(k=A[2],r=A[3]),(0,u.useEffect)(k,r);let i;A[4]===Symbol.for("react.memo_cache_sentinel")?(i=(0,n.jsx)(ra,{className:"size-20 animate-spin text-primary","data-testid":"large-spinner",strokeWidth:1}),A[4]=i):i=A[4];let R=G?"opacity-100":"opacity-0",l;A[5]===R?l=A[6]:(l=Y("mt-2 text-muted-foreground font-semibold text-lg transition-opacity duration-300",R),A[5]=R,A[6]=l);let c;return A[7]!==t||A[8]!==l?(c=(0,n.jsxs)("div",{className:"flex flex-col h-full flex-1 items-center justify-center p-4",children:[i,(0,n.jsx)("div",{className:l,children:t})]}),A[7]=t,A[8]=l,A[9]=c):c=A[9],c};var gA=d();const Ma=a=>{let A=(0,gA.c)(2),{children:e}=a;if(!RA())return e;let t;return A[0]===e?t=A[1]:(t=(0,n.jsx)(Na,{children:e}),A[0]=e,A[1]=t),t};var Na=a=>{let A=(0,gA.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}=ha(ja,t),s=C(Be);if(o){let k;return A[1]===Symbol.for("react.memo_cache_sentinel")?(k=(0,n.jsx)(QA,{}),A[1]=k):k=A[1],k}if(!s&&ke()==="read"&&_a()){let k;return A[2]===Symbol.for("react.memo_cache_sentinel")?(k=(0,n.jsx)(QA,{}),A[2]=k):k=A[2],k}if(G)throw G;return e};function _a(){return Ra(iA.showCode,"false")||!mA.get(Se)}const QA=a=>{let A=(0,gA.c)(2),e=C(he),t;return A[0]===e?t=A[1]:(t=(0,n.jsx)(ba,{title:e}),A[0]=e,A[1]=t),t};async function ja(){return await fe.INSTANCE.initialized.promise,!0}var Sa={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 L(a){return Sa[a]}function Fa(a){if(document.visibilityState==="visible")return;let A=async()=>{a===0?new Notification("Execution completed",{body:"Your notebook run completed successfully.",icon:await L("success")}):new Notification("Execution failed",{body:`Your notebook run encountered ${a} error(s).`,icon:await L("error")})};!("Notification"in window)||Notification.permission==="denied"||(Notification.permission==="granted"?A():Notification.permission==="default"&&Notification.requestPermission().then(e=>{e==="granted"&&A()}))}const Qa=a=>{let{isRunning:A}=a,e=ie(),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 L(G),!document.hasFocus())return;let s=setTimeout(async()=>{t.href=await L("idle")},3e3);return()=>clearTimeout(s)})()},[A,e,t]);let o=ze(A)??A;return(0,u.useEffect)(()=>{o&&!A&&Fa(e.length)},[e,o,A]),ye(window,"focus",async G=>{A||(t.href=await L("idle"))}),null};function Pa(){let{cellRuntime:a}=mA.get(se),A=wA.entries(a).find(([e,t])=>t.status==="running");A&&ca(A[0],"focus")}var O=d();const La=a=>{let A=(0,O.c)(22),{connection:e,isRunning:t}=a,{mode:o}=C(re),G=e.state===p.CLOSED,s=e.state===p.OPEN,k;A[0]!==e.canTakeover||A[1]!==G?(k=G&&!e.canTakeover&&(0,n.jsx)(Ka,{}),A[0]=e.canTakeover,A[1]=G,A[2]=k):k=A[2];let r=o==="read"?"fixed":"absolute",i;A[3]===r?i=A[4]:(i=Y("z-50 top-4 left-4",r),A[3]=r,A[4]=i);let R;A[5]!==s||A[6]!==t?(R=s&&t&&(0,n.jsx)(Ia,{}),A[5]=s,A[6]=t,A[7]=R):R=A[7];let l;A[8]!==e.canTakeover||A[9]!==G?(l=G&&!e.canTakeover&&(0,n.jsx)(Oa,{}),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,n.jsx)(Ta,{}),A[11]=e.canTakeover,A[12]=G,A[13]=c):c=A[13];let g;A[14]!==i||A[15]!==R||A[16]!==l||A[17]!==c?(g=(0,n.jsxs)("div",{className:i,children:[R,l,c]}),A[14]=i,A[15]=R,A[16]=l,A[17]=c,A[18]=g):g=A[18];let B;return A[19]!==k||A[20]!==g?(B=(0,n.jsxs)(n.Fragment,{children:[k,g]}),A[19]=k,A[20]=g,A[21]=B):B=A[21],B};var hA="print:hidden pointer-events-auto hover:cursor-pointer",Oa=()=>{let a=(0,O.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsx)(lA,{content:"App disconnected",children:(0,n.jsx)("div",{className:hA,children:(0,n.jsx)(xa,{className:"w-[25px] h-[25px] text-(--red-11)"})})}),a[0]=A):A=a[0],A},Ta=()=>{let a=(0,O.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsx)(lA,{content:"Notebook locked",children:(0,n.jsx)("div",{className:hA,children:(0,n.jsx)(na,{className:"w-[25px] h-[25px] text-(--blue-11)"})})}),a[0]=A):A=a[0],A},Ia=()=>{let a=(0,O.c)(6),A=C(ae),e=A?"Scratchpad is running":"Jump to running cell",t=A?void 0:Pa,o;a[0]===Symbol.for("react.memo_cache_sentinel")?(o=(0,n.jsx)(fa,{className:"running-app-icon",size:30,strokeWidth:1}),a[0]=o):o=a[0];let G;a[1]===t?G=a[2]:(G=(0,n.jsx)("div",{className:hA,"data-testid":"loading-indicator",onClick:t,children:o}),a[1]=t,a[2]=G);let s;return a[3]!==G||a[4]!==e?(s=(0,n.jsx)(lA,{content:e,side:"right",children:G}),a[3]=G,a[4]=e,a[5]=s):s=a[5],s},Ka=()=>{let a=(0,O.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"noise"}),(0,n.jsx)("div",{className:"disconnected-gradient"})]}),a[0]=A):A=a[0],A},b=d(),Ha=Te,Ua=He,Va=Oe(Ke),PA=u.forwardRef((a,A)=>{let e=(0,b.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=Y("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,n.jsx)(DA,{className:G,...o,ref:A}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});PA.displayName=DA.displayName;var qa=Qe("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"}}),LA=u.forwardRef((a,A)=>{let e=(0,b.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 k=s===void 0?"right":s,r;e[5]===Symbol.for("react.memo_cache_sentinel")?(r=(0,n.jsx)(PA,{}),e[5]=r):r=e[5];let i;e[6]!==o||e[7]!==k?(i=Y(qa({side:k}),o),e[6]=o,e[7]=k,e[8]=i):i=e[8];let R;e[9]===Symbol.for("react.memo_cache_sentinel")?(R=(0,n.jsxs)(Ie,{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,n.jsx)(Za,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Close"})]}),e[9]=R):R=e[9];let l;return e[10]!==t||e[11]!==G||e[12]!==A||e[13]!==i?(l=(0,n.jsx)(Va,{children:(0,n.jsxs)(Le,{children:[r,(0,n.jsxs)(EA,{ref:A,className:i,...G,children:[t,R]})]})}),e[10]=t,e[11]=G,e[12]=A,e[13]=i,e[14]=l):l=e[14],l});LA.displayName=EA.displayName;var Wa=a=>{let A=(0,b.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=Y("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,n.jsx)("div",{className:o,...t}),A[5]=t,A[6]=o,A[7]=G):G=A[7],G};Wa.displayName="SheetHeader";var Xa=a=>{let A=(0,b.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=Y("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,n.jsx)("div",{className:o,...t}),A[5]=t,A[6]=o,A[7]=G):G=A[7],G};Xa.displayName="SheetFooter";var Ja=u.forwardRef((a,A)=>{let e=(0,b.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=Y("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,n.jsx)(yA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});Ja.displayName=yA.displayName;var za=u.forwardRef((a,A)=>{let e=(0,b.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=Y("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,n.jsx)(vA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});za.displayName=vA.displayName;var $a=d();const dA=(0,u.memo)(()=>{let a=(0,$a.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsx)(Ue,{name:bA.SIDEBAR}),a[0]=A):A=a[0],A});dA.displayName="SidebarSlot";var At=d();const et=a=>{let A=(0,At.c)(6),{openWidth:e}=a,t;A[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,n.jsx)(Ua,{className:"lg:hidden",asChild:!0,children:(0,n.jsx)(ZA,{variant:"ghost",className:"bg-background",children:(0,n.jsx)(FA,{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,n.jsx)(dA,{}),A[3]=G):G=A[3];let s;return A[4]===o?s=A[5]:(s=(0,n.jsxs)(Ha,{children:[t,(0,n.jsx)(LA,{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 at=d();const tt=a=>{let A=(0,at.c)(7),{isOpen:e,toggle:t}=a,o=e?"rotate-0":"rotate-180",G;A[0]===o?G=A[1]:(G=Y("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,n.jsx)(qe,{className:G}),A[2]=G,A[3]=s);let k;return A[4]!==s||A[5]!==t?(k=(0,n.jsx)("div",{className:"invisible lg:visible absolute top-[12px] right-[16px] z-20",children:(0,n.jsx)(ZA,{onClick:t,className:"w-10 h-8",variant:"ghost",size:"icon",children:s})}),A[4]=s,A[5]=t,A[6]=k):k=A[6],k};var Gt=d();const ot=a=>{let A=(0,Gt.c)(11),{isOpen:e,toggle:t,width:o}=a,G=e?o:we,s;A[0]===G?s=A[1]:(s={width:G},A[0]=G,A[1]=s);let k;A[2]===Symbol.for("react.memo_cache_sentinel")?(k=Y("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]=k):k=A[2];let r;A[3]!==e||A[4]!==t?(r=(0,n.jsx)(tt,{isOpen:e,toggle:t}),A[3]=e,A[4]=t,A[5]=r):r=A[5];let i;A[6]===Symbol.for("react.memo_cache_sentinel")?(i=(0,n.jsx)("div",{className:"relative h-full flex flex-col px-3 pb-16 pt-14 overflow-y-auto shadow-sm border-l",children:(0,n.jsx)(dA,{})}),A[6]=i):i=A[6];let R;return A[7]!==e||A[8]!==s||A[9]!==r?(R=(0,n.jsxs)("aside",{"data-expanded":e,style:s,className:k,children:[r,i]}),A[7]=e,A[8]=s,A[9]=r,A[10]=R):R=A[10],R};var st=d();const rt=a=>{let A=(0,st.c)(15),{children:e}=a,[t,o]=YA(pe),{isOpen:G,width:s}=t;if(Ve(bA.SIDEBAR).length===0)return e;let k;A[0]===s?k=A[1]:(k=Ye(s),A[0]=s,A[1]=k);let r=k,i;A[2]!==o||A[3]!==G?(i=()=>o({type:"toggle",isOpen:!G}),A[2]=o,A[3]=G,A[4]=i):i=A[4];let R;A[5]!==G||A[6]!==r||A[7]!==i?(R=(0,n.jsx)(ot,{isOpen:G,width:r,toggle:i}),A[5]=G,A[6]=r,A[7]=i,A[8]=R):R=A[8];let l;A[9]===r?l=A[10]:(l=(0,n.jsx)("div",{className:"absolute top-3 left-4 flex items-center z-50",children:(0,n.jsx)(et,{openWidth:r})}),A[9]=r,A[10]=l);let c;return A[11]!==e||A[12]!==R||A[13]!==l?(c=(0,n.jsxs)("div",{className:"inset-0 absolute flex",children:[R,l,e]}),A[11]=e,A[12]=R,A[13]=l,A[14]=c):c=A[14],c};var nt=d();const kt=a=>{let A=(0,nt.c)(17),{width:e,connection:t,isRunning:o,children:G}=a,s=t.state,k;A[0]===o?k=A[1]:(k=(0,n.jsx)(Qa,{isRunning:o}),A[0]=o,A[1]=k);let r;A[2]!==t||A[3]!==o?(r=(0,n.jsx)(La,{connection:t,isRunning:o}),A[2]=t,A[3]=o,A[4]=r):r=A[4];let i;A[5]!==s||A[6]!==e?(i=Y("mathjax_ignore",Me(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]=i):i=A[7];let R;A[8]!==G||A[9]!==s||A[10]!==i||A[11]!==e?(R=(0,n.jsx)(Ma,{children:(0,n.jsx)(rt,{children:(0,n.jsx)("div",{id:"App","data-config-width":e,"data-connection-state":s,className:i,children:G})})}),A[8]=G,A[9]=s,A[10]=i,A[11]=e,A[12]=R):R=A[12];let l;return A[13]!==k||A[14]!==r||A[15]!==R?(l=(0,n.jsxs)(n.Fragment,{children:[k,r,R]}),A[13]=k,A[14]=r,A[15]=R,A[16]=l):l=A[16],l};function it(a){return a.kind==="missing"}function OA(a){return a.kind==="installing"}var{valueAtom:Rt,useActions:lt}=We(()=>({packageAlert:null,startupLogsAlert:null,packageLogs:{}}),{addPackageAlert:(a,A)=>{var o;let e={...a.packageLogs};if(OA(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)||ia();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 Zt=()=>C(Rt);function TA(){return lt()}var IA=d();const KA=(0,u.memo)(a=>{let A=(0,IA.c)(11),{appConfig:e,mode:t,children:o}=a,{selectedLayout:G,layoutData:s}=$e(),k=C(xA);if(t==="edit"&&!k)return o;let r;if(A[0]!==t||A[1]!==G){r=G;let c=new URLSearchParams(window.location.search);if(t==="read"&&c.has(iA.viewAs)){let g=c.get(iA.viewAs);ma.includes(g)&&(r=g)}A[0]=t,A[1]=G,A[2]=r}else r=A[2];let i;A[3]===r?i=A[4]:(i=ea.find(c=>c.type===r),A[3]=r,A[4]=i);let R=i;if(!R)return o;let l;return A[5]!==e||A[6]!==r||A[7]!==s||A[8]!==t||A[9]!==R?(l=(0,n.jsx)(ct,{appConfig:e,mode:t,plugin:R,layoutData:s,finalLayout:r}),A[5]=e,A[6]=r,A[7]=s,A[8]=t,A[9]=R,A[10]=l):l=A[10],l});KA.displayName="CellsRenderer";const ct=a=>{let A=(0,IA.c)(18),{appConfig:e,mode:t,plugin:o,layoutData:G,finalLayout:s}=a,k=JA(),{setCurrentLayoutData:r}=MA(),i,R,l,c,g;if(A[0]!==e||A[1]!==s||A[2]!==G||A[3]!==t||A[4]!==k||A[5]!==o){let x=Re(k);i=o.Component,R=e,l=t,c=x,g=G[s]||o.getInitialLayout(x),A[0]=e,A[1]=s,A[2]=G,A[3]=t,A[4]=k,A[5]=o,A[6]=i,A[7]=R,A[8]=l,A[9]=c,A[10]=g}else i=A[6],R=A[7],l=A[8],c=A[9],g=A[10];let B;return A[11]!==i||A[12]!==r||A[13]!==R||A[14]!==l||A[15]!==c||A[16]!==g?(B=(0,n.jsx)(i,{appConfig:R,mode:l,cells:c,layout:g,setLayout:r}),A[11]=i,A[12]=r,A[13]=R,A[14]=l,A[15]=c,A[16]=g,A[17]=B):B=A[17],B};var gt=class HA{constructor(A){nA(this,"hasStarted",!1);nA(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 HA(Q)),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(SA.TYPE,this.handleReadyEvent),this.hasStarted=!0}stop(){if(!this.hasStarted){D.warn("RuntimeState already stopped");return}document.removeEventListener(SA.TYPE,this.handleReadyEvent),this.hasStarted=!1}},ht=d();function dt(a){if(a.static)return De.empty();if(RA())return me();let A=a.url;return new ua(A,void 0,{maxRetries:10,debug:!1,startClosed:!0,connectionTimeout:1e4})}function Bt(a){let A=(0,ht.c)(15),{onOpen:e,onMessage:t,onClose:o,onError:G,waitToConnect:s}=a,k;A[0]!==o||A[1]!==G||A[2]!==t||A[3]!==e||A[4]!==a?(k=()=>{let l=dt(a);return l.addEventListener("open",e),l.addEventListener("close",o),l.addEventListener("error",G),l.addEventListener("message",t),l},A[0]=o,A[1]=G,A[2]=t,A[3]=e,A[4]=a,A[5]=k):k=A[5];let[r]=(0,u.useState)(k),i;A[6]!==o||A[7]!==G||A[8]!==t||A[9]!==e||A[10]!==r||A[11]!==s?(i=()=>(r.readyState===WebSocket.CLOSED&&s().then(()=>r.reconnect()).catch(l=>{D.error("Healthy connection never made",l),r.close()}),()=>{D.warn("useConnectionTransport is unmounting. This likely means there is a bug."),r.close(),r.removeEventListener("open",e),r.removeEventListener("close",o),r.removeEventListener("error",G),r.removeEventListener("message",t)}),A[6]=o,A[7]=G,A[8]=t,A[9]=e,A[10]=r,A[11]=s,A[12]=i):i=A[12];let R;return A[13]===r?R=A[14]:(R=[r],A[13]=r,A[14]=R),(0,u.useEffect)(i,R),r}function ut(a){let{codes:A,names:e,configs:t,cell_ids:o,last_executed_code:G,last_execution_time:s}=a,k=G||{},r=s||{};return A.map((i,R)=>{let l=o[R],c=k[l];return $A({id:l,code:i,edited:c?c!==i:!1,name:e[R],lastCodeRun:k[l]??null,lastExecutionTime:r[l]??null,config:t[R]})})}function mt(a,A,e){let t=Aa(),{layout:o}=a;if(o){let G=o.type,s=aa({type:G,data:o.data,cells:A});t.selectedLayout=G,t.layoutData[G]=s,e({layoutView:G,data:s})}return t}function Yt(){let a=[],A=[];return Q.entries.forEach((e,t)=>{a.push(t),A.push(e.value)}),{objectIds:a,values:A}}function ft(a,A){let{existingCells:e,autoInstantiate:t,setCells:o,setLayoutData:G,setAppConfig:s,setCapabilities:k,setKernelState:r,onError:i}=A,{resumed:R,ui_values:l,app_config:c,capabilities:g,auto_instantiated:B}=a,x=e&&e.length>0,y=x&&!R?e:ut(a);o(y,mt(a,y,G));let v=Ce.safeParse(c);if(v.success?s(v.data):D.error("Failed to parse app config",v.error),k(g),B)return;if(R){for(let[m,j]of wA.entries(l||{})){let S=m;Q.set(S,j)}return}let{objectIds:M,values:N}=Yt(),_=x?Object.fromEntries(e.map(m=>[m.id,m.code])):void 0;Je().sendInstantiate({objectIds:M,values:N,autoRun:t,codes:_}).then(()=>{r({isInstantiated:!0,error:null})}).catch(m=>{r({isInstantiated:!1,error:m}),i(Error("Failed to instantiate",{cause:m}))})}function pt(a){let A=a.cell_id;Q.removeElementsByCell(A),NA.INSTANCE.removeForCellId(A)}function xt(a,A){A(a),NA.INSTANCE.track(a)}const z={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 wt=d();function Dt(){return Object.values(kA().cellData).filter(a=>a.id!==XA)}function vt(a){let A=(0,wt.c)(41),e=(0,u.useRef)(!0),{autoInstantiate:t,sessionId:o,setCells:G}=a,{showBoundary:s}=Fe(),{handleCellMessage:k}=fA(),r;A[0]===Symbol.for("react.memo_cache_sentinel")?(r={skipMiddleware:!0},A[0]=r):r=A[0];let i=fA(r),R;A[1]===i?R=A[2]:(R=h=>{le(h.changes,i,_t)},A[1]=i,A[2]=R);let l=R,{addCellNotification:c}=Ya(),g=F(ka),B=be(),{setVariables:x,setMetadata:y}=ee(),{addColumnPreview:v}=pA(),{addDatasets:M,filterDatasetsFromVariables:N}=pA(),{addDataSourceConnection:_,filterDataSourcesFromVariables:m}=Ze(),{setLayoutData:j}=MA(),[S,w]=YA(Ne),{addBanner:$}=ve(),{addPackageAlert:T,addStartupLog:AA}=TA(),eA=F(xA),aA=F(ce),E=_e(),tA=F(da),GA=F(Ee),{setNamespaces:oA,filterFromVariables:sA}=Ga(),I;A[3]!==$||A[4]!==c||A[5]!==v||A[6]!==_||A[7]!==M||A[8]!==T||A[9]!==AA||A[10]!==t||A[11]!==m||A[12]!==N||A[13]!==sA||A[14]!==k||A[15]!==l||A[16]!==B||A[17]!==tA||A[18]!==aA||A[19]!==G||A[20]!==GA||A[21]!==g||A[22]!==eA||A[23]!==j||A[24]!==y||A[25]!==oA||A[26]!==x||A[27]!==s?(I=h=>{let Z=Ae(h.data);switch(Z.data.op){case"reload":_A();return;case"kernel-ready":{let f=Dt();ft(Z.data,{autoInstantiate:t,setCells:G,setLayoutData:j,setAppConfig:B,setCapabilities:aA,setKernelState:g,onError:s,existingCells:f}),eA(Z.data.kiosk);return}case"completed-run":return;case"interrupted":return;case"kernel-startup-error":GA(Z.data.error);return;case"send-ui-element-message":{let f=Z.data.ui_element;if(f){let UA=sa(Z.data);Q.broadcastMessage(f,Z.data.message,UA)}return}case"model-lifecycle":de(xe,Z.data);return;case"remove-ui-elements":pt(Z.data);return;case"completion-result":ne.resolve(Z.data.completion_id,Z.data);return;case"function-call-result":ue.resolve(Z.data.function_call_id,Z.data);return;case"cell-op":{xt(Z.data,k);let f=kA().cellData[Z.data.cell_id];if(!f)return;c({cellNotification:Z.data,code:f.code});return}case"variables":x(Z.data.variables.map(Nt)),N(Z.data.variables.map(Mt)),m(Z.data.variables.map(bt)),sA(Z.data.variables.map(Ct));return;case"variable-values":y(Z.data.variables.map(yt));return;case"alert":cA({title:Z.data.title,description:la({html:Z.data.description}),variant:Z.data.variant});return;case"banner":$(Z.data);return;case"missing-package-alert":T({...Z.data,kind:"missing"});return;case"installing-package-alert":T({...Z.data,kind:"installing"});return;case"startup-logs":AA({content:Z.data.content,status:Z.data.status});return;case"query-params-append":z.append(Z.data);return;case"query-params-set":z.set(Z.data);return;case"query-params-delete":z.delete(Z.data);return;case"query-params-clear":z.clear();return;case"datasets":M(Z.data);return;case"data-column-preview":v(Z.data);return;case"sql-table-preview":zA.resolve(Z.data.request_id,Z.data);return;case"sql-table-list-preview":te.resolve(Z.data.request_id,Z.data);return;case"sql-schema-list-preview":Ge.resolve(Z.data.request_id,Z.data);return;case"validate-sql-result":oe.resolve(Z.data.request_id,Z.data);return;case"secret-keys-result":Ba.resolve(Z.data.request_id,Z.data);return;case"cache-info":tA(Z.data);return;case"cache-cleared":return;case"data-source-connections":_({connections:Z.data.connections.map(Et)});return;case"storage-namespaces":oA(Z.data);return;case"storage-entries":oa.resolve(Z.data.request_id,Z.data);return;case"storage-download-ready":ta.resolve(Z.data.request_id,Z.data);return;case"reconnected":return;case"focus-cell":ge(Z.data.cell_id);return;case"notebook-document-transaction":l(Z.data.transaction);return;default:Xe(Z.data)}},A[3]=$,A[4]=c,A[5]=v,A[6]=_,A[7]=M,A[8]=T,A[9]=AA,A[10]=t,A[11]=m,A[12]=N,A[13]=sA,A[14]=k,A[15]=l,A[16]=B,A[17]=tA,A[18]=aA,A[19]=G,A[20]=GA,A[21]=g,A[22]=eA,A[23]=j,A[24]=y,A[25]=oA,A[26]=x,A[27]=s,A[28]=I):I=A[28];let rA=I,BA=(h,Z)=>{e.current&&(e.current=!1,W.reconnect(h,Z))},K;A[29]===Symbol.for("react.memo_cache_sentinel")?(K=CA(),A[29]=K):K=A[29];let H;A[30]!==E||A[31]!==o?(H=()=>E.getWsURL(o).toString(),A[30]=E,A[31]=o,A[32]=H):H=A[32];let U;A[33]===w?U=A[34]:(U=async()=>{e.current=!0,w({state:p.OPEN})},A[33]=w,A[34]=U);let V;A[35]===E?V=A[36]:(V=async()=>{CA()||RA()||E.isSameOrigin||await E.waitForHealthy()},A[35]=E,A[36]=V);let q;A[37]===rA?q=A[38]:(q=h=>{try{rA(h)}catch(Z){let f=Z;D.error("Failed to handle message",h.data,f),cA({title:"Failed to handle message",description:jA(f),variant:"danger"})}},A[37]=rA,A[38]=q);let W=Bt({static:K,url:H,onOpen:U,waitToConnect:V,onMessage:q,onClose:h=>{switch(D.warn("WebSocket closed",h.code,h.reason),h.reason){case"MARIMO_ALREADY_CONNECTED":w({state:p.CLOSED,code:P.ALREADY_RUNNING,reason:"another browser tab is already connected to the kernel",canTakeover:!0}),W.close();return;case"MARIMO_WRONG_KERNEL_ID":case"MARIMO_NO_FILE_KEY":case"MARIMO_NO_SESSION_ID":case"MARIMO_NO_SESSION":case"MARIMO_SHUTDOWN":w({state:p.CLOSED,code:P.KERNEL_DISCONNECTED,reason:"kernel not found"}),W.close();return;case"MARIMO_MALFORMED_QUERY":w({state:p.CLOSED,code:P.MALFORMED_QUERY,reason:"the kernel did not recognize a request; please file a bug with marimo"});return;default:if(h.reason==="MARIMO_KERNEL_STARTUP_ERROR"){w({state:p.CLOSED,code:P.KERNEL_STARTUP_ERROR,reason:"Failed to start kernel sandbox"}),W.close();return}w({state:p.CONNECTING}),BA(h.code,h.reason)}},onError:h=>{D.warn("WebSocket error",h),w({state:p.CLOSED,code:P.KERNEL_DISCONNECTED,reason:"kernel not found"}),BA()}}),X;return A[39]===S?X=A[40]:(X={connection:S},A[39]=S,A[40]=X),X}function Et(a){return{...a,name:a.name}}function yt(a){return{name:a.name,dataType:a.datatype,value:a.value}}function Ct(a){return a.name}function bt(a){return a.name}function Mt(a){return a.name}function Nt(a){return{name:a.name,declaredBy:a.declared_by,usedBy:a.used_by}}function _t(){return kA().cellIds.inOrderIds}var jt=d();const St=a=>{let A=(0,jt.c)(2),{children:e}=a,t;return A[0]===e?t=A[1]:(t=(0,n.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{OA as a,Zt as c,FA as d,KA as i,kt as l,vt as n,it as o,gt as r,TA as s,St as t,ya as u};
|
|
1
|
+
var VA=Object.defineProperty;var qA=(a,A,e)=>A in a?VA(a,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[A]=e;var nA=(a,A,e)=>qA(a,typeof A!="symbol"?A+"":A,e);import{s as uA}from"./chunk-LvLJmgfZ.js";import{d as F,i as mA,l as YA,u as C}from"./useEvent-D91BmmQi.js";import{t as WA}from"./react-Bj1aDYRI.js";import{E as fA,Ei as XA,F as JA,Ht as zA,L as $A,Mi as Ae,Pn as ee,T as ae,Ut as te,Vt as Ge,Wt as oe,b as se,ct as re,gn as ne,h as kA,it as ke,k as ie,kr as pA,l as Re,ot as xA,rt as le,wr as Ze,xn as ce,z as ge}from"./cells-BqYYXi6G.js";import{t as d}from"./compiler-runtime-B3qBwwSJ.js";import{S as he,_ as de,b as Be,c as ue,h as me,i as Ye,m as fe,n as pe,o as Q,r as xe,s as we,t as De,v as ve,y as Ee}from"./state-D1n-olwf.js";import{_ as D,d as wA,t as ye}from"./useEventListener-DGjKht0c.js";import{C as Ce,b as be}from"./utils-8btzWeZg.js";import{r as iA}from"./constants-tOPFFcLZ.js";import{S as RA,b as P,c as Me,h as Ne,o as _e,x as p}from"./config-DoZCLcOb.js";import{n as je,o as Se}from"./switch-YkPg_CVc.js";import{n as Fe}from"./ErrorBoundary-CxTq44MI.js";import{n as Qe,t as Y}from"./cn-DYvqRARy.js";import{t as Pe}from"./jsx-runtime-Blw4afVn.js";import{a as Le,n as Oe}from"./fullscreen-k58KVlT-.js";import{_ as Te,f as Ie,g as Ke,h as DA,m as vA,p as EA,v as yA,y as He}from"./alert-dialog-C2mTH3GM.js";import{dt as Ue,ft as Ve,ot as CA,st as bA}from"./JsonOutput-CavtrueA.js";import{h as qe}from"./download-5XbM3TL_.js";import{t as lA}from"./tooltip-DmqhBBs6.js";import{t as ZA}from"./button-COIw2x9i.js";import{t as We}from"./createReducer-CYlwteGD.js";import{i as Xe}from"./strings-pfr2N700.js";import{t as Je}from"./requests-9-v2bhoi.js";import{t as J}from"./createLucideIcon-w-Qo9n0R.js";import{O as ze,a as $e,i as MA,k as NA,n as Aa,o as ea,s as aa}from"./layout-erv8pLIP.js";import{o as ta,r as Ga,s as oa}from"./state-BgrGQPFs.js";import{c as sa}from"./markdown-renderer-DNANigO8.js";import{n as ra}from"./spinner-C5wIpWgQ.js";import{i as na,n as ka}from"./readonly-python-code-CI_b818F.js";import{t as ia}from"./uuid-DXdzqzcr.js";import{t as cA}from"./use-toast-BDYuj3zG.js";import{i as Ra}from"./session-DdnWW30b.js";import{t as la}from"./RenderHTML-CM3WMmA8.js";import{r as _A}from"./share-0LPgOyiW.js";import{r as jA}from"./errors-CZb6hI2x.js";import{s as Za}from"./react-icons.esm-BUYTQ32a.js";import{r as SA}from"./events-Qeh-bHlj.js";import{i as ca}from"./cell-link-CRkrHl-y.js";import{t as ga}from"./error-banner-frvr6JXK.js";import{n as ha}from"./useAsyncData-aCoWDe-l.js";import{t as da}from"./requests-CsNnmup3.js";import{t as Ba}from"./request-registry-1QRLEb_0.js";import{t as ua}from"./ws-BApgRfsy.js";import{n as ma}from"./types-DOdUT9LT.js";import{n as Ya}from"./runs-Qc-nusQ0.js";var fa=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"}]]),FA=J("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]),pa=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"}]]),xa=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"}]]),wa=d(),n=uA(Pe(),1);const Da=a=>{let A=(0,wa.c)(10),{reason:e,canTakeover:t}=a,o=t===void 0?!1:t,G=va;if(o){let k;A[0]===Symbol.for("react.memo_cache_sentinel")?(k=(0,n.jsx)("div",{className:"flex justify-between",children:(0,n.jsx)("span",{className:"font-bold text-xl flex items-center mb-2",children:"Notebook already connected"})}),A[0]=k):k=A[0];let r;A[1]===e?r=A[2]:(r=(0,n.jsx)("span",{children:e}),A[1]=e,A[2]=r);let i;A[3]===o?i=A[4]:(i=o&&(0,n.jsxs)(ZA,{onClick:G,variant:"outline","data-testid":"takeover-button",className:"shrink-0",children:[(0,n.jsx)(pa,{className:"w-4 h-4 mr-2"}),"Take over session"]}),A[3]=o,A[4]=i);let R;return A[5]!==r||A[6]!==i?(R=(0,n.jsx)("div",{className:"flex justify-center",children:(0,n.jsxs)(ga,{kind:"info",className:"mt-10 flex flex-col rounded p-3 max-w-[800px] mx-4",children:[k,(0,n.jsxs)("div",{className:"flex justify-between items-end text-base gap-20",children:[r,i]})]})}),A[5]=r,A[6]=i,A[7]=R):R=A[7],R}let s;return A[8]===e?s=A[9]:(s=(0,n.jsx)("div",{className:"font-mono text-center text-base text-(--red-11)",children:(0,n.jsx)("p",{children:e})}),A[8]=e,A[9]=s),s};async function va(){try{let a=new URL(window.location.href).searchParams;await je.post(`/kernel/takeover?${a.toString()}`,{}),_A()}catch(a){cA({title:"Failed to take over session",description:jA(a),variant:"danger"})}}var Ea=d(),u=uA(WA(),1);const ya=a=>{let A=(0,Ea.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===p.CLOSED&&(0,n.jsx)(Da,{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,n.jsxs)("div",{className:t,children:[o,G]}),A[4]=o,A[5]=t,A[6]=G,A[7]=s):s=A[7],s};var Ca=d();const ba=a=>{let A=(0,Ca.c)(10),{title:e}=a,[t,o]=(0,u.useState)(e),[G,s]=(0,u.useState)(!0),k,r;A[0]!==t||A[1]!==e?(k=()=>{if(e!==t){s(!1);let g=setTimeout(()=>{o(e),s(!0)},300);return()=>clearTimeout(g)}},r=[e,t],A[0]=t,A[1]=e,A[2]=k,A[3]=r):(k=A[2],r=A[3]),(0,u.useEffect)(k,r);let i;A[4]===Symbol.for("react.memo_cache_sentinel")?(i=(0,n.jsx)(ra,{className:"size-20 animate-spin text-primary","data-testid":"large-spinner",strokeWidth:1}),A[4]=i):i=A[4];let R=G?"opacity-100":"opacity-0",l;A[5]===R?l=A[6]:(l=Y("mt-2 text-muted-foreground font-semibold text-lg transition-opacity duration-300",R),A[5]=R,A[6]=l);let c;return A[7]!==t||A[8]!==l?(c=(0,n.jsxs)("div",{className:"flex flex-col h-full flex-1 items-center justify-center p-4",children:[i,(0,n.jsx)("div",{className:l,children:t})]}),A[7]=t,A[8]=l,A[9]=c):c=A[9],c};var gA=d();const Ma=a=>{let A=(0,gA.c)(2),{children:e}=a;if(!RA())return e;let t;return A[0]===e?t=A[1]:(t=(0,n.jsx)(Na,{children:e}),A[0]=e,A[1]=t),t};var Na=a=>{let A=(0,gA.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}=ha(ja,t),s=C(de);if(o){let k;return A[1]===Symbol.for("react.memo_cache_sentinel")?(k=(0,n.jsx)(QA,{}),A[1]=k):k=A[1],k}if(!s&&ke()==="read"&&_a()){let k;return A[2]===Symbol.for("react.memo_cache_sentinel")?(k=(0,n.jsx)(QA,{}),A[2]=k):k=A[2],k}if(G)throw G;return e};function _a(){return Ra(iA.showCode,"false")||!mA.get(Se)}const QA=a=>{let A=(0,gA.c)(2),e=C(ve),t;return A[0]===e?t=A[1]:(t=(0,n.jsx)(ba,{title:e}),A[0]=e,A[1]=t),t};async function ja(){return await fe.INSTANCE.initialized.promise,!0}var Sa={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 L(a){return Sa[a]}function Fa(a){if(document.visibilityState==="visible")return;let A=async()=>{a===0?new Notification("Execution completed",{body:"Your notebook run completed successfully.",icon:await L("success")}):new Notification("Execution failed",{body:`Your notebook run encountered ${a} error(s).`,icon:await L("error")})};!("Notification"in window)||Notification.permission==="denied"||(Notification.permission==="granted"?A():Notification.permission==="default"&&Notification.requestPermission().then(e=>{e==="granted"&&A()}))}const Qa=a=>{let{isRunning:A}=a,e=ie(),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 L(G),!document.hasFocus())return;let s=setTimeout(async()=>{t.href=await L("idle")},3e3);return()=>clearTimeout(s)})()},[A,e,t]);let o=ze(A)??A;return(0,u.useEffect)(()=>{o&&!A&&Fa(e.length)},[e,o,A]),ye(window,"focus",async G=>{A||(t.href=await L("idle"))}),null};function Pa(){let{cellRuntime:a}=mA.get(se),A=wA.entries(a).find(([e,t])=>t.status==="running");A&&ca(A[0],"focus")}var O=d();const La=a=>{let A=(0,O.c)(22),{connection:e,isRunning:t}=a,{mode:o}=C(re),G=e.state===p.CLOSED,s=e.state===p.OPEN,k;A[0]!==e.canTakeover||A[1]!==G?(k=G&&!e.canTakeover&&(0,n.jsx)(Ka,{}),A[0]=e.canTakeover,A[1]=G,A[2]=k):k=A[2];let r=o==="read"?"fixed":"absolute",i;A[3]===r?i=A[4]:(i=Y("z-50 top-4 left-4",r),A[3]=r,A[4]=i);let R;A[5]!==s||A[6]!==t?(R=s&&t&&(0,n.jsx)(Ia,{}),A[5]=s,A[6]=t,A[7]=R):R=A[7];let l;A[8]!==e.canTakeover||A[9]!==G?(l=G&&!e.canTakeover&&(0,n.jsx)(Oa,{}),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,n.jsx)(Ta,{}),A[11]=e.canTakeover,A[12]=G,A[13]=c):c=A[13];let g;A[14]!==i||A[15]!==R||A[16]!==l||A[17]!==c?(g=(0,n.jsxs)("div",{className:i,children:[R,l,c]}),A[14]=i,A[15]=R,A[16]=l,A[17]=c,A[18]=g):g=A[18];let B;return A[19]!==k||A[20]!==g?(B=(0,n.jsxs)(n.Fragment,{children:[k,g]}),A[19]=k,A[20]=g,A[21]=B):B=A[21],B};var hA="print:hidden pointer-events-auto hover:cursor-pointer",Oa=()=>{let a=(0,O.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsx)(lA,{content:"App disconnected",children:(0,n.jsx)("div",{className:hA,children:(0,n.jsx)(xa,{className:"w-[25px] h-[25px] text-(--red-11)"})})}),a[0]=A):A=a[0],A},Ta=()=>{let a=(0,O.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsx)(lA,{content:"Notebook locked",children:(0,n.jsx)("div",{className:hA,children:(0,n.jsx)(na,{className:"w-[25px] h-[25px] text-(--blue-11)"})})}),a[0]=A):A=a[0],A},Ia=()=>{let a=(0,O.c)(6),A=C(ae),e=A?"Scratchpad is running":"Jump to running cell",t=A?void 0:Pa,o;a[0]===Symbol.for("react.memo_cache_sentinel")?(o=(0,n.jsx)(fa,{className:"running-app-icon",size:30,strokeWidth:1}),a[0]=o):o=a[0];let G;a[1]===t?G=a[2]:(G=(0,n.jsx)("div",{className:hA,"data-testid":"loading-indicator",onClick:t,children:o}),a[1]=t,a[2]=G);let s;return a[3]!==G||a[4]!==e?(s=(0,n.jsx)(lA,{content:e,side:"right",children:G}),a[3]=G,a[4]=e,a[5]=s):s=a[5],s},Ka=()=>{let a=(0,O.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"noise"}),(0,n.jsx)("div",{className:"disconnected-gradient"})]}),a[0]=A):A=a[0],A},b=d(),Ha=Te,Ua=He,Va=Oe(Ke),PA=u.forwardRef((a,A)=>{let e=(0,b.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=Y("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,n.jsx)(DA,{className:G,...o,ref:A}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});PA.displayName=DA.displayName;var qa=Qe("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"}}),LA=u.forwardRef((a,A)=>{let e=(0,b.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 k=s===void 0?"right":s,r;e[5]===Symbol.for("react.memo_cache_sentinel")?(r=(0,n.jsx)(PA,{}),e[5]=r):r=e[5];let i;e[6]!==o||e[7]!==k?(i=Y(qa({side:k}),o),e[6]=o,e[7]=k,e[8]=i):i=e[8];let R;e[9]===Symbol.for("react.memo_cache_sentinel")?(R=(0,n.jsxs)(Ie,{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,n.jsx)(Za,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Close"})]}),e[9]=R):R=e[9];let l;return e[10]!==t||e[11]!==G||e[12]!==A||e[13]!==i?(l=(0,n.jsx)(Va,{children:(0,n.jsxs)(Le,{children:[r,(0,n.jsxs)(EA,{ref:A,className:i,...G,children:[t,R]})]})}),e[10]=t,e[11]=G,e[12]=A,e[13]=i,e[14]=l):l=e[14],l});LA.displayName=EA.displayName;var Wa=a=>{let A=(0,b.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=Y("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,n.jsx)("div",{className:o,...t}),A[5]=t,A[6]=o,A[7]=G):G=A[7],G};Wa.displayName="SheetHeader";var Xa=a=>{let A=(0,b.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=Y("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,n.jsx)("div",{className:o,...t}),A[5]=t,A[6]=o,A[7]=G):G=A[7],G};Xa.displayName="SheetFooter";var Ja=u.forwardRef((a,A)=>{let e=(0,b.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=Y("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,n.jsx)(yA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});Ja.displayName=yA.displayName;var za=u.forwardRef((a,A)=>{let e=(0,b.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=Y("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,n.jsx)(vA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});za.displayName=vA.displayName;var $a=d();const dA=(0,u.memo)(()=>{let a=(0,$a.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsx)(Ue,{name:bA.SIDEBAR}),a[0]=A):A=a[0],A});dA.displayName="SidebarSlot";var At=d();const et=a=>{let A=(0,At.c)(6),{openWidth:e}=a,t;A[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,n.jsx)(Ua,{className:"lg:hidden",asChild:!0,children:(0,n.jsx)(ZA,{variant:"ghost",className:"bg-background",children:(0,n.jsx)(FA,{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,n.jsx)(dA,{}),A[3]=G):G=A[3];let s;return A[4]===o?s=A[5]:(s=(0,n.jsxs)(Ha,{children:[t,(0,n.jsx)(LA,{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 at=d();const tt=a=>{let A=(0,at.c)(7),{isOpen:e,toggle:t}=a,o=e?"rotate-0":"rotate-180",G;A[0]===o?G=A[1]:(G=Y("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,n.jsx)(qe,{className:G}),A[2]=G,A[3]=s);let k;return A[4]!==s||A[5]!==t?(k=(0,n.jsx)("div",{className:"invisible lg:visible absolute top-[12px] right-[16px] z-20",children:(0,n.jsx)(ZA,{onClick:t,className:"w-10 h-8",variant:"ghost",size:"icon",children:s})}),A[4]=s,A[5]=t,A[6]=k):k=A[6],k};var Gt=d();const ot=a=>{let A=(0,Gt.c)(11),{isOpen:e,toggle:t,width:o}=a,G=e?o:De,s;A[0]===G?s=A[1]:(s={width:G},A[0]=G,A[1]=s);let k;A[2]===Symbol.for("react.memo_cache_sentinel")?(k=Y("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]=k):k=A[2];let r;A[3]!==e||A[4]!==t?(r=(0,n.jsx)(tt,{isOpen:e,toggle:t}),A[3]=e,A[4]=t,A[5]=r):r=A[5];let i;A[6]===Symbol.for("react.memo_cache_sentinel")?(i=(0,n.jsx)("div",{className:"relative h-full flex flex-col px-3 pb-16 pt-14 overflow-y-auto shadow-sm border-l",children:(0,n.jsx)(dA,{})}),A[6]=i):i=A[6];let R;return A[7]!==e||A[8]!==s||A[9]!==r?(R=(0,n.jsxs)("aside",{"data-expanded":e,style:s,className:k,children:[r,i]}),A[7]=e,A[8]=s,A[9]=r,A[10]=R):R=A[10],R};var st=d();const rt=a=>{let A=(0,st.c)(15),{children:e}=a,[t,o]=YA(xe),{isOpen:G,width:s}=t;if(Ve(bA.SIDEBAR).length===0)return e;let k;A[0]===s?k=A[1]:(k=pe(s),A[0]=s,A[1]=k);let r=k,i;A[2]!==o||A[3]!==G?(i=()=>o({type:"toggle",isOpen:!G}),A[2]=o,A[3]=G,A[4]=i):i=A[4];let R;A[5]!==G||A[6]!==r||A[7]!==i?(R=(0,n.jsx)(ot,{isOpen:G,width:r,toggle:i}),A[5]=G,A[6]=r,A[7]=i,A[8]=R):R=A[8];let l;A[9]===r?l=A[10]:(l=(0,n.jsx)("div",{className:"absolute top-3 left-4 flex items-center z-50",children:(0,n.jsx)(et,{openWidth:r})}),A[9]=r,A[10]=l);let c;return A[11]!==e||A[12]!==R||A[13]!==l?(c=(0,n.jsxs)("div",{className:"inset-0 absolute flex",children:[R,l,e]}),A[11]=e,A[12]=R,A[13]=l,A[14]=c):c=A[14],c};var nt=d();const kt=a=>{let A=(0,nt.c)(17),{width:e,connection:t,isRunning:o,children:G}=a,s=t.state,k;A[0]===o?k=A[1]:(k=(0,n.jsx)(Qa,{isRunning:o}),A[0]=o,A[1]=k);let r;A[2]!==t||A[3]!==o?(r=(0,n.jsx)(La,{connection:t,isRunning:o}),A[2]=t,A[3]=o,A[4]=r):r=A[4];let i;A[5]!==s||A[6]!==e?(i=Y("mathjax_ignore",Me(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]=i):i=A[7];let R;A[8]!==G||A[9]!==s||A[10]!==i||A[11]!==e?(R=(0,n.jsx)(Ma,{children:(0,n.jsx)(rt,{children:(0,n.jsx)("div",{id:"App","data-config-width":e,"data-connection-state":s,className:i,children:G})})}),A[8]=G,A[9]=s,A[10]=i,A[11]=e,A[12]=R):R=A[12];let l;return A[13]!==k||A[14]!==r||A[15]!==R?(l=(0,n.jsxs)(n.Fragment,{children:[k,r,R]}),A[13]=k,A[14]=r,A[15]=R,A[16]=l):l=A[16],l};function it(a){return a.kind==="missing"}function OA(a){return a.kind==="installing"}var{valueAtom:Rt,useActions:lt}=We(()=>({packageAlert:null,startupLogsAlert:null,packageLogs:{}}),{addPackageAlert:(a,A)=>{var o;let e={...a.packageLogs};if(OA(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)||ia();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 Zt=()=>C(Rt);function TA(){return lt()}var IA=d();const KA=(0,u.memo)(a=>{let A=(0,IA.c)(11),{appConfig:e,mode:t,children:o}=a,{selectedLayout:G,layoutData:s}=$e(),k=C(xA);if(t==="edit"&&!k)return o;let r;if(A[0]!==t||A[1]!==G){r=G;let c=new URLSearchParams(window.location.search);if(t==="read"&&c.has(iA.viewAs)){let g=c.get(iA.viewAs);ma.includes(g)&&(r=g)}A[0]=t,A[1]=G,A[2]=r}else r=A[2];let i;A[3]===r?i=A[4]:(i=ea.find(c=>c.type===r),A[3]=r,A[4]=i);let R=i;if(!R)return o;let l;return A[5]!==e||A[6]!==r||A[7]!==s||A[8]!==t||A[9]!==R?(l=(0,n.jsx)(ct,{appConfig:e,mode:t,plugin:R,layoutData:s,finalLayout:r}),A[5]=e,A[6]=r,A[7]=s,A[8]=t,A[9]=R,A[10]=l):l=A[10],l});KA.displayName="CellsRenderer";const ct=a=>{let A=(0,IA.c)(18),{appConfig:e,mode:t,plugin:o,layoutData:G,finalLayout:s}=a,k=JA(),{setCurrentLayoutData:r}=MA(),i,R,l,c,g;if(A[0]!==e||A[1]!==s||A[2]!==G||A[3]!==t||A[4]!==k||A[5]!==o){let x=Re(k);i=o.Component,R=e,l=t,c=x,g=G[s]||o.getInitialLayout(x),A[0]=e,A[1]=s,A[2]=G,A[3]=t,A[4]=k,A[5]=o,A[6]=i,A[7]=R,A[8]=l,A[9]=c,A[10]=g}else i=A[6],R=A[7],l=A[8],c=A[9],g=A[10];let B;return A[11]!==i||A[12]!==r||A[13]!==R||A[14]!==l||A[15]!==c||A[16]!==g?(B=(0,n.jsx)(i,{appConfig:R,mode:l,cells:c,layout:g,setLayout:r}),A[11]=i,A[12]=r,A[13]=R,A[14]=l,A[15]=c,A[16]=g,A[17]=B):B=A[17],B};var gt=class HA{constructor(A){nA(this,"hasStarted",!1);nA(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 HA(Q)),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(SA.TYPE,this.handleReadyEvent),this.hasStarted=!0}stop(){if(!this.hasStarted){D.warn("RuntimeState already stopped");return}document.removeEventListener(SA.TYPE,this.handleReadyEvent),this.hasStarted=!1}},ht=d();function dt(a){if(a.static)return Ee.empty();if(RA())return me();let A=a.url;return new ua(A,void 0,{maxRetries:10,debug:!1,startClosed:!0,connectionTimeout:1e4})}function Bt(a){let A=(0,ht.c)(15),{onOpen:e,onMessage:t,onClose:o,onError:G,waitToConnect:s}=a,k;A[0]!==o||A[1]!==G||A[2]!==t||A[3]!==e||A[4]!==a?(k=()=>{let l=dt(a);return l.addEventListener("open",e),l.addEventListener("close",o),l.addEventListener("error",G),l.addEventListener("message",t),l},A[0]=o,A[1]=G,A[2]=t,A[3]=e,A[4]=a,A[5]=k):k=A[5];let[r]=(0,u.useState)(k),i;A[6]!==o||A[7]!==G||A[8]!==t||A[9]!==e||A[10]!==r||A[11]!==s?(i=()=>(r.readyState===WebSocket.CLOSED&&s().then(()=>r.reconnect()).catch(l=>{D.error("Healthy connection never made",l),r.close()}),()=>{D.warn("useConnectionTransport is unmounting. This likely means there is a bug."),r.close(),r.removeEventListener("open",e),r.removeEventListener("close",o),r.removeEventListener("error",G),r.removeEventListener("message",t)}),A[6]=o,A[7]=G,A[8]=t,A[9]=e,A[10]=r,A[11]=s,A[12]=i):i=A[12];let R;return A[13]===r?R=A[14]:(R=[r],A[13]=r,A[14]=R),(0,u.useEffect)(i,R),r}function ut(a){let{codes:A,names:e,configs:t,cell_ids:o,last_executed_code:G,last_execution_time:s}=a,k=G||{},r=s||{};return A.map((i,R)=>{let l=o[R],c=k[l];return $A({id:l,code:i,edited:c?c!==i:!1,name:e[R],lastCodeRun:k[l]??null,lastExecutionTime:r[l]??null,config:t[R]})})}function mt(a,A,e){let t=Aa(),{layout:o}=a;if(o){let G=o.type,s=aa({type:G,data:o.data,cells:A});t.selectedLayout=G,t.layoutData[G]=s,e({layoutView:G,data:s})}return t}function Yt(){let a=[],A=[];return Q.entries.forEach((e,t)=>{a.push(t),A.push(e.value)}),{objectIds:a,values:A}}function ft(a,A){let{existingCells:e,autoInstantiate:t,setCells:o,setLayoutData:G,setAppConfig:s,setCapabilities:k,setKernelState:r,onError:i}=A,{resumed:R,ui_values:l,app_config:c,capabilities:g,auto_instantiated:B}=a,x=e&&e.length>0,y=x&&!R?e:ut(a);o(y,mt(a,y,G));let v=Ce.safeParse(c);if(v.success?s(v.data):D.error("Failed to parse app config",v.error),k(g),B)return;if(R){for(let[m,j]of wA.entries(l||{})){let S=m;Q.set(S,j)}return}let{objectIds:M,values:N}=Yt(),_=x?Object.fromEntries(e.map(m=>[m.id,m.code])):void 0;Je().sendInstantiate({objectIds:M,values:N,autoRun:t,codes:_}).then(()=>{r({isInstantiated:!0,error:null})}).catch(m=>{r({isInstantiated:!1,error:m}),i(Error("Failed to instantiate",{cause:m}))})}function pt(a){let A=a.cell_id;Q.removeElementsByCell(A),NA.INSTANCE.removeForCellId(A)}function xt(a,A){A(a),NA.INSTANCE.track(a)}const z={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 wt=d();function Dt(){return Object.values(kA().cellData).filter(a=>a.id!==XA)}function vt(a){let A=(0,wt.c)(41),e=(0,u.useRef)(!0),{autoInstantiate:t,sessionId:o,setCells:G}=a,{showBoundary:s}=Fe(),{handleCellMessage:k}=fA(),r;A[0]===Symbol.for("react.memo_cache_sentinel")?(r={skipMiddleware:!0},A[0]=r):r=A[0];let i=fA(r),R;A[1]===i?R=A[2]:(R=h=>{le(h.changes,i,_t)},A[1]=i,A[2]=R);let l=R,{addCellNotification:c}=Ya(),g=F(ka),B=be(),{setVariables:x,setMetadata:y}=ee(),{addColumnPreview:v}=pA(),{addDatasets:M,filterDatasetsFromVariables:N}=pA(),{addDataSourceConnection:_,filterDataSourcesFromVariables:m}=Ze(),{setLayoutData:j}=MA(),[S,w]=YA(Ne),{addBanner:$}=he(),{addPackageAlert:T,addStartupLog:AA}=TA(),eA=F(xA),aA=F(ce),E=_e(),tA=F(da),GA=F(Be),{setNamespaces:oA,filterFromVariables:sA}=Ga(),I;A[3]!==$||A[4]!==c||A[5]!==v||A[6]!==_||A[7]!==M||A[8]!==T||A[9]!==AA||A[10]!==t||A[11]!==m||A[12]!==N||A[13]!==sA||A[14]!==k||A[15]!==l||A[16]!==B||A[17]!==tA||A[18]!==aA||A[19]!==G||A[20]!==GA||A[21]!==g||A[22]!==eA||A[23]!==j||A[24]!==y||A[25]!==oA||A[26]!==x||A[27]!==s?(I=h=>{let Z=Ae(h.data);switch(Z.data.op){case"reload":_A();return;case"kernel-ready":{let f=Dt();ft(Z.data,{autoInstantiate:t,setCells:G,setLayoutData:j,setAppConfig:B,setCapabilities:aA,setKernelState:g,onError:s,existingCells:f}),eA(Z.data.kiosk);return}case"completed-run":return;case"interrupted":return;case"kernel-startup-error":GA(Z.data.error);return;case"send-ui-element-message":{let f=Z.data.ui_element;if(f){let UA=sa(Z.data);Q.broadcastMessage(f,Z.data.message,UA)}return}case"model-lifecycle":ue(we,Z.data);return;case"remove-ui-elements":pt(Z.data);return;case"completion-result":ne.resolve(Z.data.completion_id,Z.data);return;case"function-call-result":Ye.resolve(Z.data.function_call_id,Z.data);return;case"cell-op":{xt(Z.data,k);let f=kA().cellData[Z.data.cell_id];if(!f)return;c({cellNotification:Z.data,code:f.code});return}case"variables":x(Z.data.variables.map(Nt)),N(Z.data.variables.map(Mt)),m(Z.data.variables.map(bt)),sA(Z.data.variables.map(Ct));return;case"variable-values":y(Z.data.variables.map(yt));return;case"alert":cA({title:Z.data.title,description:la({html:Z.data.description}),variant:Z.data.variant});return;case"banner":$(Z.data);return;case"missing-package-alert":T({...Z.data,kind:"missing"});return;case"installing-package-alert":T({...Z.data,kind:"installing"});return;case"startup-logs":AA({content:Z.data.content,status:Z.data.status});return;case"query-params-append":z.append(Z.data);return;case"query-params-set":z.set(Z.data);return;case"query-params-delete":z.delete(Z.data);return;case"query-params-clear":z.clear();return;case"datasets":M(Z.data);return;case"data-column-preview":v(Z.data);return;case"sql-table-preview":zA.resolve(Z.data.request_id,Z.data);return;case"sql-table-list-preview":te.resolve(Z.data.request_id,Z.data);return;case"sql-schema-list-preview":Ge.resolve(Z.data.request_id,Z.data);return;case"validate-sql-result":oe.resolve(Z.data.request_id,Z.data);return;case"secret-keys-result":Ba.resolve(Z.data.request_id,Z.data);return;case"cache-info":tA(Z.data);return;case"cache-cleared":return;case"data-source-connections":_({connections:Z.data.connections.map(Et)});return;case"storage-namespaces":oA(Z.data);return;case"storage-entries":oa.resolve(Z.data.request_id,Z.data);return;case"storage-download-ready":ta.resolve(Z.data.request_id,Z.data);return;case"reconnected":return;case"focus-cell":ge(Z.data.cell_id);return;case"notebook-document-transaction":l(Z.data.transaction);return;default:Xe(Z.data)}},A[3]=$,A[4]=c,A[5]=v,A[6]=_,A[7]=M,A[8]=T,A[9]=AA,A[10]=t,A[11]=m,A[12]=N,A[13]=sA,A[14]=k,A[15]=l,A[16]=B,A[17]=tA,A[18]=aA,A[19]=G,A[20]=GA,A[21]=g,A[22]=eA,A[23]=j,A[24]=y,A[25]=oA,A[26]=x,A[27]=s,A[28]=I):I=A[28];let rA=I,BA=(h,Z)=>{e.current&&(e.current=!1,W.reconnect(h,Z))},K;A[29]===Symbol.for("react.memo_cache_sentinel")?(K=CA(),A[29]=K):K=A[29];let H;A[30]!==E||A[31]!==o?(H=()=>E.getWsURL(o).toString(),A[30]=E,A[31]=o,A[32]=H):H=A[32];let U;A[33]===w?U=A[34]:(U=async()=>{e.current=!0,w({state:p.OPEN})},A[33]=w,A[34]=U);let V;A[35]===E?V=A[36]:(V=async()=>{CA()||RA()||E.isSameOrigin||await E.waitForHealthy()},A[35]=E,A[36]=V);let q;A[37]===rA?q=A[38]:(q=h=>{try{rA(h)}catch(Z){let f=Z;D.error("Failed to handle message",h.data,f),cA({title:"Failed to handle message",description:jA(f),variant:"danger"})}},A[37]=rA,A[38]=q);let W=Bt({static:K,url:H,onOpen:U,waitToConnect:V,onMessage:q,onClose:h=>{switch(D.warn("WebSocket closed",h.code,h.reason),h.reason){case"MARIMO_ALREADY_CONNECTED":w({state:p.CLOSED,code:P.ALREADY_RUNNING,reason:"another browser tab is already connected to the kernel",canTakeover:!0}),W.close();return;case"MARIMO_WRONG_KERNEL_ID":case"MARIMO_NO_FILE_KEY":case"MARIMO_NO_SESSION_ID":case"MARIMO_NO_SESSION":case"MARIMO_SHUTDOWN":w({state:p.CLOSED,code:P.KERNEL_DISCONNECTED,reason:"kernel not found"}),W.close();return;case"MARIMO_MALFORMED_QUERY":w({state:p.CLOSED,code:P.MALFORMED_QUERY,reason:"the kernel did not recognize a request; please file a bug with marimo"});return;default:if(h.reason==="MARIMO_KERNEL_STARTUP_ERROR"){w({state:p.CLOSED,code:P.KERNEL_STARTUP_ERROR,reason:"Failed to start kernel sandbox"}),W.close();return}w({state:p.CONNECTING}),BA(h.code,h.reason)}},onError:h=>{D.warn("WebSocket error",h),w({state:p.CLOSED,code:P.KERNEL_DISCONNECTED,reason:"kernel not found"}),BA()}}),X;return A[39]===S?X=A[40]:(X={connection:S},A[39]=S,A[40]=X),X}function Et(a){return{...a,name:a.name}}function yt(a){return{name:a.name,dataType:a.datatype,value:a.value}}function Ct(a){return a.name}function bt(a){return a.name}function Mt(a){return a.name}function Nt(a){return{name:a.name,declaredBy:a.declared_by,usedBy:a.used_by}}function _t(){return kA().cellIds.inOrderIds}var jt=d();const St=a=>{let A=(0,jt.c)(2),{children:e}=a,t;return A[0]===e?t=A[1]:(t=(0,n.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{OA as a,Zt as c,FA as d,KA as i,kt as l,vt as n,it as o,gt as r,TA as s,St as t,ya as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as K}from"./chunk-LvLJmgfZ.js";import{u as M}from"./useEvent-D91BmmQi.js";import{t as G}from"./react-Bj1aDYRI.js";import{E as H,di as ee,x as te}from"./cells-BqYYXi6G.js";import"./react-dom-CSu739Rf.js";import{t as $}from"./compiler-runtime-B3qBwwSJ.js";import{n as q}from"./constants-tOPFFcLZ.js";import{S as re,d as se}from"./config-DoZCLcOb.js";import{t as oe}from"./cn-DYvqRARy.js";import{t as ae}from"./jsx-runtime-Blw4afVn.js";import"./fullscreen-k58KVlT-.js";import"./popover-AtoFZ7i4.js";import{N as ie,_ as le,gt as me,ot as Q}from"./JsonOutput-CavtrueA.js";import{r as ne}from"./download-5XbM3TL_.js";import{n as ce,t as F}from"./button-COIw2x9i.js";import"./dist-VwkX7yeV.js";import"./cjs-D5tzp-Y6.js";import"./main-BNL5rxQw.js";import"./useNonce-CbdaHKzX.js";import{r as de}from"./requests-9-v2bhoi.js";import"./layout-erv8pLIP.js";import{c as pe}from"./state-BgrGQPFs.js";import"./markdown-renderer-DNANigO8.js";import{t as he}from"./copy-DFMsQ6MJ.js";import{i as fe,l as xe,n as be,r as X,t as ye,u as je}from"./panels--5tTbFBo.js";import{t as ue}from"./spinner-C5wIpWgQ.js";import"./dist-BvlMLwcr.js";import"./dist-4lB-oR9j.js";import"./dist-CxquLoAZ.js";import"./dist-Dnlw22ji.js";import"./dist-CgYlATe-.js";import{t as ge}from"./use-toast-BDYuj3zG.js";import{t as ke}from"./session-DdnWW30b.js";import"./purify.es-BFDc-_i_.js";import"./dates-stqTIkXD.js";import{n as _e}from"./copy-Bizk-4hH.js";import{a as Ne,c as we,l as ve,n as Se,r as Ce,t as ze}from"./dialog-H-hXtEOq.js";import{t as Ee}from"./share-0LPgOyiW.js";import"./utils-BZwMGX81.js";import"./vega-loader.browser-DXARUlxo.js";import"./defaultLocale-JieDVWC_.js";import"./defaultLocale-BLne0bXb.js";import{a as Ie}from"./cell-link-CRkrHl-y.js";import"./chunk-5FQGJX7Z-Cyc7d5AB.js";import"./html-to-image-DGqJ93hW.js";import{n as Pe,t as Ae}from"./react-resizable-panels.browser.esm-BUNcfKXO.js";import"./esm-BqofWdD5.js";import"./name-cell-input-3iKP6YTw.js";import{t as Re}from"./marimo-icons-Dp8wmdDL.js";import"./ws-BApgRfsy.js";import"./dist-DDiNOVwA.js";import"./dist-ByWFdhfz.js";import"./dist-CHgkfE72.js";import"./dist-BYHplnRv.js";import"./dist-04hxiWlB.js";import"./dist-B1XdVflW.js";import"./dist-Gx6Yy96j.js";import"./dist-Yk16cgLk.js";import"./dist-umvL589W.js";import"./esm-D1fwWXHg.js";var Te=$(),Be=K(G(),1),t=K(ae(),1);const We=o=>{let e=(0,Te.c)(25),{appConfig:s}=o,{setCells:r}=H(),{sendComponentValues:y}=de(),c;e[0]===y?c=e[1]:(c=()=>(X.INSTANCE.start(y),Le),e[0]=y,e[1]=c);let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=[],e[2]=a):a=e[2],(0,Be.useEffect)(c,a);let i;e[3]===Symbol.for("react.memo_cache_sentinel")?(i=ke(),e[3]=i):i=e[3];let j;e[4]===r?j=e[5]:(j={autoInstantiate:!0,setCells:r,sessionId:i},e[4]=r,e[5]=j);let{connection:l}=be(j),N=M(te),u;e[6]===l.state?u=e[7]:(u=se(l.state),e[6]=l.state,e[7]=u);let x=u,d;e[8]!==s||e[9]!==x?(d=()=>x?(0,t.jsxs)(ie,{milliseconds:2e3,fallback:null,children:[(0,t.jsx)(ue,{className:"mx-auto"}),(0,t.jsx)("p",{className:"text-center text-sm text-muted-foreground mt-2",children:"Connecting..."})]}):(0,t.jsx)(fe,{appConfig:s,mode:"read"}),e[8]=s,e[9]=x,e[10]=d):d=e[10];let b=d,m;e:{if(typeof window>"u"){m=null;break e}let f,n;if(e[11]===Symbol.for("react.memo_cache_sentinel")){if(n=new URL(window.location.href),!n.searchParams.has("file")){m=null;break e}n.searchParams.delete("file"),f=n.searchParams.toString(),e[11]=f,e[12]=n,e[13]=m}else f=e[11],n=e[12],m=e[13];let w=f;m=w?`${n.pathname}?${w}`:n.pathname}let g=m,v=s.width,k;e[14]===Symbol.for("react.memo_cache_sentinel")?(k=g&&(0,t.jsx)("div",{className:"flex items-center px-6 pt-4 sm:-mt-8",children:(0,t.jsxs)("a",{href:g,"aria-label":"Back to gallery",className:oe(ce({variant:"text",size:"sm"}),"gap-2 px-0 text-muted-foreground hover:text-foreground"),children:[(0,t.jsx)(pe,{className:"size-4","aria-hidden":!0}),(0,t.jsx)("span",{children:"Back"})]})}),e[14]=k):k=e[14];let p;e[15]===l?p=e[16]:(p=(0,t.jsx)(je,{connection:l,className:"sm:pt-8",children:k}),e[15]=l,e[16]=p);let h;e[17]===b?h=e[18]:(h=b(),e[17]=b,e[18]=h);let _;return e[19]!==s.width||e[20]!==l||e[21]!==N||e[22]!==p||e[23]!==h?(_=(0,t.jsxs)(xe,{connection:l,isRunning:N,width:v,children:[p,h]}),e[19]=s.width,e[20]=l,e[21]=N,e[22]=p,e[23]=h,e[24]=_):_=e[24],_};function Le(){X.INSTANCE.stop()}var Y=$();const Oe=()=>{let o=(0,Y.c)(3),e=M(ee);if(!Q()||!e)return null;let s;o[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,t.jsxs)("span",{children:["Static"," ",(0,t.jsx)("a",{href:q.githubPage,target:"_blank",className:"text-(--sky-11) font-medium underline",children:"marimo"})," ","notebook - Run or edit for full interactivity"]}),o[0]=s):s=o[0];let r;return o[1]===e?r=o[2]:(r=(0,t.jsxs)("div",{className:"px-4 py-2 bg-(--sky-2) border-b border-(--sky-7) text-(--sky-11) flex justify-between items-center gap-4 print:hidden text-sm","data-testid":"static-notebook-banner",children:[s,(0,t.jsx)("span",{className:"shrink-0",children:(0,t.jsx)(Ue,{code:e})})]}),o[1]=e,o[2]=r),r};var Ue=o=>{let e=(0,Y.c)(78),{code:s}=o,r=Ie()||"notebook.py",y=r.lastIndexOf("/");y!==-1&&(r=r.slice(y+1));let c=window.location.href,a,i,j,l,N,u,x,d,b,m,g,v,k,p,h,_,f,n,w;if(e[0]!==s||e[1]!==r){let J=Ee({code:s});l=ze,e[21]===Symbol.for("react.memo_cache_sentinel")?(g=(0,t.jsx)(ve,{asChild:!0,children:(0,t.jsx)(F,{"data-testid":"static-notebook-dialog-trigger",variant:"outline",size:"xs",children:"Run or Edit"})}),e[21]=g):g=e[21],j=Se,i=Ne,e[22]===r?m=e[23]:(m=(0,t.jsx)(we,{children:r}),e[22]=r,e[23]=m),a=Ce,u="pt-3 text-left space-y-3",e[24]===Symbol.for("react.memo_cache_sentinel")?(x=(0,t.jsxs)("p",{children:["This is a static"," ",(0,t.jsx)("a",{href:q.githubPage,target:"_blank",className:"text-(--sky-11) hover:underline font-medium",children:"marimo"})," ","notebook. To run interactively:"]}),e[24]=x):x=e[24];let V;e[25]===Symbol.for("react.memo_cache_sentinel")?(V=(0,t.jsx)("br",{}),e[25]=V):V=e[25],e[26]===r?d=e[27]:(d=(0,t.jsx)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) leading-relaxed",children:["pip install marimo",V,"marimo edit ",r]})}),e[26]=r,e[27]=d),e[28]===Symbol.for("react.memo_cache_sentinel")?(b=!c.endsWith(".html")&&(0,t.jsxs)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:[(0,t.jsx)("div",{className:"text-sm text-(--sky-12) mb-1",children:"Or run directly from URL:"}),(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) break-all",children:["marimo edit ",window.location.href]})]}),e[28]=b):b=e[28],w="pt-3 border-t border-(--sky-7)",_="text-sm text-(--sky-12) mb-2",e[29]===Symbol.for("react.memo_cache_sentinel")?(f=(0,t.jsx)("strong",{children:"Try in browser with WebAssembly:"}),e[29]=f):f=e[29],n=" ",N=J,v="_blank",k="text-(--sky-11) hover:underline break-all",p="noreferrer",h=J.slice(0,50),e[0]=s,e[1]=r,e[2]=a,e[3]=i,e[4]=j,e[5]=l,e[6]=N,e[7]=u,e[8]=x,e[9]=d,e[10]=b,e[11]=m,e[12]=g,e[13]=v,e[14]=k,e[15]=p,e[16]=h,e[17]=_,e[18]=f,e[19]=n,e[20]=w}else a=e[2],i=e[3],j=e[4],l=e[5],N=e[6],u=e[7],x=e[8],d=e[9],b=e[10],m=e[11],g=e[12],v=e[13],k=e[14],p=e[15],h=e[16],_=e[17],f=e[18],n=e[19],w=e[20];let S;e[30]!==N||e[31]!==v||e[32]!==k||e[33]!==p||e[34]!==h?(S=(0,t.jsxs)("a",{href:N,target:v,className:k,rel:p,children:[h,"..."]}),e[30]=N,e[31]=v,e[32]=k,e[33]=p,e[34]=h,e[35]=S):S=e[35];let C;e[36]!==S||e[37]!==_||e[38]!==f||e[39]!==n?(C=(0,t.jsxs)("p",{className:_,children:[f,n,S]}),e[36]=S,e[37]=_,e[38]=f,e[39]=n,e[40]=C):C=e[40];let L;e[41]===Symbol.for("react.memo_cache_sentinel")?(L=(0,t.jsx)("p",{className:"text-sm text-(--sky-12)",children:"Note: WebAssembly may not work for all notebooks. Additionally, some dependencies may not be available in the browser."}),e[41]=L):L=e[41];let z;e[42]!==C||e[43]!==w?(z=(0,t.jsxs)("div",{className:w,children:[C,L]}),e[42]=C,e[43]=w,e[44]=z):z=e[44];let E;e[45]!==a||e[46]!==u||e[47]!==x||e[48]!==d||e[49]!==b||e[50]!==z?(E=(0,t.jsxs)(a,{className:u,children:[x,d,b,z]}),e[45]=a,e[46]=u,e[47]=x,e[48]=d,e[49]=b,e[50]=z,e[51]=E):E=e[51];let I;e[52]!==i||e[53]!==m||e[54]!==E?(I=(0,t.jsxs)(i,{children:[m,E]}),e[52]=i,e[53]=m,e[54]=E,e[55]=I):I=e[55];let P;e[56]===s?P=e[57]:(P=async()=>{await _e(s),ge({title:"Copied to clipboard"})},e[56]=s,e[57]=P);let O;e[58]===Symbol.for("react.memo_cache_sentinel")?(O=(0,t.jsx)(he,{className:"w-3 h-3 mr-2"}),e[58]=O):O=e[58];let A;e[59]===P?A=e[60]:(A=(0,t.jsxs)(F,{"data-testid":"copy-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:P,children:[O,"Copy code"]}),e[59]=P,e[60]=A);let R;e[61]!==s||e[62]!==r?(R=()=>{ne(new Blob([s],{type:"text/plain"}),r)},e[61]=s,e[62]=r,e[63]=R):R=e[63];let U;e[64]===Symbol.for("react.memo_cache_sentinel")?(U=(0,t.jsx)(me,{className:"w-3 h-3 mr-2"}),e[64]=U):U=e[64];let T;e[65]===R?T=e[66]:(T=(0,t.jsxs)(F,{"data-testid":"download-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:R,children:[U,"Download"]}),e[65]=R,e[66]=T);let B;e[67]!==A||e[68]!==T?(B=(0,t.jsxs)("div",{className:"flex gap-3 pt-2",children:[A,T]}),e[67]=A,e[68]=T,e[69]=B):B=e[69];let W;e[70]!==j||e[71]!==I||e[72]!==B?(W=(0,t.jsxs)(j,{children:[I,B]}),e[70]=j,e[71]=I,e[72]=B,e[73]=W):W=e[73];let D;return e[74]!==l||e[75]!==g||e[76]!==W?(D=(0,t.jsxs)(l,{children:[g,W]}),e[74]=l,e[75]=g,e[76]=W,e[77]=D):D=e[77],D},Z=$(),De=re()||Q(),Ve=o=>{let e=(0,Z.c)(9),s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,t.jsx)(Oe,{}),e[0]=s):s=e[0];let r;e[1]===o.appConfig?r=e[2]:(r=(0,t.jsx)(We,{appConfig:o.appConfig}),e[1]=o.appConfig,e[2]=r);let y;e[3]===Symbol.for("react.memo_cache_sentinel")?(y=De&&(0,t.jsx)($e,{}),e[3]=y):y=e[3];let c;e[4]===r?c=e[5]:(c=(0,t.jsxs)(Ae,{children:[s,r,y]}),e[4]=r,e[5]=c);let a;e[6]===Symbol.for("react.memo_cache_sentinel")?(a=(0,t.jsx)(le,{}),e[6]=a):a=e[6];let i;return e[7]===c?i=e[8]:(i=(0,t.jsx)(ye,{children:(0,t.jsxs)(Pe,{direction:"horizontal",autoSaveId:"marimo:chrome:v1:run1",children:[c,a]})}),e[7]=c,e[8]=i),i},$e=()=>{let o=(0,Z.c)(1),e;return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsx)("div",{className:"fixed bottom-0 right-0 z-50","data-testid":"watermark",children:(0,t.jsxs)("a",{href:q.githubPage,target:"_blank",className:"text-sm text-(--grass-11) font-bold tracking-wide transition-colors bg-(--grass-4) hover:bg-(--grass-5) border-t border-l border-(--grass-8) px-3 py-1 rounded-tl-md flex items-center gap-2",children:[(0,t.jsx)("span",{children:"made with marimo"}),(0,t.jsx)(Re,{className:"h-4 w-auto"})]})}),o[0]=e):e=o[0],e},qe=Ve;export{qe as default};
|
|
1
|
+
import{s as K}from"./chunk-LvLJmgfZ.js";import{u as M}from"./useEvent-D91BmmQi.js";import{t as G}from"./react-Bj1aDYRI.js";import{E as H,di as ee,x as te}from"./cells-BqYYXi6G.js";import"./react-dom-CSu739Rf.js";import{t as $}from"./compiler-runtime-B3qBwwSJ.js";import{n as q}from"./constants-tOPFFcLZ.js";import{S as re,d as se}from"./config-DoZCLcOb.js";import{t as oe}from"./cn-DYvqRARy.js";import{t as ae}from"./jsx-runtime-Blw4afVn.js";import"./fullscreen-k58KVlT-.js";import"./popover-AtoFZ7i4.js";import{N as ie,_ as le,gt as me,ot as Q}from"./JsonOutput-CavtrueA.js";import{r as ne}from"./download-5XbM3TL_.js";import{n as ce,t as F}from"./button-COIw2x9i.js";import"./dist-VwkX7yeV.js";import"./cjs-D5tzp-Y6.js";import"./main-BNL5rxQw.js";import"./useNonce-CbdaHKzX.js";import{r as de}from"./requests-9-v2bhoi.js";import"./layout-erv8pLIP.js";import{c as pe}from"./state-BgrGQPFs.js";import"./markdown-renderer-DNANigO8.js";import{t as he}from"./copy-DFMsQ6MJ.js";import{i as fe,l as xe,n as be,r as X,t as ye,u as je}from"./panels-1u-RE72f.js";import{t as ue}from"./spinner-C5wIpWgQ.js";import"./dist-BvlMLwcr.js";import"./dist-4lB-oR9j.js";import"./dist-CxquLoAZ.js";import"./dist-Dnlw22ji.js";import"./dist-CgYlATe-.js";import{t as ge}from"./use-toast-BDYuj3zG.js";import{t as ke}from"./session-DdnWW30b.js";import"./purify.es-BFDc-_i_.js";import"./dates-stqTIkXD.js";import{n as _e}from"./copy-Bizk-4hH.js";import{a as Ne,c as we,l as ve,n as Se,r as Ce,t as ze}from"./dialog-H-hXtEOq.js";import{t as Ee}from"./share-0LPgOyiW.js";import"./utils-BZwMGX81.js";import"./vega-loader.browser-DXARUlxo.js";import"./defaultLocale-JieDVWC_.js";import"./defaultLocale-BLne0bXb.js";import{a as Ie}from"./cell-link-CRkrHl-y.js";import"./chunk-5FQGJX7Z-Cyc7d5AB.js";import"./html-to-image-DGqJ93hW.js";import{n as Pe,t as Ae}from"./react-resizable-panels.browser.esm-BUNcfKXO.js";import"./esm-BqofWdD5.js";import"./name-cell-input-3iKP6YTw.js";import{t as Re}from"./marimo-icons-Dp8wmdDL.js";import"./ws-BApgRfsy.js";import"./dist-DDiNOVwA.js";import"./dist-ByWFdhfz.js";import"./dist-CHgkfE72.js";import"./dist-BYHplnRv.js";import"./dist-04hxiWlB.js";import"./dist-B1XdVflW.js";import"./dist-Gx6Yy96j.js";import"./dist-Yk16cgLk.js";import"./dist-umvL589W.js";import"./esm-D1fwWXHg.js";var Te=$(),Be=K(G(),1),t=K(ae(),1);const We=o=>{let e=(0,Te.c)(25),{appConfig:s}=o,{setCells:r}=H(),{sendComponentValues:y}=de(),c;e[0]===y?c=e[1]:(c=()=>(X.INSTANCE.start(y),Le),e[0]=y,e[1]=c);let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=[],e[2]=a):a=e[2],(0,Be.useEffect)(c,a);let i;e[3]===Symbol.for("react.memo_cache_sentinel")?(i=ke(),e[3]=i):i=e[3];let j;e[4]===r?j=e[5]:(j={autoInstantiate:!0,setCells:r,sessionId:i},e[4]=r,e[5]=j);let{connection:l}=be(j),N=M(te),u;e[6]===l.state?u=e[7]:(u=se(l.state),e[6]=l.state,e[7]=u);let x=u,d;e[8]!==s||e[9]!==x?(d=()=>x?(0,t.jsxs)(ie,{milliseconds:2e3,fallback:null,children:[(0,t.jsx)(ue,{className:"mx-auto"}),(0,t.jsx)("p",{className:"text-center text-sm text-muted-foreground mt-2",children:"Connecting..."})]}):(0,t.jsx)(fe,{appConfig:s,mode:"read"}),e[8]=s,e[9]=x,e[10]=d):d=e[10];let b=d,m;e:{if(typeof window>"u"){m=null;break e}let f,n;if(e[11]===Symbol.for("react.memo_cache_sentinel")){if(n=new URL(window.location.href),!n.searchParams.has("file")){m=null;break e}n.searchParams.delete("file"),f=n.searchParams.toString(),e[11]=f,e[12]=n,e[13]=m}else f=e[11],n=e[12],m=e[13];let w=f;m=w?`${n.pathname}?${w}`:n.pathname}let g=m,v=s.width,k;e[14]===Symbol.for("react.memo_cache_sentinel")?(k=g&&(0,t.jsx)("div",{className:"flex items-center px-6 pt-4 sm:-mt-8",children:(0,t.jsxs)("a",{href:g,"aria-label":"Back to gallery",className:oe(ce({variant:"text",size:"sm"}),"gap-2 px-0 text-muted-foreground hover:text-foreground"),children:[(0,t.jsx)(pe,{className:"size-4","aria-hidden":!0}),(0,t.jsx)("span",{children:"Back"})]})}),e[14]=k):k=e[14];let p;e[15]===l?p=e[16]:(p=(0,t.jsx)(je,{connection:l,className:"sm:pt-8",children:k}),e[15]=l,e[16]=p);let h;e[17]===b?h=e[18]:(h=b(),e[17]=b,e[18]=h);let _;return e[19]!==s.width||e[20]!==l||e[21]!==N||e[22]!==p||e[23]!==h?(_=(0,t.jsxs)(xe,{connection:l,isRunning:N,width:v,children:[p,h]}),e[19]=s.width,e[20]=l,e[21]=N,e[22]=p,e[23]=h,e[24]=_):_=e[24],_};function Le(){X.INSTANCE.stop()}var Y=$();const Oe=()=>{let o=(0,Y.c)(3),e=M(ee);if(!Q()||!e)return null;let s;o[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,t.jsxs)("span",{children:["Static"," ",(0,t.jsx)("a",{href:q.githubPage,target:"_blank",className:"text-(--sky-11) font-medium underline",children:"marimo"})," ","notebook - Run or edit for full interactivity"]}),o[0]=s):s=o[0];let r;return o[1]===e?r=o[2]:(r=(0,t.jsxs)("div",{className:"px-4 py-2 bg-(--sky-2) border-b border-(--sky-7) text-(--sky-11) flex justify-between items-center gap-4 print:hidden text-sm","data-testid":"static-notebook-banner",children:[s,(0,t.jsx)("span",{className:"shrink-0",children:(0,t.jsx)(Ue,{code:e})})]}),o[1]=e,o[2]=r),r};var Ue=o=>{let e=(0,Y.c)(78),{code:s}=o,r=Ie()||"notebook.py",y=r.lastIndexOf("/");y!==-1&&(r=r.slice(y+1));let c=window.location.href,a,i,j,l,N,u,x,d,b,m,g,v,k,p,h,_,f,n,w;if(e[0]!==s||e[1]!==r){let J=Ee({code:s});l=ze,e[21]===Symbol.for("react.memo_cache_sentinel")?(g=(0,t.jsx)(ve,{asChild:!0,children:(0,t.jsx)(F,{"data-testid":"static-notebook-dialog-trigger",variant:"outline",size:"xs",children:"Run or Edit"})}),e[21]=g):g=e[21],j=Se,i=Ne,e[22]===r?m=e[23]:(m=(0,t.jsx)(we,{children:r}),e[22]=r,e[23]=m),a=Ce,u="pt-3 text-left space-y-3",e[24]===Symbol.for("react.memo_cache_sentinel")?(x=(0,t.jsxs)("p",{children:["This is a static"," ",(0,t.jsx)("a",{href:q.githubPage,target:"_blank",className:"text-(--sky-11) hover:underline font-medium",children:"marimo"})," ","notebook. To run interactively:"]}),e[24]=x):x=e[24];let V;e[25]===Symbol.for("react.memo_cache_sentinel")?(V=(0,t.jsx)("br",{}),e[25]=V):V=e[25],e[26]===r?d=e[27]:(d=(0,t.jsx)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) leading-relaxed",children:["pip install marimo",V,"marimo edit ",r]})}),e[26]=r,e[27]=d),e[28]===Symbol.for("react.memo_cache_sentinel")?(b=!c.endsWith(".html")&&(0,t.jsxs)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:[(0,t.jsx)("div",{className:"text-sm text-(--sky-12) mb-1",children:"Or run directly from URL:"}),(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) break-all",children:["marimo edit ",window.location.href]})]}),e[28]=b):b=e[28],w="pt-3 border-t border-(--sky-7)",_="text-sm text-(--sky-12) mb-2",e[29]===Symbol.for("react.memo_cache_sentinel")?(f=(0,t.jsx)("strong",{children:"Try in browser with WebAssembly:"}),e[29]=f):f=e[29],n=" ",N=J,v="_blank",k="text-(--sky-11) hover:underline break-all",p="noreferrer",h=J.slice(0,50),e[0]=s,e[1]=r,e[2]=a,e[3]=i,e[4]=j,e[5]=l,e[6]=N,e[7]=u,e[8]=x,e[9]=d,e[10]=b,e[11]=m,e[12]=g,e[13]=v,e[14]=k,e[15]=p,e[16]=h,e[17]=_,e[18]=f,e[19]=n,e[20]=w}else a=e[2],i=e[3],j=e[4],l=e[5],N=e[6],u=e[7],x=e[8],d=e[9],b=e[10],m=e[11],g=e[12],v=e[13],k=e[14],p=e[15],h=e[16],_=e[17],f=e[18],n=e[19],w=e[20];let S;e[30]!==N||e[31]!==v||e[32]!==k||e[33]!==p||e[34]!==h?(S=(0,t.jsxs)("a",{href:N,target:v,className:k,rel:p,children:[h,"..."]}),e[30]=N,e[31]=v,e[32]=k,e[33]=p,e[34]=h,e[35]=S):S=e[35];let C;e[36]!==S||e[37]!==_||e[38]!==f||e[39]!==n?(C=(0,t.jsxs)("p",{className:_,children:[f,n,S]}),e[36]=S,e[37]=_,e[38]=f,e[39]=n,e[40]=C):C=e[40];let L;e[41]===Symbol.for("react.memo_cache_sentinel")?(L=(0,t.jsx)("p",{className:"text-sm text-(--sky-12)",children:"Note: WebAssembly may not work for all notebooks. Additionally, some dependencies may not be available in the browser."}),e[41]=L):L=e[41];let z;e[42]!==C||e[43]!==w?(z=(0,t.jsxs)("div",{className:w,children:[C,L]}),e[42]=C,e[43]=w,e[44]=z):z=e[44];let E;e[45]!==a||e[46]!==u||e[47]!==x||e[48]!==d||e[49]!==b||e[50]!==z?(E=(0,t.jsxs)(a,{className:u,children:[x,d,b,z]}),e[45]=a,e[46]=u,e[47]=x,e[48]=d,e[49]=b,e[50]=z,e[51]=E):E=e[51];let I;e[52]!==i||e[53]!==m||e[54]!==E?(I=(0,t.jsxs)(i,{children:[m,E]}),e[52]=i,e[53]=m,e[54]=E,e[55]=I):I=e[55];let P;e[56]===s?P=e[57]:(P=async()=>{await _e(s),ge({title:"Copied to clipboard"})},e[56]=s,e[57]=P);let O;e[58]===Symbol.for("react.memo_cache_sentinel")?(O=(0,t.jsx)(he,{className:"w-3 h-3 mr-2"}),e[58]=O):O=e[58];let A;e[59]===P?A=e[60]:(A=(0,t.jsxs)(F,{"data-testid":"copy-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:P,children:[O,"Copy code"]}),e[59]=P,e[60]=A);let R;e[61]!==s||e[62]!==r?(R=()=>{ne(new Blob([s],{type:"text/plain"}),r)},e[61]=s,e[62]=r,e[63]=R):R=e[63];let U;e[64]===Symbol.for("react.memo_cache_sentinel")?(U=(0,t.jsx)(me,{className:"w-3 h-3 mr-2"}),e[64]=U):U=e[64];let T;e[65]===R?T=e[66]:(T=(0,t.jsxs)(F,{"data-testid":"download-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:R,children:[U,"Download"]}),e[65]=R,e[66]=T);let B;e[67]!==A||e[68]!==T?(B=(0,t.jsxs)("div",{className:"flex gap-3 pt-2",children:[A,T]}),e[67]=A,e[68]=T,e[69]=B):B=e[69];let W;e[70]!==j||e[71]!==I||e[72]!==B?(W=(0,t.jsxs)(j,{children:[I,B]}),e[70]=j,e[71]=I,e[72]=B,e[73]=W):W=e[73];let D;return e[74]!==l||e[75]!==g||e[76]!==W?(D=(0,t.jsxs)(l,{children:[g,W]}),e[74]=l,e[75]=g,e[76]=W,e[77]=D):D=e[77],D},Z=$(),De=re()||Q(),Ve=o=>{let e=(0,Z.c)(9),s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,t.jsx)(Oe,{}),e[0]=s):s=e[0];let r;e[1]===o.appConfig?r=e[2]:(r=(0,t.jsx)(We,{appConfig:o.appConfig}),e[1]=o.appConfig,e[2]=r);let y;e[3]===Symbol.for("react.memo_cache_sentinel")?(y=De&&(0,t.jsx)($e,{}),e[3]=y):y=e[3];let c;e[4]===r?c=e[5]:(c=(0,t.jsxs)(Ae,{children:[s,r,y]}),e[4]=r,e[5]=c);let a;e[6]===Symbol.for("react.memo_cache_sentinel")?(a=(0,t.jsx)(le,{}),e[6]=a):a=e[6];let i;return e[7]===c?i=e[8]:(i=(0,t.jsx)(ye,{children:(0,t.jsxs)(Pe,{direction:"horizontal",autoSaveId:"marimo:chrome:v1:run1",children:[c,a]})}),e[7]=c,e[8]=i),i},$e=()=>{let o=(0,Z.c)(1),e;return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsx)("div",{className:"fixed bottom-0 right-0 z-50","data-testid":"watermark",children:(0,t.jsxs)("a",{href:q.githubPage,target:"_blank",className:"text-sm text-(--grass-11) font-bold tracking-wide transition-colors bg-(--grass-4) hover:bg-(--grass-5) border-t border-l border-(--grass-8) px-3 py-1 rounded-tl-md flex items-center gap-2",children:[(0,t.jsx)("span",{children:"made with marimo"}),(0,t.jsx)(Re,{className:"h-4 w-auto"})]})}),o[0]=e):e=o[0],e},qe=Ve;export{qe as default};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var Ot=Object.defineProperty;var He=f=>{throw TypeError(f)};var $t=(f,h,y)=>h in f?Ot(f,h,{enumerable:!0,configurable:!0,writable:!0,value:y}):f[h]=y;var n=(f,h,y)=>$t(f,typeof h!="symbol"?h+"":h,y),ue=(f,h,y)=>h.has(f)||He("Cannot "+y);var o=(f,h,y)=>(ue(f,h,"read from private field"),y?y.call(f):h.get(f)),_=(f,h,y)=>h.has(f)?He("Cannot add the same private member more than once"):h instanceof WeakSet?h.add(f):h.set(f,y),C=(f,h,y,z)=>(ue(f,h,"write to private field"),z?z.call(f,y):h.set(f,y),y),A=(f,h,y)=>(ue(f,h,"access private method"),y);import{i as Q,p as de,u as zt}from"./useEvent-D91BmmQi.js";import{An as Vt,Si as Y,b as Qt,ci as Yt,di as Gt,gi as Jt,it as Oe,pi as Kt,x as Xt,xi as Zt,__tla as er}from"./cells-BqYYXi6G.js";import{t as tr}from"./get-D7jeR2wg.js";import{t as rr}from"./debounce-BbSyBDA8.js";import{t as sr}from"./_baseSet-49dbm-yb.js";import{_ as p,y as g}from"./useEventListener-DGjKht0c.js";import{t as nr}from"./invariant-CkiqGLcK.js";import{S as ar}from"./utils-8btzWeZg.js";import{S as ir,n as or}from"./config-DoZCLcOb.js";import{n as lr}from"./switch-YkPg_CVc.js";import{n as $e}from"./globals-Bu6OEURn.js";import{at as ce,ot as ze,__tla as ur}from"./JsonOutput-CavtrueA.js";import{t as dr}from"./createReducer-CYlwteGD.js";import{r as cr}from"./strings-pfr2N700.js";import{t as pe}from"./requests-9-v2bhoi.js";import{a as Ve,l as pr,r as Qe,__tla as fr}from"./markdown-renderer-DNANigO8.js";import{t as hr}from"./DeferredRequestRegistry-BLWK1eKa.js";import{t as mr}from"./preload-helper-D2MJg03u.js";import{t as Ye}from"./Deferred-DxQeE5uh.js";import{t as Ge}from"./uuid-DXdzqzcr.js";import{t as gr}from"./use-toast-BDYuj3zG.js";import{n as yr,r as wr,t as br}from"./share-0LPgOyiW.js";import{t as vr}from"./blob-CTort_or.js";import{i as Je,r as _r,t as Cr}from"./events-Qeh-bHlj.js";let G,Ke,Xe,fe,Ze,et,he,tt,J,rt,st,me,ge,nt,at,it,ot,ne,lt,ut,ye,dt,we,Rr=Promise.all([(()=>{try{return er}catch{}})(),(()=>{try{return ur}catch{}})(),(()=>{try{return fr}catch{}})()]).then(async()=>{var U,ee,pt,Le,M,T,E,Ne,F,Ae,P,V,D,ae,Ue,Te,te,I,L,H,R,j,N,ft,ht,mt,re;function f(t,e,r){return t==null?t:sr(t,e,r)}G=f,Ze=de(null);var{valueAtom:h,useActions:y}=dr(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:Ge()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(r=>r.id!==e)}),clearBanners:t=>({...t,banners:[]})});dt=()=>zt(h),Ke=function(){return y()};let z,ve,_e;z=class{constructor(){n(this,"subscriptions",new Map)}addSubscription(t,e){var r;this.subscriptions.has(t)||this.subscriptions.set(t,new Set),(r=this.subscriptions.get(t))==null||r.add(e)}removeSubscription(t,e){var r;(r=this.subscriptions.get(t))==null||r.delete(e)}notify(t,e){for(let r of this.subscriptions.get(t)??[])r(e)}},we=class be{constructor(e){n(this,"subscriptions",new z);this.producer=e}static withProducerCallback(e){return new be(e)}static empty(){return new be}startProducer(){this.producer&&this.producer(e=>{this.subscriptions.notify("message",e)})}connect(){return new Promise(e=>setTimeout(e,0)).then(()=>{this.subscriptions.notify("open",new Event("open"))})}get readyState(){return WebSocket.OPEN}reconnect(e,r){this.close(),this.connect()}close(){this.subscriptions.notify("close",new Event("close"))}send(e){return this.subscriptions.notify("message",new MessageEvent("message",{data:e})),Promise.resolve()}addEventListener(e,r){this.subscriptions.addSubscription(e,r),e==="open"&&r(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,r){this.subscriptions.removeSubscription(e,r)}},ve=1e10,_e=1e3;function K(t,e){let r=t.map(s=>`"${s}"`).join(", ");return Error(`This RPC instance cannot ${e} because the transport did not provide one or more of these methods: ${r}`)}function yt(t={}){let e={};function r(l){e=l}let s={};function a(l){var c;s.unregisterHandler&&s.unregisterHandler(),s=l,(c=s.registerHandler)==null||c.call(s,Ht)}let i;function u(l){if(typeof l=="function"){i=l;return}i=(c,w)=>{let m=l[c];if(m)return m(w);let b=l._;if(!b)throw Error(`The requested method has no handler: ${c}`);return b(c,w)}}let{maxRequestTime:d=_e}=t;t.transport&&a(t.transport),t.requestHandler&&u(t.requestHandler),t._debugHooks&&r(t._debugHooks);let v=0;function q(){return v<=ve?++v:v=0}let x=new Map,S=new Map;function O(l,...c){let w=c[0];return new Promise((m,b)=>{var $;if(!s.send)throw K(["send"],"make requests");let k=q(),W={type:"request",id:k,method:l,params:w};x.set(k,{resolve:m,reject:b}),d!==1/0&&S.set(k,setTimeout(()=>{S.delete(k),b(Error("RPC request timed out."))},d)),($=e.onSend)==null||$.call(e,W),s.send(W)})}let se=new Proxy(O,{get:(l,c,w)=>c in l?Reflect.get(l,c,w):m=>O(c,m)}),je=se;function Be(l,...c){var b;let w=c[0];if(!s.send)throw K(["send"],"send messages");let m={type:"message",id:l,payload:w};(b=e.onSend)==null||b.call(e,m),s.send(m)}let We=new Proxy(Be,{get:(l,c,w)=>c in l?Reflect.get(l,c,w):m=>Be(c,m)}),De=We,B=new Map,le=new Set;function Wt(l,c){var w;if(!s.registerHandler)throw K(["registerHandler"],"register message listeners");if(l==="*"){le.add(c);return}B.has(l)||B.set(l,new Set),(w=B.get(l))==null||w.add(c)}function Dt(l,c){var w,m;if(l==="*"){le.delete(c);return}(w=B.get(l))==null||w.delete(c),((m=B.get(l))==null?void 0:m.size)===0&&B.delete(l)}async function Ht(l){var c,w;if((c=e.onReceive)==null||c.call(e,l),!("type"in l))throw Error("Message does not contain a type.");if(l.type==="request"){if(!s.send||!i)throw K(["send","requestHandler"],"handle requests");let{id:m,method:b,params:k}=l,W;try{W={type:"response",id:m,success:!0,payload:await i(b,k)}}catch($){if(!($ instanceof Error))throw $;W={type:"response",id:m,success:!1,error:$.message}}(w=e.onSend)==null||w.call(e,W),s.send(W);return}if(l.type==="response"){let m=S.get(l.id);m!=null&&clearTimeout(m);let{resolve:b,reject:k}=x.get(l.id)??{};l.success?b==null||b(l.payload):k==null||k(Error(l.error));return}if(l.type==="message"){for(let b of le)b(l.id,l.payload);let m=B.get(l.id);if(!m)return;for(let b of m)b(l.payload);return}throw Error(`Unexpected RPC message type: ${l.type}`)}return{setTransport:a,setRequestHandler:u,request:se,requestProxy:je,send:We,sendProxy:De,addMessageListener:Wt,removeMessageListener:Dt,proxy:{send:De,request:je},_setDebugHooks:r}}function wt(t){return yt(t)}var Ce="[transport-id]";function bt(t,e){let{transportId:r}=e;return r==null?t:{[Ce]:r,data:t}}function vt(t,e){let{transportId:r,filter:s}=e,a=s==null?void 0:s();if(r!=null&&a!=null)throw Error("Cannot use both `transportId` and `filter` at the same time");let i=t;if(r){if(t[Ce]!==r)return[!0];i=t.data}return a===!1?[!0]:[!1,i]}function _t(t,e={}){let{transportId:r,filter:s,remotePort:a}=e,i=t,u=a??t,d;return{send(v){u.postMessage(bt(v,{transportId:r}))},registerHandler(v){d=q=>{let x=q.data,[S,O]=vt(x,{transportId:r,filter:()=>s==null?void 0:s(q)});S||v(O)},i.addEventListener("message",d)},unregisterHandler(){d&&i.removeEventListener("message",d)}}}function Ct(t,e){return _t(t,e)}function Re(t){return wt({transport:Ct(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{p.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{p.debug("[rpc] Worker -> Parent",e)}}})}ye=de("Initializing..."),Xe=de(t=>{let e=t(Qt),r=Object.values(e.cellRuntime);return r.some(s=>!pr(s.output))?!0:r.every(s=>s.status==="idle")});var qe=yr(),xe="marimo:file",Se=new Yt(null);const Rt={saveFile(t){Se.set(xe,t)},readFile(){return Se.get(xe)}};var qt={saveFile(t){Y.setCodeForHash((0,qe.compressToEncodedURIComponent)(t))},readFile(){let t=Y.getCodeFromHash()||Y.getCodeFromSearchParam();return t?(0,qe.decompressFromEncodedURIComponent)(t):null}};const xt={saveFile(t){},readFile(){let t=document.querySelector("marimo-code");return t?decodeURIComponent(t.textContent||"").trim():null}};var St={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)}};const Et={saveFile(t){},readFile(){return Q.get(Gt)??null}};var kt={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
|
|
2
|
+
`)}},Ee=class{constructor(t){this.stores=t}insert(t,e){this.stores.splice(t,0,e)}saveFile(t){this.stores.forEach(e=>e.saveFile(t))}readFile(){for(let t of this.stores){let e=t.readFile();if(e)return e}return null}};let X;J=new Ee([Et,xt,qt]),X=new Ee([Rt,St,kt]),ge=class ct{constructor(){n(this,"initialized",new Ye);n(this,"sendRename",async({filename:e})=>(e===null||(Y.setFilename(e),await this.rpc.proxy.request.bridge({functionName:"rename_file",payload:e})),null));n(this,"sendSave",async e=>{if(!this.saveRpc)return p.warn("Save RPC not initialized"),null;await this.saveRpc.saveNotebook(e);let r=await this.readCode();return r.contents&&(J.saveFile(r.contents),X.saveFile(r.contents)),this.rpc.proxy.request.saveNotebook(e).catch(s=>{p.error(s)}),null});n(this,"sendCopy",async()=>{g()});n(this,"sendStdin",async e=>(await this.rpc.proxy.request.bridge({functionName:"put_input",payload:e.text}),null));n(this,"sendPdb",async()=>{g()});n(this,"sendRun",async e=>(await this.rpc.proxy.request.loadPackages(e.codes.join(`
|
|
3
|
+
`)),await this.putControlRequest({type:"execute-cells",...e}),null));n(this,"sendRunScratchpad",async e=>(await this.rpc.proxy.request.loadPackages(e.code),await this.putControlRequest({type:"execute-scratchpad",...e}),null));n(this,"sendInterrupt",async()=>(this.interruptBuffer!==void 0&&(this.interruptBuffer[0]=2),null));n(this,"sendShutdown",async()=>(window.close(),null));n(this,"sendFormat",async e=>await this.rpc.proxy.request.bridge({functionName:"format",payload:e}));n(this,"sendDeleteCell",async e=>(await this.putControlRequest({type:"delete-cell",...e}),null));n(this,"sendInstallMissingPackages",async e=>(this.putControlRequest({type:"install-packages",...e}),null));n(this,"sendCodeCompletionRequest",async e=>(Q.get(Xt)||await this.rpc.proxy.request.bridge({functionName:"code_complete",payload:e}),null));n(this,"saveUserConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_user_config",payload:e}),lr.post("/kernel/save_user_config",e,{baseUrl:"/"}).catch(r=>(p.error(r),null))));n(this,"saveAppConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_app_config",payload:e}),null));n(this,"saveCellConfig",async e=>(await this.putControlRequest({type:"update-cell-config",...e}),null));n(this,"sendRestart",async()=>{let e=await this.readCode();return e.contents&&(J.saveFile(e.contents),X.saveFile(e.contents)),wr(),null});n(this,"readCode",async()=>this.saveRpc?{contents:await this.saveRpc.readNotebook()}:(p.warn("Save RPC not initialized"),{contents:""}));n(this,"readSnippets",async()=>await this.rpc.proxy.request.bridge({functionName:"read_snippets",payload:void 0}));n(this,"openFile",async({path:e})=>{let r=br({code:null,baseUrl:window.location.origin});return window.open(r,"_blank"),null});n(this,"sendListFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"list_files",payload:e}));n(this,"sendSearchFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"search_files",payload:e}));n(this,"sendComponentValues",async e=>(await this.putControlRequest({type:"update-ui-element",...e,token:Ge()}),null));n(this,"sendInstantiate",async e=>null);n(this,"sendFunctionRequest",async e=>(await this.putControlRequest({type:"invoke-function",...e}),null));n(this,"sendCreateFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"create_file_or_directory",payload:e}));n(this,"sendDeleteFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"delete_file_or_directory",payload:e}));n(this,"sendRenameFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"move_file_or_directory",payload:e}));n(this,"sendUpdateFile",async e=>await this.rpc.proxy.request.bridge({functionName:"update_file",payload:e}));n(this,"sendFileDetails",async e=>await this.rpc.proxy.request.bridge({functionName:"file_details",payload:e}));n(this,"exportAsHTML",async e=>await this.rpc.proxy.request.bridge({functionName:"export_html",payload:e}));n(this,"exportAsMarkdown",async e=>await this.rpc.proxy.request.bridge({functionName:"export_markdown",payload:e}));n(this,"previewDatasetColumn",async e=>(await this.putControlRequest({type:"preview-dataset-column",...e}),null));n(this,"previewSQLTable",async e=>(await this.putControlRequest({type:"preview-sql-table",...e}),null));n(this,"previewSQLTableList",async e=>(await this.putControlRequest({type:"list-sql-tables",...e}),null));n(this,"previewSQLSchemaList",async e=>(await this.putControlRequest({type:"list-sql-schemas",...e}),null));n(this,"previewDataSourceConnection",async e=>(await this.putControlRequest({type:"list-data-source-connection",...e}),null));n(this,"validateSQL",async e=>(await this.putControlRequest({type:"validate-sql",...e}),null));n(this,"sendModelValue",async e=>(await this.putControlRequest({type:"model",...e}),null));n(this,"sendDocumentTransaction",()=>Promise.resolve(null));n(this,"addPackage",async e=>this.rpc.proxy.request.addPackage(e));n(this,"removePackage",async e=>this.rpc.proxy.request.removePackage(e));n(this,"getPackageList",async()=>await this.rpc.proxy.request.listPackages());n(this,"getDependencyTree",async()=>({tree:{dependencies:[],name:"",tags:[],version:null}}));n(this,"listSecretKeys",async e=>(await this.putControlRequest({type:"list-secret-keys",...e}),null));n(this,"getUsageStats",g);n(this,"openTutorial",g);n(this,"getRecentFiles",g);n(this,"getWorkspaceFiles",g);n(this,"getRunningNotebooks",g);n(this,"shutdownSession",g);n(this,"exportAsIPYNB",g);n(this,"exportAsPDF",g);n(this,"autoExportAsHTML",g);n(this,"autoExportAsMarkdown",g);n(this,"autoExportAsIPYNB",g);n(this,"updateCellOutputs",g);n(this,"writeSecret",g);n(this,"invokeAiTool",g);n(this,"clearCache",g);n(this,"getCacheInfo",g);n(this,"listStorageEntries",g);n(this,"downloadStorage",g);ir()&&(this.rpc=Re(new Worker(new URL(""+new URL("worker-BPV9SmHz.js",import.meta.url).href,""+import.meta.url),{type:"module",name:$e()})),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})=>{Q.set(ye,e)}),this.rpc.addMessageListener("initializedError",({error:e})=>{this.initialized.status==="resolved"&&(p.error(e),gr({title:"Error initializing",description:e,variant:"danger"})),this.initialized.reject(Error(e))}),this.rpc.addMessageListener("kernelMessage",({message:e})=>{var r;(r=this.messageConsumer)==null||r.call(this,new MessageEvent("message",{data:e}))}))}static get INSTANCE(){let e="_marimo_private_PyodideBridge";return window[e]||(window[e]=new ct),window[e]}getSaveWorker(){return Oe()==="read"?(p.debug("Skipping SaveWorker in read-mode"),{readFile:g,readNotebook:g,saveNotebook:g}):Re(new Worker(new URL(""+new URL("save-worker-CtJsIYIM.js",import.meta.url).href,""+import.meta.url),{type:"module",name:$e()})).proxy.request}async startSession(){let e=await J.readFile(),r=await X.readFile(),s=Q.get(Kt)??Y.getFilename(),a=Q.get(ar),i={},u=new URLSearchParams(window.location.search);for(let d of u.keys()){let v=u.getAll(d);i[d]=v.length===1?v[0]:v}await this.rpc.proxy.request.startSession({queryParameters:i,code:e||r||"",filename:s,userConfig:{...a,runtime:{...a.runtime,auto_instantiate:Oe()==="read"?!0:a.runtime.auto_instantiate}}})}setInterruptBuffer(){crossOriginIsolated?(this.interruptBuffer=new Uint8Array(new SharedArrayBuffer(1)),this.rpc.proxy.request.setInterruptBuffer(this.interruptBuffer)):p.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})}},rt=function(){return we.withProducerCallback(t=>{ge.INSTANCE.attachMessageConsumer(t)})},tt=function(t=ce()){let e=window.fetch;return window.fetch=async(r,s)=>{let a=r instanceof Request?r.url:r.toString();if(a.startsWith("data:"))return e(r,s);try{let i=Z(a,t);if(i){let u=await(await e(i)).arrayBuffer();return new Response(u,{headers:{"Content-Type":Mt(a)}})}return e(r,s)}catch(i){return p.error("Error parsing URL",i),e(r,s)}},()=>{window.fetch=e}};function Mt(t){return t.endsWith(".csv")?"text/csv":t.endsWith(".json")?"application/json":t.endsWith(".txt")?"text/plain":"application/octet-stream"}it=function(t,e=ce()){let r=t.http.bind(t),s=t.load.bind(t);return t.http=async a=>{let i=Z(a,e);if(i)return await window.fetch(i).then(u=>u.text());try{return await r(a)}catch(u){if(a.startsWith("data:"))return await window.fetch(a).then(d=>d.text());throw u}},t.load=async a=>{let i=Z(a,e);if(i)return await window.fetch(i).then(u=>u.text());try{return await s(a)}catch(u){if(a.startsWith("data:"))return await window.fetch(a).then(d=>d.text());throw u}},()=>{t.http=r,t.load=s}};function ke(t){return t.startsWith(".")?t.slice(1):t}function Pt(t,e=ce()){let r=Z(t,e);if(!r)return t;let s=vr(r);return URL.createObjectURL(s)}function Z(t,e){let r=document.baseURI;r.startsWith("blob:")&&(r=r.replace("blob:",""));let s=new URL(t,r).pathname,a=Me(t),i=Me(s);return e[t]||e[ke(t)]||e[s]||e[ke(s)]||a&&e[a]||i&&e[i]}function Me(t){let e=t.indexOf("/@file/");return e===-1?null:t.slice(e)}function ie(t,e=[]){let r=[];if(t instanceof DataView)r.push(e);else if(Array.isArray(t))for(let[s,a]of t.entries())r.push(...ie(a,[...e,s]));else if(typeof t=="object"&&t)for(let[s,a]of Object.entries(t))r.push(...ie(a,[...e,s]));return r}function Ft(t){let e=ie(t);if(e.length===0)return{state:t,buffers:[],bufferPaths:[]};let r=structuredClone(t),s=[],a=[];for(let i of e){let u=tr(t,i);if(u instanceof DataView){let d=Ve(u);s.push(d),a.push(i),G(r,i,d)}}return{state:r,buffers:s,bufferPaths:a}}function Pe(t){let{state:e,bufferPaths:r,buffers:s}=t;if(!r||r.length===0)return e;s&&nr(s.length===r.length,"Buffers and buffer paths not the same length");let a=e;for(let[i,u]of r.entries()){let d=s==null?void 0:s[i];if(d==null){p.warn("[anywidget] Could not find buffer at path",u);continue}typeof d=="string"?G(a,u,Qe(d)):G(a,u,d)}return a}he=function(t){return typeof t!="string"||t.length===0?!1:/^(\.?\/)?@file\/[^?#]+$/.test(t)};const Fe={invoke:async()=>{let t="anywidget.invoke not supported in marimo. Please file an issue at https://github.com/marimo-team/marimo/issues";throw p.warn(t),Error(t)}};function It(t){if(typeof AbortSignal.any=="function")return AbortSignal.any(t);let e=new AbortController;for(let r of t){if(r.aborted)return e.abort(r.reason),e.signal;r.addEventListener("abort",()=>e.abort(r.reason),{once:!0})}return e.signal}var Lt=(Le=class{constructor(){_(this,ee);_(this,U,new Map)}getModule(t,e){let r=o(this,U).get(e);if(r)return r;let s=A(this,ee,pt).call(this,t).catch(a=>{throw o(this,U).delete(e),a});return o(this,U).set(e,s),s}invalidate(t){p.debug(`[WidgetDefRegistry] Invalidating module cache for hash=${t}`),o(this,U).delete(t)}},U=new WeakMap,ee=new WeakSet,pt=async function(t){if(!he(t))throw Error(`Refusing to load anywidget module from untrusted URL: ${String(t)}`);let e=or(t).toString();return ze()&&(e=Pt(e)),mr(()=>import(e).then(async r=>(await r.__tla,r)),[],import.meta.url)},Le),Nt=(Ne=class{constructor(){_(this,M);_(this,T);_(this,E)}async bind(t,e){var i,u;if(o(this,E)&&o(this,T)===t)return o(this,E);o(this,E)&&o(this,T)!==t&&(p.debug("[WidgetBinding] Hot-reload detected, aborting previous binding"),(i=o(this,M))==null||i.abort(),C(this,M,void 0),C(this,E,void 0)),C(this,T,t),C(this,M,new AbortController);let r=o(this,M).signal,s=typeof t=="function"?await t():t,a=await((u=s.initialize)==null?void 0:u.call(s,{model:e,experimental:Fe}));return a&&r.addEventListener("abort",a),C(this,E,async(d,v)=>{var x;let q=await((x=s.render)==null?void 0:x.call(s,{model:e,el:d,experimental:Fe}));q&&It([v,r]).addEventListener("abort",()=>{let S=v.aborted?"view unmount":"binding destroyed";p.debug(`[WidgetBinding] Render cleanup triggered (reason: ${S})`),q()})}),o(this,E)}destroy(){var t;p.debug("[WidgetBinding] Destroying binding, aborting initialize lifecycle"),(t=o(this,M))==null||t.abort(),C(this,M,void 0),C(this,T,void 0),C(this,E,void 0)}},M=new WeakMap,T=new WeakMap,E=new WeakMap,Ne),At=(Ae=class{constructor(){_(this,F,new Map)}getOrCreate(t){let e=o(this,F).get(t);return e||(e=new Nt,o(this,F).set(t,e)),e}destroy(t){let e=o(this,F).get(t);e&&(p.debug(`[BindingManager] Destroying binding for model=${t}`),e.destroy(),o(this,F).delete(t))}has(t){return o(this,F).has(t)}},F=new WeakMap,Ae);ut=new Lt,me=new At;var Ut=(Ue=class{constructor(t=1e4){_(this,D);_(this,P,new Map);_(this,V);C(this,V,t)}get(t){let e=A(this,D,ae).call(this,t);return e.deferred.status==="pending"&&setTimeout(()=>{e.deferred.status==="pending"&&(e.deferred.reject(Error(`Model not found for key: ${t}`)),o(this,P).delete(t))},o(this,V)),e.deferred.promise}create(t,e){let r=A(this,D,ae).call(this,t);r.deferred.resolve(e(r.controller.signal))}set(t,e){A(this,D,ae).call(this,t).deferred.resolve(e)}getSync(t){let e=o(this,P).get(t);if(e&&e.deferred.status==="resolved")return e.deferred.value}delete(t){var e;p.debug(`[ModelManager] Deleting model=${t}, aborting lifecycle signal`),(e=o(this,P).get(t))==null||e.controller.abort(),o(this,P).delete(t)}},P=new WeakMap,V=new WeakMap,D=new WeakSet,ae=function(t){let e=o(this,P).get(t);return e||(e={deferred:new Ye,controller:new AbortController},o(this,P).set(t,e)),e},Ue),Ie=Symbol("marimo");function oe(t){return t[Ie]}ne=new Ut;var Tt=(Te=Ie,j=class{constructor(e,r,s){_(this,N);_(this,te,"change");_(this,I);_(this,L);_(this,H);_(this,R,{});n(this,Te,{updateAndEmitDiffs:e=>A(this,N,ht).call(this,e),emitCustomMessage:(e,r)=>A(this,N,mt).call(this,e,r)});n(this,"widget_manager",{async get_model(e){let r=await j._modelManager.get(e);if(!r)throw Error(`Model not found with id: ${e}. This is likely because the model was not registered.`);return r}});_(this,re,rr(()=>{let e=o(this,R)[o(this,te)];if(e)for(let r of e)try{r()}catch(s){p.error("Error emitting event",s)}},0));C(this,L,e),C(this,H,r),C(this,I,new Map),s&&s.addEventListener("abort",()=>{p.debug("[Model] Signal aborted, clearing all listeners"),C(this,R,{})})}off(e,r){var s;if(!e){C(this,R,{});return}if(!r){o(this,R)[e]=new Set;return}(s=o(this,R)[e])==null||s.delete(r)}send(e,r,s){let a=(s??[]).map(i=>i instanceof ArrayBuffer?new DataView(i):new DataView(i.buffer,i.byteOffset,i.byteLength));return o(this,H).sendCustomMessage(e,a).then(()=>r==null?void 0:r())}get(e){return o(this,L)[e]}set(e,r){C(this,L,{...o(this,L),[e]:r}),o(this,I).set(e,r),A(this,N,ft).call(this,`change:${e}`,r),o(this,re).call(this)}save_changes(){if(o(this,I).size===0)return;let e=Object.fromEntries(o(this,I).entries());o(this,I).clear(),o(this,H).sendUpdate(e)}on(e,r){o(this,R)[e]||(o(this,R)[e]=new Set),o(this,R)[e].add(r)}},te=new WeakMap,I=new WeakMap,L=new WeakMap,H=new WeakMap,R=new WeakMap,N=new WeakSet,ft=function(e,r){if(!o(this,R)[e])return;let s=o(this,R)[e];for(let a of s)try{a(r)}catch(i){p.error("Error emitting event",i)}},ht=function(e){e!=null&&Object.keys(e).forEach(r=>{let s=r;o(this,L)[s]!==e[s]&&this.set(s,e[s])})},mt=function(e,r=[]){let s=o(this,R)["msg:custom"];if(s)for(let a of s)try{a(e.content,r)}catch(i){p.error("Error emitting event",i)}},re=new WeakMap,n(j,"_modelManager",ne),j);et=async function(t,e){let r=e.model_id,s=e.message,a=("buffers"in s?s.buffers:[]).map(Qe);switch(s.method){case"open":{let{state:i,buffer_paths:u=[]}=s,d=Pe({state:i,bufferPaths:u,buffers:a}),v=t.getSync(r);if(v){oe(v).updateAndEmitDiffs(d);return}t.create(r,q=>new Tt(d,ze()?{sendUpdate:async()=>{},sendCustomMessage:async()=>{}}:{async sendUpdate(x){if(q.aborted){p.debug(`[Model] sendUpdate suppressed for model=${r} (signal aborted)`);return}let{state:S,buffers:O,bufferPaths:se}=Ft(x);await pe().sendModelValue({modelId:r,message:{method:"update",state:S,bufferPaths:se},buffers:O})},async sendCustomMessage(x,S){if(q.aborted){p.debug(`[Model] sendCustomMessage suppressed for model=${r} (signal aborted)`);return}await pe().sendModelValue({modelId:r,message:{method:"custom",content:x},buffers:S.map(Ve)})}},q));return}case"custom":oe(await t.get(r)).emitCustomMessage({method:"custom",content:s.content},a);return;case"close":me.destroy(r),t.delete(r);return;case"update":{let{state:i,buffer_paths:u=[]}=s,d=Pe({state:i,bufferPaths:u,buffers:a});oe(await t.get(r)).updateAndEmitDiffs(d);return}default:cr(s)}},Vt(ne,"MODEL_MANAGER");function jt(t){return typeof t!="object"||!t?!1:"type"in t&&t.type==="marimo-ui-value-update"}fe=class gt{static get INSTANCE(){let e="_marimo_private_UIElementRegistry";return window[e]||(window[e]=new gt),window[e]}constructor(){this.entries=new Map}has(e){return this.entries.has(e)}set(e,r){this.entries.has(e)&&p.debug("UIElementRegistry overwriting entry for objectId.",e),this.entries.set(e,{objectId:e,value:r,elements:new Set})}registerInstance(e,r){let s=this.entries.get(e);s===void 0?this.entries.set(e,{objectId:e,value:Zt(r,this),elements:new Set([r])}):s.elements.add(r)}removeInstance(e,r){let s=this.entries.get(e);s!=null&&s.elements.has(r)&&s.elements.delete(r)}removeElementsByCell(e){[...this.entries.keys()].filter(r=>r.startsWith(`${e}-`)).forEach(r=>{this.entries.delete(r)})}lookupValue(e){let r=this.entries.get(e);return r===void 0?void 0:r.value}broadcastMessage(e,r,s){let a=this.entries.get(e);if(a===void 0){p.warn("UIElementRegistry missing entry",e);return}if(jt(r)){a.value=r.value,a.elements.forEach(i=>{i.dispatchEvent(Je.create({bubbles:!1,composed:!0,detail:{value:r.value,element:i}}))});return}a.elements.forEach(i=>{i.dispatchEvent(Cr.create({bubbles:!1,composed:!0,detail:{objectId:e,message:r,buffers:s}}))})}broadcastValueUpdate(e,r,s){let a=this.entries.get(r);a===void 0?p.warn("UIElementRegistry missing entry",r):(a.value=s,a.elements.forEach(i=>{i!==e&&i.dispatchEvent(Je.create({bubbles:!1,composed:!0,detail:{value:s,element:i}}))}),document.dispatchEvent(_r.create({bubbles:!0,composed:!0,detail:{objectId:r}})))}},at=fe.INSTANCE,st=new hr("function-call-result",async(t,e)=>{await pe().sendFunctionRequest({functionCallId:t,...e})}),lt="68px";var Bt="288px";nt=t=>t?/^\d+$/.test(t)?`${t}px`:t:Bt,ot=Jt({isOpen:!0},(t,e)=>{if(!e)return t;switch(e.type){case"toggle":return{...t,isOpen:e.isOpen??t.isOpen};case"setWidth":return{...t,width:e.width};default:return t}})});export{G as C,Ke as S,Xe as _,Rr as __tla,fe as a,Ze as b,et as c,he as d,tt as f,J as g,rt as h,st as i,me as l,ge as m,nt as n,at as o,it as p,ot as r,ne as s,lt as t,ut as u,ye as v,dt as x,we as y};
|
package/dist/index.html
CHANGED
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
<marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
|
|
67
67
|
<!-- /TODO -->
|
|
68
68
|
<title>{{ title }}</title>
|
|
69
|
-
<script type="module" crossorigin src="./assets/index-
|
|
69
|
+
<script type="module" crossorigin src="./assets/index-y6osgSWB.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-D2MJg03u.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/react-Bj1aDYRI.js">
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
<link rel="modulepreload" crossorigin href="./assets/memoize-BwAF2XN5.js">
|
|
222
222
|
<link rel="modulepreload" crossorigin href="./assets/get-D7jeR2wg.js">
|
|
223
223
|
<link rel="modulepreload" crossorigin href="./assets/_baseSet-49dbm-yb.js">
|
|
224
|
-
<link rel="modulepreload" crossorigin href="./assets/state-
|
|
224
|
+
<link rel="modulepreload" crossorigin href="./assets/state-D1n-olwf.js">
|
|
225
225
|
<link rel="modulepreload" crossorigin href="./assets/label-C89F4v17.js">
|
|
226
226
|
<link rel="modulepreload" crossorigin href="./assets/textarea-CS2o3y4W.js">
|
|
227
227
|
<link rel="modulepreload" crossorigin href="./assets/refresh-ccw-CfYqAbmq.js">
|
package/package.json
CHANGED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { isTrustedVirtualFileUrl } from "../trusted-url";
|
|
4
|
+
|
|
5
|
+
describe("isTrustedVirtualFileUrl", () => {
|
|
6
|
+
it.each([
|
|
7
|
+
"./@file/123-mpl.js",
|
|
8
|
+
"./@file/456-mpl.css",
|
|
9
|
+
"@file/789-bokeh.js",
|
|
10
|
+
"/@file/0-empty.txt",
|
|
11
|
+
"./@file/1234-name.with.dots.js",
|
|
12
|
+
])("accepts virtual file path %s", (url) => {
|
|
13
|
+
expect(isTrustedVirtualFileUrl(url)).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it.each([
|
|
17
|
+
// Attack vector from the vulnerability report
|
|
18
|
+
"http://127.0.0.1:8820/poc.js",
|
|
19
|
+
"https://evil.example.com/x.js",
|
|
20
|
+
// Protocol-relative → takes attacker's origin
|
|
21
|
+
"//evil.example.com/x.js",
|
|
22
|
+
// Dangerous schemes
|
|
23
|
+
"javascript:alert(1)",
|
|
24
|
+
"data:text/javascript;base64,YWxlcnQoMSk=",
|
|
25
|
+
"file:///etc/passwd",
|
|
26
|
+
"blob:http://127.0.0.1/abc",
|
|
27
|
+
// Almost-but-not virtual file paths
|
|
28
|
+
"./evil.js",
|
|
29
|
+
"../@file/x.js",
|
|
30
|
+
"./malicious/@file/x.js",
|
|
31
|
+
"@file",
|
|
32
|
+
"@files/x.js",
|
|
33
|
+
// Query/fragment smuggling
|
|
34
|
+
"./@file/x.js?redirect=http://evil.com",
|
|
35
|
+
"./@file/x.js#http://evil.com",
|
|
36
|
+
// Empty and non-string
|
|
37
|
+
"",
|
|
38
|
+
])("rejects %s", (url) => {
|
|
39
|
+
expect(isTrustedVirtualFileUrl(url)).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("rejects non-string input", () => {
|
|
43
|
+
expect(isTrustedVirtualFileUrl(null)).toBe(false);
|
|
44
|
+
expect(isTrustedVirtualFileUrl(undefined)).toBe(false);
|
|
45
|
+
expect(isTrustedVirtualFileUrl(42)).toBe(false);
|
|
46
|
+
expect(isTrustedVirtualFileUrl({})).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Whether a URL can be trusted to point at a marimo-served virtual file.
|
|
5
|
+
*
|
|
6
|
+
* Plugins that load remote scripts or stylesheets (e.g. MplInteractive, Panel)
|
|
7
|
+
* must call this before turning a plugin-supplied URL into a `<script src>` or
|
|
8
|
+
* `<link href>`. The backend always serializes these URLs as virtual file
|
|
9
|
+
* paths of the form `./@file/<byte_length>-<filename>` (see
|
|
10
|
+
* `VirtualFile.create_and_register`). Accepting anything else would let a
|
|
11
|
+
* maliciously crafted `<marimo-*>` element embedded in markdown load
|
|
12
|
+
* attacker-controlled JavaScript at same origin, since the HTML sanitizer
|
|
13
|
+
* lets arbitrary marimo custom elements and attributes through.
|
|
14
|
+
*/
|
|
15
|
+
export function isTrustedVirtualFileUrl(url: unknown): url is string {
|
|
16
|
+
if (typeof url !== "string" || url.length === 0) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return /^(\.?\/)?@file\/[^?#]+$/.test(url);
|
|
20
|
+
}
|
|
@@ -59,13 +59,39 @@ describe("WidgetDefRegistry", () => {
|
|
|
59
59
|
|
|
60
60
|
it("should remove from cache on import failure so retry creates new promise", async () => {
|
|
61
61
|
const promise1 = registry.getModule("http://localhost/a.js", "fail-hash");
|
|
62
|
-
// The
|
|
62
|
+
// The URL is rejected by the trusted-URL validator.
|
|
63
63
|
await expect(promise1).rejects.toThrow();
|
|
64
64
|
// After failure, cache should be cleared, so next call creates a new promise
|
|
65
65
|
const promise2 = registry.getModule("http://localhost/a.js", "fail-hash");
|
|
66
66
|
expect(promise1).not.toBe(promise2);
|
|
67
67
|
promise2.catch(() => undefined);
|
|
68
68
|
});
|
|
69
|
+
|
|
70
|
+
describe("URL validation", () => {
|
|
71
|
+
it.each([
|
|
72
|
+
// Attack vector: raw <marimo-anywidget data-js-url=...> in markdown
|
|
73
|
+
"http://127.0.0.1:8820/poc.mjs",
|
|
74
|
+
"https://evil.example.com/widget.mjs",
|
|
75
|
+
"//evil.example.com/widget.mjs",
|
|
76
|
+
"javascript:alert(1)",
|
|
77
|
+
"data:text/javascript;base64,YWxlcnQoMSk=",
|
|
78
|
+
"./@file/x.js?redirect=http://evil.com",
|
|
79
|
+
"",
|
|
80
|
+
])("rejects untrusted URL: %s", async (url) => {
|
|
81
|
+
await expect(registry.getModule(url, `hash-${url}`)).rejects.toThrow(
|
|
82
|
+
/untrusted/i,
|
|
83
|
+
);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("accepts virtual file paths (fails later at import time)", async () => {
|
|
87
|
+
// The URL passes validation but the import still fails because this
|
|
88
|
+
// is a Node test environment with no server. We only assert that
|
|
89
|
+
// the rejection reason is NOT the "untrusted URL" refusal.
|
|
90
|
+
await expect(
|
|
91
|
+
registry.getModule("./@file/123-widget.js", "trusted-hash"),
|
|
92
|
+
).rejects.not.toThrow(/untrusted/i);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
69
95
|
});
|
|
70
96
|
|
|
71
97
|
describe("WidgetBinding", () => {
|
|
@@ -5,6 +5,7 @@ import type { AnyWidget, Experimental } from "@anywidget/types";
|
|
|
5
5
|
import { asRemoteURL } from "@/core/runtime/config";
|
|
6
6
|
import { resolveVirtualFileURL } from "@/core/static/files";
|
|
7
7
|
import { isStaticNotebook } from "@/core/static/static-state";
|
|
8
|
+
import { isTrustedVirtualFileUrl } from "@/plugins/core/trusted-url";
|
|
8
9
|
import { Logger } from "@/utils/Logger";
|
|
9
10
|
import type { Model } from "./model";
|
|
10
11
|
import type { ModelState, WidgetModelId } from "./types";
|
|
@@ -80,6 +81,18 @@ class WidgetDefRegistry {
|
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
async #doImport(jsUrl: string): Promise<any> {
|
|
84
|
+
// Only trust marimo virtual file paths. Accepting arbitrary URLs
|
|
85
|
+
// would let a raw `<marimo-anywidget data-js-url=...>` element
|
|
86
|
+
// embedded in a markdown cell dynamically import attacker-controlled
|
|
87
|
+
// JavaScript at same origin (the HTML sanitizer allows any marimo-*
|
|
88
|
+
// custom element with any attribute through to the plugin layer).
|
|
89
|
+
if (!isTrustedVirtualFileUrl(jsUrl)) {
|
|
90
|
+
throw new Error(
|
|
91
|
+
`Refusing to load anywidget module from untrusted URL: ${String(
|
|
92
|
+
jsUrl,
|
|
93
|
+
)}`,
|
|
94
|
+
);
|
|
95
|
+
}
|
|
83
96
|
let url = asRemoteURL(jsUrl).toString();
|
|
84
97
|
if (isStaticNotebook()) {
|
|
85
98
|
url = resolveVirtualFileURL(url);
|
|
@@ -5,12 +5,14 @@ import { useCallback, useEffect, useRef } from "react";
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { useEventListener } from "@/hooks/useEventListener";
|
|
7
7
|
import { createPlugin } from "@/plugins/core/builder";
|
|
8
|
+
import { isTrustedVirtualFileUrl } from "@/plugins/core/trusted-url";
|
|
8
9
|
import { MODEL_MANAGER, type Model } from "@/plugins/impl/anywidget/model";
|
|
9
10
|
import type { ModelState, WidgetModelId } from "@/plugins/impl/anywidget/types";
|
|
10
11
|
import type { IPluginProps } from "@/plugins/types";
|
|
11
12
|
import { downloadBlob } from "@/utils/download";
|
|
12
13
|
import { Logger } from "@/utils/Logger";
|
|
13
14
|
import { MplCommWebSocket } from "./mpl-websocket-shim";
|
|
15
|
+
import { Functions } from "@/utils/functions";
|
|
14
16
|
|
|
15
17
|
const MPL_SCOPE_CLASS = "mpl-interactive-figure";
|
|
16
18
|
|
|
@@ -73,6 +75,11 @@ async function ensureMplJs(jsUrl: string): Promise<void> {
|
|
|
73
75
|
if (window.mpl) {
|
|
74
76
|
return;
|
|
75
77
|
}
|
|
78
|
+
if (!isTrustedVirtualFileUrl(jsUrl)) {
|
|
79
|
+
throw new Error(
|
|
80
|
+
`Refusing to load mpl.js from untrusted URL: ${String(jsUrl)}`,
|
|
81
|
+
);
|
|
82
|
+
}
|
|
76
83
|
if (mplJsLoading) {
|
|
77
84
|
return mplJsLoading;
|
|
78
85
|
}
|
|
@@ -148,6 +155,12 @@ function patchToolbarImages(
|
|
|
148
155
|
}
|
|
149
156
|
|
|
150
157
|
function injectCss(container: HTMLElement, cssUrl: string): () => void {
|
|
158
|
+
if (!isTrustedVirtualFileUrl(cssUrl)) {
|
|
159
|
+
Logger.error(
|
|
160
|
+
`Refusing to load mpl CSS from untrusted URL: ${String(cssUrl)}`,
|
|
161
|
+
);
|
|
162
|
+
return Functions.NOOP;
|
|
163
|
+
}
|
|
151
164
|
const link = document.createElement("link");
|
|
152
165
|
link.rel = "stylesheet";
|
|
153
166
|
link.href = cssUrl;
|
|
@@ -307,3 +320,11 @@ const MplInteractiveSlot = (props: IPluginProps<ModelIdRef, Data>) => {
|
|
|
307
320
|
// Must match _MPL_SCOPE in from_mpl_interactive.py
|
|
308
321
|
return <div ref={containerRef} className={MPL_SCOPE_CLASS} />;
|
|
309
322
|
};
|
|
323
|
+
|
|
324
|
+
export const visibleForTesting = {
|
|
325
|
+
ensureMplJs,
|
|
326
|
+
injectCss,
|
|
327
|
+
resetMplJsLoading: () => {
|
|
328
|
+
mplJsLoading = null;
|
|
329
|
+
},
|
|
330
|
+
};
|