@marimo-team/frontend 0.19.9-dev7 → 0.19.9-dev9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{edit-page-BpIuEeU6.js → edit-page-Bx2U8f0j.js} +6 -6
- package/dist/assets/{index-DFrkvKWf.js → index-CD6Gw4UH.js} +23 -23
- package/dist/assets/panels-DW8vF5Az.js +1 -0
- package/dist/assets/{run-page-_7E2SCeQ.js → run-page-D4d7rFuk.js} +1 -1
- package/dist/assets/utilities.esm-dm9SQStE.js +3 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/src/plugins/impl/anywidget/AnyWidgetPlugin.tsx +14 -12
- package/src/plugins/impl/anywidget/__tests__/AnyWidgetPlugin.test.tsx +6 -9
- package/src/plugins/impl/anywidget/__tests__/model.test.ts +17 -0
- package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +240 -0
- package/src/plugins/impl/anywidget/model.ts +96 -148
- package/src/plugins/impl/anywidget/widget-binding.ts +216 -0
- package/dist/assets/panels-IsIZwIow.js +0 -1
- package/dist/assets/utilities.esm-MA1QpjVT.js +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var TA=Object.defineProperty;var IA=(a,A,e)=>A in a?TA(a,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[A]=e;var GA=(a,A,e)=>IA(a,typeof A!="symbol"?A+"":A,e);import{s as cA}from"./chunk-LvLJmgfZ.js";import{d as _,i as gA,l as hA,u as j}from"./useEvent-BhXAndur.js";import{t as KA}from"./react-Bj1aDYRI.js";import{D as HA,Dt as UA,Et as VA,F as XA,L as WA,N as JA,Ot as qA,ai as zA,an as $A,en as Ae,ir as ee,l as ae,li as te,lr as dA,m as BA,vn as Ge,w as oe,y as se}from"./cells-DPp5cDaO.js";import{t as B}from"./compiler-runtime-B3qBwwSJ.js";import{n as re}from"./assertNever-CBU83Y6o.js";import{$ as ne,I as ke,L as Re,M as ie,N as le,Q as Ze,R as ce,S as ge,V as S,W as uA,X as he,Y as de,at as Be,ct as ue,et as Ye,rt as me,st as fe,tt as YA,z as pe}from"./utilities.esm-dm9SQStE.js";import{a as mA,d as D}from"./hotkeys-BHHWjLlp.js";import{C as xe,b as we}from"./utils-YqBXNpsM.js";import{r as oA}from"./constants-B6Cb__3x.js";import{S as sA,b as F,c as De,h as ve,o as Ee,x}from"./config-Q0O7_stz.js";import{a as ye,d as Ce}from"./switch-dWLWbbtg.js";import{n as be}from"./ErrorBoundary-B9Ifj8Jf.js";import{t as Me}from"./useEventListener-Cb-RVVEn.js";import{t as Ne}from"./jsx-runtime-ZmTK25f3.js";import{t as rA}from"./button-CZ3Cs4qb.js";import{n as _e,t as f}from"./cn-BKtXLv3a.js";import{Y as fA}from"./JsonOutput-PE5ko4gi.js";import{t as je}from"./createReducer-B3rBsy4P.js";import{t as Se}from"./requests-B4FYHTZl.js";import{t as W}from"./createLucideIcon-BCdY6lG5.js";import{a as Fe,f as pA,i as xA,n as Qe,o as Le,s as Pe}from"./layout-_O8thjaV.js";import{m as Oe}from"./download-os8QlW6l.js";import{c as Te}from"./maps-D2_Mq1pZ.js";import{c as Ie}from"./markdown-renderer-DJy8ww5d.js";import{n as Ke}from"./spinner-DA8-7wQv.js";import{i as He,n as Ue}from"./readonly-python-code-WjTf6Pdd.js";import{t as Ve}from"./uuid-DXdzqzcr.js";import{t as nA}from"./use-toast-BDYuj3zG.js";import{i as Xe}from"./session-BOFn9QrD.js";import{s as We,u as Je}from"./Combination-BAEdC-rz.js";import{t as kA}from"./tooltip-CMQz28hC.js";import{a as qe,r as wA,t as ze}from"./mode-Bn7pdJvO.js";import{_ as $e,f as Aa,g as ea,h as DA,m as vA,p as EA,v as yA,y as aa}from"./alert-dialog-BW4srmS0.js";import{r as CA}from"./share-ipf2hrOh.js";import{r as bA}from"./errors-TZBmrJmc.js";import{t as ta}from"./RenderHTML-D-of_-s7.js";import{i as Ga}from"./cell-link-B9b7J8QK.js";import{t as oa}from"./error-banner-B9ts0mNl.js";import{n as sa}from"./useAsyncData-BMGLSTg8.js";import{t as ra}from"./requests-De5yEBc8.js";import{t as na}from"./ws-DcVtI9Wj.js";import{t as ka}from"./request-registry-C5_pVc8Y.js";import{n as Ra}from"./types-iYXk7c05.js";import{n as ia}from"./runs-YUGrkyfE.js";var la=W("hourglass",[["path",{d:"M5 22h14",key:"ehvnwv"}],["path",{d:"M5 2h14",key:"pdyrp9"}],["path",{d:"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22",key:"1d314k"}],["path",{d:"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2",key:"1vvvr6"}]]),MA=W("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]),Za=W("square-arrow-right",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"m12 16 4-4-4-4",key:"1i9zcv"}]]),ca=W("unlink",[["path",{d:"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71",key:"yqzxt4"}],["path",{d:"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71",key:"4qinb0"}],["line",{x1:"8",x2:"8",y1:"2",y2:"5",key:"1041cp"}],["line",{x1:"2",x2:"5",y1:"8",y2:"8",key:"14m1p5"}],["line",{x1:"16",x2:"16",y1:"19",y2:"22",key:"rzdirn"}],["line",{x1:"19",x2:"22",y1:"16",y2:"16",key:"ox905f"}]]),ga=B(),r=cA(Ne(),1);const ha=a=>{let A=(0,ga.c)(10),{reason:e,canTakeover:t}=a,o=t===void 0?!1:t,G=da;if(o){let n;A[0]===Symbol.for("react.memo_cache_sentinel")?(n=(0,r.jsx)("div",{className:"flex justify-between",children:(0,r.jsx)("span",{className:"font-bold text-xl flex items-center mb-2",children:"Notebook already connected"})}),A[0]=n):n=A[0];let k;A[1]===e?k=A[2]:(k=(0,r.jsx)("span",{children:e}),A[1]=e,A[2]=k);let R;A[3]===o?R=A[4]:(R=o&&(0,r.jsxs)(rA,{onClick:G,variant:"outline","data-testid":"takeover-button",className:"shrink-0",children:[(0,r.jsx)(Za,{className:"w-4 h-4 mr-2"}),"Take over session"]}),A[3]=o,A[4]=R);let i;return A[5]!==k||A[6]!==R?(i=(0,r.jsx)("div",{className:"flex justify-center",children:(0,r.jsxs)(oa,{kind:"info",className:"mt-10 flex flex-col rounded p-3 max-w-[800px] mx-4",children:[n,(0,r.jsxs)("div",{className:"flex justify-between items-end text-base gap-20",children:[k,R]})]})}),A[5]=k,A[6]=R,A[7]=i):i=A[7],i}let s;return A[8]===e?s=A[9]:(s=(0,r.jsx)("div",{className:"font-mono text-center text-base text-(--red-11)",children:(0,r.jsx)("p",{children:e})}),A[8]=e,A[9]=s),s};async function da(){try{let a=new URL(window.location.href).searchParams;await ye.post(`/kernel/takeover?${a.toString()}`,{}),CA()}catch(a){nA({title:"Failed to take over session",description:bA(a),variant:"danger"})}}var Ba=B(),u=cA(KA(),1);const ua=a=>{let A=(0,Ba.c)(8),{connection:e,className:t,children:o}=a,G;A[0]!==e.canTakeover||A[1]!==e.reason||A[2]!==e.state?(G=e.state===x.CLOSED&&(0,r.jsx)(ha,{reason:e.reason,canTakeover:e.canTakeover}),A[0]=e.canTakeover,A[1]=e.reason,A[2]=e.state,A[3]=G):G=A[3];let s;return A[4]!==o||A[5]!==t||A[6]!==G?(s=(0,r.jsxs)("div",{className:t,children:[o,G]}),A[4]=o,A[5]=t,A[6]=G,A[7]=s):s=A[7],s};var Ya=B();const ma=a=>{let A=(0,Ya.c)(10),{title:e}=a,[t,o]=(0,u.useState)(e),[G,s]=(0,u.useState)(!0),n,k;A[0]!==t||A[1]!==e?(n=()=>{if(e!==t){s(!1);let g=setTimeout(()=>{o(e),s(!0)},300);return()=>clearTimeout(g)}},k=[e,t],A[0]=t,A[1]=e,A[2]=n,A[3]=k):(n=A[2],k=A[3]),(0,u.useEffect)(n,k);let R;A[4]===Symbol.for("react.memo_cache_sentinel")?(R=(0,r.jsx)(Ke,{className:"size-20 animate-spin text-primary","data-testid":"large-spinner",strokeWidth:1}),A[4]=R):R=A[4];let i=G?"opacity-100":"opacity-0",l;A[5]===i?l=A[6]:(l=f("mt-2 text-muted-foreground font-semibold text-lg transition-opacity duration-300",i),A[5]=i,A[6]=l);let c;return A[7]!==t||A[8]!==l?(c=(0,r.jsxs)("div",{className:"flex flex-col h-full flex-1 items-center justify-center p-4",children:[R,(0,r.jsx)("div",{className:l,children:t})]}),A[7]=t,A[8]=l,A[9]=c):c=A[9],c};var RA=B();const fa=a=>{let A=(0,RA.c)(2),{children:e}=a;if(!sA())return e;let t;return A[0]===e?t=A[1]:(t=(0,r.jsx)(pa,{children:e}),A[0]=e,A[1]=t),t};var pa=a=>{let A=(0,RA.c)(3),{children:e}=a,t;A[0]===Symbol.for("react.memo_cache_sentinel")?(t=[],A[0]=t):t=A[0];let{isPending:o,error:G}=sa(wa,t),s=j(Ze);if(o){let n;return A[1]===Symbol.for("react.memo_cache_sentinel")?(n=(0,r.jsx)(NA,{}),A[1]=n):n=A[1],n}if(!s&&ze()==="read"&&xa()){let n;return A[2]===Symbol.for("react.memo_cache_sentinel")?(n=(0,r.jsx)(NA,{}),A[2]=n):n=A[2],n}if(G)throw G;return e};function xa(){return Xe(oA.showCode,"false")||!gA.get(Ce)}const NA=a=>{let A=(0,RA.c)(2),e=j(ne),t;return A[0]===e?t=A[1]:(t=(0,r.jsx)(ma,{title:e}),A[0]=e,A[1]=t),t};async function wa(){return await de.INSTANCE.initialized.promise,!0}var Da={idle:"./favicon.ico",success:"data:image/x-icon;base64,AAABAAEAMDAAAAEACACoDgAAFgAAACgAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAAXXQAAFd3AwBWeAQAVngEAFd4AwBXeAQAVnkEAFh3AwBXdwQAVXcGAFd4BQBXeAQAWHgEAFd6AwBXeAMAVnkEAFZ5AwBXdwQAV3cFAFd4BABYeAQAV3gEAFh4BABXeAQA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYYGAYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcYGBgYGBgYGBgYGBgYGAcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGBgYGBgYGBgYGBgYGBgYGBgYCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAsYGBgYGBgYDA0OChkZGRkKDg0MGBgYGBgYGAsAAAAAAAAAAAAAAAAAAAAAAAAAAxgYGBgYGA8QGRkZGRkZGRkZGRkZEA8YGBgYGBgDAAAAAAAAAAAAAAAAAAAAAAARGBgYGBgSChkZGRkZGRkZGRkZGRkZGRkKEhgYGBgYEQAAAAAAAAAAAAAAAAAAAAMYGBgYGBMZGRkZGRkZGRkZGRkZGRkZGRkZGRMYGBgYGAMAAAAAAAAAAAAAAAAACxgYGBgUEBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkQFBgYGBgLAAAAAAAAAAAAAAAKGBgYGBQKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChQYGBgYCgAAAAAAAAAAAAAEGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYBAAAAAAAAAAAAAgYGBgYExkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkTGBgYGAgAAAAAAAAAAAkYGBgSGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZEhgYGAkAAAAAAAAAAhgYGBgKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChgYGBgCAAAAAAAABxgYGA8ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQ8YGBgHAAAAAAABGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYAQAAAAACGBgYDBkZGRkZGRkZGRkZGRkXFhYVGRkZGRkZGRkZGRkZGRkZGRkMGBgYAgAAAAADGBgYDRkZGRkZGRkZGRkZGRcYGBgYFxkZGRkZGRkZGRkZGRkZGRkNGBgYAwAAAAAEGBgYDhkZGRkZGRkZGRkZFxgYGBgYGBcZGRkZGRkZGRkZGRkZGRkOGBgYBAAAAAAFGBgYChkZGRkZGRkZGRkXGBgYGBgYGBgXGRkZGRkZGRkZGRkZGRkKGBgYBQAAAAAGGBgYGRkZGRkZGRkZGRUYGBgYGBgYGBgYFxkZGRkZGRkZGRkZGRkZGBgYBgAAAAAYGBgYGRkZGRkZGRkZGRYYGBgYFxcYGBgYGBcZGRkZGRkZGRkZGRkZGBgYGAAAAAAYGBgYGRkZGRkZGRkZGRYYGBgXGRkXGBgYGBgXGRkZGRkZGRkZGRkZGBgYGAAAAAAGGBgYGRkZGRkZGRkZGRUWFhcZGRkZFxgYGBgYFxkZGRkZGRkZGRkZGBgYBgAAAAAFGBgYChkZGRkZGRkZGRkZGRkZGRkZGRcYGBgYGBcZGRkZGRkZGRkKGBgYBQAAAAAEGBgYDhkZGRkZGRkZGRkZGRkZGRkZGRkXGBgYGBYZGRkZGRkZGRkOGBgYBAAAAAADGBgYDRkZGRkZGRkZGRkZGRkZGRkZGRkZFxgYGBYZGRkZGRkZGRkNGBgYAwAAAAACGBgYDBkZGRkZGRkZGRkZGRkZGRkZGRkZGRUWFhUZGRkZGRkZGRkMGBgYAgAAAAABGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYAQAAAAAABxgYGA8ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQ8YGBgHAAAAAAAAAhgYGBgKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChgYGBgCAAAAAAAAAAkYGBgSGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZEhgYGAkAAAAAAAAAAAgYGBgYExkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkTGBgYGAgAAAAAAAAAAAAEGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYBAAAAAAAAAAAAAAKGBgYGBQKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChQYGBgYCgAAAAAAAAAAAAAACxgYGBgUEBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkQFBgYGBgLAAAAAAAAAAAAAAAAAAMYGBgYGBMZGRkZGRkZGRkZGRkZGRkZGRkZGRMYGBgYGAMAAAAAAAAAAAAAAAAAAAARGBgYGBgSChkZGRkZGRkZGRkZGRkZGRkKEhgYGBgYEQAAAAAAAAAAAAAAAAAAAAAAAxgYGBgYGA8QGRkZGRkZGRkZGRkZEA8YGBgYGBgDAAAAAAAAAAAAAAAAAAAAAAAAAAsYGBgYGBgYDA0OChkZGRkKDg0MGBgYGBgYGAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGBgYGBgYGBgYGBgYGBgYGBgYCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcYGBgYGBgYGBgYGBgYGAcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYYGAYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP//gAH//wAA//4AAH//AAD/+AAAH/8AAP/gAAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD8AAAAAD8AAPgAAAAAHwAA+AAAAAAfAADwAAAAAA8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAADwAAAAAA8AAPgAAAAAHwAA+AAAAAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/+AAAH/8AAP/+AAB//wAA//+AAf//AAD///////8AAP///////wAA",running:"data:image/x-icon;base64,AAABAAEAMDAAAAEACACoDgAAFgAAACgAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAA0YsAAMWEAwDHgwIAx4QBAMeEAgDGhAIAyIUBAMaFAwDGhAIAxoIAAMaFAgDHhAIAx4QCAMiFAwDHhAIAx4YAAMaFAgDHhQEAxoMCAMeEAgDHgwQAx4QDAMeDAgDHhAIA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYYGAYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcYGBgYGBgYGBgYGBgYGAcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGBgYGBgYGBgYGBgYGBgYGBgYCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAsYGBgYGBgYDA0OChkZGRkKDg0MGBgYGBgYGAsAAAAAAAAAAAAAAAAAAAAAAAAAAxgYGBgYGA8QGRkZGRkZGRkZGRkZEA8YGBgYGBgDAAAAAAAAAAAAAAAAAAAAAAARGBgYGBgSChkZGRkZGRkZGRkZGRkZGRkKEhgYGBgYEQAAAAAAAAAAAAAAAAAAAAMYGBgYGBMZGRkZGRkZGRkZGRkZGRkZGRkZGRMYGBgYGAMAAAAAAAAAAAAAAAAACxgYGBgUEBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkQFBgYGBgLAAAAAAAAAAAAAAAKGBgYGBQKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChQYGBgYCgAAAAAAAAAAAAAEGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYBAAAAAAAAAAAAAgYGBgYExkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkTGBgYGAgAAAAAAAAAAAkYGBgSGRkZGRkZGRkZFRgWFxkZGRkZGRkZGRkZGRkZGRkZEhgYGAkAAAAAAAAAAhgYGBgKGRkZGRkZGRkZFhgYGBYVGRkZGRkZGRkZGRkZGRkZChgYGBgCAAAAAAAABxgYGA8ZGRkZGRkZGRkZGBgYGBgYFxkZGRkZGRkZGRkZGRkZGQ8YGBgHAAAAAAABGBgYGBAZGRkZGRkZGRkZGBgYGBgYGBYVGRkZGRkZGRkZGRkZGRAYGBgYAQAAAAACGBgYDBkZGRkZGRkZGRkZGBgYGBgYGBgYFxkZGRkZGRkZGRkZGRkMGBgYAgAAAAADGBgYDRkZGRkZGRkZGRkZGBgYGBgYGBgYGBYVGRkZGRkZGRkZGRkNGBgYAwAAAAAEGBgYDhkZGRkZGRkZGRkZGBgYGBUWGBgYGBgYFxkZGRkZGRkZGRkOGBgYBAAAAAAFGBgYChkZGRkZGRkZGRkZGBgYGBkZFxgYGBgYGBYVGRkZGRkZGRkKGBgYBQAAAAAGGBgYGRkZGRkZGRkZGRkZGBgYGBkZGRUWGBgYGBgYFxkZGRkZGRkZGBgYBgAAAAAYGBgYGRkZGRkZGRkZGRkZGBgYGBkZGRkZFxgYGBgYFxkZGRkZGRkZGBgYGAAAAAAYGBgYGRkZGRkZGRkZGRkZGBgYGBkZGRkZFxgYGBgYFhkZGRkZGRkZGBgYGAAAAAAGGBgYGRkZGRkZGRkZGRkZGBgYGBkZGRkXGBgYGBgYFRkZGRkZGRkZGBgYBgAAAAAFGBgYChkZGRkZGRkZGRkZGBgYGBkZFxgYGBgYGBcZGRkZGRkZGRkKGBgYBQAAAAAEGBgYDhkZGRkZGRkZGRkZGBgYGBkXGBgYGBgYFxkZGRkZGRkZGRkOGBgYBAAAAAADGBgYDRkZGRkZGRkZGRkZGBgYGBgYGBgYGBcZGRkZGRkZGRkZGRkNGBgYAwAAAAACGBgYDBkZGRkZGRkZGRkZGBgYGBgYGBgYFxkZGRkZGRkZGRkZGRkMGBgYAgAAAAABGBgYGBAZGRkZGRkZGRkZGBgYGBgYGBcZGRkZGRkZGRkZGRkZGRAYGBgYAQAAAAAABxgYGA8ZGRkZGRkZGRkZGBgYGBgYFxkZGRkZGRkZGRkZGRkZGQ8YGBgHAAAAAAAAAhgYGBgKGRkZGRkZGRkZFhgYGBcZGRkZGRkZGRkZGRkZGRkZChgYGBgCAAAAAAAAAAkYGBgSGRkZGRkZGRkZFRYWFxkZGRkZGRkZGRkZGRkZGRkZEhgYGAkAAAAAAAAAAAgYGBgYExkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkTGBgYGAgAAAAAAAAAAAAEGBgYGBAZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRAYGBgYBAAAAAAAAAAAAAAKGBgYGBQKGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZChQYGBgYCgAAAAAAAAAAAAAACxgYGBgUEBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkQFBgYGBgLAAAAAAAAAAAAAAAAAAMYGBgYGBMZGRkZGRkZGRkZGRkZGRkZGRkZGRMYGBgYGAMAAAAAAAAAAAAAAAAAAAARGBgYGBgSChkZGRkZGRkZGRkZGRkZGRkKEhgYGBgYEQAAAAAAAAAAAAAAAAAAAAAAAxgYGBgYGA8QGRkZGRkZGRkZGRkZEA8YGBgYGBgDAAAAAAAAAAAAAAAAAAAAAAAAAAsYGBgYGBgYDA0OChkZGRkKDg0MGBgYGBgYGAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGBgYGBgYGBgYGBgYGBgYGBgYCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcYGBgYGBgYGBgYGBgYGAcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYYGAYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP//gAH//wAA//4AAH//AAD/+AAAH/8AAP/gAAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD8AAAAAD8AAPgAAAAAHwAA+AAAAAAfAADwAAAAAA8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAADwAAAAAA8AAPgAAAAAHwAA+AAAAAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/+AAAH/8AAP/+AAB//wAA//+AAf//AAD///////8AAP///////wAA",error:"data:image/x-icon;base64,AAABAAEAMDAAAAEACACoDgAAFgAAACgAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAALi7oACcn2wAlJdsAJibcACYm3AAmJtsAJyfdACUl3QAmJtsAKCjdACUl3AAmJtwAJyfcACYm3AAoKNcAJibcACcn3AAmJt0AJibcACUl3AAmJtwAKCjbACcn3AAmJtsAJibcAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYZGQYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcZGRkZGRkZGRkZGRkZGQcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGRkZGRkZGRkZGRkZGRkZGRkZCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAsZGRkZGRkZDA0ODxoaGhoPDg0MGRkZGRkZGQsAAAAAAAAAAAAAAAAAAAAAAAAAAxkZGRkZGRARGhoaGhoaGhoaGhoaERAZGRkZGRkDAAAAAAAAAAAAAAAAAAAAAAASGRkZGRkTDxoaGhoaGhoaGhoaGhoaGhoPExkZGRkZEgAAAAAAAAAAAAAAAAAAAAMZGRkZGRQaGhoaGhoaGhoaGhoaGhoaGhoaGhQZGRkZGQMAAAAAAAAAAAAAAAAACxkZGRkVERoaGhoaGhoaGhoaGhoaGhoaGhoaGhoRFRkZGRkLAAAAAAAAAAAAAAAKGRkZGRUPGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaDxUZGRkZCgAAAAAAAAAAAAAEGRkZGREaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhEZGRkZBAAAAAAAAAAAAAgZGRkZFBoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoUGRkZGQgAAAAAAAAAAAkZGRkTGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaExkZGQkAAAAAAAAAAhkZGRkPGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaDxkZGRkCAAAAAAAABxkZGRAaGhoaGhoaGhYXFxYaGhoaGhoaGhgXFxYaGhoaGhoaGhAZGRkHAAAAAAABGRkZGREaGhoaGhoaGhcZGRkYGhoaGhoaGBkZGRcaGhoaGhoaGhEZGRkZAQAAAAACGRkZDBoaGhoaGhoaGhcZGRkZGBoaGhoYGRkZGRcaGhoaGhoaGhoMGRkZAgAAAAADGRkZDRoaGhoaGhoaGhgZGRkZGRgaGhgZGRkZGRYaGhoaGhoaGhoNGRkZAwAAAAAEGRkZDhoaGhoaGhoaGhoYGRkZGRkYGBkZGRkZGBoaGhoaGhoaGhoOGRkZBAAAAAAFGRkZDxoaGhoaGhoaGhoaGBkZGRkZGRkZGRkYGhoaGhoaGhoaGhoPGRkZBQAAAAAGGRkZGhoaGhoaGhoaGhoaGhgZGRkZGRkZGRgaGhoaGhoaGhoaGhoaGRkZBgAAAAAZGRkZGhoaGhoaGhoaGhoaGhoYGRkZGRkZGBoaGhoaGhoaGhoaGhoaGRkZGQAAAAAZGRkZGhoaGhoaGhoaGhoaGhoYGRkZGRkZGBoaGhoaGhoaGhoaGhoaGRkZGQAAAAAGGRkZGhoaGhoaGhoaGhoaGhgZGRkZGRkZGRgaGhoaGhoaGhoaGhoaGRkZBgAAAAAFGRkZDxoaGhoaGhoaGhoaGBkZGRkZGRkZGRkYGhoaGhoaGhoaGhoPGRkZBQAAAAAEGRkZDhoaGhoaGhoaGhoYGRkZGRkYGBkZGRkZGBoaGhoaGhoaGhoOGRkZBAAAAAADGRkZDRoaGhoaGhoaGhYZGRkZGRgaGhgZGRkZGRgaGhoaGhoaGhoNGRkZAwAAAAACGRkZDBoaGhoaGhoaGhcZGRkZGBoaGhoYGRkZGRcaGhoaGhoaGhoMGRkZAgAAAAABGRkZGREaGhoaGhoaGhcZGRkYGhoaGhoaGBkZGRcaGhoaGhoaGhEZGRkZAQAAAAAABxkZGRAaGhoaGhoaGhYXFxgaGhoaGhoaGhYXFxYaGhoaGhoaGhAZGRkHAAAAAAAAAhkZGRkPGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaDxkZGRkCAAAAAAAAAAkZGRkTGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaExkZGQkAAAAAAAAAAAgZGRkZFBoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoUGRkZGQgAAAAAAAAAAAAEGRkZGREaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhEZGRkZBAAAAAAAAAAAAAAKGRkZGRUPGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaDxUZGRkZCgAAAAAAAAAAAAAACxkZGRkVERoaGhoaGhoaGhoaGhoaGhoaGhoaGhoRFRkZGRkLAAAAAAAAAAAAAAAAAAMZGRkZGRQaGhoaGhoaGhoaGhoaGhoaGhoaGhQZGRkZGQMAAAAAAAAAAAAAAAAAAAASGRkZGRkTDxoaGhoaGhoaGhoaGhoaGhoPExkZGRkZEgAAAAAAAAAAAAAAAAAAAAAAAxkZGRkZGRARGhoaGhoaGhoaGhoaERAZGRkZGRkDAAAAAAAAAAAAAAAAAAAAAAAAAAsZGRkZGRkZDA0ODxoaGhoPDg0MGRkZGRkZGQsAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJGRkZGRkZGRkZGRkZGRkZGRkZCQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcZGRkZGRkZGRkZGRkZGQcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMEBQYZGQYFBAMCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP//gAH//wAA//4AAH//AAD/+AAAH/8AAP/gAAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAB/AAD8AAAAAD8AAPgAAAAAHwAA+AAAAAAfAADwAAAAAA8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAADwAAAAAA8AAPgAAAAAHwAA+AAAAAAfAAD8AAAAAD8AAP4AAAAAfwAA/wAAAAD/AAD/gAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/+AAAH/8AAP/+AAB//wAA//+AAf//AAD///////8AAP///////wAA"};async function Q(a){return Da[a]}function va(a){if(document.visibilityState==="visible")return;let A=async()=>{a===0?new Notification("Execution completed",{body:"Your notebook run completed successfully.",icon:await Q("success")}):new Notification("Execution failed",{body:`Your notebook run encountered ${a} error(s).`,icon:await Q("error")})};!("Notification"in window)||Notification.permission==="denied"||(Notification.permission==="granted"?A():Notification.permission==="default"&&Notification.requestPermission().then(e=>{e==="granted"&&A()}))}const Ea=a=>{let{isRunning:A}=a,e=HA(),t=document.querySelector("link[rel~='icon']");t||(t=document.createElement("link"),t.rel="icon",document.getElementsByTagName("head")[0].append(t)),(0,u.useEffect)(()=>{!A&&t.href.includes("favicon")||(async()=>{let G;if(G=A?"running":e.length===0?"success":"error",t.href=await Q(G),!document.hasFocus())return;let s=setTimeout(async()=>{t.href=await Q("idle")},3e3);return()=>clearTimeout(s)})()},[A,e,t]);let o=ge(A)??A;return(0,u.useEffect)(()=>{o&&!A&&va(e.length)},[e,o,A]),Me(window,"focus",async G=>{A||(t.href=await Q("idle"))}),null};function ya(){let{cellRuntime:a}=gA.get(se),A=mA.entries(a).find(([e,t])=>t.status==="running");A&&Ga(A[0],"focus")}var L=B();const Ca=a=>{let A=(0,L.c)(22),{connection:e,isRunning:t}=a,{mode:o}=j(qe),G=e.state===x.CLOSED,s=e.state===x.OPEN,n;A[0]!==e.canTakeover||A[1]!==G?(n=G&&!e.canTakeover&&(0,r.jsx)(_a,{}),A[0]=e.canTakeover,A[1]=G,A[2]=n):n=A[2];let k=o==="read"?"fixed":"absolute",R;A[3]===k?R=A[4]:(R=f("z-50 top-4 left-4",k),A[3]=k,A[4]=R);let i;A[5]!==s||A[6]!==t?(i=s&&t&&(0,r.jsx)(Na,{}),A[5]=s,A[6]=t,A[7]=i):i=A[7];let l;A[8]!==e.canTakeover||A[9]!==G?(l=G&&!e.canTakeover&&(0,r.jsx)(ba,{}),A[8]=e.canTakeover,A[9]=G,A[10]=l):l=A[10];let c;A[11]!==e.canTakeover||A[12]!==G?(c=G&&e.canTakeover&&(0,r.jsx)(Ma,{}),A[11]=e.canTakeover,A[12]=G,A[13]=c):c=A[13];let g;A[14]!==R||A[15]!==i||A[16]!==l||A[17]!==c?(g=(0,r.jsxs)("div",{className:R,children:[i,l,c]}),A[14]=R,A[15]=i,A[16]=l,A[17]=c,A[18]=g):g=A[18];let h;return A[19]!==n||A[20]!==g?(h=(0,r.jsxs)(r.Fragment,{children:[n,g]}),A[19]=n,A[20]=g,A[21]=h):h=A[21],h};var iA="print:hidden pointer-events-auto hover:cursor-pointer",ba=()=>{let a=(0,L.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsx)(kA,{content:"App disconnected",children:(0,r.jsx)("div",{className:iA,children:(0,r.jsx)(ca,{className:"w-[25px] h-[25px] text-(--red-11)"})})}),a[0]=A):A=a[0],A},Ma=()=>{let a=(0,L.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsx)(kA,{content:"Notebook locked",children:(0,r.jsx)("div",{className:iA,children:(0,r.jsx)(He,{className:"w-[25px] h-[25px] text-(--blue-11)"})})}),a[0]=A):A=a[0],A},Na=()=>{let a=(0,L.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsx)(kA,{content:"Jump to running cell",side:"right",children:(0,r.jsx)("div",{className:iA,"data-testid":"loading-indicator",onClick:ya,children:(0,r.jsx)(la,{className:"running-app-icon",size:30,strokeWidth:1})})}),a[0]=A):A=a[0],A},_a=()=>{let a=(0,L.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"noise"}),(0,r.jsx)("div",{className:"disconnected-gradient"})]}),a[0]=A):A=a[0],A},C=B(),ja=$e,Sa=aa,Fa=We(ea),_A=u.forwardRef((a,A)=>{let e=(0,C.c)(9),t,o;e[0]===a?(t=e[1],o=e[2]):({className:t,...o}=a,e[0]=a,e[1]=t,e[2]=o);let G;e[3]===t?G=e[4]:(G=f("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),e[3]=t,e[4]=G);let s;return e[5]!==o||e[6]!==A||e[7]!==G?(s=(0,r.jsx)(DA,{className:G,...o,ref:A}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});_A.displayName=DA.displayName;var Qa=_e("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),jA=u.forwardRef((a,A)=>{let e=(0,C.c)(15),t,o,G,s;e[0]===a?(t=e[1],o=e[2],G=e[3],s=e[4]):({side:s,className:o,children:t,...G}=a,e[0]=a,e[1]=t,e[2]=o,e[3]=G,e[4]=s);let n=s===void 0?"right":s,k;e[5]===Symbol.for("react.memo_cache_sentinel")?(k=(0,r.jsx)(_A,{}),e[5]=k):k=e[5];let R;e[6]!==o||e[7]!==n?(R=f(Qa({side:n}),o),e[6]=o,e[7]=n,e[8]=R):R=e[8];let i;e[9]===Symbol.for("react.memo_cache_sentinel")?(i=(0,r.jsxs)(Aa,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[(0,r.jsx)(Te,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]}),e[9]=i):i=e[9];let l;return e[10]!==t||e[11]!==G||e[12]!==A||e[13]!==R?(l=(0,r.jsx)(Fa,{children:(0,r.jsxs)(Je,{children:[k,(0,r.jsxs)(EA,{ref:A,className:R,...G,children:[t,i]})]})}),e[10]=t,e[11]=G,e[12]=A,e[13]=R,e[14]=l):l=e[14],l});jA.displayName=EA.displayName;var La=a=>{let A=(0,C.c)(8),e,t;A[0]===a?(e=A[1],t=A[2]):({className:e,...t}=a,A[0]=a,A[1]=e,A[2]=t);let o;A[3]===e?o=A[4]:(o=f("flex flex-col space-y-2 text-center sm:text-left",e),A[3]=e,A[4]=o);let G;return A[5]!==t||A[6]!==o?(G=(0,r.jsx)("div",{className:o,...t}),A[5]=t,A[6]=o,A[7]=G):G=A[7],G};La.displayName="SheetHeader";var Pa=a=>{let A=(0,C.c)(8),e,t;A[0]===a?(e=A[1],t=A[2]):({className:e,...t}=a,A[0]=a,A[1]=e,A[2]=t);let o;A[3]===e?o=A[4]:(o=f("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),A[3]=e,A[4]=o);let G;return A[5]!==t||A[6]!==o?(G=(0,r.jsx)("div",{className:o,...t}),A[5]=t,A[6]=o,A[7]=G):G=A[7],G};Pa.displayName="SheetFooter";var Oa=u.forwardRef((a,A)=>{let e=(0,C.c)(9),t,o;e[0]===a?(t=e[1],o=e[2]):({className:t,...o}=a,e[0]=a,e[1]=t,e[2]=o);let G;e[3]===t?G=e[4]:(G=f("text-lg font-semibold text-foreground",t),e[3]=t,e[4]=G);let s;return e[5]!==o||e[6]!==A||e[7]!==G?(s=(0,r.jsx)(yA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});Oa.displayName=yA.displayName;var Ta=u.forwardRef((a,A)=>{let e=(0,C.c)(9),t,o;e[0]===a?(t=e[1],o=e[2]):({className:t,...o}=a,e[0]=a,e[1]=t,e[2]=o);let G;e[3]===t?G=e[4]:(G=f("text-sm text-muted-foreground",t),e[3]=t,e[4]=G);let s;return e[5]!==o||e[6]!==A||e[7]!==G?(s=(0,r.jsx)(vA,{ref:A,className:G,...o}),e[5]=o,e[6]=A,e[7]=G,e[8]=s):s=e[8],s});Ta.displayName=vA.displayName;var Ia=B();const lA=(0,u.memo)(()=>{let a=(0,Ia.c)(1),A;return a[0]===Symbol.for("react.memo_cache_sentinel")?(A=(0,r.jsx)(fe,{name:YA.SIDEBAR}),a[0]=A):A=a[0],A});lA.displayName="SidebarSlot";var Ka=B();const Ha=a=>{let A=(0,Ka.c)(6),{openWidth:e}=a,t;A[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)(Sa,{className:"lg:hidden",asChild:!0,children:(0,r.jsx)(rA,{variant:"ghost",className:"bg-background",children:(0,r.jsx)(MA,{className:"w-5 h-5"})})}),A[0]=t):t=A[0];let o;A[1]===e?o=A[2]:(o={maxWidth:e},A[1]=e,A[2]=o);let G;A[3]===Symbol.for("react.memo_cache_sentinel")?(G=(0,r.jsx)(lA,{}),A[3]=G):G=A[3];let s;return A[4]===o?s=A[5]:(s=(0,r.jsxs)(ja,{children:[t,(0,r.jsx)(jA,{className:"w-full px-3 h-full flex flex-col overflow-y-auto",style:o,side:"left",children:G})]}),A[4]=o,A[5]=s),s};var Ua=B();const Va=a=>{let A=(0,Ua.c)(7),{isOpen:e,toggle:t}=a,o=e?"rotate-0":"rotate-180",G;A[0]===o?G=A[1]:(G=f("h-5 w-5 transition-transform ease-in-out duration-700",o),A[0]=o,A[1]=G);let s;A[2]===G?s=A[3]:(s=(0,r.jsx)(Oe,{className:G}),A[2]=G,A[3]=s);let n;return A[4]!==s||A[5]!==t?(n=(0,r.jsx)("div",{className:"invisible lg:visible absolute top-[12px] right-[16px] z-20",children:(0,r.jsx)(rA,{onClick:t,className:"w-10 h-8",variant:"ghost",size:"icon",children:s})}),A[4]=s,A[5]=t,A[6]=n):n=A[6],n};var Xa=B();const Wa=a=>{let A=(0,Xa.c)(11),{isOpen:e,toggle:t,width:o}=a,G=e?o:ke,s;A[0]===G?s=A[1]:(s={width:G},A[0]=G,A[1]=s);let n;A[2]===Symbol.for("react.memo_cache_sentinel")?(n=f("app-sidebar auto-collapse-nav","top-0 left-0 z-20 h-full hidden lg:block relative transition-[width] ease-in-out duration-300"),A[2]=n):n=A[2];let k;A[3]!==e||A[4]!==t?(k=(0,r.jsx)(Va,{isOpen:e,toggle:t}),A[3]=e,A[4]=t,A[5]=k):k=A[5];let R;A[6]===Symbol.for("react.memo_cache_sentinel")?(R=(0,r.jsx)("div",{className:"relative h-full flex flex-col px-3 pb-16 pt-14 overflow-y-auto shadow-sm border-l",children:(0,r.jsx)(lA,{})}),A[6]=R):R=A[6];let i;return A[7]!==e||A[8]!==s||A[9]!==k?(i=(0,r.jsxs)("aside",{"data-expanded":e,style:s,className:n,children:[k,R]}),A[7]=e,A[8]=s,A[9]=k,A[10]=i):i=A[10],i};var Ja=B();const qa=a=>{let A=(0,Ja.c)(15),{children:e}=a,[t,o]=hA(ce),{isOpen:G,width:s}=t;if(ue(YA.SIDEBAR).length===0)return e;let n;A[0]===s?n=A[1]:(n=Re(s),A[0]=s,A[1]=n);let k=n,R;A[2]!==o||A[3]!==G?(R=()=>o({type:"toggle",isOpen:!G}),A[2]=o,A[3]=G,A[4]=R):R=A[4];let i;A[5]!==G||A[6]!==k||A[7]!==R?(i=(0,r.jsx)(Wa,{isOpen:G,width:k,toggle:R}),A[5]=G,A[6]=k,A[7]=R,A[8]=i):i=A[8];let l;A[9]===k?l=A[10]:(l=(0,r.jsx)("div",{className:"absolute top-3 left-4 flex items-center z-50",children:(0,r.jsx)(Ha,{openWidth:k})}),A[9]=k,A[10]=l);let c;return A[11]!==e||A[12]!==i||A[13]!==l?(c=(0,r.jsxs)("div",{className:"inset-0 absolute flex",children:[i,l,e]}),A[11]=e,A[12]=i,A[13]=l,A[14]=c):c=A[14],c};var za=B();const $a=a=>{let A=(0,za.c)(17),{width:e,connection:t,isRunning:o,children:G}=a,s=t.state,n;A[0]===o?n=A[1]:(n=(0,r.jsx)(Ea,{isRunning:o}),A[0]=o,A[1]=n);let k;A[2]!==t||A[3]!==o?(k=(0,r.jsx)(Ca,{connection:t,isRunning:o}),A[2]=t,A[3]=o,A[4]=k):k=A[4];let R;A[5]!==s||A[6]!==e?(R=f("mathjax_ignore",De(s)&&"disconnected","bg-background w-full h-full text-textColor","flex flex-col overflow-y-auto",e==="full"&&"config-width-full",e==="columns"?"overflow-x-auto":"overflow-x-hidden","print:height-fit"),A[5]=s,A[6]=e,A[7]=R):R=A[7];let i;A[8]!==G||A[9]!==s||A[10]!==R||A[11]!==e?(i=(0,r.jsx)(fa,{children:(0,r.jsx)(qa,{children:(0,r.jsx)("div",{id:"App","data-config-width":e,"data-connection-state":s,className:R,children:G})})}),A[8]=G,A[9]=s,A[10]=R,A[11]=e,A[12]=i):i=A[12];let l;return A[13]!==n||A[14]!==k||A[15]!==i?(l=(0,r.jsxs)(r.Fragment,{children:[n,k,i]}),A[13]=n,A[14]=k,A[15]=i,A[16]=l):l=A[16],l};function At(a){return a.kind==="missing"}function SA(a){return a.kind==="installing"}var{valueAtom:et,useActions:at}=je(()=>({packageAlert:null,startupLogsAlert:null,packageLogs:{}}),{addPackageAlert:(a,A)=>{var o;let e={...a.packageLogs};if(SA(A)&&A.logs&&A.log_status)for(let[G,s]of Object.entries(A.logs))switch(A.log_status){case"start":e[G]=s;break;case"append":e[G]=(e[G]||"")+s;break;case"done":e[G]=(e[G]||"")+s;break}let t=((o=a.packageAlert)==null?void 0:o.id)||Ve();return{...a,packageAlert:{id:t,...A},packageLogs:e}},clearPackageAlert:(a,A)=>a.packageAlert!==null&&a.packageAlert.id===A?{...a,packageAlert:null,packageLogs:{}}:a,addStartupLog:(a,A)=>{var t;let e=((t=a.startupLogsAlert)==null?void 0:t.content)||"";return{...a,startupLogsAlert:{...a.startupLogsAlert,content:e+A.content,status:A.status}}},clearStartupLogsAlert:a=>({...a,startupLogsAlert:null})});const tt=()=>j(et);function FA(){return at()}var QA=B();const LA=(0,u.memo)(a=>{let A=(0,QA.c)(11),{appConfig:e,mode:t,children:o}=a,{selectedLayout:G,layoutData:s}=Fe(),n=j(wA);if(t==="edit"&&!n)return o;let k;if(A[0]!==t||A[1]!==G){k=G;let c=new URLSearchParams(window.location.search);if(t==="read"&&c.has(oA.viewAs)){let g=c.get(oA.viewAs);Ra.includes(g)&&(k=g)}A[0]=t,A[1]=G,A[2]=k}else k=A[2];let R;A[3]===k?R=A[4]:(R=Le.find(c=>c.type===k),A[3]=k,A[4]=R);let i=R;if(!i)return o;let l;return A[5]!==e||A[6]!==k||A[7]!==s||A[8]!==t||A[9]!==i?(l=(0,r.jsx)(Gt,{appConfig:e,mode:t,plugin:i,layoutData:s,finalLayout:k}),A[5]=e,A[6]=k,A[7]=s,A[8]=t,A[9]=i,A[10]=l):l=A[10],l});LA.displayName="CellsRenderer";const Gt=a=>{let A=(0,QA.c)(18),{appConfig:e,mode:t,plugin:o,layoutData:G,finalLayout:s}=a,n=JA(),{setCurrentLayoutData:k}=xA(),R,i,l,c,g;if(A[0]!==e||A[1]!==s||A[2]!==G||A[3]!==t||A[4]!==n||A[5]!==o){let w=ae(n);R=o.Component,i=e,l=t,c=w,g=G[s]||o.getInitialLayout(w),A[0]=e,A[1]=s,A[2]=G,A[3]=t,A[4]=n,A[5]=o,A[6]=R,A[7]=i,A[8]=l,A[9]=c,A[10]=g}else R=A[6],i=A[7],l=A[8],c=A[9],g=A[10];let h;return A[11]!==R||A[12]!==k||A[13]!==i||A[14]!==l||A[15]!==c||A[16]!==g?(h=(0,r.jsx)(R,{appConfig:i,mode:l,cells:c,layout:g,setLayout:k}),A[11]=R,A[12]=k,A[13]=i,A[14]=l,A[15]=c,A[16]=g,A[17]=h):h=A[17],h};var ot=class PA{constructor(A){GA(this,"hasStarted",!1);GA(this,"handleReadyEvent",A=>{let e=A.detail.objectId;if(!this.uiElementRegistry.has(e))return;let t=this.uiElementRegistry.lookupValue(e);t!==void 0&&this.sendComponentValues({objectIds:[e],values:[t]}).catch(o=>{D.warn(o)})});this.uiElementRegistry=A}static get INSTANCE(){let A="_marimo_private_RuntimeState";return window[A]||(window[A]=new PA(S)),window[A]}get sendComponentValues(){if(!this._sendComponentValues)throw Error("sendComponentValues is not set");return this._sendComponentValues}start(A){if(this.hasStarted){D.warn("RuntimeState already started");return}this._sendComponentValues=A,document.addEventListener(uA.TYPE,this.handleReadyEvent),this.hasStarted=!0}stop(){if(!this.hasStarted){D.warn("RuntimeState already stopped");return}document.removeEventListener(uA.TYPE,this.handleReadyEvent),this.hasStarted=!1}};function st(a){if(a.static)return Ye.empty();if(sA())return he();let A=a.url;return new na(A,void 0,{maxRetries:10,debug:!1,startClosed:!0,connectionTimeout:1e4})}function rt(a){let{onOpen:A,onMessage:e,onClose:t,onError:o,waitToConnect:G}=a,[s]=(0,u.useState)(()=>{let n=st(a);return n.addEventListener("open",A),n.addEventListener("close",t),n.addEventListener("error",o),n.addEventListener("message",e),n});return(0,u.useEffect)(()=>(s.readyState===WebSocket.CLOSED&&G().then(()=>s.reconnect()).catch(n=>{D.error("Healthy connection never made",n),s.close()}),()=>{D.warn("useConnectionTransport is unmounting. This likely means there is a bug."),s.close(),s.removeEventListener("open",A),s.removeEventListener("close",t),s.removeEventListener("error",o),s.removeEventListener("message",e)}),[s]),s}function nt(a){let{codes:A,names:e,configs:t,cell_ids:o,last_executed_code:G,last_execution_time:s}=a,n=G||{},k=s||{};return A.map((R,i)=>{let l=o[i],c=n[l];return XA({id:l,code:R,edited:c?c!==R:!1,name:e[i],lastCodeRun:n[l]??null,lastExecutionTime:k[l]??null,config:t[i]})})}function kt(a,A,e){let t=Qe(),{layout:o}=a;if(o){let G=o.type,s=Pe({type:G,data:o.data,cells:A});t.selectedLayout=G,t.layoutData[G]=s,e({layoutView:G,data:s})}return t}function Rt(){let a=[],A=[];return S.entries.forEach((e,t)=>{a.push(t),A.push(e.value)}),{objectIds:a,values:A}}function it(a,A){let{existingCells:e,autoInstantiate:t,setCells:o,setLayoutData:G,setAppConfig:s,setCapabilities:n,setKernelState:k,onError:R}=A,{resumed:i,ui_values:l,app_config:c,capabilities:g,auto_instantiated:h}=a,w=e&&e.length>0,y=w&&!i?e:nt(a);o(y,kt(a,y,G));let v=xe.safeParse(c);if(v.success?s(v.data):D.error("Failed to parse app config",v.error),n(g),h)return;if(i){for(let[Y,m]of mA.entries(l||{}))S.set(Y,m);return}let{objectIds:b,values:M}=Rt(),N=w?Object.fromEntries(e.map(Y=>[Y.id,Y.code])):void 0;Se().sendInstantiate({objectIds:b,values:M,autoRun:t,codes:N}).then(()=>{k({isInstantiated:!0,error:null})}).catch(Y=>{k({isInstantiated:!1,error:Y}),R(Error("Failed to instantiate",{cause:Y}))})}function lt(a){let A=a.cell_id;S.removeElementsByCell(A),pA.INSTANCE.removeForCellId(A)}function Zt(a,A){A(a),pA.INSTANCE.track(a)}const J={append:a=>{let A=new URL(window.location.href);A.searchParams.append(a.key,a.value),window.history.pushState({},"",`${A.pathname}${A.search}`)},set:a=>{let A=new URL(window.location.href);Array.isArray(a.value)?(A.searchParams.delete(a.key),a.value.forEach(e=>A.searchParams.append(a.key,e))):A.searchParams.set(a.key,a.value),window.history.pushState({},"",`${A.pathname}${A.search}`)},delete:a=>{let A=new URL(window.location.href);a.value==null?A.searchParams.delete(a.key):A.searchParams.delete(a.key,a.value),window.history.pushState({},"",`${A.pathname}${A.search}`)},clear:()=>{let a=new URL(window.location.href);a.search="",window.history.pushState({},"",`${a.pathname}${a.search}`)}};var ct=B();function gt(){return Object.values(BA().cellData).filter(a=>a.id!==zA)}function ht(a){let A=(0,ct.c)(37),e=(0,u.useRef)(!0),{autoInstantiate:t,sessionId:o,setCells:G}=a,{showBoundary:s}=be(),{handleCellMessage:n,setCellCodes:k,setCellIds:R}=oe(),{addCellNotification:i}=ia(),l=_(Ue),c=we(),{setVariables:g,setMetadata:h}=Ge(),{addColumnPreview:w}=dA(),{addDatasets:y,filterDatasetsFromVariables:v}=dA(),{addDataSourceConnection:b,filterDataSourcesFromVariables:M}=ee(),{setLayoutData:N}=xA(),[Y,m]=hA(ve),{addBanner:q}=Be(),{addPackageAlert:P,addStartupLog:z}=FA(),$=_(wA),AA=_($A),E=Ee(),eA=_(ra),aA=_(me),O;A[0]!==q||A[1]!==i||A[2]!==w||A[3]!==b||A[4]!==y||A[5]!==P||A[6]!==z||A[7]!==t||A[8]!==M||A[9]!==v||A[10]!==n||A[11]!==c||A[12]!==eA||A[13]!==AA||A[14]!==k||A[15]!==R||A[16]!==G||A[17]!==aA||A[18]!==l||A[19]!==$||A[20]!==N||A[21]!==h||A[22]!==g||A[23]!==s?(O=d=>{let Z=te(d.data);switch(Z.data.op){case"reload":CA();return;case"kernel-ready":{let p=gt();it(Z.data,{autoInstantiate:t,setCells:G,setLayoutData:N,setAppConfig:c,setCapabilities:AA,setKernelState:l,onError:s,existingCells:p}),$(Z.data.kiosk);return}case"completed-run":return;case"interrupted":return;case"kernel-startup-error":aA(Z.data.error);return;case"send-ui-element-message":{let p=Z.data.ui_element;if(p){let OA=Ie(Z.data);S.broadcastMessage(p,Z.data.message,OA)}return}case"model-lifecycle":le(ie,Z.data);return;case"remove-ui-elements":lt(Z.data);return;case"completion-result":Ae.resolve(Z.data.completion_id,Z.data);return;case"function-call-result":pe.resolve(Z.data.function_call_id,Z.data);return;case"cell-op":{Zt(Z.data,n);let p=BA().cellData[Z.data.cell_id];if(!p)return;i({cellNotification:Z.data,code:p.code});return}case"variables":g(Z.data.variables.map(mt)),v(Z.data.variables.map(Yt)),M(Z.data.variables.map(ut));return;case"variable-values":h(Z.data.variables.map(Bt));return;case"alert":nA({title:Z.data.title,description:ta({html:Z.data.description}),variant:Z.data.variant});return;case"banner":q(Z.data);return;case"missing-package-alert":P({...Z.data,kind:"missing"});return;case"installing-package-alert":P({...Z.data,kind:"installing"});return;case"startup-logs":z({content:Z.data.content,status:Z.data.status});return;case"query-params-append":J.append(Z.data);return;case"query-params-set":J.set(Z.data);return;case"query-params-delete":J.delete(Z.data);return;case"query-params-clear":J.clear();return;case"datasets":y(Z.data);return;case"data-column-preview":w(Z.data);return;case"sql-table-preview":VA.resolve(Z.data.request_id,Z.data);return;case"sql-table-list-preview":UA.resolve(Z.data.request_id,Z.data);return;case"validate-sql-result":qA.resolve(Z.data.request_id,Z.data);return;case"secret-keys-result":ka.resolve(Z.data.request_id,Z.data);return;case"cache-info":eA(Z.data);return;case"cache-cleared":return;case"data-source-connections":b({connections:Z.data.connections.map(dt)});return;case"reconnected":return;case"focus-cell":WA(Z.data.cell_id);return;case"update-cell-codes":k({codes:Z.data.codes,ids:Z.data.cell_ids,codeIsStale:Z.data.code_is_stale});return;case"update-cell-ids":R({cellIds:Z.data.cell_ids});return;default:re(Z.data)}},A[0]=q,A[1]=i,A[2]=w,A[3]=b,A[4]=y,A[5]=P,A[6]=z,A[7]=t,A[8]=M,A[9]=v,A[10]=n,A[11]=c,A[12]=eA,A[13]=AA,A[14]=k,A[15]=R,A[16]=G,A[17]=aA,A[18]=l,A[19]=$,A[20]=N,A[21]=h,A[22]=g,A[23]=s,A[24]=O):O=A[24];let tA=O,ZA=(d,Z)=>{e.current&&(e.current=!1,V.reconnect(d,Z))},T;A[25]===Symbol.for("react.memo_cache_sentinel")?(T=fA(),A[25]=T):T=A[25];let I;A[26]!==E||A[27]!==o?(I=()=>E.getWsURL(o).toString(),A[26]=E,A[27]=o,A[28]=I):I=A[28];let K;A[29]===m?K=A[30]:(K=async()=>{e.current=!0,m({state:x.OPEN})},A[29]=m,A[30]=K);let H;A[31]===E?H=A[32]:(H=async()=>{fA()||sA()||E.isSameOrigin||await E.waitForHealthy()},A[31]=E,A[32]=H);let U;A[33]===tA?U=A[34]:(U=d=>{try{tA(d)}catch(Z){let p=Z;D.error("Failed to handle message",d.data,p),nA({title:"Failed to handle message",description:bA(p),variant:"danger"})}},A[33]=tA,A[34]=U);let V=rt({static:T,url:I,onOpen:K,waitToConnect:H,onMessage:U,onClose:d=>{switch(D.warn("WebSocket closed",d.code,d.reason),d.reason){case"MARIMO_ALREADY_CONNECTED":m({state:x.CLOSED,code:F.ALREADY_RUNNING,reason:"another browser tab is already connected to the kernel",canTakeover:!0}),V.close();return;case"MARIMO_WRONG_KERNEL_ID":case"MARIMO_NO_FILE_KEY":case"MARIMO_NO_SESSION_ID":case"MARIMO_NO_SESSION":case"MARIMO_SHUTDOWN":m({state:x.CLOSED,code:F.KERNEL_DISCONNECTED,reason:"kernel not found"}),V.close();return;case"MARIMO_MALFORMED_QUERY":m({state:x.CLOSED,code:F.MALFORMED_QUERY,reason:"the kernel did not recognize a request; please file a bug with marimo"});return;default:if(d.reason==="MARIMO_KERNEL_STARTUP_ERROR"){m({state:x.CLOSED,code:F.KERNEL_STARTUP_ERROR,reason:"Failed to start kernel sandbox"}),V.close();return}m({state:x.CONNECTING}),ZA(d.code,d.reason)}},onError:d=>{D.warn("WebSocket error",d),m({state:x.CLOSED,code:F.KERNEL_DISCONNECTED,reason:"kernel not found"}),ZA()}}),X;return A[35]===Y?X=A[36]:(X={connection:Y},A[35]=Y,A[36]=X),X}function dt(a){return{...a,name:a.name}}function Bt(a){return{name:a.name,dataType:a.datatype,value:a.value}}function ut(a){return a.name}function Yt(a){return a.name}function mt(a){return{name:a.name,declaredBy:a.declared_by,usedBy:a.used_by}}var ft=B();const pt=a=>{let A=(0,ft.c)(2),{children:e}=a,t;return A[0]===e?t=A[1]:(t=(0,r.jsx)("div",{className:"flex flex-col flex-1 overflow-hidden absolute inset-0 print:relative",children:e}),A[0]=e,A[1]=t),t};export{SA as a,tt as c,MA as d,LA as i,$a as l,ht as n,At as o,ot as r,FA as s,pt as t,ua as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as F}from"./chunk-LvLJmgfZ.js";import{u as J}from"./useEvent-BhXAndur.js";import{t as G}from"./react-Bj1aDYRI.js";import{Kr as H,b as ee,w as te}from"./cells-DPp5cDaO.js";import"./react-dom-CSu739Rf.js";import{t as V}from"./compiler-runtime-B3qBwwSJ.js";import"./tooltip-DxKBXCGp.js";import{w as re}from"./utilities.esm-MA1QpjVT.js";import{n as Y}from"./constants-B6Cb__3x.js";import{S as se,d as oe}from"./config-Q0O7_stz.js";import{t as ae}from"./jsx-runtime-ZmTK25f3.js";import{n as ie,t as $}from"./button-CZ3Cs4qb.js";import{t as le}from"./cn-BKtXLv3a.js";import"./dist-DBwNzi3C.js";import{E as me,Y as M}from"./JsonOutput-PE5ko4gi.js";import"./cjs-CH5Rj0g8.js";import"./main-U5Goe76G.js";import"./useNonce-CS26E0hA.js";import{r as ne}from"./requests-B4FYHTZl.js";import"./layout-_O8thjaV.js";import{t as ce}from"./arrow-left-VDC1u5rq.js";import{r as de}from"./download-os8QlW6l.js";import"./markdown-renderer-DJy8ww5d.js";import{t as pe}from"./copy-D-8y6iMN.js";import{t as he}from"./download-Dg7clfkc.js";import{i as fe,l as xe,n as be,r as Q,t as ye,u as je}from"./panels-IsIZwIow.js";import{t as ue}from"./spinner-DA8-7wQv.js";import"./dist-bBwmhqty.js";import"./dist-Btv5Rh1v.js";import"./dist-Dcqqg9UU.js";import"./dist-sMh6mJ2d.js";import"./dist-CoCQUAeM.js";import{t as ge}from"./use-toast-BDYuj3zG.js";import{t as ke}from"./session-BOFn9QrD.js";import"./Combination-BAEdC-rz.js";import"./dates-CrvjILe3.js";import{a as _e,c as Ne,l as we,n as ve,r as Se,t as Ce}from"./dialog-eb-NieZw.js";import"./popover-CH1FzjxU.js";import{t as ze}from"./share-ipf2hrOh.js";import"./vega-loader.browser-DXARUlxo.js";import"./defaultLocale-JieDVWC_.js";import"./defaultLocale-BLne0bXb.js";import{t as Ee}from"./copy-DHrHayPa.js";import"./purify.es-DZrAQFIu.js";import{a as Ie}from"./cell-link-B9b7J8QK.js";import"./chunk-5FQGJX7Z-DPlx2kjA.js";import"./katex-CDLTCvjQ.js";import"./html-to-image-CIQqSu-S.js";import"./esm-Bmu2DhPy.js";import{n as Pe,t as Ae}from"./react-resizable-panels.browser.esm-Da3ksQXL.js";import"./name-cell-input-Bc7geMVf.js";import{t as Re}from"./icon-32x32-DH9kM4Sh.js";import"./ws-DcVtI9Wj.js";import"./dist-tLOz534J.js";import"./dist-C5H5qIvq.js";import"./dist-B62Xo7-b.js";import"./dist-BpuNldXk.js";import"./dist-8kKeYgOg.js";import"./dist-BZWmfQbq.js";import"./dist-DLgWirXg.js";import"./dist-CF4gkF4y.js";import"./dist-CNW1zLeq.js";import"./esm-D82gQH1f.js";var Te=V(),Be=F(G(),1),t=F(ae(),1);const We=o=>{let e=(0,Te.c)(25),{appConfig:s}=o,{setCells:r}=te(),{sendComponentValues:y}=ne(),c;e[0]===y?c=e[1]:(c=()=>(Q.INSTANCE.start(y),Le),e[0]=y,e[1]=c);let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=[],e[2]=a):a=e[2],(0,Be.useEffect)(c,a);let i;e[3]===Symbol.for("react.memo_cache_sentinel")?(i=ke(),e[3]=i):i=e[3];let j;e[4]===r?j=e[5]:(j={autoInstantiate:!0,setCells:r,sessionId:i},e[4]=r,e[5]=j);let{connection:l}=be(j),N=J(ee),u;e[6]===l.state?u=e[7]:(u=oe(l.state),e[6]=l.state,e[7]=u);let x=u,d;e[8]!==s||e[9]!==x?(d=()=>x?(0,t.jsxs)(me,{milliseconds:2e3,fallback:null,children:[(0,t.jsx)(ue,{className:"mx-auto"}),(0,t.jsx)("p",{className:"text-center text-sm text-muted-foreground mt-2",children:"Connecting..."})]}):(0,t.jsx)(fe,{appConfig:s,mode:"read"}),e[8]=s,e[9]=x,e[10]=d):d=e[10];let b=d,m;e:{if(typeof window>"u"){m=null;break e}let f,n;if(e[11]===Symbol.for("react.memo_cache_sentinel")){if(n=new URL(window.location.href),!n.searchParams.has("file")){m=null;break e}n.searchParams.delete("file"),f=n.searchParams.toString(),e[11]=f,e[12]=n,e[13]=m}else f=e[11],n=e[12],m=e[13];let w=f;m=w?`${n.pathname}?${w}`:n.pathname}let g=m,v=s.width,k;e[14]===Symbol.for("react.memo_cache_sentinel")?(k=g&&(0,t.jsx)("div",{className:"flex items-center px-6 pt-4 sm:-mt-8",children:(0,t.jsxs)("a",{href:g,"aria-label":"Back to gallery",className:le(ie({variant:"text",size:"sm"}),"gap-2 px-0 text-muted-foreground hover:text-foreground"),children:[(0,t.jsx)(ce,{className:"size-4","aria-hidden":!0}),(0,t.jsx)("span",{children:"Back"})]})}),e[14]=k):k=e[14];let p;e[15]===l?p=e[16]:(p=(0,t.jsx)(je,{connection:l,className:"sm:pt-8",children:k}),e[15]=l,e[16]=p);let h;e[17]===b?h=e[18]:(h=b(),e[17]=b,e[18]=h);let _;return e[19]!==s.width||e[20]!==l||e[21]!==N||e[22]!==p||e[23]!==h?(_=(0,t.jsxs)(xe,{connection:l,isRunning:N,width:v,children:[p,h]}),e[19]=s.width,e[20]=l,e[21]=N,e[22]=p,e[23]=h,e[24]=_):_=e[24],_};function Le(){Q.INSTANCE.stop()}var X=V();const Oe=()=>{let o=(0,X.c)(3),e=J(H);if(!M()||!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:Y.githubPage,target:"_blank",className:"text-(--sky-11) font-medium underline",children:"marimo"})," ","notebook - Run or edit for full interactivity"]}),o[0]=s):s=o[0];let r;return o[1]===e?r=o[2]:(r=(0,t.jsxs)("div",{className:"px-4 py-2 bg-(--sky-2) border-b border-(--sky-7) text-(--sky-11) flex justify-between items-center gap-4 print:hidden text-sm","data-testid":"static-notebook-banner",children:[s,(0,t.jsx)("span",{className:"shrink-0",children:(0,t.jsx)(Ue,{code:e})})]}),o[1]=e,o[2]=r),r};var Ue=o=>{let e=(0,X.c)(78),{code:s}=o,r=Ie()||"notebook.py",y=r.lastIndexOf("/");y!==-1&&(r=r.slice(y+1));let c=window.location.href,a,i,j,l,N,u,x,d,b,m,g,v,k,p,h,_,f,n,w;if(e[0]!==s||e[1]!==r){let q=ze({code:s});l=Ce,e[21]===Symbol.for("react.memo_cache_sentinel")?(g=(0,t.jsx)(we,{asChild:!0,children:(0,t.jsx)($,{"data-testid":"static-notebook-dialog-trigger",variant:"outline",size:"xs",children:"Run or Edit"})}),e[21]=g):g=e[21],j=ve,i=_e,e[22]===r?m=e[23]:(m=(0,t.jsx)(Ne,{children:r}),e[22]=r,e[23]=m),a=Se,u="pt-3 text-left space-y-3",e[24]===Symbol.for("react.memo_cache_sentinel")?(x=(0,t.jsxs)("p",{children:["This is a static"," ",(0,t.jsx)("a",{href:Y.githubPage,target:"_blank",className:"text-(--sky-11) hover:underline font-medium",children:"marimo"})," ","notebook. To run interactively:"]}),e[24]=x):x=e[24];let K;e[25]===Symbol.for("react.memo_cache_sentinel")?(K=(0,t.jsx)("br",{}),e[25]=K):K=e[25],e[26]===r?d=e[27]:(d=(0,t.jsx)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) leading-relaxed",children:["pip install marimo",K,"marimo edit ",r]})}),e[26]=r,e[27]=d),e[28]===Symbol.for("react.memo_cache_sentinel")?(b=!c.endsWith(".html")&&(0,t.jsxs)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:[(0,t.jsx)("div",{className:"text-sm text-(--sky-12) mb-1",children:"Or run directly from URL:"}),(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) break-all",children:["marimo edit ",window.location.href]})]}),e[28]=b):b=e[28],w="pt-3 border-t border-(--sky-7)",_="text-sm text-(--sky-12) mb-2",e[29]===Symbol.for("react.memo_cache_sentinel")?(f=(0,t.jsx)("strong",{children:"Try in browser with WebAssembly:"}),e[29]=f):f=e[29],n=" ",N=q,v="_blank",k="text-(--sky-11) hover:underline break-all",p="noreferrer",h=q.slice(0,50),e[0]=s,e[1]=r,e[2]=a,e[3]=i,e[4]=j,e[5]=l,e[6]=N,e[7]=u,e[8]=x,e[9]=d,e[10]=b,e[11]=m,e[12]=g,e[13]=v,e[14]=k,e[15]=p,e[16]=h,e[17]=_,e[18]=f,e[19]=n,e[20]=w}else a=e[2],i=e[3],j=e[4],l=e[5],N=e[6],u=e[7],x=e[8],d=e[9],b=e[10],m=e[11],g=e[12],v=e[13],k=e[14],p=e[15],h=e[16],_=e[17],f=e[18],n=e[19],w=e[20];let S;e[30]!==N||e[31]!==v||e[32]!==k||e[33]!==p||e[34]!==h?(S=(0,t.jsxs)("a",{href:N,target:v,className:k,rel:p,children:[h,"..."]}),e[30]=N,e[31]=v,e[32]=k,e[33]=p,e[34]=h,e[35]=S):S=e[35];let C;e[36]!==S||e[37]!==_||e[38]!==f||e[39]!==n?(C=(0,t.jsxs)("p",{className:_,children:[f,n,S]}),e[36]=S,e[37]=_,e[38]=f,e[39]=n,e[40]=C):C=e[40];let L;e[41]===Symbol.for("react.memo_cache_sentinel")?(L=(0,t.jsx)("p",{className:"text-sm text-(--sky-12)",children:"Note: WebAssembly may not work for all notebooks. Additionally, some dependencies may not be available in the browser."}),e[41]=L):L=e[41];let z;e[42]!==C||e[43]!==w?(z=(0,t.jsxs)("div",{className:w,children:[C,L]}),e[42]=C,e[43]=w,e[44]=z):z=e[44];let E;e[45]!==a||e[46]!==u||e[47]!==x||e[48]!==d||e[49]!==b||e[50]!==z?(E=(0,t.jsxs)(a,{className:u,children:[x,d,b,z]}),e[45]=a,e[46]=u,e[47]=x,e[48]=d,e[49]=b,e[50]=z,e[51]=E):E=e[51];let I;e[52]!==i||e[53]!==m||e[54]!==E?(I=(0,t.jsxs)(i,{children:[m,E]}),e[52]=i,e[53]=m,e[54]=E,e[55]=I):I=e[55];let P;e[56]===s?P=e[57]:(P=async()=>{await Ee(s),ge({title:"Copied to clipboard"})},e[56]=s,e[57]=P);let O;e[58]===Symbol.for("react.memo_cache_sentinel")?(O=(0,t.jsx)(pe,{className:"w-3 h-3 mr-2"}),e[58]=O):O=e[58];let A;e[59]===P?A=e[60]:(A=(0,t.jsxs)($,{"data-testid":"copy-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:P,children:[O,"Copy code"]}),e[59]=P,e[60]=A);let R;e[61]!==s||e[62]!==r?(R=()=>{de(new Blob([s],{type:"text/plain"}),r)},e[61]=s,e[62]=r,e[63]=R):R=e[63];let U;e[64]===Symbol.for("react.memo_cache_sentinel")?(U=(0,t.jsx)(he,{className:"w-3 h-3 mr-2"}),e[64]=U):U=e[64];let T;e[65]===R?T=e[66]:(T=(0,t.jsxs)($,{"data-testid":"download-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:R,children:[U,"Download"]}),e[65]=R,e[66]=T);let B;e[67]!==A||e[68]!==T?(B=(0,t.jsxs)("div",{className:"flex gap-3 pt-2",children:[A,T]}),e[67]=A,e[68]=T,e[69]=B):B=e[69];let W;e[70]!==j||e[71]!==I||e[72]!==B?(W=(0,t.jsxs)(j,{children:[I,B]}),e[70]=j,e[71]=I,e[72]=B,e[73]=W):W=e[73];let D;return e[74]!==l||e[75]!==g||e[76]!==W?(D=(0,t.jsxs)(l,{children:[g,W]}),e[74]=l,e[75]=g,e[76]=W,e[77]=D):D=e[77],D},Z=V(),De=se()||M(),Ke=o=>{let e=(0,Z.c)(9),s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,t.jsx)(Oe,{}),e[0]=s):s=e[0];let r;e[1]===o.appConfig?r=e[2]:(r=(0,t.jsx)(We,{appConfig:o.appConfig}),e[1]=o.appConfig,e[2]=r);let y;e[3]===Symbol.for("react.memo_cache_sentinel")?(y=De&&(0,t.jsx)(Ve,{}),e[3]=y):y=e[3];let c;e[4]===r?c=e[5]:(c=(0,t.jsxs)(Ae,{children:[s,r,y]}),e[4]=r,e[5]=c);let a;e[6]===Symbol.for("react.memo_cache_sentinel")?(a=(0,t.jsx)(re,{}),e[6]=a):a=e[6];let i;return e[7]===c?i=e[8]:(i=(0,t.jsx)(ye,{children:(0,t.jsxs)(Pe,{direction:"horizontal",autoSaveId:"marimo:chrome:v1:run1",children:[c,a]})}),e[7]=c,e[8]=i),i},Ve=()=>{let o=(0,Z.c)(1),e;return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsx)("div",{className:"fixed bottom-0 right-0 z-50","data-testid":"watermark",children:(0,t.jsxs)("a",{href:Y.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)("img",{src:Re,alt:"marimo",className:"h-4 w-auto"})]})}),o[0]=e):e=o[0],e},Ye=Ke;export{Ye as default};
|
|
1
|
+
import{s as F}from"./chunk-LvLJmgfZ.js";import{u as J}from"./useEvent-BhXAndur.js";import{t as G}from"./react-Bj1aDYRI.js";import{Kr as H,b as ee,w as te}from"./cells-DPp5cDaO.js";import"./react-dom-CSu739Rf.js";import{t as V}from"./compiler-runtime-B3qBwwSJ.js";import"./tooltip-DxKBXCGp.js";import{w as re}from"./utilities.esm-dm9SQStE.js";import{n as Y}from"./constants-B6Cb__3x.js";import{S as se,d as oe}from"./config-Q0O7_stz.js";import{t as ae}from"./jsx-runtime-ZmTK25f3.js";import{n as ie,t as $}from"./button-CZ3Cs4qb.js";import{t as le}from"./cn-BKtXLv3a.js";import"./dist-DBwNzi3C.js";import{E as me,Y as M}from"./JsonOutput-PE5ko4gi.js";import"./cjs-CH5Rj0g8.js";import"./main-U5Goe76G.js";import"./useNonce-CS26E0hA.js";import{r as ne}from"./requests-B4FYHTZl.js";import"./layout-_O8thjaV.js";import{t as ce}from"./arrow-left-VDC1u5rq.js";import{r as de}from"./download-os8QlW6l.js";import"./markdown-renderer-DJy8ww5d.js";import{t as pe}from"./copy-D-8y6iMN.js";import{t as he}from"./download-Dg7clfkc.js";import{i as fe,l as xe,n as be,r as Q,t as ye,u as je}from"./panels-DW8vF5Az.js";import{t as ue}from"./spinner-DA8-7wQv.js";import"./dist-bBwmhqty.js";import"./dist-Btv5Rh1v.js";import"./dist-Dcqqg9UU.js";import"./dist-sMh6mJ2d.js";import"./dist-CoCQUAeM.js";import{t as ge}from"./use-toast-BDYuj3zG.js";import{t as ke}from"./session-BOFn9QrD.js";import"./Combination-BAEdC-rz.js";import"./dates-CrvjILe3.js";import{a as _e,c as Ne,l as we,n as ve,r as Se,t as Ce}from"./dialog-eb-NieZw.js";import"./popover-CH1FzjxU.js";import{t as ze}from"./share-ipf2hrOh.js";import"./vega-loader.browser-DXARUlxo.js";import"./defaultLocale-JieDVWC_.js";import"./defaultLocale-BLne0bXb.js";import{t as Ee}from"./copy-DHrHayPa.js";import"./purify.es-DZrAQFIu.js";import{a as Ie}from"./cell-link-B9b7J8QK.js";import"./chunk-5FQGJX7Z-DPlx2kjA.js";import"./katex-CDLTCvjQ.js";import"./html-to-image-CIQqSu-S.js";import"./esm-Bmu2DhPy.js";import{n as Pe,t as Ae}from"./react-resizable-panels.browser.esm-Da3ksQXL.js";import"./name-cell-input-Bc7geMVf.js";import{t as Re}from"./icon-32x32-DH9kM4Sh.js";import"./ws-DcVtI9Wj.js";import"./dist-tLOz534J.js";import"./dist-C5H5qIvq.js";import"./dist-B62Xo7-b.js";import"./dist-BpuNldXk.js";import"./dist-8kKeYgOg.js";import"./dist-BZWmfQbq.js";import"./dist-DLgWirXg.js";import"./dist-CF4gkF4y.js";import"./dist-CNW1zLeq.js";import"./esm-D82gQH1f.js";var Te=V(),Be=F(G(),1),t=F(ae(),1);const We=o=>{let e=(0,Te.c)(25),{appConfig:s}=o,{setCells:r}=te(),{sendComponentValues:y}=ne(),c;e[0]===y?c=e[1]:(c=()=>(Q.INSTANCE.start(y),Le),e[0]=y,e[1]=c);let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=[],e[2]=a):a=e[2],(0,Be.useEffect)(c,a);let i;e[3]===Symbol.for("react.memo_cache_sentinel")?(i=ke(),e[3]=i):i=e[3];let j;e[4]===r?j=e[5]:(j={autoInstantiate:!0,setCells:r,sessionId:i},e[4]=r,e[5]=j);let{connection:l}=be(j),N=J(ee),u;e[6]===l.state?u=e[7]:(u=oe(l.state),e[6]=l.state,e[7]=u);let x=u,d;e[8]!==s||e[9]!==x?(d=()=>x?(0,t.jsxs)(me,{milliseconds:2e3,fallback:null,children:[(0,t.jsx)(ue,{className:"mx-auto"}),(0,t.jsx)("p",{className:"text-center text-sm text-muted-foreground mt-2",children:"Connecting..."})]}):(0,t.jsx)(fe,{appConfig:s,mode:"read"}),e[8]=s,e[9]=x,e[10]=d):d=e[10];let b=d,m;e:{if(typeof window>"u"){m=null;break e}let f,n;if(e[11]===Symbol.for("react.memo_cache_sentinel")){if(n=new URL(window.location.href),!n.searchParams.has("file")){m=null;break e}n.searchParams.delete("file"),f=n.searchParams.toString(),e[11]=f,e[12]=n,e[13]=m}else f=e[11],n=e[12],m=e[13];let w=f;m=w?`${n.pathname}?${w}`:n.pathname}let g=m,v=s.width,k;e[14]===Symbol.for("react.memo_cache_sentinel")?(k=g&&(0,t.jsx)("div",{className:"flex items-center px-6 pt-4 sm:-mt-8",children:(0,t.jsxs)("a",{href:g,"aria-label":"Back to gallery",className:le(ie({variant:"text",size:"sm"}),"gap-2 px-0 text-muted-foreground hover:text-foreground"),children:[(0,t.jsx)(ce,{className:"size-4","aria-hidden":!0}),(0,t.jsx)("span",{children:"Back"})]})}),e[14]=k):k=e[14];let p;e[15]===l?p=e[16]:(p=(0,t.jsx)(je,{connection:l,className:"sm:pt-8",children:k}),e[15]=l,e[16]=p);let h;e[17]===b?h=e[18]:(h=b(),e[17]=b,e[18]=h);let _;return e[19]!==s.width||e[20]!==l||e[21]!==N||e[22]!==p||e[23]!==h?(_=(0,t.jsxs)(xe,{connection:l,isRunning:N,width:v,children:[p,h]}),e[19]=s.width,e[20]=l,e[21]=N,e[22]=p,e[23]=h,e[24]=_):_=e[24],_};function Le(){Q.INSTANCE.stop()}var X=V();const Oe=()=>{let o=(0,X.c)(3),e=J(H);if(!M()||!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:Y.githubPage,target:"_blank",className:"text-(--sky-11) font-medium underline",children:"marimo"})," ","notebook - Run or edit for full interactivity"]}),o[0]=s):s=o[0];let r;return o[1]===e?r=o[2]:(r=(0,t.jsxs)("div",{className:"px-4 py-2 bg-(--sky-2) border-b border-(--sky-7) text-(--sky-11) flex justify-between items-center gap-4 print:hidden text-sm","data-testid":"static-notebook-banner",children:[s,(0,t.jsx)("span",{className:"shrink-0",children:(0,t.jsx)(Ue,{code:e})})]}),o[1]=e,o[2]=r),r};var Ue=o=>{let e=(0,X.c)(78),{code:s}=o,r=Ie()||"notebook.py",y=r.lastIndexOf("/");y!==-1&&(r=r.slice(y+1));let c=window.location.href,a,i,j,l,N,u,x,d,b,m,g,v,k,p,h,_,f,n,w;if(e[0]!==s||e[1]!==r){let q=ze({code:s});l=Ce,e[21]===Symbol.for("react.memo_cache_sentinel")?(g=(0,t.jsx)(we,{asChild:!0,children:(0,t.jsx)($,{"data-testid":"static-notebook-dialog-trigger",variant:"outline",size:"xs",children:"Run or Edit"})}),e[21]=g):g=e[21],j=ve,i=_e,e[22]===r?m=e[23]:(m=(0,t.jsx)(Ne,{children:r}),e[22]=r,e[23]=m),a=Se,u="pt-3 text-left space-y-3",e[24]===Symbol.for("react.memo_cache_sentinel")?(x=(0,t.jsxs)("p",{children:["This is a static"," ",(0,t.jsx)("a",{href:Y.githubPage,target:"_blank",className:"text-(--sky-11) hover:underline font-medium",children:"marimo"})," ","notebook. To run interactively:"]}),e[24]=x):x=e[24];let K;e[25]===Symbol.for("react.memo_cache_sentinel")?(K=(0,t.jsx)("br",{}),e[25]=K):K=e[25],e[26]===r?d=e[27]:(d=(0,t.jsx)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) leading-relaxed",children:["pip install marimo",K,"marimo edit ",r]})}),e[26]=r,e[27]=d),e[28]===Symbol.for("react.memo_cache_sentinel")?(b=!c.endsWith(".html")&&(0,t.jsxs)("div",{className:"rounded-lg p-3 border bg-(--sky-2) border-(--sky-7)",children:[(0,t.jsx)("div",{className:"text-sm text-(--sky-12) mb-1",children:"Or run directly from URL:"}),(0,t.jsxs)("div",{className:"font-mono text-(--sky-11) break-all",children:["marimo edit ",window.location.href]})]}),e[28]=b):b=e[28],w="pt-3 border-t border-(--sky-7)",_="text-sm text-(--sky-12) mb-2",e[29]===Symbol.for("react.memo_cache_sentinel")?(f=(0,t.jsx)("strong",{children:"Try in browser with WebAssembly:"}),e[29]=f):f=e[29],n=" ",N=q,v="_blank",k="text-(--sky-11) hover:underline break-all",p="noreferrer",h=q.slice(0,50),e[0]=s,e[1]=r,e[2]=a,e[3]=i,e[4]=j,e[5]=l,e[6]=N,e[7]=u,e[8]=x,e[9]=d,e[10]=b,e[11]=m,e[12]=g,e[13]=v,e[14]=k,e[15]=p,e[16]=h,e[17]=_,e[18]=f,e[19]=n,e[20]=w}else a=e[2],i=e[3],j=e[4],l=e[5],N=e[6],u=e[7],x=e[8],d=e[9],b=e[10],m=e[11],g=e[12],v=e[13],k=e[14],p=e[15],h=e[16],_=e[17],f=e[18],n=e[19],w=e[20];let S;e[30]!==N||e[31]!==v||e[32]!==k||e[33]!==p||e[34]!==h?(S=(0,t.jsxs)("a",{href:N,target:v,className:k,rel:p,children:[h,"..."]}),e[30]=N,e[31]=v,e[32]=k,e[33]=p,e[34]=h,e[35]=S):S=e[35];let C;e[36]!==S||e[37]!==_||e[38]!==f||e[39]!==n?(C=(0,t.jsxs)("p",{className:_,children:[f,n,S]}),e[36]=S,e[37]=_,e[38]=f,e[39]=n,e[40]=C):C=e[40];let L;e[41]===Symbol.for("react.memo_cache_sentinel")?(L=(0,t.jsx)("p",{className:"text-sm text-(--sky-12)",children:"Note: WebAssembly may not work for all notebooks. Additionally, some dependencies may not be available in the browser."}),e[41]=L):L=e[41];let z;e[42]!==C||e[43]!==w?(z=(0,t.jsxs)("div",{className:w,children:[C,L]}),e[42]=C,e[43]=w,e[44]=z):z=e[44];let E;e[45]!==a||e[46]!==u||e[47]!==x||e[48]!==d||e[49]!==b||e[50]!==z?(E=(0,t.jsxs)(a,{className:u,children:[x,d,b,z]}),e[45]=a,e[46]=u,e[47]=x,e[48]=d,e[49]=b,e[50]=z,e[51]=E):E=e[51];let I;e[52]!==i||e[53]!==m||e[54]!==E?(I=(0,t.jsxs)(i,{children:[m,E]}),e[52]=i,e[53]=m,e[54]=E,e[55]=I):I=e[55];let P;e[56]===s?P=e[57]:(P=async()=>{await Ee(s),ge({title:"Copied to clipboard"})},e[56]=s,e[57]=P);let O;e[58]===Symbol.for("react.memo_cache_sentinel")?(O=(0,t.jsx)(pe,{className:"w-3 h-3 mr-2"}),e[58]=O):O=e[58];let A;e[59]===P?A=e[60]:(A=(0,t.jsxs)($,{"data-testid":"copy-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:P,children:[O,"Copy code"]}),e[59]=P,e[60]=A);let R;e[61]!==s||e[62]!==r?(R=()=>{de(new Blob([s],{type:"text/plain"}),r)},e[61]=s,e[62]=r,e[63]=R):R=e[63];let U;e[64]===Symbol.for("react.memo_cache_sentinel")?(U=(0,t.jsx)(he,{className:"w-3 h-3 mr-2"}),e[64]=U):U=e[64];let T;e[65]===R?T=e[66]:(T=(0,t.jsxs)($,{"data-testid":"download-static-notebook-dialog-button",variant:"outline",size:"sm",onClick:R,children:[U,"Download"]}),e[65]=R,e[66]=T);let B;e[67]!==A||e[68]!==T?(B=(0,t.jsxs)("div",{className:"flex gap-3 pt-2",children:[A,T]}),e[67]=A,e[68]=T,e[69]=B):B=e[69];let W;e[70]!==j||e[71]!==I||e[72]!==B?(W=(0,t.jsxs)(j,{children:[I,B]}),e[70]=j,e[71]=I,e[72]=B,e[73]=W):W=e[73];let D;return e[74]!==l||e[75]!==g||e[76]!==W?(D=(0,t.jsxs)(l,{children:[g,W]}),e[74]=l,e[75]=g,e[76]=W,e[77]=D):D=e[77],D},Z=V(),De=se()||M(),Ke=o=>{let e=(0,Z.c)(9),s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,t.jsx)(Oe,{}),e[0]=s):s=e[0];let r;e[1]===o.appConfig?r=e[2]:(r=(0,t.jsx)(We,{appConfig:o.appConfig}),e[1]=o.appConfig,e[2]=r);let y;e[3]===Symbol.for("react.memo_cache_sentinel")?(y=De&&(0,t.jsx)(Ve,{}),e[3]=y):y=e[3];let c;e[4]===r?c=e[5]:(c=(0,t.jsxs)(Ae,{children:[s,r,y]}),e[4]=r,e[5]=c);let a;e[6]===Symbol.for("react.memo_cache_sentinel")?(a=(0,t.jsx)(re,{}),e[6]=a):a=e[6];let i;return e[7]===c?i=e[8]:(i=(0,t.jsx)(ye,{children:(0,t.jsxs)(Pe,{direction:"horizontal",autoSaveId:"marimo:chrome:v1:run1",children:[c,a]})}),e[7]=c,e[8]=i),i},Ve=()=>{let o=(0,Z.c)(1),e;return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsx)("div",{className:"fixed bottom-0 right-0 z-50","data-testid":"watermark",children:(0,t.jsxs)("a",{href:Y.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)("img",{src:Re,alt:"marimo",className:"h-4 w-auto"})]})}),o[0]=e):e=o[0],e},Ye=Ke;export{Ye as default};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var ar=Object.defineProperty;var St=y=>{throw TypeError(y)};var or=(y,b,_)=>b in y?ar(y,b,{enumerable:!0,configurable:!0,writable:!0,value:_}):y[b]=_;var a=(y,b,_)=>or(y,typeof b!="symbol"?b+"":b,_),Ne=(y,b,_)=>b.has(y)||St("Cannot "+_);var l=(y,b,_)=>(Ne(y,b,"read from private field"),_?_.call(y):b.get(y)),k=(y,b,_)=>b.has(y)?St("Cannot add the same private member more than once"):b instanceof WeakSet?b.add(y):b.set(y,_),F=(y,b,_,de)=>(Ne(y,b,"write to private field"),de?de.call(y,_):b.set(y,_),_),$=(y,b,_)=>(Ne(y,b,"access private method"),_);import{s as kt}from"./chunk-LvLJmgfZ.js";import{i as qe,l as be,p as V,u as lr}from"./useEvent-BhXAndur.js";import{t as ur}from"./react-Bj1aDYRI.js";import{Ur as dr,Yr as cr,b as fr,ei as hr,mn as mr,ti as ie,y as pr,__tla as gr}from"./cells-DPp5cDaO.js";import{t as Ft}from"./compiler-runtime-B3qBwwSJ.js";import{t as yr}from"./get-6uJrSKbw.js";import{t as br}from"./assertNever-CBU83Y6o.js";import{t as wr}from"./debounce-B3mjKxHe.js";import{t as vr}from"./_baseSet-5Rdwpmr3.js";import{d as g,p as R}from"./hotkeys-BHHWjLlp.js";import{t as xr}from"./invariant-CAG_dYON.js";import{S as Er}from"./utils-YqBXNpsM.js";import{S as _r,n as Cr}from"./config-Q0O7_stz.js";import{a as Rr}from"./switch-dWLWbbtg.js";import{n as Mt}from"./globals-BgACvYmr.js";import{t as Nt}from"./ErrorBoundary-B9Ifj8Jf.js";import{t as Sr}from"./jsx-runtime-ZmTK25f3.js";import{t as kr}from"./button-CZ3Cs4qb.js";import{t as Fr}from"./cn-BKtXLv3a.js";import{J as Pe,Y as Mr,Z as Nr,__tla as qr}from"./JsonOutput-PE5ko4gi.js";import{t as Pr}from"./createReducer-B3rBsy4P.js";import{t as je}from"./requests-B4FYHTZl.js";import{t as qt}from"./createLucideIcon-BCdY6lG5.js";import{t as jr}from"./x-ZP5cObgf.js";import{a as Pt,l as Lr,r as jt}from"./markdown-renderer-DJy8ww5d.js";import{t as Ar}from"./DeferredRequestRegistry-CMf25YiV.js";import{t as Ir}from"./preload-helper-D2MJg03u.js";import{t as Lt}from"./Deferred-DxQeE5uh.js";import{t as At}from"./uuid-DXdzqzcr.js";import{t as Tr}from"./use-toast-BDYuj3zG.js";import{t as It}from"./tooltip-CMQz28hC.js";import{t as Tt}from"./mode-Bn7pdJvO.js";import{n as Ur,r as Wr,t as Or}from"./share-ipf2hrOh.js";import{t as zr}from"./blob-D-eV0cU3.js";import{r as Dr,t as Br}from"./react-resizable-panels.browser.esm-Da3ksQXL.js";import{t as Ut}from"./toggle-zVW4FXNz.js";let Le,Wt,Ae,Ot,Ie,Te,zt,Ue,We,Dt,Bt,Ht,$t,we,Vt,Oe,ze,Xt,Yt,Qt,Gt,De,Jt,Be,Kt,He,ae,Zt,en,tn,nn,$e,ve,xe,Ve,Xe,Ye,rn,sn,an,Qe,Ge,Je,oe,on,ln,un,dn,cn,le,fn,Ke,hn,J,Ze,Ee,ue,mn,_e,pn,gn,yn,bn,Hr=Promise.all([(()=>{try{return gr}catch{}})(),(()=>{try{return qr}catch{}})()]).then(async()=>{var X,pe,xn,xt,U,Y,I,Et,O,_t,W,ne,K,Ce,Ct,Rt,ge,z,D,Z,M,Q,B,En,_n,Cn,ye;function y(t,e,n){return t==null?t:vr(t,e,n)}let b,_;oe=y,b=qt("crosshair",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]]),_=qt("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);function de(t){return{all:t||(t=new Map),on:function(e,n){var r=t.get(e);r?r.push(n):t.set(e,[n])},off:function(e,n){var r=t.get(e);r&&(n?r.splice(r.indexOf(n)>>>0,1):t.set(e,[]))},emit:function(e,n){var r=t.get(e);r&&r.slice().map(function(s){s(n)}),(r=t.get("*"))&&r.slice().map(function(s){s(e,n)})}}}var c=kt(ur(),1),Re=(0,c.createContext)(null),Rn=t=>{let{controller:e}=(0,c.useContext)(Re),n=c.useRef(Symbol("fill"));return(0,c.useEffect)(()=>(e.mount({name:t.name,ref:n.current,children:t.children}),()=>{e.unmount({name:t.name,ref:n.current})}),[]),(0,c.useEffect)(()=>{e.update({name:t.name,ref:n.current,children:t.children})}),null},Sn=Object.defineProperty,kn=(t,e,n)=>e in t?Sn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,tt=(t,e,n)=>(kn(t,typeof e=="symbol"?e:e+"",n),n),nt=console,Fn=class{constructor(t){tt(this,"_bus"),tt(this,"_db"),this._bus=t,this.handleFillMount=this.handleFillMount.bind(this),this.handleFillUpdated=this.handleFillUpdated.bind(this),this.handleFillUnmount=this.handleFillUnmount.bind(this),this._db={byName:new Map,byFill:new Map}}mount(){this._bus.on("fill-mount",this.handleFillMount),this._bus.on("fill-updated",this.handleFillUpdated),this._bus.on("fill-unmount",this.handleFillUnmount)}unmount(){this._bus.off("fill-mount",this.handleFillMount),this._bus.off("fill-updated",this.handleFillUpdated),this._bus.off("fill-unmount",this.handleFillUnmount)}handleFillMount({fill:t}){let e=c.Children.toArray(t.children),n=t.name,r={fill:t,children:e,name:n},s=this._db.byName.get(n);s?(s.components.push(r),s.listeners.forEach(i=>i([...s.components]))):this._db.byName.set(n,{listeners:[],components:[r]}),this._db.byFill.set(t.ref,r)}handleFillUpdated({fill:t}){let e=this._db.byFill.get(t.ref),n=c.Children.toArray(t.children);if(e){e.children=n;let r=this._db.byName.get(e.name);if(r)r.listeners.forEach(s=>s([...r.components]));else throw Error("registration was expected to be defined")}else{nt.error("[handleFillUpdated] component was expected to be defined");return}}handleFillUnmount({fill:t}){let e=this._db.byFill.get(t.ref);if(!e){nt.error("[handleFillUnmount] component was expected to be defined");return}let n=e.name,r=this._db.byName.get(n);if(!r)throw Error("registration was expected to be defined");r.components=r.components.filter(s=>s!==e),this._db.byFill.delete(t.ref),r.listeners.length===0&&r.components.length===0?this._db.byName.delete(n):r.listeners.forEach(s=>s([...r.components]))}onComponentsChange(t,e){let n=this._db.byName.get(t);n?(n.listeners.push(e),e(n.components)):(this._db.byName.set(t,{listeners:[e],components:[]}),e([]))}getFillsByName(t){let e=this._db.byName.get(t);return e?e.components.map(n=>n.fill):[]}getChildrenByName(t){let e=this._db.byName.get(t);return e?e.components.map(n=>n.children).reduce((n,r)=>n.concat(r),[]):[]}removeOnComponentsChange(t,e){let n=this._db.byName.get(t);if(!n)throw Error("expected registration to be defined");let r=n.listeners;r.splice(r.indexOf(e),1)}},Mn=Object.defineProperty,Nn=(t,e,n)=>e in t?Mn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,qn=(t,e,n)=>(Nn(t,typeof e=="symbol"?e:e+"",n),n),rt=class{constructor(){qn(this,"bus",de())}mount(t){this.bus.emit("fill-mount",{fill:t})}unmount(t){this.bus.emit("fill-unmount",{fill:t})}update(t){this.bus.emit("fill-updated",{fill:t})}};function Pn(t){let e=t||new rt;return{controller:e,manager:new Fn(e.bus)}}cn=({controller:t,children:e})=>{let[n]=c.useState(()=>{let r=Pn(t);return r.manager.mount(),r});return c.useEffect(()=>()=>{n.manager.unmount()},[]),c.createElement(Re.Provider,{value:n},e)},ve=function(t,e){let[n,r]=(0,c.useState)([]),{manager:s}=(0,c.useContext)(Re);return(0,c.useEffect)(()=>(s.onComponentsChange(t,r),()=>{s.removeOnComponentsChange(t,r)}),[t]),n.flatMap((i,d)=>{let{children:u}=i;return u.map((p,w)=>{if(typeof p=="number"||typeof p=="string")throw Error("Only element children will work here");return c.cloneElement(p,{key:d.toString()+w.toString(),...e})})})},Ze=t=>{let e=ve(t.name,t.childProps);if(typeof t.children=="function"){let n=t.children(e);if(c.isValidElement(n)||n===null)return n;throw Error("Slot rendered with function must return a valid React Element.")}return e},hn=V(null);var{valueAtom:jn,useActions:Ln}=Pr(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:At()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(n=>n.id!==e)}),clearBanners:t=>({...t,banners:[]})});an=()=>lr(jn),tn=function(){return Ln()},un=new rt,ue={SIDEBAR:"sidebar",CONTEXT_AWARE_PANEL:"context-aware-panel"};let st,it,at;st=class{constructor(){a(this,"subscriptions",new Map)}addSubscription(t,e){var n;this.subscriptions.has(t)||this.subscriptions.set(t,new Set),(n=this.subscriptions.get(t))==null||n.add(e)}removeSubscription(t,e){var n;(n=this.subscriptions.get(t))==null||n.delete(e)}notify(t,e){for(let n of this.subscriptions.get(t)??[])n(e)}},Ve=class et{constructor(e){a(this,"subscriptions",new st);this.producer=e}static withProducerCallback(e){return new et(e)}static empty(){return new et}startProducer(){this.producer&&this.producer(e=>{this.subscriptions.notify("message",e)})}connect(){return new Promise(e=>setTimeout(e,0)).then(()=>{this.subscriptions.notify("open",new Event("open"))})}get readyState(){return WebSocket.OPEN}reconnect(e,n){this.close(),this.connect()}close(){this.subscriptions.notify("close",new Event("close"))}send(e){return this.subscriptions.notify("message",new MessageEvent("message",{data:e})),Promise.resolve()}addEventListener(e,n){this.subscriptions.addSubscription(e,n),e==="open"&&n(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,n){this.subscriptions.removeSubscription(e,n)}},it=1e10,at=1e3;function ce(t,e){let n=t.map(r=>`"${r}"`).join(", ");return Error(`This RPC instance cannot ${e} because the transport did not provide one or more of these methods: ${n}`)}function An(t={}){let e={};function n(o){e=o}let r={};function s(o){var m;r.unregisterHandler&&r.unregisterHandler(),r=o,(m=r.registerHandler)==null||m.call(r,se)}let i;function d(o){if(typeof o=="function"){i=o;return}i=(m,x)=>{let f=o[m];if(f)return f(x);let v=o._;if(!v)throw Error(`The requested method has no handler: ${m}`);return v(m,x)}}let{maxRequestTime:u=at}=t;t.transport&&s(t.transport),t.requestHandler&&d(t.requestHandler),t._debugHooks&&n(t._debugHooks);let p=0;function w(){return p<=it?++p:p=0}let C=new Map,E=new Map;function N(o,...m){let x=m[0];return new Promise((f,v)=>{var te;if(!r.send)throw ce(["send"],"make requests");let T=w(),G={type:"request",id:T,method:o,params:x};C.set(T,{resolve:f,reject:v}),u!==1/0&&E.set(T,setTimeout(()=>{E.delete(T),v(Error("RPC request timed out."))},u)),(te=e.onSend)==null||te.call(e,G),r.send(G)})}let q=new Proxy(N,{get:(o,m,x)=>m in o?Reflect.get(o,m,x):f=>N(m,f)}),P=q;function j(o,...m){var v;let x=m[0];if(!r.send)throw ce(["send"],"send messages");let f={type:"message",id:o,payload:x};(v=e.onSend)==null||v.call(e,f),r.send(f)}let L=new Proxy(j,{get:(o,m,x)=>m in o?Reflect.get(o,m,x):f=>j(m,f)}),S=L,A=new Map,H=new Set;function ee(o,m){var x;if(!r.registerHandler)throw ce(["registerHandler"],"register message listeners");if(o==="*"){H.add(m);return}A.has(o)||A.set(o,new Set),(x=A.get(o))==null||x.add(m)}function re(o,m){var x,f;if(o==="*"){H.delete(m);return}(x=A.get(o))==null||x.delete(m),((f=A.get(o))==null?void 0:f.size)===0&&A.delete(o)}async function se(o){var m,x;if((m=e.onReceive)==null||m.call(e,o),!("type"in o))throw Error("Message does not contain a type.");if(o.type==="request"){if(!r.send||!i)throw ce(["send","requestHandler"],"handle requests");let{id:f,method:v,params:T}=o,G;try{G={type:"response",id:f,success:!0,payload:await i(v,T)}}catch(te){if(!(te instanceof Error))throw te;G={type:"response",id:f,success:!1,error:te.message}}(x=e.onSend)==null||x.call(e,G),r.send(G);return}if(o.type==="response"){let f=E.get(o.id);f!=null&&clearTimeout(f);let{resolve:v,reject:T}=C.get(o.id)??{};o.success?v==null||v(o.payload):T==null||T(Error(o.error));return}if(o.type==="message"){for(let v of H)v(o.id,o.payload);let f=A.get(o.id);if(!f)return;for(let v of f)v(o.payload);return}throw Error(`Unexpected RPC message type: ${o.type}`)}return{setTransport:s,setRequestHandler:d,request:q,requestProxy:P,send:L,sendProxy:S,addMessageListener:ee,removeMessageListener:re,proxy:{send:S,request:P},_setDebugHooks:n}}function In(t){return An(t)}var ot="[transport-id]";function Tn(t,e){let{transportId:n}=e;return n==null?t:{[ot]:n,data:t}}function Un(t,e){let{transportId:n,filter:r}=e,s=r==null?void 0:r();if(n!=null&&s!=null)throw Error("Cannot use both `transportId` and `filter` at the same time");let i=t;if(n){if(t[ot]!==n)return[!0];i=t.data}return s===!1?[!0]:[!1,i]}function Wn(t,e={}){let{transportId:n,filter:r,remotePort:s}=e,i=t,d=s??t,u;return{send(p){d.postMessage(Tn(p,{transportId:n}))},registerHandler(p){u=w=>{let C=w.data,[E,N]=Un(C,{transportId:n,filter:()=>r==null?void 0:r(w)});E||p(N)},i.addEventListener("message",u)},unregisterHandler(){u&&i.removeEventListener("message",u)}}}function On(t,e){return Wn(t,e)}function lt(t){return In({transport:On(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{g.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{g.debug("[rpc] Worker -> Parent",e)}}})}Le=V("Initializing..."),Xt=V(t=>{let e=t(pr),n=Object.values(e.cellRuntime);return n.some(r=>!Lr(r.output))?!0:n.every(r=>r.status==="idle")});var ut=Ur(),dt="marimo:file",ct=new dr(null);const zn={saveFile(t){ct.set(dt,t)},readFile(){return ct.get(dt)}};var Dn={saveFile(t){ie.setCodeForHash((0,ut.compressToEncodedURIComponent)(t))},readFile(){let t=ie.getCodeFromHash()||ie.getCodeFromSearchParam();return t?(0,ut.decompressFromEncodedURIComponent)(t):null}};const Bn={saveFile(t){},readFile(){let t=document.querySelector("marimo-code");return t?decodeURIComponent(t.textContent||"").trim():null}};var Hn={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)}},$n={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
|
|
2
|
+
`)}},ft=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 fe;ae=new ft([Bn,Dn]),fe=new ft([zn,Hn,$n]),He=class wn{constructor(){a(this,"initialized",new Lt);a(this,"sendRename",async({filename:e})=>(e===null||(ie.setFilename(e),await this.rpc.proxy.request.bridge({functionName:"rename_file",payload:e})),null));a(this,"sendSave",async e=>{if(!this.saveRpc)return g.warn("Save RPC not initialized"),null;await this.saveRpc.saveNotebook(e);let n=await this.readCode();return n.contents&&(ae.saveFile(n.contents),fe.saveFile(n.contents)),this.rpc.proxy.request.saveNotebook(e).catch(r=>{g.error(r)}),null});a(this,"sendCopy",async()=>{R()});a(this,"sendStdin",async e=>(await this.rpc.proxy.request.bridge({functionName:"put_input",payload:e.text}),null));a(this,"sendPdb",async()=>{R()});a(this,"sendRun",async e=>(await this.rpc.proxy.request.loadPackages(e.codes.join(`
|
|
3
|
+
`)),await this.putControlRequest({type:"execute-cells",...e}),null));a(this,"sendRunScratchpad",async e=>(await this.rpc.proxy.request.loadPackages(e.code),await this.putControlRequest({type:"execute-scratchpad",...e}),null));a(this,"sendInterrupt",async()=>(this.interruptBuffer!==void 0&&(this.interruptBuffer[0]=2),null));a(this,"sendShutdown",async()=>(window.close(),null));a(this,"sendFormat",async e=>await this.rpc.proxy.request.bridge({functionName:"format",payload:e}));a(this,"sendDeleteCell",async e=>(await this.putControlRequest({type:"delete-cell",...e}),null));a(this,"sendInstallMissingPackages",async e=>(this.putControlRequest({type:"install-packages",...e}),null));a(this,"sendCodeCompletionRequest",async e=>(qe.get(fr)||await this.rpc.proxy.request.bridge({functionName:"code_complete",payload:e}),null));a(this,"saveUserConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_user_config",payload:e}),Rr.post("/kernel/save_user_config",e,{baseUrl:"/"}).catch(n=>(g.error(n),null))));a(this,"saveAppConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_app_config",payload:e}),null));a(this,"saveCellConfig",async e=>(await this.putControlRequest({type:"update-cell-config",...e}),null));a(this,"sendRestart",async()=>{let e=await this.readCode();return e.contents&&(ae.saveFile(e.contents),fe.saveFile(e.contents)),Wr(),null});a(this,"readCode",async()=>this.saveRpc?{contents:await this.saveRpc.readNotebook()}:(g.warn("Save RPC not initialized"),{contents:""}));a(this,"readSnippets",async()=>await this.rpc.proxy.request.bridge({functionName:"read_snippets",payload:void 0}));a(this,"openFile",async({path:e})=>{let n=Or({code:null,baseUrl:window.location.origin});return window.open(n,"_blank"),null});a(this,"sendListFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"list_files",payload:e}));a(this,"sendSearchFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"search_files",payload:e}));a(this,"sendComponentValues",async e=>(await this.putControlRequest({type:"update-ui-element",...e,token:At()}),null));a(this,"sendInstantiate",async e=>null);a(this,"sendFunctionRequest",async e=>(await this.putControlRequest({type:"invoke-function",...e}),null));a(this,"sendCreateFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"create_file_or_directory",payload:e}));a(this,"sendDeleteFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"delete_file_or_directory",payload:e}));a(this,"sendRenameFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"move_file_or_directory",payload:e}));a(this,"sendUpdateFile",async e=>await this.rpc.proxy.request.bridge({functionName:"update_file",payload:e}));a(this,"sendFileDetails",async e=>await this.rpc.proxy.request.bridge({functionName:"file_details",payload:e}));a(this,"exportAsHTML",async e=>await this.rpc.proxy.request.bridge({functionName:"export_html",payload:e}));a(this,"exportAsMarkdown",async e=>await this.rpc.proxy.request.bridge({functionName:"export_markdown",payload:e}));a(this,"previewDatasetColumn",async e=>(await this.putControlRequest({type:"preview-dataset-column",...e}),null));a(this,"previewSQLTable",async e=>(await this.putControlRequest({type:"preview-sql-table",...e}),null));a(this,"previewSQLTableList",async e=>(await this.putControlRequest({type:"list-sql-tables",...e}),null));a(this,"previewDataSourceConnection",async e=>(await this.putControlRequest({type:"list-data-source-connection",...e}),null));a(this,"validateSQL",async e=>(await this.putControlRequest({type:"validate-sql",...e}),null));a(this,"sendModelValue",async e=>(await this.putControlRequest({type:"model",...e}),null));a(this,"syncCellIds",()=>Promise.resolve(null));a(this,"addPackage",async e=>this.rpc.proxy.request.addPackage(e));a(this,"removePackage",async e=>this.rpc.proxy.request.removePackage(e));a(this,"getPackageList",async()=>await this.rpc.proxy.request.listPackages());a(this,"getDependencyTree",async()=>({tree:{dependencies:[],name:"",tags:[],version:null}}));a(this,"listSecretKeys",async e=>(await this.putControlRequest({type:"list-secret-keys",...e}),null));a(this,"getUsageStats",R);a(this,"openTutorial",R);a(this,"getRecentFiles",R);a(this,"getWorkspaceFiles",R);a(this,"getRunningNotebooks",R);a(this,"shutdownSession",R);a(this,"exportAsPDF",R);a(this,"autoExportAsHTML",R);a(this,"autoExportAsMarkdown",R);a(this,"autoExportAsIPYNB",R);a(this,"updateCellOutputs",R);a(this,"writeSecret",R);a(this,"invokeAiTool",R);a(this,"clearCache",R);a(this,"getCacheInfo",R);_r()&&(this.rpc=lt(new Worker(new URL(""+new URL("worker-BPV9SmHz.js",import.meta.url).href,""+import.meta.url),{type:"module",name:Mt()})),this.rpc.addMessageListener("ready",()=>{this.startSession()}),this.rpc.addMessageListener("initialized",()=>{this.saveRpc=this.getSaveWorker(),this.setInterruptBuffer(),this.initialized.resolve()}),this.rpc.addMessageListener("initializingMessage",({message:e})=>{qe.set(Le,e)}),this.rpc.addMessageListener("initializedError",({error:e})=>{this.initialized.status==="resolved"&&(g.error(e),Tr({title:"Error initializing",description:e,variant:"danger"})),this.initialized.reject(Error(e))}),this.rpc.addMessageListener("kernelMessage",({message:e})=>{var n;(n=this.messageConsumer)==null||n.call(this,new MessageEvent("message",{data:e}))}))}static get INSTANCE(){let e="_marimo_private_PyodideBridge";return window[e]||(window[e]=new wn),window[e]}getSaveWorker(){return Tt()==="read"?(g.debug("Skipping SaveWorker in read-mode"),{readFile:R,readNotebook:R,saveNotebook:R}):lt(new Worker(new URL(""+new URL("save-worker-CtJsIYIM.js",import.meta.url).href,""+import.meta.url),{type:"module",name:Mt()})).proxy.request}async startSession(){let e=await ae.readFile(),n=await fe.readFile(),r=ie.getFilename(),s=qe.get(Er),i={},d=new URLSearchParams(window.location.search);for(let u of d.keys()){let p=d.getAll(u);i[u]=p.length===1?p[0]:p}await this.rpc.proxy.request.startSession({queryParameters:i,code:e||n||"",filename:r,userConfig:{...s,runtime:{...s.runtime,auto_instantiate:Tt()==="read"?!0:s.runtime.auto_instantiate}}})}setInterruptBuffer(){crossOriginIsolated?(this.interruptBuffer=new Uint8Array(new SharedArrayBuffer(1)),this.rpc.proxy.request.setInterruptBuffer(this.interruptBuffer)):g.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})}},Kt=function(){return Ve.withProducerCallback(t=>{He.INSTANCE.attachMessageConsumer(t)})},fn=function(t=Pe()){let e=window.fetch;return window.fetch=async(n,r)=>{let s=n instanceof Request?n.url:n.toString();if(s.startsWith("data:"))return e(n,r);try{let i=he(s,t);if(i){let d=await(await e(i)).arrayBuffer();return new Response(d,{headers:{"Content-Type":Vn(s)}})}return e(n,r)}catch(i){return g.error("Error parsing URL",i),e(n,r)}},()=>{window.fetch=e}};function Vn(t){return t.endsWith(".csv")?"text/csv":t.endsWith(".json")?"application/json":t.endsWith(".txt")?"text/plain":"application/octet-stream"}Bt=function(t,e=Pe()){let n=t.http.bind(t),r=t.load.bind(t);return t.http=async s=>{let i=he(s,e);if(i)return await window.fetch(i).then(d=>d.text());try{return await n(s)}catch(d){if(s.startsWith("data:"))return await window.fetch(s).then(u=>u.text());throw d}},t.load=async s=>{let i=he(s,e);if(i)return await window.fetch(i).then(d=>d.text());try{return await r(s)}catch(d){if(s.startsWith("data:"))return await window.fetch(s).then(u=>u.text());throw d}},()=>{t.http=n,t.load=r}};function ht(t){return t.startsWith(".")?t.slice(1):t}function Xn(t,e=Pe()){let n=he(t,e);if(!n)return t;let r=zr(n);return URL.createObjectURL(r)}function he(t,e){let n=document.baseURI;n.startsWith("blob:")&&(n=n.replace("blob:",""));let r=new URL(t,n).pathname,s=mt(t),i=mt(r);return e[t]||e[ht(t)]||e[r]||e[ht(r)]||s&&e[s]||i&&e[i]}function mt(t){let e=t.indexOf("/@file/");return e===-1?null:t.slice(e)}function me(t){return()=>({TYPE:t,is(e){return e.type===t},create(e){return new CustomEvent(t,e)}})}De=me("marimo-value-input")(),Ue=me("marimo-value-update")(),Be=me("marimo-value-ready")(),We=me("marimo-incoming-message")(),Ht=function(t,e){return De.create({bubbles:!0,composed:!0,detail:{value:t,element:e}})},Ae=class vn{static get INSTANCE(){let e="_marimo_private_UIElementRegistry";return window[e]||(window[e]=new vn),window[e]}constructor(){this.entries=new Map}has(e){return this.entries.has(e)}set(e,n){this.entries.has(e)&&g.debug("UIElementRegistry overwriting entry for objectId.",e),this.entries.set(e,{objectId:e,value:n,elements:new Set})}registerInstance(e,n){let r=this.entries.get(e);r===void 0?this.entries.set(e,{objectId:e,value:hr(n,this),elements:new Set([n])}):r.elements.add(n)}removeInstance(e,n){let r=this.entries.get(e);r!=null&&r.elements.has(n)&&r.elements.delete(n)}removeElementsByCell(e){[...this.entries.keys()].filter(n=>n.startsWith(`${e}-`)).forEach(n=>{this.entries.delete(n)})}lookupValue(e){let n=this.entries.get(e);return n===void 0?void 0:n.value}broadcastMessage(e,n,r){let s=this.entries.get(e);s===void 0?g.warn("UIElementRegistry missing entry",e):s.elements.forEach(i=>{i.dispatchEvent(We.create({bubbles:!1,composed:!0,detail:{objectId:e,message:n,buffers:r}}))})}broadcastValueUpdate(e,n,r){let s=this.entries.get(n);s===void 0?g.warn("UIElementRegistry missing entry",n):(s.value=r,s.elements.forEach(i=>{i!==e&&i.dispatchEvent(Ue.create({bubbles:!1,composed:!0,detail:{value:r,element:i}}))}),document.dispatchEvent(Be.create({bubbles:!0,composed:!0,detail:{objectId:n}})))}},Jt=Ae.INSTANCE,bn=new Ar("function-call-result",async(t,e)=>{await je().sendFunctionRequest({functionCallId:t,...e})}),Dt="68px";var Yn="288px";$t=t=>t?/^\d+$/.test(t)?`${t}px`:t:Yn,Yt=cr({isOpen:!0},(t,e)=>{if(!e)return t;switch(e.type){case"toggle":return{...t,isOpen:e.isOpen??t.isOpen};case"setWidth":return{...t,width:e.width};default:return t}});function Se(t,e=[]){let n=[];if(t instanceof DataView)n.push(e);else if(Array.isArray(t))for(let[r,s]of t.entries())n.push(...Se(s,[...e,r]));else if(typeof t=="object"&&t)for(let[r,s]of Object.entries(t))n.push(...Se(s,[...e,r]));return n}function Qn(t){let e=Se(t);if(e.length===0)return{state:t,buffers:[],bufferPaths:[]};let n=structuredClone(t),r=[],s=[];for(let i of e){let d=yr(t,i);if(d instanceof DataView){let u=Pt(d);r.push(u),s.push(i),oe(n,i,u)}}return{state:n,buffers:r,bufferPaths:s}}function pt(t){let{state:e,bufferPaths:n,buffers:r}=t;if(!n||n.length===0)return e;r&&xr(r.length===n.length,"Buffers and buffer paths not the same length");let s=e;for(let[i,d]of n.entries()){let u=r==null?void 0:r[i];if(u==null){g.warn("[anywidget] Could not find buffer at path",d);continue}typeof u=="string"?oe(s,d,jt(u)):oe(s,d,u)}return s}const gt={invoke:async()=>{let t="anywidget.invoke not supported in marimo. Please file an issue at https://github.com/marimo-team/marimo/issues";throw g.warn(t),Error(t)}};function Gn(t){if(typeof AbortSignal.any=="function")return AbortSignal.any(t);let e=new AbortController;for(let n of t){if(n.aborted)return e.abort(n.reason),e.signal;n.addEventListener("abort",()=>e.abort(n.reason),{once:!0})}return e.signal}var Jn=(xt=class{constructor(){k(this,pe);k(this,X,new Map)}getModule(t,e){let n=l(this,X).get(e);if(n)return n;let r=$(this,pe,xn).call(this,t).catch(s=>{throw l(this,X).delete(e),s});return l(this,X).set(e,r),r}invalidate(t){g.debug(`[WidgetDefRegistry] Invalidating module cache for hash=${t}`),l(this,X).delete(t)}},X=new WeakMap,pe=new WeakSet,xn=async function(t){let e=Cr(t).toString();return Mr()&&(e=Xn(e)),Ir(()=>import(e).then(async n=>(await n.__tla,n)),[],import.meta.url)},xt),Kn=(Et=class{constructor(){k(this,U);k(this,Y);k(this,I)}async bind(t,e){var i,d;if(l(this,I)&&l(this,Y)===t)return l(this,I);l(this,I)&&l(this,Y)!==t&&(g.debug("[WidgetBinding] Hot-reload detected, aborting previous binding"),(i=l(this,U))==null||i.abort(),F(this,U,void 0),F(this,I,void 0)),F(this,Y,t),F(this,U,new AbortController);let n=l(this,U).signal,r=typeof t=="function"?await t():t,s=await((d=r.initialize)==null?void 0:d.call(r,{model:e,experimental:gt}));return s&&n.addEventListener("abort",s),F(this,I,async(u,p)=>{var C;let w=await((C=r.render)==null?void 0:C.call(r,{model:e,el:u,experimental:gt}));w&&Gn([p,n]).addEventListener("abort",()=>{let E=p.aborted?"view unmount":"binding destroyed";g.debug(`[WidgetBinding] Render cleanup triggered (reason: ${E})`),w()})}),l(this,I)}destroy(){var t;g.debug("[WidgetBinding] Destroying binding, aborting initialize lifecycle"),(t=l(this,U))==null||t.abort(),F(this,U,void 0),F(this,Y,void 0),F(this,I,void 0)}},U=new WeakMap,Y=new WeakMap,I=new WeakMap,Et),Zn=(_t=class{constructor(){k(this,O,new Map)}getOrCreate(t){let e=l(this,O).get(t);return e||(e=new Kn,l(this,O).set(t,e)),e}destroy(t){let e=l(this,O).get(t);e&&(g.debug(`[BindingManager] Destroying binding for model=${t}`),e.destroy(),l(this,O).delete(t))}has(t){return l(this,O).has(t)}},O=new WeakMap,_t);zt=new Jn,ze=new Zn;var er=(Ct=class{constructor(t=1e4){k(this,K);k(this,W,new Map);k(this,ne);F(this,ne,t)}get(t){let e=$(this,K,Ce).call(this,t);return e.deferred.status==="pending"&&setTimeout(()=>{e.deferred.status==="pending"&&(e.deferred.reject(Error(`Model not found for key: ${t}`)),l(this,W).delete(t))},l(this,ne)),e.deferred.promise}create(t,e){let n=$(this,K,Ce).call(this,t);n.deferred.resolve(e(n.controller.signal))}set(t,e){$(this,K,Ce).call(this,t).deferred.resolve(e)}getSync(t){let e=l(this,W).get(t);if(e&&e.deferred.status==="resolved")return e.deferred.value}delete(t){var e;g.debug(`[ModelManager] Deleting model=${t}, aborting lifecycle signal`),(e=l(this,W).get(t))==null||e.controller.abort(),l(this,W).delete(t)}},W=new WeakMap,ne=new WeakMap,K=new WeakSet,Ce=function(t){let e=l(this,W).get(t);return e||(e={deferred:new Lt,controller:new AbortController},l(this,W).set(t,e)),e},Ct),yt=Symbol("marimo");function ke(t){return t[yt]}we=new er;var tr=(Rt=yt,Q=class{constructor(e,n,r){k(this,B);k(this,ge,"change");k(this,z);k(this,D);k(this,Z);k(this,M,{});a(this,Rt,{updateAndEmitDiffs:e=>$(this,B,_n).call(this,e),emitCustomMessage:(e,n)=>$(this,B,Cn).call(this,e,n)});a(this,"widget_manager",{async get_model(e){let n=await Q._modelManager.get(e);if(!n)throw Error(`Model not found with id: ${e}. This is likely because the model was not registered.`);return n}});k(this,ye,wr(()=>{let e=l(this,M)[l(this,ge)];if(e)for(let n of e)try{n()}catch(r){g.error("Error emitting event",r)}},0));F(this,D,e),F(this,Z,n),F(this,z,new Map),r&&r.addEventListener("abort",()=>{g.debug("[Model] Signal aborted, clearing all listeners"),F(this,M,{})})}off(e,n){var r;if(!e){F(this,M,{});return}if(!n){l(this,M)[e]=new Set;return}(r=l(this,M)[e])==null||r.delete(n)}send(e,n,r){let s=(r??[]).map(i=>i instanceof ArrayBuffer?new DataView(i):new DataView(i.buffer,i.byteOffset,i.byteLength));return l(this,Z).sendCustomMessage(e,s).then(()=>n==null?void 0:n())}get(e){return l(this,D)[e]}set(e,n){F(this,D,{...l(this,D),[e]:n}),l(this,z).set(e,n),$(this,B,En).call(this,`change:${e}`,n),l(this,ye).call(this)}save_changes(){if(l(this,z).size===0)return;let e=Object.fromEntries(l(this,z).entries());l(this,z).clear(),l(this,Z).sendUpdate(e)}on(e,n){l(this,M)[e]||(l(this,M)[e]=new Set),l(this,M)[e].add(n)}},ge=new WeakMap,z=new WeakMap,D=new WeakMap,Z=new WeakMap,M=new WeakMap,B=new WeakSet,En=function(e,n){if(!l(this,M)[e])return;let r=l(this,M)[e];for(let s of r)try{s(n)}catch(i){g.error("Error emitting event",i)}},_n=function(e){e!=null&&Object.keys(e).forEach(n=>{let r=n;l(this,D)[r]!==e[r]&&this.set(r,e[r])})},Cn=function(e,n=[]){let r=l(this,M)["msg:custom"];if(r)for(let s of r)try{s(e.content,n)}catch(i){g.error("Error emitting event",i)}},ye=new WeakMap,a(Q,"_modelManager",we),Q);Vt=async function(t,e){let n=e.model_id,r=e.message,s=("buffers"in r?r.buffers:[]).map(jt);switch(r.method){case"open":{let{state:i,buffer_paths:d=[]}=r,u=pt({state:i,bufferPaths:d,buffers:s}),p=t.getSync(n);if(p){ke(p).updateAndEmitDiffs(u);return}t.create(n,w=>new tr(u,{async sendUpdate(C){if(w.aborted){g.debug(`[Model] sendUpdate suppressed for model=${n} (signal aborted)`);return}let{state:E,buffers:N,bufferPaths:q}=Qn(C);await je().sendModelValue({modelId:n,message:{method:"update",state:E,bufferPaths:q},buffers:N})},async sendCustomMessage(C,E){if(w.aborted){g.debug(`[Model] sendCustomMessage suppressed for model=${n} (signal aborted)`);return}await je().sendModelValue({modelId:n,message:{method:"custom",content:C},buffers:E.map(Pt)})}},w));return}case"custom":ke(await t.get(n)).emitCustomMessage({method:"custom",content:r.content},s);return;case"close":ze.destroy(n),t.delete(n);return;case"update":{let{state:i,buffer_paths:d=[]}=r,u=pt({state:i,bufferPaths:d,buffers:s});ke(await t.get(n)).updateAndEmitDiffs(u);return}default:br(r)}},mr(we,"MODEL_MANAGER");let bt;Ge=V(null),Wt=V(null),Oe=V(!1),bt=V(!1),Qe=V(!1);var nr=Ft();Ie=t=>{let e=(0,nr.c)(8),{onResize:n,startingWidth:r,minWidth:s,maxWidth:i}=t,d=(0,c.useRef)(null),u=(0,c.useRef)(null),p=(0,c.useRef)(null),w,C;e[0]!==i||e[1]!==s||e[2]!==n?(w=()=>{let P=d.current,j=u.current,L=p.current;if(!P||!j&&!L)return;let S=Number.parseInt(window.getComputedStyle(P).width,10),A=0,H=!1,ee=null,re=f=>{if(!P||!H||!ee)return;let v=f.clientX-A;A=f.clientX,S=ee==="left"?S-v:S+v,s&&(S=Math.max(s,S)),i&&(S=Math.min(i,S)),P.style.width=`${S}px`},se=()=>{H&&(n==null||n(S),H=!1,ee=null),document.removeEventListener("mousemove",re),document.removeEventListener("mouseup",se)},o=(f,v)=>{f.preventDefault(),H=!0,ee=v,A=f.clientX,document.addEventListener("mousemove",re),document.addEventListener("mouseup",se)},m=f=>o(f,"left"),x=f=>o(f,"right");return j&&j.addEventListener("mousedown",m),L&&L.addEventListener("mousedown",x),()=>{j&&j.removeEventListener("mousedown",m),L&&L.removeEventListener("mousedown",x),document.removeEventListener("mousemove",re),document.removeEventListener("mouseup",se)}},C=[s,i,n],e[0]=i,e[1]=s,e[2]=n,e[3]=w,e[4]=C):(w=e[3],C=e[4]),(0,c.useEffect)(w,C);let E;e[5]===Symbol.for("react.memo_cache_sentinel")?(E={left:u,right:p},e[5]=E):E=e[5];let N=r==="contentWidth"?"var(--content-width-medium)":`${r}px`,q;return e[6]===N?q=e[7]:(q={resizableDivRef:d,handleRefs:E,style:{width:N}},e[6]=N,e[7]=q),q},Te=function(t){t||window.dispatchEvent(new Event("resize"))};var wt=Ft(),h=kt(Sr(),1);pn=()=>{let t=(0,wt.c)(16),[e,n]=be(Ge),[r,s]=be(Oe),[i,d]=be(bt),[u,p]=be(Qe),w;t[0]!==s||t[1]!==n?(w=()=>{n(null),s(!1)},t[0]=s,t[1]=n,t[2]=w):w=t[2];let C=w;if(ve(ue.CONTEXT_AWARE_PANEL).length===0||!e||!r)return null;let E;t[3]!==u||t[4]!==i||t[5]!==p||t[6]!==d?(E=()=>(0,h.jsxs)("div",{className:"flex flex-row items-center gap-3",children:[(0,h.jsx)(It,{content:i?"Unpin panel":"Pin panel",children:(0,h.jsx)(Ut,{size:"xs",onPressedChange:()=>d(!i),pressed:i,"aria-label":i?"Unpin panel":"Pin panel",children:i?(0,h.jsx)(_,{className:"w-4 h-4"}):(0,h.jsx)(Nr,{className:"w-4 h-4"})})}),(0,h.jsx)(It,{content:u?(0,h.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,h.jsx)("span",{children:"Follow focused table"}),(0,h.jsx)("span",{className:"text-xs text-muted-foreground w-64",children:"The panel updates as cells that output tables are focused. Click to fix to the current cell."})]}):(0,h.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,h.jsx)("span",{children:"Focus on current table"}),(0,h.jsx)("span",{className:"text-xs text-muted-foreground w-64",children:"The panel is focused on the current table. Click to update based on which cell is focused."})]}),children:(0,h.jsx)(Ut,{size:"xs",onPressedChange:()=>p(!u),pressed:u,"aria-label":u?"Follow focused cell":"Fixed",children:(0,h.jsx)(b,{className:Fr("w-4 h-4",u&&"text-primary")})})})]}),t[3]=u,t[4]=i,t[5]=p,t[6]=d,t[7]=E):E=t[7];let N=E,q;t[8]!==C||t[9]!==N?(q=()=>(0,h.jsxs)("div",{className:"mt-2 pb-7 mb-4 h-full overflow-auto",children:[(0,h.jsxs)("div",{className:"flex flex-row justify-between items-center mx-2",children:[N(),(0,h.jsx)(kr,{variant:"linkDestructive",size:"icon",onClick:C,"aria-label":"Close selection panel",children:(0,h.jsx)(jr,{className:"w-4 h-4"})})]}),(0,h.jsx)(Nt,{children:(0,h.jsx)(Ze,{name:ue.CONTEXT_AWARE_PANEL})})]}),t[8]=C,t[9]=N,t[10]=q):q=t[10];let P=q;if(!i){let S;return t[11]===P?S=t[12]:(S=(0,h.jsx)(rr,{children:P()}),t[11]=P,t[12]=S),S}let j;t[13]===Symbol.for("react.memo_cache_sentinel")?(j=(0,h.jsx)(Dr,{onDragging:Te,className:"resize-handle border-border z-20 print:hidden border-l"}),t[13]=j):j=t[13];let L;return t[14]===P?L=t[15]:(L=(0,h.jsxs)(h.Fragment,{children:[j,(0,h.jsx)(Br,{defaultSize:20,minSize:15,maxSize:80,children:P()})]}),t[14]=P,t[15]=L),L},Gt=t=>{let e=(0,wt.c)(2),{children:n}=t,r;return e[0]===n?r=e[1]:(r=(0,h.jsx)(Nt,{children:(0,h.jsx)(Rn,{name:ue.CONTEXT_AWARE_PANEL,children:n})}),e[0]=n,e[1]=r),r};var rr=({children:t})=>{let{resizableDivRef:e,handleRefs:n,style:r}=Ie({startingWidth:400,minWidth:300,maxWidth:1500});return(0,h.jsxs)("div",{className:"absolute z-40 right-0 h-full bg-background flex flex-row",children:[(0,h.jsx)("div",{ref:n.left,className:"w-1 h-full cursor-col-resize border-l"}),(0,h.jsx)("div",{ref:e,style:r,children:t})]})};rn=function(){var t=[...arguments];return(0,c.useMemo)(()=>e=>{t.forEach(n=>n(e))},t)},Ke=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0,le=function(t){let e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"},xe=function(t){return"nodeType"in t},J=function(t){var e;return t?le(t)?t:xe(t)?((e=t.ownerDocument)==null?void 0:e.defaultView)??window:window:window},$e=function(t){let{Document:e}=J(t);return t instanceof e},Je=function(t){return le(t)?!1:t instanceof J(t).HTMLElement},Xe=function(t){return t instanceof J(t).SVGElement},dn=function(t){return t?le(t)?t.document:xe(t)?$e(t)?t:Je(t)||Xe(t)?t.ownerDocument:document:document:document},_e=Ke?c.useLayoutEffect:c.useEffect,Ye=function(t){let e=(0,c.useRef)(t);return _e(()=>{e.current=t}),(0,c.useCallback)(function(){var n=[...arguments];return e.current==null?void 0:e.current(...n)},[])},Zt=function(){let t=(0,c.useRef)(null);return[(0,c.useCallback)((e,n)=>{t.current=setInterval(e,n)},[]),(0,c.useCallback)(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[])]},yn=function(t,e){e===void 0&&(e=[t]);let n=(0,c.useRef)(t);return _e(()=>{n.current!==t&&(n.current=t)},e),n},nn=function(t,e){let n=(0,c.useRef)();return(0,c.useMemo)(()=>{let r=t(n.current);return n.current=r,r},[...e])},gn=function(t){let e=Ye(t),n=(0,c.useRef)(null);return[n,(0,c.useCallback)(r=>{r!==n.current&&(e==null||e(r,n.current)),n.current=r},[])]},Qt=function(t){let e=(0,c.useRef)();return(0,c.useEffect)(()=>{e.current=t},[t]),e.current};var Fe={};Ot=function(t,e){return(0,c.useMemo)(()=>{if(e)return e;let n=Fe[t]==null?0:Fe[t]+1;return Fe[t]=n,t+"-"+n},[t,e])};function vt(t){return function(e){return[...arguments].slice(1).reduce((n,r)=>{let s=Object.entries(r);for(let[i,d]of s){let u=n[i];u!=null&&(n[i]=u+t*d)}return n},{...e})}}ln=vt(1),on=vt(-1);function sr(t){return"clientX"in t&&"clientY"in t}mn=function(t){if(!t)return!1;let{KeyboardEvent:e}=J(t.target);return e&&t instanceof e};function ir(t){if(!t)return!1;let{TouchEvent:e}=J(t.target);return e&&t instanceof e}en=function(t){if(ir(t)){if(t.touches&&t.touches.length){let{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){let{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return sr(t)?{x:t.clientX,y:t.clientY}:null};let Me;Ee=Object.freeze({Translate:{toString(t){if(!t)return;let{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;let{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[Ee.Translate.toString(t),Ee.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),Me="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]",sn=function(t){return t.matches(Me)?t:t.querySelector(Me)}});export{Le as $,Wt as A,Ae as B,Ot as C,Ie as D,Te as E,zt as F,Ue as G,We as H,Dt as I,Bt as J,Ht as K,$t as L,we as M,Vt as N,Oe as O,ze as P,Xt as Q,Yt as R,Qt as S,Gt as T,De as U,Jt as V,Be as W,Kt as X,He as Y,ae as Z,Zt as _,Hr as __tla,en as a,tn as at,nn as b,$e as c,ve as ct,xe as d,Ve as et,Xe as f,Ye as g,rn as h,sn as i,an as it,Qe as j,Ge as k,Je as l,oe as lt,on as m,ln as n,un as nt,dn as o,cn as ot,le as p,fn as q,Ke as r,hn as rt,J as s,Ze as st,Ee as t,ue as tt,mn as u,_e as v,pn as w,gn as x,yn as y,bn as z};
|
package/dist/index.html
CHANGED
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
<marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
|
|
67
67
|
<!-- /TODO -->
|
|
68
68
|
<title>{{ title }}</title>
|
|
69
|
-
<script type="module" crossorigin src="./assets/index-
|
|
69
|
+
<script type="module" crossorigin src="./assets/index-CD6Gw4UH.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-D2MJg03u.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/clsx-D8GwTfvk.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/cn-BKtXLv3a.js">
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
<link rel="modulepreload" crossorigin href="./assets/share-ipf2hrOh.js">
|
|
230
230
|
<link rel="modulepreload" crossorigin href="./assets/_baseSet-5Rdwpmr3.js">
|
|
231
231
|
<link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-Da3ksQXL.js">
|
|
232
|
-
<link rel="modulepreload" crossorigin href="./assets/utilities.esm-
|
|
232
|
+
<link rel="modulepreload" crossorigin href="./assets/utilities.esm-dm9SQStE.js">
|
|
233
233
|
<link rel="modulepreload" crossorigin href="./assets/floating-outline-BtdqbkUq.js">
|
|
234
234
|
<link rel="modulepreload" crossorigin href="./assets/useAddCell-CmuX2hOk.js">
|
|
235
235
|
<link rel="modulepreload" crossorigin href="./assets/eye-off-AK_9uodG.js">
|
package/package.json
CHANGED
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
import type { AnyWidget } from "@anywidget/types";
|
|
5
5
|
import { useEffect, useRef } from "react";
|
|
6
6
|
import { z } from "zod";
|
|
7
|
-
import { asRemoteURL } from "@/core/runtime/config";
|
|
8
|
-
import { resolveVirtualFileURL } from "@/core/static/files";
|
|
9
|
-
import { isStaticNotebook } from "@/core/static/static-state";
|
|
10
7
|
import { useAsyncData } from "@/hooks/useAsyncData";
|
|
11
8
|
import type { HTMLElementNotDerivedFromRef } from "@/hooks/useEventListener";
|
|
12
9
|
import { createPlugin } from "@/plugins/core/builder";
|
|
@@ -14,8 +11,9 @@ import type { IPluginProps } from "@/plugins/types";
|
|
|
14
11
|
import { prettyError } from "@/utils/errors";
|
|
15
12
|
import { Logger } from "@/utils/Logger";
|
|
16
13
|
import { ErrorBanner } from "../common/error-banner";
|
|
17
|
-
import {
|
|
14
|
+
import { MODEL_MANAGER, type Model } from "./model";
|
|
18
15
|
import type { ModelState, WidgetModelId } from "./types";
|
|
16
|
+
import { BINDING_MANAGER, WIDGET_DEF_REGISTRY } from "./widget-binding";
|
|
19
17
|
|
|
20
18
|
/**
|
|
21
19
|
* AnyWidget asset data
|
|
@@ -48,12 +46,7 @@ export function useAnyWidgetModule(opts: { jsUrl: string; jsHash: string }) {
|
|
|
48
46
|
error,
|
|
49
47
|
refetch,
|
|
50
48
|
} = useAsyncData(async () => {
|
|
51
|
-
|
|
52
|
-
// In static notebooks, resolve virtual files to blob URLs for import()
|
|
53
|
-
if (isStaticNotebook()) {
|
|
54
|
-
url = resolveVirtualFileURL(url);
|
|
55
|
-
}
|
|
56
|
-
return await import(/* @vite-ignore */ url);
|
|
49
|
+
return await WIDGET_DEF_REGISTRY.getModule(jsUrl, jsHash);
|
|
57
50
|
// Re-render on jsHash change (which is a hash of the contents of the file)
|
|
58
51
|
// instead of a jsUrl change because URLs may change without the contents
|
|
59
52
|
// actually changing (and we don't want to re-render on every change).
|
|
@@ -66,6 +59,7 @@ export function useAnyWidgetModule(opts: { jsUrl: string; jsHash: string }) {
|
|
|
66
59
|
const hasError = Boolean(error);
|
|
67
60
|
useEffect(() => {
|
|
68
61
|
if (hasError && jsUrl) {
|
|
62
|
+
WIDGET_DEF_REGISTRY.invalidate(jsHash);
|
|
69
63
|
refetch();
|
|
70
64
|
}
|
|
71
65
|
}, [hasError, jsUrl]);
|
|
@@ -180,6 +174,7 @@ const AnyWidgetSlot = (props: IPluginProps<ModelIdRef, Data>) => {
|
|
|
180
174
|
async function runAnyWidgetModule<T extends AnyWidgetState>(
|
|
181
175
|
widgetDef: AnyWidget<T>,
|
|
182
176
|
model: Model<T>,
|
|
177
|
+
modelId: WidgetModelId,
|
|
183
178
|
el: HTMLElement,
|
|
184
179
|
signal: AbortSignal,
|
|
185
180
|
): Promise<void> {
|
|
@@ -187,7 +182,8 @@ async function runAnyWidgetModule<T extends AnyWidgetState>(
|
|
|
187
182
|
el.innerHTML = "";
|
|
188
183
|
|
|
189
184
|
try {
|
|
190
|
-
const
|
|
185
|
+
const binding = BINDING_MANAGER.getOrCreate(modelId);
|
|
186
|
+
const render = await binding.bind(widgetDef, model);
|
|
191
187
|
await render(el, signal);
|
|
192
188
|
} catch (error) {
|
|
193
189
|
Logger.error("Error rendering anywidget", error);
|
|
@@ -231,7 +227,13 @@ const LoadedSlot = <T extends AnyWidgetState>({
|
|
|
231
227
|
return;
|
|
232
228
|
}
|
|
233
229
|
const controller = new AbortController();
|
|
234
|
-
runAnyWidgetModule(
|
|
230
|
+
runAnyWidgetModule(
|
|
231
|
+
widget,
|
|
232
|
+
model,
|
|
233
|
+
modelId,
|
|
234
|
+
htmlRef.current,
|
|
235
|
+
controller.signal,
|
|
236
|
+
);
|
|
235
237
|
return () => controller.abort();
|
|
236
238
|
// We re-run the widget when the modelId changes, which means the cell
|
|
237
239
|
// that created the Widget has been re-run.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { render, waitFor } from "@testing-library/react";
|
|
4
|
-
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
5
|
import { TestUtils } from "@/__tests__/test-helpers";
|
|
6
6
|
import type { HTMLElementNotDerivedFromRef } from "@/hooks/useEventListener";
|
|
7
7
|
import { visibleForTesting } from "../AnyWidgetPlugin";
|
|
8
8
|
import { MODEL_MANAGER, Model } from "../model";
|
|
9
9
|
import type { WidgetModelId } from "../types";
|
|
10
|
+
import { BINDING_MANAGER } from "../widget-binding";
|
|
10
11
|
|
|
11
12
|
const { LoadedSlot } = visibleForTesting;
|
|
12
13
|
|
|
@@ -19,14 +20,6 @@ const mockWidget = {
|
|
|
19
20
|
render: vi.fn(),
|
|
20
21
|
};
|
|
21
22
|
|
|
22
|
-
vi.mock("../AnyWidgetPlugin", async () => {
|
|
23
|
-
const originalModule = await vi.importActual("../AnyWidgetPlugin");
|
|
24
|
-
return {
|
|
25
|
-
...originalModule,
|
|
26
|
-
runAnyWidgetModule: vi.fn(),
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
|
|
30
23
|
describe("LoadedSlot", () => {
|
|
31
24
|
const modelId = asModelId("test-model-id");
|
|
32
25
|
let mockModel: Model<{ count: number }>;
|
|
@@ -56,6 +49,10 @@ describe("LoadedSlot", () => {
|
|
|
56
49
|
MODEL_MANAGER.set(modelId, mockModel);
|
|
57
50
|
});
|
|
58
51
|
|
|
52
|
+
afterEach(() => {
|
|
53
|
+
BINDING_MANAGER.destroy(modelId);
|
|
54
|
+
});
|
|
55
|
+
|
|
59
56
|
it("should render a div with ref", () => {
|
|
60
57
|
const { container } = render(<LoadedSlot {...mockProps} />);
|
|
61
58
|
expect(container.querySelector("div")).not.toBeNull();
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
visibleForTesting,
|
|
17
17
|
} from "../model";
|
|
18
18
|
import type { WidgetModelId } from "../types";
|
|
19
|
+
import { BINDING_MANAGER } from "../widget-binding";
|
|
19
20
|
|
|
20
21
|
const { ModelManager } = visibleForTesting;
|
|
21
22
|
|
|
@@ -376,4 +377,20 @@ describe("ModelManager", () => {
|
|
|
376
377
|
});
|
|
377
378
|
await expect(modelManager.get(testId)).rejects.toThrow();
|
|
378
379
|
});
|
|
380
|
+
|
|
381
|
+
it("should destroy binding on close message", async () => {
|
|
382
|
+
const model = new Model({ count: 0 }, createMockComm());
|
|
383
|
+
modelManager.set(testId, model);
|
|
384
|
+
|
|
385
|
+
// Create a binding for this model
|
|
386
|
+
BINDING_MANAGER.getOrCreate(testId);
|
|
387
|
+
expect(BINDING_MANAGER.has(testId)).toBe(true);
|
|
388
|
+
|
|
389
|
+
await handleWidgetMessage(modelManager, {
|
|
390
|
+
model_id: testId,
|
|
391
|
+
message: { method: "close" },
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
expect(BINDING_MANAGER.has(testId)).toBe(false);
|
|
395
|
+
});
|
|
379
396
|
});
|