@marimo-team/frontend 0.23.6-dev31 → 0.23.6-dev32

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.
@@ -0,0 +1 @@
1
+ var UA=Object.defineProperty;var VA=(a,A,e)=>A in a?UA(a,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[A]=e;var kA=(a,A,e)=>VA(a,typeof A!="symbol"?A+"":A,e);import{s as mA}from"./chunk-LvLJmgfZ.js";import{d as S,i as YA,l as fA,u as y}from"./useEvent-D91BmmQi.js";import{t as qA}from"./react-Bj1aDYRI.js";import{Cn as WA,Dr as XA,E as pA,F as JA,Gt as zA,In as $A,Kt as Ae,L as ee,Li as ae,Mr as xA,T as te,Ut as Ge,Wt as oe,b as se,g as re,h as iA,it as ne,ji as ke,k as ie,l as Re,lt as le,ot as wA,rt as Ze,vn as ce,z as ge}from"./cells-B624w_H9.js";import{t as h}from"./compiler-runtime-B3qBwwSJ.js";import{C as de,_ as he,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,x as ve,y as Ee}from"./state-C9cwwKqw.js";import{_ as p,d as DA,t as ye}from"./useEventListener-BR0C1MaI.js";import{C as Ce,b as be}from"./utils-BrXijSdZ.js";import{r as RA}from"./constants-DMpttj8Q.js";import{C as P,T as lA,d as Me,l as vA,o as Ne,v as _e,w as x}from"./config-B2jNjodW.js";import{n as je,o as Fe}from"./switch-DZyZgphf.js";import{n as Se}from"./ErrorBoundary-DzYV_VeY.js";import{n as Qe,t as Y}from"./cn-DCUzRj2J.js";import{t as Pe}from"./jsx-runtime-BqBOg78p.js";import{a as Le,n as Oe}from"./fullscreen-BDxedMYP.js";import{_ as Te,f as Ie,g as Ke,h as EA,m as yA,p as CA,v as bA,y as He}from"./alert-dialog-BGBdrcqJ.js";import{dt as Ue,ft as Ve,st as MA}from"./JsonOutput-J02aK2i8.js";import{h as qe}from"./download-B6QfSAZf.js";import{t as ZA}from"./tooltip-Gcwqb_SK.js";import{t as cA}from"./button-D9nb17Rw.js";import{t as We}from"./createReducer-1ePoj7v6.js";import{i as Xe}from"./strings-md4mFbOQ.js";import{t as Je}from"./requests-DIwGYs0l.js";import{t as J}from"./createLucideIcon-D5guW7EU.js";import{N as ze,P as NA,a as $e,i as _A,n as Aa,o as ea,s as aa}from"./layout-BUGeEeY7.js";import{o as ta,r as Ga,s as oa}from"./state-B34hXjp9.js";import{c as sa}from"./markdown-renderer-ju9oyUcG.js";import{n as ra}from"./spinner-Bhir8k53.js";import{i as na,n as ka}from"./readonly-python-code-DEZDJr2S.js";import{t as ia}from"./uuid-DercMavo.js";import{t as z}from"./use-toast-T0_cQDma.js";import{i as Ra}from"./session-VtovaFBS.js";import{t as la}from"./RenderHTML-CZ0QfVg-.js";import{r as jA}from"./share-DIVpiHPe.js";import{r as gA}from"./errors-TZBmrJmc.js";import{s as Za}from"./react-icons.esm-D9xfKaPZ.js";import{r as FA}from"./events-BRAWQiYK.js";import{i as ca}from"./cell-link-3OOv6O0A.js";import{t as ga}from"./error-banner-C6aBa98y.js";import{n as da}from"./useAsyncData-BFC6lWG9.js";import{t as ha}from"./requests-BqcqF00P.js";import{t as Ba}from"./request-registry-BwzANGxx.js";import{t as ua}from"./ws-CtTwmdal.js";import{n as ma}from"./types-z6Sk3JCV.js";import{n as Ya}from"./runs-5odJFrfi.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"}]]),SA=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=h(),n=mA(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 R;A[0]===Symbol.for("react.memo_cache_sentinel")?(R=(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]=R):R=A[0];let r;A[1]===e?r=A[2]:(r=(0,n.jsx)("span",{children:e}),A[1]=e,A[2]=r);let k;A[3]===o?k=A[4]:(k=o&&(0,n.jsxs)(cA,{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]=k);let i;return A[5]!==r||A[6]!==k?(i=(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:[R,(0,n.jsxs)("div",{className:"flex justify-between items-end text-base gap-20",children:[r,k]})]})}),A[5]=r,A[6]=k,A[7]=i):i=A[7],i}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()}`,{}),jA()}catch(a){z({title:"Failed to take over session",description:gA(a),variant:"danger"})}}var Ea=h(),B=mA(qA(),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===x.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=h();const ba=a=>{let A=(0,Ca.c)(10),{title:e}=a,[t,o]=(0,B.useState)(e),[G,s]=(0,B.useState)(!0),R,r;A[0]!==t||A[1]!==e?(R=()=>{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]=R,A[3]=r):(R=A[2],r=A[3]),(0,B.useEffect)(R,r);let k;A[4]===Symbol.for("react.memo_cache_sentinel")?(k=(0,n.jsx)(ra,{className:"size-20 animate-spin text-primary","data-testid":"large-spinner",strokeWidth:1}),A[4]=k):k=A[4];let i=G?"opacity-100":"opacity-0",l;A[5]===i?l=A[6]:(l=Y("mt-2 text-muted-foreground font-semibold text-lg transition-opacity duration-300",i),A[5]=i,A[6]=l);let c;return A[7]!==t||A[8]!==l?(c=(0,n.jsxs)("div",{className:"flex flex-col h-full flex-1 items-center justify-center p-4",children:[k,(0,n.jsx)("div",{className:l,children:t})]}),A[7]=t,A[8]=l,A[9]=c):c=A[9],c};var dA=h();const Ma=a=>{let A=(0,dA.c)(2),{children:e}=a;if(!lA())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,dA.c)(9),{children:e}=a,t;A[0]===Symbol.for("react.memo_cache_sentinel")?(t=[],A[0]=t):t=A[0];let{error:o}=da(Sa,t),G=y(re),s=y(he),R;A[1]!==G||A[2]!==s?(R=ja({hasCells:G,hasOutput:s,mode:ne(),codeHidden:_a()}),A[1]=G,A[2]=s,A[3]=R):R=A[3];let r=R,k=(0,B.useRef)(!1),i,l;if(A[4]!==o||A[5]!==r?(i=()=>{o&&!r&&!k.current&&(k.current=!0,p.error("Pyodide failed to initialize",o),z({title:"Failed to start the notebook runtime",description:gA(o),variant:"danger"}))},l=[o,r],A[4]=o,A[5]=r,A[6]=i,A[7]=l):(i=A[6],l=A[7]),(0,B.useEffect)(i,l),o&&r)throw o;if(r){let c;return A[8]===Symbol.for("react.memo_cache_sentinel")?(c=(0,n.jsx)(Fa,{}),A[8]=c):c=A[8],c}return e};function _a(){return Ra(RA.showCode,"false")||!YA.get(Fe)}function ja(a){let{hasCells:A,hasOutput:e,mode:t,codeHidden:o}=a;return A?!e&&t==="read"&&o:!0}const Fa=a=>{let A=(0,dA.c)(2),e=y(Ee),t;return A[0]===e?t=A[1]:(t=(0,n.jsx)(ba,{title:e}),A[0]=e,A[1]=t),t};async function Sa(){return await fe.INSTANCE.initialized.promise,!0}var Qa={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 Qa[a]}function Pa(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 La=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,B.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,B.useEffect)(()=>{o&&!A&&Pa(e.length)},[e,o,A]),ye(window,"focus",async G=>{A||(t.href=await L("idle"))}),null};function Oa(){let{cellRuntime:a}=YA.get(se),A=DA.entries(a).find(([e,t])=>t.status==="running");A&&ca(A[0],"focus")}var O=h();const Ta=a=>{let A=(0,O.c)(22),{connection:e,isRunning:t}=a,{mode:o}=y(le),G=e.state===x.CLOSED,s=e.state===x.OPEN,R;A[0]!==e.canTakeover||A[1]!==G?(R=G&&!e.canTakeover&&(0,n.jsx)(Ua,{}),A[0]=e.canTakeover,A[1]=G,A[2]=R):R=A[2];let r=o==="read"?"fixed":"absolute",k;A[3]===r?k=A[4]:(k=Y("z-50 top-4 left-4",r),A[3]=r,A[4]=k);let i;A[5]!==s||A[6]!==t?(i=s&&t&&(0,n.jsx)(Ha,{}),A[5]=s,A[6]=t,A[7]=i):i=A[7];let l;A[8]!==e.canTakeover||A[9]!==G?(l=G&&!e.canTakeover&&(0,n.jsx)(Ia,{}),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)(Ka,{}),A[11]=e.canTakeover,A[12]=G,A[13]=c):c=A[13];let g;A[14]!==k||A[15]!==i||A[16]!==l||A[17]!==c?(g=(0,n.jsxs)("div",{className:k,children:[i,l,c]}),A[14]=k,A[15]=i,A[16]=l,A[17]=c,A[18]=g):g=A[18];let u;return A[19]!==R||A[20]!==g?(u=(0,n.jsxs)(n.Fragment,{children:[R,g]}),A[19]=R,A[20]=g,A[21]=u):u=A[21],u};var hA="print:hidden pointer-events-auto hover:cursor-pointer",Ia=()=>{let a=(0,O.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsx)(ZA,{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},Ka=()=>{let a=(0,O.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsx)(ZA,{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},Ha=()=>{let a=(0,O.c)(6),A=y(te),e=A?"Scratchpad is running":"Jump to running cell",t=A?void 0:Oa,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)(ZA,{content:e,side:"right",children:G}),a[3]=G,a[4]=e,a[5]=s):s=a[5],s},Ua=()=>{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=h(),Va=Te,qa=He,Wa=Oe(Ke),QA=B.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)(EA,{className:G,...o,ref:A}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});QA.displayName=EA.displayName;var Xa=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"}}),PA=B.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 R=s===void 0?"right":s,r;e[5]===Symbol.for("react.memo_cache_sentinel")?(r=(0,n.jsx)(QA,{}),e[5]=r):r=e[5];let k;e[6]!==o||e[7]!==R?(k=Y(Xa({side:R}),o),e[6]=o,e[7]=R,e[8]=k):k=e[8];let i;e[9]===Symbol.for("react.memo_cache_sentinel")?(i=(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]=i):i=e[9];let l;return e[10]!==t||e[11]!==G||e[12]!==A||e[13]!==k?(l=(0,n.jsx)(Wa,{children:(0,n.jsxs)(Le,{children:[r,(0,n.jsxs)(CA,{ref:A,className:k,...G,children:[t,i]})]})}),e[10]=t,e[11]=G,e[12]=A,e[13]=k,e[14]=l):l=e[14],l});PA.displayName=CA.displayName;var Ja=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};Ja.displayName="SheetHeader";var za=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};za.displayName="SheetFooter";var $a=B.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)(bA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});$a.displayName=bA.displayName;var At=B.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)(yA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});At.displayName=yA.displayName;var et=h();const BA=(0,B.memo)(()=>{let a=(0,et.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,n.jsx)(Ue,{name:MA.SIDEBAR}),a[0]=A):A=a[0],A});BA.displayName="SidebarSlot";var at=h();const tt=a=>{let A=(0,at.c)(6),{openWidth:e}=a,t;A[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,n.jsx)(qa,{className:"lg:hidden",asChild:!0,children:(0,n.jsx)(cA,{variant:"ghost",className:"bg-background",children:(0,n.jsx)(SA,{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)(BA,{}),A[3]=G):G=A[3];let s;return A[4]===o?s=A[5]:(s=(0,n.jsxs)(Va,{children:[t,(0,n.jsx)(PA,{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 Gt=h();const ot=a=>{let A=(0,Gt.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 R;return A[4]!==s||A[5]!==t?(R=(0,n.jsx)("div",{className:"invisible lg:visible absolute top-[12px] right-[16px] z-20",children:(0,n.jsx)(cA,{onClick:t,className:"w-10 h-8",variant:"ghost",size:"icon",children:s})}),A[4]=s,A[5]=t,A[6]=R):R=A[6],R};var st=h();const rt=a=>{let A=(0,st.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 R;A[2]===Symbol.for("react.memo_cache_sentinel")?(R=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]=R):R=A[2];let r;A[3]!==e||A[4]!==t?(r=(0,n.jsx)(ot,{isOpen:e,toggle:t}),A[3]=e,A[4]=t,A[5]=r):r=A[5];let k;A[6]===Symbol.for("react.memo_cache_sentinel")?(k=(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)(BA,{})}),A[6]=k):k=A[6];let i;return A[7]!==e||A[8]!==s||A[9]!==r?(i=(0,n.jsxs)("aside",{"data-expanded":e,style:s,className:R,children:[r,k]}),A[7]=e,A[8]=s,A[9]=r,A[10]=i):i=A[10],i};var nt=h();const kt=a=>{let A=(0,nt.c)(15),{children:e}=a,[t,o]=fA(xe),{isOpen:G,width:s}=t;if(Ve(MA.SIDEBAR).length===0)return e;let R;A[0]===s?R=A[1]:(R=pe(s),A[0]=s,A[1]=R);let r=R,k;A[2]!==o||A[3]!==G?(k=()=>o({type:"toggle",isOpen:!G}),A[2]=o,A[3]=G,A[4]=k):k=A[4];let i;A[5]!==G||A[6]!==r||A[7]!==k?(i=(0,n.jsx)(rt,{isOpen:G,width:r,toggle:k}),A[5]=G,A[6]=r,A[7]=k,A[8]=i):i=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)(tt,{openWidth:r})}),A[9]=r,A[10]=l);let c;return A[11]!==e||A[12]!==i||A[13]!==l?(c=(0,n.jsxs)("div",{className:"inset-0 absolute flex",children:[i,l,e]}),A[11]=e,A[12]=i,A[13]=l,A[14]=c):c=A[14],c};var it=h();const Rt=a=>{let A=(0,it.c)(17),{width:e,connection:t,isRunning:o,children:G}=a,s=t.state,R;A[0]===o?R=A[1]:(R=(0,n.jsx)(La,{isRunning:o}),A[0]=o,A[1]=R);let r;A[2]!==t||A[3]!==o?(r=(0,n.jsx)(Ta,{connection:t,isRunning:o}),A[2]=t,A[3]=o,A[4]=r):r=A[4];let k;A[5]!==s||A[6]!==e?(k=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]=k):k=A[7];let i;A[8]!==G||A[9]!==s||A[10]!==k||A[11]!==e?(i=(0,n.jsx)(Ma,{children:(0,n.jsx)(kt,{children:(0,n.jsx)("div",{id:"App","data-config-width":e,"data-connection-state":s,className:k,children:G})})}),A[8]=G,A[9]=s,A[10]=k,A[11]=e,A[12]=i):i=A[12];let l;return A[13]!==R||A[14]!==r||A[15]!==i?(l=(0,n.jsxs)(n.Fragment,{children:[R,r,i]}),A[13]=R,A[14]=r,A[15]=i,A[16]=l):l=A[16],l};function lt(a){return a.kind==="missing"}function LA(a){return a.kind==="installing"}var{valueAtom:Zt,useActions:ct}=We(()=>({packageAlert:null,startupLogsAlert:null,packageLogs:{}}),{addPackageAlert:(a,A)=>{var o;let e={...a.packageLogs};if(LA(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 gt=()=>y(Zt);function OA(){return ct()}var TA=h();const IA=(0,B.memo)(a=>{let A=(0,TA.c)(11),{appConfig:e,mode:t,children:o}=a,{selectedLayout:G,layoutData:s}=$e(),R=y(wA);if(t==="edit"&&!R)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(RA.viewAs)){let g=c.get(RA.viewAs);ma.includes(g)&&(r=g)}A[0]=t,A[1]=G,A[2]=r}else r=A[2];let k;A[3]===r?k=A[4]:(k=ea.find(c=>c.type===r),A[3]=r,A[4]=k);let i=k;if(!i)return o;let l;return A[5]!==e||A[6]!==r||A[7]!==s||A[8]!==t||A[9]!==i?(l=(0,n.jsx)(dt,{appConfig:e,mode:t,plugin:i,layoutData:s,finalLayout:r}),A[5]=e,A[6]=r,A[7]=s,A[8]=t,A[9]=i,A[10]=l):l=A[10],l});IA.displayName="CellsRenderer";const dt=a=>{let A=(0,TA.c)(18),{appConfig:e,mode:t,plugin:o,layoutData:G,finalLayout:s}=a,R=JA(),{setCurrentLayoutData:r}=_A(),k,i,l,c,g;if(A[0]!==e||A[1]!==s||A[2]!==G||A[3]!==t||A[4]!==R||A[5]!==o){let w=Re(R);k=o.Component,i=e,l=t,c=w,g=G[s]||o.getInitialLayout(w),A[0]=e,A[1]=s,A[2]=G,A[3]=t,A[4]=R,A[5]=o,A[6]=k,A[7]=i,A[8]=l,A[9]=c,A[10]=g}else k=A[6],i=A[7],l=A[8],c=A[9],g=A[10];let u;return A[11]!==k||A[12]!==r||A[13]!==i||A[14]!==l||A[15]!==c||A[16]!==g?(u=(0,n.jsx)(k,{appConfig:i,mode:l,cells:c,layout:g,setLayout:r}),A[11]=k,A[12]=r,A[13]=i,A[14]=l,A[15]=c,A[16]=g,A[17]=u):u=A[17],u};var ht=class KA{constructor(A){kA(this,"hasStarted",!1);kA(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=>{p.warn(o)})});this.uiElementRegistry=A}static get INSTANCE(){let A="_marimo_private_RuntimeState";return window[A]||(window[A]=new KA(Q)),window[A]}get sendComponentValues(){if(!this._sendComponentValues)throw Error("sendComponentValues is not set");return this._sendComponentValues}start(A){if(this.hasStarted){p.warn("RuntimeState already started");return}this._sendComponentValues=A,document.addEventListener(FA.TYPE,this.handleReadyEvent),this.hasStarted=!0}stop(){if(!this.hasStarted){p.warn("RuntimeState already stopped");return}document.removeEventListener(FA.TYPE,this.handleReadyEvent),this.hasStarted=!1}},Bt=h();function ut(a){if(a.static)return Be.empty();if(lA())return me();let A=a.url;return new ua(A,void 0,{maxRetries:10,debug:!1,startClosed:!0,connectionTimeout:1e4})}function mt(a){let A=(0,Bt.c)(15),{onOpen:e,onMessage:t,onClose:o,onError:G,waitToConnect:s}=a,R;A[0]!==o||A[1]!==G||A[2]!==t||A[3]!==e||A[4]!==a?(R=()=>{let l=ut(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]=R):R=A[5];let[r]=(0,B.useState)(R),k;A[6]!==o||A[7]!==G||A[8]!==t||A[9]!==e||A[10]!==r||A[11]!==s?(k=()=>(r.readyState===WebSocket.CLOSED&&s().then(()=>r.reconnect()).catch(l=>{p.error("Healthy connection never made",l),r.close()}),()=>{p.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]=k):k=A[12];let i;return A[13]===r?i=A[14]:(i=[r],A[13]=r,A[14]=i),(0,B.useEffect)(k,i),r}function Yt(a){let{codes:A,names:e,configs:t,cell_ids:o,last_executed_code:G,last_execution_time:s}=a,R=G||{},r=s||{};return A.map((k,i)=>{let l=o[i],c=R[l];return ee({id:l,code:k,edited:c?c!==k:!1,name:e[i],lastCodeRun:R[l]??null,lastExecutionTime:r[l]??null,config:t[i]})})}function ft(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 pt(){let a=[],A=[];return Q.entries.forEach((e,t)=>{a.push(t),A.push(e.value)}),{objectIds:a,values:A}}function xt(a,A){let{existingCells:e,autoInstantiate:t,setCells:o,setLayoutData:G,setAppConfig:s,setCapabilities:R,setKernelState:r,onError:k}=A,{resumed:i,ui_values:l,app_config:c,capabilities:g,auto_instantiated:u}=a,w=e&&e.length>0,C=w&&!i?e:Yt(a);o(C,ft(a,C,G));let v=Ce.safeParse(c);if(v.success?s(v.data):p.error("Failed to parse app config",v.error),R(g),u)return;if(i){for(let[m,j]of DA.entries(l||{})){let F=m;Q.set(F,j)}return}let{objectIds:M,values:N}=pt(),_=w?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}),k(Error("Failed to instantiate",{cause:m}))})}function wt(a){let A=a.cell_id;Q.removeElementsByCell(A),NA.INSTANCE.removeForCellId(A)}function Dt(a,A){A(a),NA.INSTANCE.track(a)}const $={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 vt=h();function Et(){return Object.values(iA().cellData).filter(a=>a.id!==ke)}function yt(a){let A=(0,vt.c)(41),e=(0,B.useRef)(!0),{autoInstantiate:t,sessionId:o,setCells:G}=a,{showBoundary:s}=Se(),{handleCellMessage:R}=pA(),r;A[0]===Symbol.for("react.memo_cache_sentinel")?(r={skipMiddleware:!0},A[0]=r):r=A[0];let k=pA(r),i;A[1]===k?i=A[2]:(i=d=>{Ze(d.changes,k,Ft)},A[1]=k,A[2]=i);let l=i,{addCellNotification:c}=Ya(),g=S(ka),u=be(),{setVariables:w,setMetadata:C}=$A(),{addColumnPreview:v}=xA(),{addDatasets:M,filterDatasetsFromVariables:N}=xA(),{addDataSourceConnection:_,filterDataSourcesFromVariables:m}=XA(),{setLayoutData:j}=_A(),[F,D]=fA(_e),{addBanner:AA}=de(),{addPackageAlert:T,addStartupLog:eA}=OA(),aA=S(wA),tA=S(WA),E=Ne(),GA=S(ha),oA=S(ve),{setNamespaces:sA,filterFromVariables:rA}=Ga(),I;A[3]!==AA||A[4]!==c||A[5]!==v||A[6]!==_||A[7]!==M||A[8]!==T||A[9]!==eA||A[10]!==t||A[11]!==m||A[12]!==N||A[13]!==rA||A[14]!==R||A[15]!==l||A[16]!==u||A[17]!==GA||A[18]!==tA||A[19]!==G||A[20]!==oA||A[21]!==g||A[22]!==aA||A[23]!==j||A[24]!==C||A[25]!==sA||A[26]!==w||A[27]!==s?(I=d=>{let Z=ae(d.data);switch(Z.data.op){case"reload":jA();return;case"kernel-ready":{let f=Et();xt(Z.data,{autoInstantiate:t,setCells:G,setLayoutData:j,setAppConfig:u,setCapabilities:tA,setKernelState:g,onError:s,existingCells:f}),aA(Z.data.kiosk);return}case"completed-run":return;case"interrupted":return;case"kernel-startup-error":oA(Z.data.error);return;case"send-ui-element-message":{let f=Z.data.ui_element;if(f){let HA=sa(Z.data);Q.broadcastMessage(f,Z.data.message,HA)}return}case"model-lifecycle":ue(we,Z.data);return;case"remove-ui-elements":wt(Z.data);return;case"completion-result":ce.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":{Dt(Z.data,R);let f=iA().cellData[Z.data.cell_id];if(!f)return;c({cellNotification:Z.data,code:f.code});return}case"variables":w(Z.data.variables.map(jt)),N(Z.data.variables.map(_t)),m(Z.data.variables.map(Nt)),rA(Z.data.variables.map(Mt));return;case"variable-values":C(Z.data.variables.map(bt));return;case"alert":z({title:Z.data.title,description:la({html:Z.data.description}),variant:Z.data.variant});return;case"banner":AA(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":eA({content:Z.data.content,status:Z.data.status});return;case"query-params-append":$.append(Z.data);return;case"query-params-set":$.set(Z.data);return;case"query-params-delete":$.delete(Z.data);return;case"query-params-clear":$.clear();return;case"datasets":M(Z.data);return;case"data-column-preview":v(Z.data);return;case"sql-table-preview":oe.resolve(Z.data.request_id,Z.data);return;case"sql-table-list-preview":zA.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":Ae.resolve(Z.data.request_id,Z.data);return;case"secret-keys-result":Ba.resolve(Z.data.request_id,Z.data);return;case"cache-info":GA(Z.data);return;case"cache-cleared":return;case"data-source-connections":_({connections:Z.data.connections.map(Ct)});return;case"storage-namespaces":sA(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]=AA,A[4]=c,A[5]=v,A[6]=_,A[7]=M,A[8]=T,A[9]=eA,A[10]=t,A[11]=m,A[12]=N,A[13]=rA,A[14]=R,A[15]=l,A[16]=u,A[17]=GA,A[18]=tA,A[19]=G,A[20]=oA,A[21]=g,A[22]=aA,A[23]=j,A[24]=C,A[25]=sA,A[26]=w,A[27]=s,A[28]=I):I=A[28];let nA=I,uA=(d,Z)=>{e.current&&(e.current=!1,W.reconnect(d,Z))},K;A[29]===Symbol.for("react.memo_cache_sentinel")?(K=vA(),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]===D?U=A[34]:(U=async()=>{e.current=!0,D({state:x.OPEN})},A[33]=D,A[34]=U);let V;A[35]===E?V=A[36]:(V=async()=>{vA()||lA()||E.isSameOrigin||await E.waitForHealthy()},A[35]=E,A[36]=V);let q;A[37]===nA?q=A[38]:(q=d=>{try{nA(d)}catch(Z){let f=Z;p.error("Failed to handle message",d.data,f),z({title:"Failed to handle message",description:gA(f),variant:"danger"})}},A[37]=nA,A[38]=q);let W=mt({static:K,url:H,onOpen:U,waitToConnect:V,onMessage:q,onClose:d=>{switch(p.warn("WebSocket closed",d.code,d.reason),d.reason){case"MARIMO_ALREADY_CONNECTED":D({state:x.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":D({state:x.CLOSED,code:P.KERNEL_DISCONNECTED,reason:"kernel not found"}),W.close();return;case"MARIMO_MALFORMED_QUERY":D({state:x.CLOSED,code:P.MALFORMED_QUERY,reason:"the kernel did not recognize a request; please file a bug with marimo"});return;default:if(d.reason==="MARIMO_KERNEL_STARTUP_ERROR"){D({state:x.CLOSED,code:P.KERNEL_STARTUP_ERROR,reason:"Failed to start kernel sandbox"}),W.close();return}D({state:x.CONNECTING}),uA(d.code,d.reason)}},onError:d=>{p.warn("WebSocket error",d),D({state:x.CLOSED,code:P.KERNEL_DISCONNECTED,reason:"kernel not found"}),uA()}}),X;return A[39]===F?X=A[40]:(X={connection:F},A[39]=F,A[40]=X),X}function Ct(a){return{...a,name:a.name}}function bt(a){return{name:a.name,dataType:a.datatype,value:a.value}}function Mt(a){return a.name}function Nt(a){return a.name}function _t(a){return a.name}function jt(a){return{name:a.name,declaredBy:a.declared_by,usedBy:a.used_by}}function Ft(){return iA().cellIds.inOrderIds}var St=h();const Qt=a=>{let A=(0,St.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{LA as a,gt as c,SA as d,IA as i,Rt as l,yt as n,lt as o,ht as r,OA as s,Qt as t,ya as u};
@@ -0,0 +1 @@
1
+ import{s as T}from"./chunk-LvLJmgfZ.js";import{u as R}from"./useEvent-D91BmmQi.js";import{t as L}from"./react-Bj1aDYRI.js";import{E as U,g as $,gi as V,x as W}from"./cells-B624w_H9.js";import"./react-dom-CSu739Rf.js";import{t as E}from"./compiler-runtime-B3qBwwSJ.js";import{n as I}from"./constants-DMpttj8Q.js";import{T as F,l as O,m as H}from"./config-B2jNjodW.js";import{t as M}from"./cn-DCUzRj2J.js";import{t as q}from"./jsx-runtime-BqBOg78p.js";import"./fullscreen-BDxedMYP.js";import"./popover-UExmgBsf.js";import{I as G,_t as J,b as K}from"./JsonOutput-J02aK2i8.js";import{r as Q}from"./download-B6QfSAZf.js";import{n as X,t as P}from"./button-D9nb17Rw.js";import"./dist-BrR4M-k3.js";import"./cjs-BRGiG41H.js";import"./main-B0OX4z33.js";import"./useNonce-DfoVjkkH.js";import{r as Y}from"./requests-DIwGYs0l.js";import"./layout-BUGeEeY7.js";import{c as Z}from"./state-B34hXjp9.js";import"./markdown-renderer-ju9oyUcG.js";import{t as ee}from"./copy-BwrPA9zQ.js";import{i as te,l as re,n as se,r as A,t as oe,u as ae}from"./panels-ChMBmhqS.js";import{t as ie}from"./spinner-Bhir8k53.js";import"./dist-DQOq2Tf-.js";import"./dist-DBiqbYe-.js";import"./dist-VjDnmGCZ.js";import"./dist-E6ttb8td.js";import"./dist-B324sPca.js";import{t as le}from"./use-toast-T0_cQDma.js";import{t as me}from"./session-VtovaFBS.js";import"./purify.es-DBmVz-Wl.js";import"./dates-CAlnO9QB.js";import{n as ne}from"./copy-BCF-tANo.js";import{a as ce,c as de,l as pe,n as he,r as fe,t as xe}from"./dialog-Dj0qTFnG.js";import{t as be}from"./share-DIVpiHPe.js";import"./utils-CGtUbqcR.js";import"./vega-loader.browser-BegSZk0G.js";import"./defaultLocale-YteS-k_t.js";import"./defaultLocale-B6z1Qyqt.js";import{a as je}from"./cell-link-3OOv6O0A.js";import"./chunk-5FQGJX7Z-e_arGD4o.js";import"./html-to-image-C4B8YBxt.js";import{n as ue,t as ge}from"./react-resizable-panels.browser.esm-BUNcfKXO.js";import"./esm-BmrwxxCo.js";import"./name-cell-input-NuoWsYBh.js";import{n as ye,t as ke}from"./marimo-icons-BSB-Z_W3.js";import"./ws-CtTwmdal.js";import"./dist-DS5RCKZO.js";import"./dist-9g-_Ln9y.js";import"./dist-DBBYmRY4.js";import"./dist-DggusHaA.js";import"./dist-CGDn0y-i.js";import"./dist-CsEqrZxx.js";import"./dist-_XomGjg6.js";import"./dist-ooLAQ9IK.js";import"./dist-HW7R98td.js";import"./esm-BRNC35J6.js";var _e=E(),Ne=T(L(),1),t=T(q(),1);const ve=o=>{let e=(0,_e.c)(26),{appConfig:s}=o,{setCells:r}=U(),{sendComponentValues:d}=Y(),l;e[0]===d?l=e[1]:(l=()=>(A.INSTANCE.start(d),we),e[0]=d,e[1]=l);let i;e[2]===Symbol.for("react.memo_cache_sentinel")?(i=[],e[2]=i):i=e[2],(0,Ne.useEffect)(l,i);let m;e[3]===Symbol.for("react.memo_cache_sentinel")?(m=me(),e[3]=m):m=e[3];let g;e[4]===r?g=e[5]:(g={autoInstantiate:!0,setCells:r,sessionId:m},e[4]=r,e[5]=g);let{connection:a}=se(g),v=R(W),y;e[6]===a.state?y=e[7]:(y=H(a.state),e[6]=a.state,e[7]=y);let j=y,w=R($),k;e[8]!==s||e[9]!==w||e[10]!==j?(k=()=>j&&!w?(0,t.jsxs)(G,{milliseconds:2e3,fallback:null,children:[(0,t.jsx)(ie,{className:"mx-auto"}),(0,t.jsx)("p",{className:"text-center text-sm text-muted-foreground mt-2",children:"Connecting..."})]}):(0,t.jsx)(te,{appConfig:s,mode:"read"}),e[8]=s,e[9]=w,e[10]=j,e[11]=k):k=e[11];let u=k,p;e:{if(typeof window>"u"){p=null;break e}let b,c;if(e[12]===Symbol.for("react.memo_cache_sentinel")){if(c=new URL(window.location.href),!c.searchParams.has("file")){p=null;break e}c.searchParams.delete("file"),b=c.searchParams.toString(),e[12]=b,e[13]=c,e[14]=p}else b=e[12],c=e[13],p=e[14];let N=b;p=N?`${c.pathname}?${N}`:c.pathname}let _=p,S=s.width,h;e[15]===Symbol.for("react.memo_cache_sentinel")?(h=_&&(0,t.jsx)("div",{className:"flex items-center px-6 pt-4 sm:-mt-8",children:(0,t.jsxs)("a",{href:_,"aria-label":"Back to gallery",className:M(X({variant:"text",size:"sm"}),"gap-2 px-0 text-muted-foreground hover:text-foreground"),children:[(0,t.jsx)(Z,{className:"size-4","aria-hidden":!0}),(0,t.jsx)("span",{children:"Back"})]})}),e[15]=h):h=e[15];let n;e[16]===a?n=e[17]:(n=(0,t.jsx)(ae,{connection:a,className:"sm:pt-8",children:h}),e[16]=a,e[17]=n);let f;e[18]===u?f=e[19]:(f=u(),e[18]=u,e[19]=f);let x;return e[20]!==s.width||e[21]!==a||e[22]!==v||e[23]!==n||e[24]!==f?(x=(0,t.jsxs)(re,{connection:a,isRunning:v,width:S,children:[n,f]}),e[20]=s.width,e[21]=a,e[22]=v,e[23]=n,e[24]=f,e[25]=x):x=e[25],x};function we(){A.INSTANCE.stop()}var B=E();const Se=()=>{let o=(0,B.c)(3),e=R(V);if(!O()||!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:I.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)(Ce,{code:e})})]}),o[1]=e,o[2]=r),r};var Ce=o=>{let e=(0,B.c)(39),{code:s}=o,r=je()||"notebook.py",d=r.lastIndexOf("/");d!==-1&&(r=r.slice(d+1));let l=window.location.href,i;e[0]===s?i=e[1]:(i=be({code:s,baseUrl:`${I.molab}/new`}),e[0]=s,e[1]=i);let m=i,g;e[2]===Symbol.for("react.memo_cache_sentinel")?(g=(0,t.jsx)(pe,{asChild:!0,children:(0,t.jsx)(P,{"data-testid":"static-notebook-dialog-trigger",variant:"outline",size:"xs",children:"Run or Edit"})}),e[2]=g):g=e[2];let a;e[3]===r?a=e[4]:(a=(0,t.jsx)(de,{children:r}),e[3]=r,e[4]=a);let v;e[5]===Symbol.for("react.memo_cache_sentinel")?(v=(0,t.jsxs)("p",{children:["This is a static"," ",(0,t.jsx)("a",{href:I.githubPage,target:"_blank",className:"text-(--sky-11) hover:underline font-medium",children:"marimo"})," ","notebook. To run interactively:"]}),e[5]=v):v=e[5];let y;e[6]===Symbol.for("react.memo_cache_sentinel")?(y=(0,t.jsx)("br",{}),e[6]=y):y=e[6];let j;e[7]===r?j=e[8]:(j=(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",y,"marimo edit ",r]})}),e[7]=r,e[8]=j);let w;e[9]===Symbol.for("react.memo_cache_sentinel")?(w=!l.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[9]=w):w=e[9];let k;e[10]===Symbol.for("react.memo_cache_sentinel")?(k=(0,t.jsx)(ye,{size:12,strokeWidth:1.5,className:"mr-1.5 mt-px text-(--grass-11)"}),e[10]=k):k=e[10];let u;e[11]===m?u=e[12]:(u=(0,t.jsx)(P,{asChild:!0,variant:"outline",size:"xs",className:"shrink-0",children:(0,t.jsxs)("a",{href:m,target:"_blank",rel:"noopener noreferrer",children:[k,"Open in molab"]})}),e[11]=m,e[12]=u);let p;e[13]===Symbol.for("react.memo_cache_sentinel")?(p=(0,t.jsxs)("p",{className:"text-sm text-(--sky-12)",children:["Run this notebook in"," ",(0,t.jsx)("span",{className:"font-semibold",children:"molab"}),", marimo's cloud-hosted notebook platform."]}),e[13]=p):p=e[13];let _;e[14]===u?_=e[15]:(_=(0,t.jsxs)("div",{className:"pt-3 border-t flex gap-2 items-center",children:[u,p]}),e[14]=u,e[15]=_);let S;e[16]!==_||e[17]!==j?(S=(0,t.jsxs)(fe,{className:"pt-3 text-left space-y-3",children:[v,j,w,_]}),e[16]=_,e[17]=j,e[18]=S):S=e[18];let h;e[19]!==S||e[20]!==a?(h=(0,t.jsxs)(ce,{children:[a,S]}),e[19]=S,e[20]=a,e[21]=h):h=e[21];let n;e[22]===s?n=e[23]:(n=async()=>{await ne(s),le({title:"Copied to clipboard"})},e[22]=s,e[23]=n);let f;e[24]===Symbol.for("react.memo_cache_sentinel")?(f=(0,t.jsx)(ee,{className:"w-3 h-3 mr-2"}),e[24]=f):f=e[24];let x;e[25]===n?x=e[26]:(x=(0,t.jsxs)(P,{"data-testid":"copy-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:n,children:[f,"Copy code"]}),e[25]=n,e[26]=x);let b;e[27]!==s||e[28]!==r?(b=()=>{Q(new Blob([s],{type:"text/plain"}),r)},e[27]=s,e[28]=r,e[29]=b):b=e[29];let c;e[30]===Symbol.for("react.memo_cache_sentinel")?(c=(0,t.jsx)(J,{className:"w-3 h-3 mr-2"}),e[30]=c):c=e[30];let N;e[31]===b?N=e[32]:(N=(0,t.jsxs)(P,{"data-testid":"download-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:b,children:[c,"Download"]}),e[31]=b,e[32]=N);let C;e[33]!==x||e[34]!==N?(C=(0,t.jsxs)("div",{className:"flex gap-3 pt-2",children:[x,N]}),e[33]=x,e[34]=N,e[35]=C):C=e[35];let z;return e[36]!==h||e[37]!==C?(z=(0,t.jsxs)(xe,{children:[g,(0,t.jsxs)(he,{children:[h,C]})]}),e[36]=h,e[37]=C,e[38]=z):z=e[38],z},D=E(),ze=F()||O(),Ie=o=>{let e=(0,D.c)(9),s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,t.jsx)(Se,{}),e[0]=s):s=e[0];let r;e[1]===o.appConfig?r=e[2]:(r=(0,t.jsx)(ve,{appConfig:o.appConfig}),e[1]=o.appConfig,e[2]=r);let d;e[3]===Symbol.for("react.memo_cache_sentinel")?(d=ze&&(0,t.jsx)(Pe,{}),e[3]=d):d=e[3];let l;e[4]===r?l=e[5]:(l=(0,t.jsxs)(ge,{children:[s,r,d]}),e[4]=r,e[5]=l);let i;e[6]===Symbol.for("react.memo_cache_sentinel")?(i=(0,t.jsx)(K,{}),e[6]=i):i=e[6];let m;return e[7]===l?m=e[8]:(m=(0,t.jsx)(oe,{children:(0,t.jsxs)(ue,{direction:"horizontal",autoSaveId:"marimo:chrome:v1:run1",children:[l,i]})}),e[7]=l,e[8]=m),m},Pe=()=>{let o=(0,D.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:I.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)(ke,{className:"h-4 w-auto"})]})}),o[0]=e):e=o[0],e},Re=Ie;export{Re as default};
@@ -0,0 +1,3 @@
1
+ var Vt=Object.defineProperty;var $e=f=>{throw TypeError(f)};var Qt=(f,h,y)=>h in f?Vt(f,h,{enumerable:!0,configurable:!0,writable:!0,value:y}):f[h]=y;var n=(f,h,y)=>Qt(f,typeof h!="symbol"?h+"":h,y),ce=(f,h,y)=>h.has(f)||$e("Cannot "+y);var o=(f,h,y)=>(ce(f,h,"read from private field"),y?y.call(f):h.get(f)),_=(f,h,y)=>h.has(f)?$e("Cannot add the same private member more than once"):h instanceof WeakSet?h.add(f):h.set(f,y),C=(f,h,y,Q)=>(ce(f,h,"write to private field"),Q?Q.call(f,y):h.set(f,y),y),A=(f,h,y)=>(ce(f,h,"access private method"),y);import{i as U,p as ne,u as Yt}from"./useEvent-D91BmmQi.js";import{Di as G,Ei as Gt,Mn as Jt,b as Kt,gi as Xt,it as ze,pi as Zt,vi as er,x as tr,xi as rr,__tla as sr}from"./cells-B624w_H9.js";import{t as nr}from"./get-C-qh_et5.js";import{t as ar}from"./debounce-DhnxH9Rh.js";import{t as ir}from"./_baseSet-CxV9N1bc.js";import{_ as p,y as g}from"./useEventListener-BR0C1MaI.js";import{t as or}from"./invariant-BUdrueMv.js";import{S as lr}from"./utils-BrXijSdZ.js";import{T as ur,c as pe,l as Ve,n as dr}from"./config-B2jNjodW.js";import{n as cr}from"./switch-DZyZgphf.js";import{n as pr}from"./globals-BS0Ia3-E.js";import{t as fr}from"./createReducer-1ePoj7v6.js";import{r as hr}from"./strings-md4mFbOQ.js";import{t as fe}from"./requests-DIwGYs0l.js";import{a as Qe,l as mr,r as Ye,__tla as gr}from"./markdown-renderer-ju9oyUcG.js";import{t as yr}from"./DeferredRequestRegistry-CUzZ0y7K.js";import{t as wr}from"./preload-helper-DItdS47A.js";import{t as Ge}from"./Deferred-DMWKlZOV.js";import{t as Je}from"./uuid-DercMavo.js";import{t as br}from"./use-toast-T0_cQDma.js";import{n as vr}from"./RenderHTML-CZ0QfVg-.js";import{t as _r}from"./useRunCells-BZHmiKaL.js";import{n as Cr,r as Rr,t as xr}from"./share-DIVpiHPe.js";import{t as qr}from"./blob-D-eV0cU3.js";import{i as Ke,r as Er,t as Sr}from"./events-BRAWQiYK.js";let Xe,Ze,et,he,me,tt,ge,rt,V,st,nt,ye,we,at,it,ot,lt,ae,ut,dt,ie,J,ct,be,Mr=Promise.all([(()=>{try{return sr}catch{}})(),(()=>{try{return gr}catch{}})()]).then(async()=>{var T,ee,ft,Ae,k,W,S,Ue,P,Te,F,Y,B,oe,We,je,te,I,L,H,R,j,N,ht,mt,gt,re;function f(t,e,r){return t==null?t:ir(t,e,r)}J=f,ct=ne(null);var{valueAtom:h,useActions:y}=fr(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:Je()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(r=>r.id!==e)}),clearBanners:t=>({...t,banners:[]})});Ze=()=>Yt(h),Xe=function(){return y()};let Q,_e,Ce;Q=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)}},me=class ve{constructor(e){n(this,"subscriptions",new Q);this.producer=e}static withProducerCallback(e){return new ve(e)}static empty(){return new ve}startProducer(){this.producer&&this.producer(e=>{this.subscriptions.notify("message",e)})}connect(){return new Promise(e=>setTimeout(e,0)).then(()=>{this.subscriptions.notify("open",new Event("open"))})}get readyState(){return WebSocket.OPEN}reconnect(e,r){this.close(),this.connect()}close(){this.subscriptions.notify("close",new Event("close"))}send(e){return this.subscriptions.notify("message",new MessageEvent("message",{data:e})),Promise.resolve()}addEventListener(e,r){this.subscriptions.addSubscription(e,r),e==="open"&&r(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,r){this.subscriptions.removeSubscription(e,r)}},_e=1e10,Ce=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 wt(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,zt)}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=Ce}=t;t.transport&&a(t.transport),t.requestHandler&&u(t.requestHandler),t._debugHooks&&r(t._debugHooks);let v=0;function x(){return v<=_e?++v:v=0}let q=new Map,E=new Map;function $(l,...c){let w=c[0];return new Promise((m,b)=>{var z;if(!s.send)throw K(["send"],"make requests");let M=x(),D={type:"request",id:M,method:l,params:w};q.set(M,{resolve:m,reject:b}),d!==1/0&&E.set(M,setTimeout(()=>{E.delete(M),b(Error("RPC request timed out."))},d)),(z=e.onSend)==null||z.call(e,D),s.send(D)})}let se=new Proxy($,{get:(l,c,w)=>c in l?Reflect.get(l,c,w):m=>$(c,m)}),Oe=se;function De(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 Be=new Proxy(De,{get:(l,c,w)=>c in l?Reflect.get(l,c,w):m=>De(c,m)}),He=Be,O=new Map,de=new Set;function Ht(l,c){var w;if(!s.registerHandler)throw K(["registerHandler"],"register message listeners");if(l==="*"){de.add(c);return}O.has(l)||O.set(l,new Set),(w=O.get(l))==null||w.add(c)}function $t(l,c){var w,m;if(l==="*"){de.delete(c);return}(w=O.get(l))==null||w.delete(c),((m=O.get(l))==null?void 0:m.size)===0&&O.delete(l)}async function zt(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:M}=l,D;try{D={type:"response",id:m,success:!0,payload:await i(b,M)}}catch(z){if(!(z instanceof Error))throw z;D={type:"response",id:m,success:!1,error:z.message}}(w=e.onSend)==null||w.call(e,D),s.send(D);return}if(l.type==="response"){let m=E.get(l.id);m!=null&&clearTimeout(m);let{resolve:b,reject:M}=q.get(l.id)??{};l.success?b==null||b(l.payload):M==null||M(Error(l.error));return}if(l.type==="message"){for(let b of de)b(l.id,l.payload);let m=O.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:Oe,send:Be,sendProxy:He,addMessageListener:Ht,removeMessageListener:$t,proxy:{send:He,request:Oe},_setDebugHooks:r}}function bt(t){return wt(t)}var Re="[transport-id]";function vt(t,e){let{transportId:r}=e;return r==null?t:{[Re]:r,data:t}}function _t(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[Re]!==r)return[!0];i=t.data}return a===!1?[!0]:[!1,i]}function Ct(t,e={}){let{transportId:r,filter:s,remotePort:a}=e,i=t,u=a??t,d;return{send(v){u.postMessage(vt(v,{transportId:r}))},registerHandler(v){d=x=>{let q=x.data,[E,$]=_t(q,{transportId:r,filter:()=>s==null?void 0:s(x)});E||v($)},i.addEventListener("message",d)},unregisterHandler(){d&&i.removeEventListener("message",d)}}}function Rt(t,e){return Ct(t,e)}function xe(t){return bt({transport:Rt(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{p.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{p.debug("[rpc] Worker -> Parent",e)}}})}be=ne("Initializing..."),ie=ne("loading"),et=ne(t=>{let e=t(Kt),r=Object.values(e.cellRuntime);return r.some(s=>!mr(s.output))?!0:r.every(s=>s.status==="idle")});var qe=Cr(),Ee="marimo:file",Se=new Zt(null);const xt={saveFile(t){Se.set(Ee,t)},readFile(){return Se.get(Ee)}};var qt={saveFile(t){G.setCodeForHash((0,qe.compressToEncodedURIComponent)(t))},readFile(){let t=G.getCodeFromHash()||G.getCodeFromSearchParam();return t?(0,qe.decompressFromEncodedURIComponent)(t):null}};const Et={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 Mt={saveFile(t){},readFile(){return U.get(Xt)??null}};var kt={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
2
+ `)}},Me=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;V=new Me([Mt,Et,qt]),X=new Me([xt,St,kt]),we=class pt{constructor(){n(this,"initialized",new Ge);n(this,"sendRename",async({filename:e})=>(e===null||(G.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&&(V.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=>(U.get(tr)||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}),cr.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&&(V.saveFile(e.contents),X.saveFile(e.contents)),Rr(),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=xr({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:Je()}),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,"sendCopyFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"copy_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);ur()&&(this.rpc=xe(new Worker(new URL(""+new URL("worker-CF8V9c2V.js",import.meta.url).href,""+import.meta.url),{type:"module",name:ke()})),this.rpc.addMessageListener("ready",()=>{this.startSession()}),this.rpc.addMessageListener("initialized",()=>{this.saveRpc=this.getSaveWorker(),this.setInterruptBuffer(),U.set(ie,"ready"),this.initialized.resolve()}),this.rpc.addMessageListener("initializingMessage",({message:e})=>{U.set(be,e)}),this.rpc.addMessageListener("initializedError",({error:e})=>{if(this.initialized.status==="resolved"){p.error(e),br({title:"Error initializing",description:e,variant:"danger"});return}U.set(ie,"error"),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 pt),window[e]}getSaveWorker(){return ze()==="read"?(p.debug("Using partially disabled SaveWorker in read-mode"),{readFile:g,readNotebook:async()=>await V.readFile()??"",saveNotebook:g}):xe(new Worker(new URL(""+new URL("save-worker-CvbUHJh7.js",import.meta.url).href,""+import.meta.url),{type:"module",name:ke()})).proxy.request}async startSession(){let e=await V.readFile(),r=await X.readFile(),s=U.get(er)??G.getFilename(),a=U.get(lr),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:ze()==="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})}},st=function(){return me.withProducerCallback(t=>{we.INSTANCE.attachMessageConsumer(t)})};function ke(){let t=typeof window<"u"&&window.__MARIMO_HAS_WASM_CONTROLLER__===!0;return pr()+(t?"::controller":"")}rt=function(t=pe()){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":Ft(a)}})}return e(r,s)}catch(i){return p.error("Error parsing URL",i),e(r,s)}},()=>{window.fetch=e}};function Ft(t){return t.endsWith(".csv")?"text/csv":t.endsWith(".json")?"application/json":t.endsWith(".txt")?"text/plain":"application/octet-stream"}ot=function(t,e=pe()){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 Fe(t){return t.startsWith(".")?t.slice(1):t}function Pt(t,e=pe()){let r=Z(t,e);if(!r)return t;let s=qr(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=Pe(t),i=Pe(s);return e[t]||e[Fe(t)]||e[s]||e[Fe(s)]||a&&e[a]||i&&e[i]}function Pe(t){let e=t.indexOf("/@file/");return e===-1?null:t.slice(e)}function le(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(...le(a,[...e,s]));else if(typeof t=="object"&&t)for(let[s,a]of Object.entries(t))r.push(...le(a,[...e,s]));return r}function It(t){let e=le(t);if(e.length===0)return{state:t,buffers:[],bufferPaths:[]};let r=structuredClone(t),s=[],a=[];for(let i of e){let u=nr(t,i);if(u instanceof DataView){let d=Qe(u);s.push(d),a.push(i),J(r,i,d)}}return{state:r,buffers:s,bufferPaths:a}}function Ie(t){let{state:e,bufferPaths:r,buffers:s}=t;if(!r||r.length===0)return e;s&&or(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"?J(a,u,Ye(d)):J(a,u,d)}return a}ge=function(t){return typeof t!="string"||t.length===0?!1:!!(/^(\.?\/)?@file\/[^?#]+$/.test(t)||Nt(t))};function Lt(){return U.get(_r)||vr()}function Nt(t){return t.startsWith("data:text/javascript;base64,")||t.startsWith("data:application/javascript;base64,")||t.startsWith("data:text/css;base64,")?Lt():!1}const Le={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 At(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 Ut=(Ae=class{constructor(){_(this,ee);_(this,T,new Map)}getModule(t,e){let r=o(this,T).get(e);if(r)return r;let s=A(this,ee,ft).call(this,t).catch(a=>{throw o(this,T).delete(e),a});return o(this,T).set(e,s),s}invalidate(t){p.debug(`[WidgetDefRegistry] Invalidating module cache for hash=${t}`),o(this,T).delete(t)}},T=new WeakMap,ee=new WeakSet,ft=async function(t){if(!ge(t))throw Error(`Refusing to load anywidget module from untrusted URL: ${String(t)}`);let e=dr(t).toString();return Ve()&&(e=Pt(e)),wr(()=>import(e).then(async r=>(await r.__tla,r)),[],import.meta.url)},Ae),Tt=(Ue=class{constructor(){_(this,k);_(this,W);_(this,S)}async bind(t,e){var i,u;if(o(this,S)&&o(this,W)===t)return o(this,S);o(this,S)&&o(this,W)!==t&&(p.debug("[WidgetBinding] Hot-reload detected, aborting previous binding"),(i=o(this,k))==null||i.abort(),C(this,k,void 0),C(this,S,void 0)),C(this,W,t),C(this,k,new AbortController);let r=o(this,k).signal,s=typeof t=="function"?await t():t,a=await((u=s.initialize)==null?void 0:u.call(s,{model:e,experimental:Le}));return a&&r.addEventListener("abort",a),C(this,S,async(d,v)=>{var q;let x=await((q=s.render)==null?void 0:q.call(s,{model:e,el:d,experimental:Le}));x&&At([v,r]).addEventListener("abort",()=>{let E=v.aborted?"view unmount":"binding destroyed";p.debug(`[WidgetBinding] Render cleanup triggered (reason: ${E})`),x()})}),o(this,S)}destroy(){var t;p.debug("[WidgetBinding] Destroying binding, aborting initialize lifecycle"),(t=o(this,k))==null||t.abort(),C(this,k,void 0),C(this,W,void 0),C(this,S,void 0)}},k=new WeakMap,W=new WeakMap,S=new WeakMap,Ue),Wt=(Te=class{constructor(){_(this,P,new Map)}getOrCreate(t){let e=o(this,P).get(t);return e||(e=new Tt,o(this,P).set(t,e)),e}destroy(t){let e=o(this,P).get(t);e&&(p.debug(`[BindingManager] Destroying binding for model=${t}`),e.destroy(),o(this,P).delete(t))}has(t){return o(this,P).has(t)}},P=new WeakMap,Te);dt=new Ut,ye=new Wt;var jt=(We=class{constructor(t=1e4){_(this,B);_(this,F,new Map);_(this,Y);C(this,Y,t)}get(t){let e=A(this,B,oe).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,F).delete(t))},o(this,Y)),e.deferred.promise}create(t,e){let r=A(this,B,oe).call(this,t);r.deferred.resolve(e(r.controller.signal))}set(t,e){A(this,B,oe).call(this,t).deferred.resolve(e)}getSync(t){let e=o(this,F).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,F).get(t))==null||e.controller.abort(),o(this,F).delete(t)}},F=new WeakMap,Y=new WeakMap,B=new WeakSet,oe=function(t){let e=o(this,F).get(t);return e||(e={deferred:new Ge,controller:new AbortController},o(this,F).set(t,e)),e},We),Ne=Symbol("marimo");function ue(t){return t[Ne]}ae=new jt;var Ot=(je=Ne,j=class{constructor(e,r,s){_(this,N);_(this,te,"change");_(this,I);_(this,L);_(this,H);_(this,R,{});n(this,je,{updateAndEmitDiffs:e=>A(this,N,mt).call(this,e),emitCustomMessage:(e,r)=>A(this,N,gt).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,ar(()=>{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,ht).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,ht=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)}},mt=function(e){e!=null&&Object.keys(e).forEach(r=>{let s=r;o(this,L)[s]!==e[s]&&this.set(s,e[s])})},gt=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",ae),j);tt=async function(t,e){let r=e.model_id,s=e.message,a=("buffers"in s?s.buffers:[]).map(Ye);switch(s.method){case"open":{let{state:i,buffer_paths:u=[]}=s,d=Ie({state:i,bufferPaths:u,buffers:a}),v=t.getSync(r);if(v){ue(v).updateAndEmitDiffs(d);return}t.create(r,x=>new Ot(d,Ve()?{sendUpdate:async()=>{},sendCustomMessage:async()=>{}}:{async sendUpdate(q){if(x.aborted){p.debug(`[Model] sendUpdate suppressed for model=${r} (signal aborted)`);return}let{state:E,buffers:$,bufferPaths:se}=It(q);await fe().sendModelValue({modelId:r,message:{method:"update",state:E,bufferPaths:se},buffers:$})},async sendCustomMessage(q,E){if(x.aborted){p.debug(`[Model] sendCustomMessage suppressed for model=${r} (signal aborted)`);return}await fe().sendModelValue({modelId:r,message:{method:"custom",content:q},buffers:E.map(Qe)})}},x));return}case"custom":ue(await t.get(r)).emitCustomMessage({method:"custom",content:s.content},a);return;case"close":ye.destroy(r),t.delete(r);return;case"update":{let{state:i,buffer_paths:u=[]}=s,d=Ie({state:i,bufferPaths:u,buffers:a});ue(await t.get(r)).updateAndEmitDiffs(d);return}default:hr(s)}},Jt(ae,"MODEL_MANAGER");function Dt(t){return typeof t!="object"||!t?!1:"type"in t&&t.type==="marimo-ui-value-update"}he=class yt{static get INSTANCE(){let e="_marimo_private_UIElementRegistry";return window[e]||(window[e]=new yt),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:Gt(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(Dt(r)){a.value=r.value,a.elements.forEach(i=>{i.dispatchEvent(Ke.create({bubbles:!1,composed:!0,detail:{value:r.value,element:i}}))});return}a.elements.forEach(i=>{i.dispatchEvent(Sr.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(Ke.create({bubbles:!1,composed:!0,detail:{value:s,element:i}}))}),document.dispatchEvent(Er.create({bubbles:!0,composed:!0,detail:{objectId:r}})))}},it=he.INSTANCE,nt=new yr("function-call-result",async(t,e)=>{await fe().sendFunctionRequest({functionCallId:t,...e})}),ut="68px";var Bt="288px";at=t=>t?/^\d+$/.test(t)?`${t}px`:t:Bt,lt=rr({isOpen:!0},(t,e)=>{if(!e)return t;switch(e.type){case"toggle":return{...t,isOpen:e.isOpen??t.isOpen};case"setWidth":return{...t,width:e.width};default:return t}})});export{Xe as C,Ze as S,et as _,Mr as __tla,he as a,me as b,tt as c,ge as d,rt as f,V as g,st as h,nt as i,ye as l,we as m,at as n,it as o,ot as p,lt as r,ae as s,ut as t,dt as u,ie as v,J as w,ct as x,be 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-Cq12wKzb.js"></script>
69
+ <script type="module" crossorigin src="./assets/index-x-IUopDi.js"></script>
70
70
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-DItdS47A.js">
71
71
  <link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
72
72
  <link rel="modulepreload" crossorigin href="./assets/react-Bj1aDYRI.js">
@@ -220,7 +220,7 @@
220
220
  <link rel="modulepreload" crossorigin href="./assets/memoize-Tp7rARFe.js">
221
221
  <link rel="modulepreload" crossorigin href="./assets/get-C-qh_et5.js">
222
222
  <link rel="modulepreload" crossorigin href="./assets/_baseSet-CxV9N1bc.js">
223
- <link rel="modulepreload" crossorigin href="./assets/state-BpYA0Ikn.js">
223
+ <link rel="modulepreload" crossorigin href="./assets/state-C9cwwKqw.js">
224
224
  <link rel="modulepreload" crossorigin href="./assets/label-DTR8T0AE.js">
225
225
  <link rel="modulepreload" crossorigin href="./assets/textarea-B3F_BjoD.js">
226
226
  <link rel="modulepreload" crossorigin href="./assets/refresh-ccw-C-n2VFP5.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/frontend",
3
- "version": "0.23.6-dev31",
3
+ "version": "0.23.6-dev32",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -0,0 +1,47 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { useAtomValue } from "jotai";
4
+ import { AlertCircleIcon } from "lucide-react";
5
+ import type React from "react";
6
+ import { Spinner } from "@/components/icons/spinner";
7
+ import { Tooltip } from "@/components/ui/tooltip";
8
+ import { wasmInitializationAtom, wasmInitStatusAtom } from "@/core/wasm/state";
9
+ import { isWasm } from "@/core/wasm/utils";
10
+
11
+ /**
12
+ * Footer indicator that surfaces Pyodide initialization progress. Mirrors
13
+ * the "Kernel" indicator but tracks the WASM runtime instead of the server
14
+ * connection. Hides itself once Pyodide is ready.
15
+ */
16
+ export const PyodideStatus: React.FC = () => {
17
+ const status = useAtomValue(wasmInitStatusAtom);
18
+ const message = useAtomValue(wasmInitializationAtom);
19
+
20
+ if (!isWasm() || status === "ready") {
21
+ return null;
22
+ }
23
+
24
+ const icon =
25
+ status === "error" ? (
26
+ <AlertCircleIcon className="w-4 h-4 text-destructive" />
27
+ ) : (
28
+ <Spinner size="small" />
29
+ );
30
+
31
+ const tooltip = status === "error" ? "Pyodide failed to initialize" : message;
32
+
33
+ return (
34
+ <Tooltip
35
+ content={<div className="text-sm whitespace-pre-line">{tooltip}</div>}
36
+ data-testid="footer-pyodide-status"
37
+ >
38
+ <div
39
+ className="p-1 hover:bg-accent rounded flex items-center gap-1.5 text-xs text-muted-foreground"
40
+ data-testid="pyodide-status"
41
+ >
42
+ {icon}
43
+ <span>Pyodide</span>
44
+ </div>
45
+ </Tooltip>
46
+ );
47
+ };
@@ -18,6 +18,7 @@ import {
18
18
  } from "./footer-items/backend-status";
19
19
  import { CopilotStatusIcon } from "./footer-items/copilot-status";
20
20
  import { MachineStats } from "./footer-items/machine-stats";
21
+ import { PyodideStatus } from "./footer-items/pyodide-status";
21
22
  import { RTCStatus } from "./footer-items/rtc-status";
22
23
  import { RuntimeSettings } from "./footer-items/runtime-settings";
23
24
  import { useSetDependencyPanelTab } from "./useDependencyPanelTab";
@@ -85,6 +86,7 @@ export const Footer: React.FC = () => {
85
86
 
86
87
  <div className="mx-auto" />
87
88
 
89
+ <PyodideStatus />
88
90
  <ConnectingKernelIndicatorItem />
89
91
 
90
92
  <ShowInKioskMode>
@@ -10,7 +10,11 @@ import { buttonVariants } from "@/components/ui/button";
10
10
  import { DelayMount } from "@/components/utils/delay-mount";
11
11
  import { cn } from "@/utils/cn";
12
12
  import { CellsRenderer } from "../components/editor/renderers/cells-renderer";
13
- import { notebookIsRunningAtom, useCellActions } from "./cells/cells";
13
+ import {
14
+ hasCellsAtom,
15
+ notebookIsRunningAtom,
16
+ useCellActions,
17
+ } from "./cells/cells";
14
18
  import type { AppConfig } from "./config/config-schema";
15
19
  import { RuntimeState } from "./kernel/RuntimeState";
16
20
  import { getSessionId } from "./kernel/session";
@@ -42,10 +46,13 @@ export const RunApp: React.FC<AppProps> = ({ appConfig }) => {
42
46
 
43
47
  const isRunning = useAtomValue(notebookIsRunningAtom);
44
48
  const isConnecting = isAppConnecting(connection.state);
49
+ // Skip the "Connecting..." gate when we already have cells to show — from
50
+ // an embedded snapshot or a prior connection.
51
+ const hasExistingCells = useAtomValue(hasCellsAtom);
45
52
 
46
53
  const renderCells = () => {
47
54
  // If we are connecting for more than 2 seconds, show a spinner
48
- if (isConnecting) {
55
+ if (isConnecting && !hasExistingCells) {
49
56
  return (
50
57
  <DelayMount milliseconds={2000} fallback={null}>
51
58
  <Spinner className="mx-auto" />
@@ -3,13 +3,18 @@
3
3
  import { useAtomValue } from "jotai";
4
4
  import type React from "react";
5
5
  import type { PropsWithChildren } from "react";
6
+ import { useEffect, useRef } from "react";
6
7
  import { LargeSpinner } from "@/components/icons/large-spinner";
8
+ import { toast } from "@/components/ui/use-toast";
9
+ import { hasCellsAtom } from "@/core/cells/cells";
7
10
  import { showCodeInRunModeAtom } from "@/core/meta/state";
8
11
  import { store } from "@/core/state/jotai";
9
12
  import { useAsyncData } from "@/hooks/useAsyncData";
13
+ import { prettyError } from "@/utils/errors";
14
+ import { Logger } from "@/utils/Logger";
10
15
  import { hasQueryParam } from "@/utils/urls";
11
16
  import { KnownQueryParams } from "../constants";
12
- import { getInitialAppMode } from "../mode";
17
+ import { type AppMode, getInitialAppMode } from "../mode";
13
18
  import { PyodideBridge } from "./bridge";
14
19
  import { hasAnyOutputAtom, wasmInitializationAtom } from "./state";
15
20
  import { isWasm } from "./utils";
@@ -26,30 +31,44 @@ export const PyodideLoader: React.FC<PropsWithChildren> = ({ children }) => {
26
31
  };
27
32
 
28
33
  const PyodideLoaderInner: React.FC<PropsWithChildren> = ({ children }) => {
29
- // isPyodide() is constant, so this is safe
30
- const { isPending, error } = useAsyncData(async () => {
34
+ // Don't block render on Pyodide: a hydrated snapshot can paint immediately
35
+ // while Pyodide downloads in the background.
36
+ const { error } = useAsyncData(async () => {
31
37
  await PyodideBridge.INSTANCE.initialized.promise;
32
38
  return true;
33
39
  }, []);
34
40
 
41
+ const hasCells = useAtomValue(hasCellsAtom);
35
42
  const hasOutput = useAtomValue(hasAnyOutputAtom);
43
+ const nothingToShow = shouldShowSpinner({
44
+ hasCells,
45
+ hasOutput,
46
+ mode: getInitialAppMode(),
47
+ codeHidden: isCodeHidden(),
48
+ });
36
49
 
37
- if (isPending) {
38
- return <WasmSpinner />;
39
- }
50
+ const didToastErrorRef = useRef(false);
51
+ useEffect(() => {
52
+ // With snapshot content on-screen, toast instead of throwing so the
53
+ // snapshot stays readable. The ref ensures we only toast once even if
54
+ // nothingToShow toggles later.
55
+ if (error && !nothingToShow && !didToastErrorRef.current) {
56
+ didToastErrorRef.current = true;
57
+ Logger.error("Pyodide failed to initialize", error);
58
+ toast({
59
+ title: "Failed to start the notebook runtime",
60
+ description: prettyError(error),
61
+ variant: "danger",
62
+ });
63
+ }
64
+ }, [error, nothingToShow]);
40
65
 
41
- // If ALL are true:
42
- // - are in read mode
43
- // - we are not showing the code
44
- // - and there is no output
45
- // then show the spinner
46
- if (!hasOutput && getInitialAppMode() === "read" && isCodeHidden()) {
47
- return <WasmSpinner />;
66
+ if (error && nothingToShow) {
67
+ throw error;
48
68
  }
49
69
 
50
- // Propagate back up to our error boundary
51
- if (error) {
52
- throw error;
70
+ if (nothingToShow) {
71
+ return <WasmSpinner />;
53
72
  }
54
73
 
55
74
  return children;
@@ -65,6 +84,25 @@ function isCodeHidden() {
65
84
  );
66
85
  }
67
86
 
87
+ /**
88
+ * Pure predicate: should the WASM loader render a spinner instead of its
89
+ * children? We block render only when nothing user-visible would appear:
90
+ * - no cells have been hydrated (Pyodide hasn't parsed the notebook), or
91
+ * - we are in headless run mode (code hidden) with no outputs to display.
92
+ */
93
+ export function shouldShowSpinner(input: {
94
+ hasCells: boolean;
95
+ hasOutput: boolean;
96
+ mode: AppMode;
97
+ codeHidden: boolean;
98
+ }): boolean {
99
+ const { hasCells, hasOutput, mode, codeHidden } = input;
100
+ if (!hasCells) {
101
+ return true;
102
+ }
103
+ return !hasOutput && mode === "read" && codeHidden;
104
+ }
105
+
68
106
  export const WasmSpinner: React.FC<PropsWithChildren> = ({ children }) => {
69
107
  const wasmInitialization = useAtomValue(wasmInitializationAtom);
70
108
 
@@ -0,0 +1,72 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { describe, expect, it } from "vitest";
4
+ import { shouldShowSpinner } from "../PyodideLoader";
5
+
6
+ describe("shouldShowSpinner", () => {
7
+ it("shows the spinner when there are no cells yet (Pyodide hasn't parsed)", () => {
8
+ expect(
9
+ shouldShowSpinner({
10
+ hasCells: false,
11
+ hasOutput: false,
12
+ mode: "read",
13
+ codeHidden: false,
14
+ }),
15
+ ).toBe(true);
16
+
17
+ expect(
18
+ shouldShowSpinner({
19
+ hasCells: false,
20
+ hasOutput: true,
21
+ mode: "edit",
22
+ codeHidden: false,
23
+ }),
24
+ ).toBe(true);
25
+ });
26
+
27
+ it("renders children once cells exist with code visible", () => {
28
+ // run mode, code visible, no outputs yet — the user can read the code
29
+ expect(
30
+ shouldShowSpinner({
31
+ hasCells: true,
32
+ hasOutput: false,
33
+ mode: "read",
34
+ codeHidden: false,
35
+ }),
36
+ ).toBe(false);
37
+ });
38
+
39
+ it("renders children once cells exist with cached outputs (snapshot case)", () => {
40
+ expect(
41
+ shouldShowSpinner({
42
+ hasCells: true,
43
+ hasOutput: true,
44
+ mode: "read",
45
+ codeHidden: true,
46
+ }),
47
+ ).toBe(false);
48
+ });
49
+
50
+ it("keeps the spinner up in headless run mode with no outputs", () => {
51
+ // read mode + code hidden + no outputs = nothing visible to render
52
+ expect(
53
+ shouldShowSpinner({
54
+ hasCells: true,
55
+ hasOutput: false,
56
+ mode: "read",
57
+ codeHidden: true,
58
+ }),
59
+ ).toBe(true);
60
+ });
61
+
62
+ it("never blocks edit mode once cells exist", () => {
63
+ expect(
64
+ shouldShowSpinner({
65
+ hasCells: true,
66
+ hasOutput: false,
67
+ mode: "edit",
68
+ codeHidden: true,
69
+ }),
70
+ ).toBe(false);
71
+ });
72
+ });
@@ -37,7 +37,7 @@ import type { IConnectionTransport } from "../websocket/transports/transport";
37
37
  import { PyodideRouter } from "./router";
38
38
  import { getWorkerRPC } from "./rpc";
39
39
  import { createShareableLink } from "./share";
40
- import { wasmInitializationAtom } from "./state";
40
+ import { wasmInitializationAtom, wasmInitStatusAtom } from "./state";
41
41
  import { fallbackFileStore, notebookFileStore } from "./store";
42
42
  import { isWasm } from "./utils";
43
43
  import type { SaveWorkerSchema } from "./worker/save-worker";
@@ -119,13 +119,15 @@ export class PyodideBridge implements RunRequests, EditRequests {
119
119
  // By initializing after, we get hits on cached network requests
120
120
  this.saveRpc = this.getSaveWorker();
121
121
  this.setInterruptBuffer();
122
+ store.set(wasmInitStatusAtom, "ready");
122
123
  this.initialized.resolve();
123
124
  });
124
125
  this.rpc.addMessageListener("initializingMessage", ({ message }) => {
125
126
  store.set(wasmInitializationAtom, message);
126
127
  });
127
128
  this.rpc.addMessageListener("initializedError", ({ error }) => {
128
- // If already resolved, show a toast
129
+ // If already initialized, surface as a toast and leave the deferred /
130
+ // init status alone — the worker is healthy, this is a runtime error.
129
131
  if (this.initialized.status === "resolved") {
130
132
  Logger.error(error);
131
133
  toast({
@@ -133,7 +135,9 @@ export class PyodideBridge implements RunRequests, EditRequests {
133
135
  description: error,
134
136
  variant: "danger",
135
137
  });
138
+ return;
136
139
  }
140
+ store.set(wasmInitStatusAtom, "error");
137
141
  this.initialized.reject(new Error(error));
138
142
  });
139
143
  this.rpc.addMessageListener("kernelMessage", ({ message }) => {
@@ -5,6 +5,9 @@ import { isOutputEmpty } from "../cells/outputs";
5
5
 
6
6
  export const wasmInitializationAtom = atom<string>("Initializing...");
7
7
 
8
+ export type WasmInitStatus = "loading" | "ready" | "error";
9
+ export const wasmInitStatusAtom = atom<WasmInitStatus>("loading");
10
+
8
11
  export const hasAnyOutputAtom = atom<boolean>((get) => {
9
12
  const notebook = get(notebookAtom);
10
13
  const runtimeStates = Object.values(notebook.cellRuntime);