@marimo-team/frontend 0.23.16-dev2 → 0.23.16-dev4

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.
Files changed (34) hide show
  1. package/dist/assets/JsonOutput-CkCD-FgM.js +53 -0
  2. package/dist/assets/{add-connection-dialog-CEp3SJR2.js → add-connection-dialog-B-jCRNTN.js} +1 -1
  3. package/dist/assets/{agent-panel-By4A-Cqr.js → agent-panel-CHB6t7Zy.js} +1 -1
  4. package/dist/assets/{cell-editor-DdofA9oQ.js → cell-editor-B5JVq7_q.js} +1 -1
  5. package/dist/assets/{column-preview-BgZLUEOj.js → column-preview-Dne1dIt0.js} +1 -1
  6. package/dist/assets/{command-palette-DrI24FoL.js → command-palette-iOCqUIs1.js} +1 -1
  7. package/dist/assets/{edit-page-C37w54dQ.js → edit-page-7X3HYey7.js} +5 -5
  8. package/dist/assets/file-explorer-panel-Ntq1-VbF.js +26 -0
  9. package/dist/assets/{form-CgWNb44_.js → form-B6BkSCJb.js} +1 -1
  10. package/dist/assets/{index-Cl0lNhQU.js → index-CMZzy-dF.js} +14 -14
  11. package/dist/assets/{layout-BOwE7yok.js → layout-CUlZijwG.js} +3 -3
  12. package/dist/assets/{panels-CW-PUlv2.js → panels-Dj45fW-v.js} +1 -1
  13. package/dist/assets/{reveal-component-DqMRxmUr.js → reveal-component-BLMTmd8T.js} +1 -1
  14. package/dist/assets/{run-page-s6Mf8p78.js → run-page-B6pgDYEJ.js} +1 -1
  15. package/dist/assets/{scratchpad-panel-CXsxdMB-.js → scratchpad-panel-B0mEqBNk.js} +1 -1
  16. package/dist/assets/{session-panel-CmHetqAb.js → session-panel-Y0Oon0sD.js} +1 -1
  17. package/dist/assets/{skeleton-B_4CZVEm.js → skeleton-D3QPxqWC.js} +1 -1
  18. package/dist/assets/{state-BXbiRXZk.js → state-BZQc7xxL.js} +1 -1
  19. package/dist/assets/{useNotebookActions-DJKDd0gM.js → useNotebookActions-DTXAoukG.js} +1 -1
  20. package/dist/index.html +5 -5
  21. package/package.json +1 -1
  22. package/src/components/data-table/column-formatting/feature.ts +2 -1
  23. package/src/components/editor/file-tree/__tests__/file-render-mode.test.ts +27 -0
  24. package/src/components/editor/file-tree/__tests__/file-viewer.test.tsx +150 -0
  25. package/src/components/editor/file-tree/file-preview-metadata.tsx +51 -0
  26. package/src/components/editor/file-tree/file-render-mode.ts +32 -0
  27. package/src/components/editor/file-tree/file-viewer.tsx +76 -50
  28. package/src/core/i18n/__tests__/locale-provider.test.tsx +54 -118
  29. package/src/core/i18n/__tests__/locale.test.ts +113 -0
  30. package/src/core/i18n/locale-provider.tsx +1 -19
  31. package/src/core/i18n/locale.ts +71 -0
  32. package/src/core/network/types.ts +3 -1
  33. package/dist/assets/JsonOutput-DnGSkLeP.js +0 -53
  34. package/dist/assets/file-explorer-panel-DbdoJbbF.js +0 -26
@@ -1 +1 @@
1
- import{s as ge}from"./chunk-LvLJmgfZ.js";import{d as je,l as ye,p as ve,u as J}from"./useEvent-D91BmmQi.js";import{t as Qe}from"./react-Bj1aDYRI.js";import{$r as Ye,Bn as Ze,Br as Ne,Cn as ea,Dt as aa,E as ta,Ft as sa,Gr as oe,Hn as la,Hr as na,Ht as ra,Ir as oa,Ki as we,Kr as Se,N as ca,Qr as _e,Tr as ce,Ur as ma,Ut as ia,Vr as Ce,Vt as da,Xr as ha,Yr as ua,Zr as xa,d as pa,dr as fa,fr as ba,i as ga,j as ja,mr as ya,ni as Ie,qr as me,ti as va,wr as Na,xr as wa,zn as ke,zr as ie}from"./cells-Cf7bHHq3.js";import"./react-dom-CSu739Rf.js";import{t as Te}from"./compiler-runtime-B3qBwwSJ.js";import{c as Sa}from"./utils-Z80SV4_d.js";import{t as _a}from"./ErrorBoundary-C7_5jjWi.js";import{t as Q}from"./cn-DYvqRARy.js";import{t as Ca}from"./jsx-runtime-Blw4afVn.js";import"./fullscreen-dUjPYOmm.js";import{r as Ia}from"./config-COUOIPEq.js";import"./popover-DrHQ3KEt.js";import{$ as de,et as Pe,f as Fe,g as $e,h as he,it as ka,m as ue,nt as Ta,p as le,rt as Pa,tt as Fa,u as $a}from"./JsonOutput-DnGSkLeP.js";import"./download-BomYt3nl.js";import{r as Re}from"./radio-group-CLBjGkt5.js";import{t as xe}from"./tooltip-CFX4fYHU.js";import{r as Ra,t as ne}from"./button-eIihcbUw.js";import"./dist-12S8I4CH.js";import{l as Y}from"./arrays-DbOq36rN.js";import"./cjs-D5tzp-Y6.js";import"./main-BNL5rxQw.js";import"./useNonce-CbdaHKzX.js";import{i as Va}from"./strings-Djnbwmfl.js";import{r as Da}from"./requests-9-v2bhoi.js";import{t as qa}from"./createLucideIcon-w-Qo9n0R.js";import{t as Ba}from"./x-C-Eq0ag8.js";import{a as Ea,r as Ma}from"./tree-actions-CsC2XmGo.js";import"./markdown-renderer-QvXG0CRk.js";import{t as Ve}from"./add-connection-dialog-CEp3SJR2.js";import{t as De}from"./plus-AgXtozBz.js";import{a as La}from"./input-CqrUjynb.js";import{n as Oa,o as Ua}from"./column-preview-BgZLUEOj.js";import{t as Aa}from"./workflow-e-XGaKyY.js";import"./dist-DcwTQG1A.js";import"./dist-DnjsPBRJ.js";import"./dist-BJZAIIze.js";import"./dist-aRc_dRed.js";import"./dist-CPjTeT8p.js";import"./session-CEFnN9Cq.js";import"./purify.es-CWmnYhGI.js";import"./dates-D-kIKDYA.js";import{t as za}from"./copy-icon-C2pG0ZNK.js";import{t as Ga}from"./context-BFPaAUK_.js";import"./tooltip-HLb6RxVp.js";import"./vega-loader.browser-Dun7Qe4B.js";import"./defaultLocale-DOVIEEPN.js";import"./defaultLocale-BUCH2FMc.js";import{t as qe}from"./cell-link-DqBkyAFe.js";import"./chunk-5FQGJX7Z-Cp0LZT-a.js";import{r as Ha}from"./html-to-image-CwmX28T9.js";import{o as Ka}from"./focus-DiEyfiAG.js";import{n as pe}from"./useAsyncData-Bg5iAViP.js";import{a as Wa,i as Xa,n as Ja,o as Be,r as Qa,t as Ya}from"./table-CH2plyy9.js";import"./react-resizable-panels.browser.esm-Z-MD3n3J.js";import{a as Za,f as et,o as re,t as at}from"./command-CAJLPEBq.js";import{n as tt}from"./icons-CIPE8AIY.js";import{t as st}from"./useDeepCompareMemoize-CSMoa-ga.js";import{t as lt}from"./empty-state-CqJvEFRk.js";import{n as nt,t as rt}from"./common-CD6Mj8n6.js";import{a as ot,i as ct,n as Ee,r as Me,t as Le}from"./components-BH6gDVv6.js";var mt=qa("square-equal",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 10h10",key:"1101jm"}],["path",{d:"M7 14h10",key:"1mhdw3"}]]),z=Te(),F=ge(Qe(),1),s=ge(Ca(),1),fe=1;function Oe(a){return 1.75+a*fe}function it(a){return 3+a*fe}function Ue(a){return 3.25+a*fe}var A={engineEmpty:.75,engine:.75,database:1,tableLoading:2.75,tableSchemaless:2,columnLocal:1.25,columnPreview:2.5};function L(a){return{paddingLeft:`${a}rem`}}var dt=ve(a=>{let e=a(Ce),t=a(la),l=a(ga);return Y(e,n=>{if(!n.variable_name)return-1;let i=Object.values(t).find(d=>d.name===n.variable_name);if(!i)return 0;let c=l.inOrderIds.indexOf(i.declaredBy[0]);return c===-1?0:c})});const ht=we("marimo:datasources:hideEmpty",!1,ke,{getOnInit:!0});function Ae(a){let e=!1,t=[];for(let l of a){if(!me(l)||!oe(l)){t.push(l);continue}let n=l.child_schemas??[],i=Ae(n);if(l.tables.length===0&&i.length===0){e=!0;continue}if(i===n){t.push(l);continue}e=!0,t.push({...l,child_schemas:i})}return e?t:a}function ut(a){let e=!1,t=[];for(let l of a){if(Se(l)&&l.schemas.length===0){e=!0;continue}if(l.schemas.length===0){t.push(l);continue}let n=Ae(l.schemas);if(n.length===0){e=!0;continue}if(n===l.schemas){t.push(l);continue}e=!0,t.push({...l,schemas:n})}return e?t:a}const ze=ve(a=>{let e=new Map(a(oa));for(let t of Ie){let l=e.get(t);l&&(l.databases.length===0&&e.delete(t),l.databases.length===1&&l.databases[0].name==="memory"&&l.databases[0].schemas.length===0&&e.delete(t))}return Y([...e.values()],t=>Ie.has(t.name)?1:0)}),xt=()=>{let a=(0,z.c)(40),[e,t]=F.useState(""),[l,n]=ye(ht),i=je(Ne),c=J(dt),d=J(ze),r;e:{if(!l){r=d;break e}let f,v;a[0]===d?(f=a[1],v=a[2]):(f=!1,v=d.map(C=>{let k=ut(C.databases);return k===C.databases?C:(f=!0,{...C,databases:k})}),a[0]=d,a[1]=f,a[2]=v),r=f?v:d}let x=r;if(c.length===0&&x.length===0){let f;return a[3]===Symbol.for("react.memo_cache_sentinel")?(f=(0,s.jsx)(lt,{title:"No tables found",description:"Any datasets/dataframes in the global scope will be shown here.",action:(0,s.jsx)(Ve,{children:(0,s.jsxs)(ne,{variant:"outline",size:"sm",children:["Add database or catalog",(0,s.jsx)(De,{className:"h-4 w-4 ml-2"})]})}),icon:(0,s.jsx)(ce,{})}),a[3]=f):f=a[3],f}let h=!!e.trim(),m;a[4]===i?m=a[5]:(m=f=>{i(f.length>0),t(f)},a[4]=i,a[5]=m);let o;a[6]!==e||a[7]!==m?(o=(0,s.jsx)(Za,{placeholder:"Search tables...",className:"h-6 m-1",value:e,onValueChange:m,rootClassName:"flex-1 border-r border-b-0"}),a[6]=e,a[7]=m,a[8]=o):o=a[8];let p;a[9]===h?p=a[10]:(p=h&&(0,s.jsx)("button",{type:"button",className:"float-right border-b px-2 m-0 h-full hover:bg-accent hover:text-accent-foreground",onClick:()=>t(""),children:(0,s.jsx)(Ba,{className:"h-4 w-4"})}),a[9]=h,a[10]=p);let S=!l,b;a[11]!==l||a[12]!==n?(b=()=>n(!l),a[11]=l,a[12]=n,a[13]=b):b=a[13];let N;a[14]!==S||a[15]!==b?(N=(0,s.jsx)(Ea,{"data-testid":"datasources-hide-empty-button",isVisible:S,onToggle:b,showTooltip:"Show empty schemas and databases",hideTooltip:"Hide empty schemas and databases",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden"}),a[14]=S,a[15]=b,a[16]=N):N=a[16];let y;a[17]===Symbol.for("react.memo_cache_sentinel")?(y=(0,s.jsx)(Ve,{children:(0,s.jsx)(ne,{variant:"ghost",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden",children:(0,s.jsx)(De,{className:"h-4 w-4"})})}),a[17]=y):y=a[17];let j;a[18]!==o||a[19]!==p||a[20]!==N?(j=(0,s.jsxs)("div",{className:"flex items-center w-full border-b",children:[o,p,N,y]}),a[18]=o,a[19]=p,a[20]=N,a[21]=j):j=a[21];let g;if(a[22]!==x||a[23]!==e){let f;a[25]===e?f=a[26]:(f=v=>(0,s.jsx)(pt,{connection:v,hasChildren:v.databases.length>0,children:v.databases.map(C=>(0,s.jsx)(ft,{connection:v,database:C,searchValue:e},C.name))},v.name),a[25]=e,a[26]=f),g=x.map(f),a[22]=x,a[23]=e,a[24]=g}else g=a[24];let w;a[27]!==x.length||a[28]!==c.length?(w=x.length>0&&c.length>0&&(0,s.jsxs)(Fe,{className:"pr-2",style:L(A.engine),children:[(0,s.jsx)(tt,{className:"h-4 w-4 text-muted-foreground"}),(0,s.jsx)("span",{className:"text-xs",children:"Python"})]}),a[27]=x.length,a[28]=c.length,a[29]=w):w=a[29];let u;a[30]!==e||a[31]!==c?(u=c.length>0&&(0,s.jsx)(be,{tables:c,searchValue:e}),a[30]=e,a[31]=c,a[32]=u):u=a[32];let _;a[33]!==w||a[34]!==u||a[35]!==g?(_=(0,s.jsxs)(et,{className:"flex flex-col",children:[g,w,u]}),a[33]=w,a[34]=u,a[35]=g,a[36]=_):_=a[36];let I;return a[37]!==_||a[38]!==j?(I=(0,s.jsxs)(at,{className:"border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden",shouldFilter:!1,children:[j,_]}),a[37]=_,a[38]=j,a[39]=I):I=a[39],I};var pt=a=>{let e=(0,z.c)(26),{connection:t,children:l,hasChildren:n}=a,i=t.name===va,c=i?"In-Memory":t.name,{previewDataSourceConnection:d}=Da(),r;e[0]!==t.name||e[1]!==d?(r=async()=>{await d({engine:t.name})},e[0]=t.name,e[1]=d,e[2]=r):r=e[2];let x=r,h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=L(A.engine),e[3]=h):h=e[3];let m;e[4]===t.dialect?m=e[5]:(m=(0,s.jsx)(aa,{className:"h-4 w-4 text-muted-foreground",name:t.dialect}),e[4]=t.dialect,e[5]=m);let o;e[6]===t.dialect?o=e[7]:(o=fa(t.dialect),e[6]=t.dialect,e[7]=o);let p;e[8]===o?p=e[9]:(p=(0,s.jsx)("span",{className:"text-xs",children:o}),e[8]=o,e[9]=p);let S=c,b;e[10]===S?b=e[11]:(b=(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",(0,s.jsx)(ot,{variableName:S}),")"]}),e[10]=S,e[11]=b);let N;e[12]!==x||e[13]!==i?(N=!i&&(0,s.jsx)(Ma,{onClick:x,tooltip:"Refresh connection",className:"ml-auto h-4 p-0",iconClassName:"h-3.5 w-3.5"}),e[12]=x,e[13]=i,e[14]=N):N=e[14];let y;e[15]!==m||e[16]!==p||e[17]!==b||e[18]!==N?(y=(0,s.jsxs)(Fe,{className:"pr-2",style:h,children:[m,p,b,N]}),e[15]=m,e[16]=p,e[17]=b,e[18]=N,e[19]=y):y=e[19];let j;e[20]!==l||e[21]!==n?(j=n?l:(0,s.jsx)(le,{content:"No databases available",style:L(A.engineEmpty)}),e[20]=l,e[21]=n,e[22]=j):j=e[22];let g;return e[23]!==j||e[24]!==y?(g=(0,s.jsxs)(s.Fragment,{children:[y,j]}),e[23]=j,e[24]=y,e[25]=g):g=e[25],g},Ge=F.createContext(null);function He(){let a=F.useContext(Ge);if(a==null)throw Error("useDataSourceTree must be used within a DataSourceTreeContext.Provider");return a}function Ke(a,{schema:e,schemaPath:t}){return{engine:a.engineName,database:a.databaseName,schema:e,schemaPath:t,defaultSchema:a.defaultSchema,defaultDatabase:a.defaultDatabase,dialect:a.dialect}}var ft=a=>{let e=(0,z.c)(21),{connection:t,database:l,searchValue:n}=a,i;e[0]!==t.default_database||e[1]!==t.default_schema||e[2]!==t.dialect||e[3]!==t.name||e[4]!==l.name||e[5]!==n?(i={engineName:t.name,databaseName:l.name,dialect:t.dialect,defaultSchema:t.default_schema,defaultDatabase:t.default_database,searchValue:n},e[0]=t.default_database,e[1]=t.default_schema,e[2]=t.dialect,e[3]=t.name,e[4]=l.name,e[5]=n,e[6]=i):i=e[6];let c=i,d=t.name,r=l.schemas,x;e[7]===l?x=e[8]:(x=Se(l),e[7]=l,e[8]=x);let h;e[9]===Symbol.for("react.memo_cache_sentinel")?(h=[],e[9]=h):h=e[9];let m;e[10]!==l.schemas||e[11]!==x?(m=(0,s.jsx)(We,{schemas:r,schemasResolved:x,schemaPath:h,depth:0}),e[10]=l.schemas,e[11]=x,e[12]=m):m=e[12];let o;e[13]!==m||e[14]!==c?(o=(0,s.jsx)(Ge.Provider,{value:c,children:m}),e[13]=m,e[14]=c,e[15]=o):o=e[15];let p;return e[16]!==t.name||e[17]!==l||e[18]!==n||e[19]!==o?(p=(0,s.jsx)(bt,{engineName:d,database:l,searchValue:n,children:o}),e[16]=t.name,e[17]=l,e[18]=n,e[19]=o,e[20]=p):p=e[20],p},bt=a=>{let e=(0,z.c)(29),{searchValue:t,engineName:l,database:n,children:i}=a,c;e[0]!==n||e[1]!==t?(c=xa(n,t),e[0]=n,e[1]=t,e[2]=c):c=e[2];let d=c,[r,x]=F.useState(d),[h,m]=F.useState(!1),[o,p]=F.useState(t),[S,b]=F.useState(d);(o!==t||S!==d)&&(p(t),b(d),x(d));let N;e[3]===Symbol.for("react.memo_cache_sentinel")?(N=L(A.database),e[3]=N):N=e[3];let y;e[4]!==r||e[5]!==h?(y=()=>{x(!r),m(!h)},e[4]=r,e[5]=h,e[6]=y):y=e[6];let j=`${l}:${n.name}`,g;e[7]===r?g=e[8]:(g=(0,s.jsx)($e,{isExpanded:r}),e[7]=r,e[8]=g);let w=h&&r?"text-foreground":"text-muted-foreground",u;e[9]===w?u=e[10]:(u=Q("h-4 w-4",w),e[9]=w,e[10]=u);let _;e[11]===u?_=e[12]:(_=(0,s.jsx)(ce,{className:u}),e[11]=u,e[12]=_);let I=h&&r&&"font-semibold",f;e[13]===I?f=e[14]:(f=Q(I),e[13]=I,e[14]=f);let v;e[15]===n.name?v=e[16]:(v=n.name===""?(0,s.jsx)("i",{children:"Not connected"}):n.name,e[15]=n.name,e[16]=v);let C;e[17]!==f||e[18]!==v?(C=(0,s.jsx)("span",{className:f,children:v}),e[17]=f,e[18]=v,e[19]=C):C=e[19];let k;e[20]!==C||e[21]!==y||e[22]!==j||e[23]!==g||e[24]!==_?(k=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:N,onSelect:y,value:j,children:[g,_,C]}),e[20]=C,e[21]=y,e[22]=j,e[23]=g,e[24]=_,e[25]=k):k=e[25];let T=r&&i,P;return e[26]!==k||e[27]!==T?(P=(0,s.jsxs)(s.Fragment,{children:[k,T]}),e[26]=k,e[27]=T,e[28]=P):P=e[28],P},We=a=>{let{schemas:e,schemasResolved:t,depth:l}=a,n=He(),{engineName:i,databaseName:c,searchValue:d}=n,{addSchemaList:r}=ie(),x=st(a.schemaPath),[h,m]=F.useState(!1),{isPending:o,error:p}=pe(async()=>{if(!t&&i){m(!0);try{r({schemas:(await da.request({engine:i,database:c,schemaPath:x})).schemas??[],sqlSchemaContext:{engine:i,database:c,schemaPath:x}})}finally{m(!1)}}},[t,i,c,x]),S=L(Oe(l));return o||h?(0,s.jsx)(he,{message:"Loading schemas...",style:S}):p?(0,s.jsx)(ue,{error:p,style:S}):e.length===0?(0,s.jsx)(le,{content:"No schemas available",style:S}):(0,s.jsx)(s.Fragment,{children:e.map(b=>ua(b.name)?(0,s.jsx)(be,{tables:b.tables,tablesResolved:me(b),searchValue:d,sqlTableContext:Ke(n,{schema:b.name,schemaPath:x})},b.name):(0,s.jsx)(gt,{schema:b,schemaPath:[...x,b.name],depth:l},b.name))})},gt=a=>{let e=(0,z.c)(39),{schema:t,schemaPath:l,depth:n}=a,i=He(),{databaseName:c,searchValue:d}=i,r;e[0]!==t||e[1]!==d?(r=ha(t,d),e[0]=t,e[1]=d,e[2]=r):r=e[2];let x=r,[h,m]=F.useState(x),[o,p]=F.useState(!1),[S,b]=F.useState(d),[N,y]=F.useState(x),j=`${c}:${l.join(".")}`,g;e[3]===t.child_schemas?g=e[4]:(g=t.child_schemas??[],e[3]=t.child_schemas,e[4]=g);let w=g;(S!==d||N!==x)&&(b(d),y(x),m(x));let u;e[5]===n?u=e[6]:(u=L(Oe(n)),e[5]=n,e[6]=u);let _;e[7]!==h||e[8]!==o?(_=()=>{m(!h),p(!o)},e[7]=h,e[8]=o,e[9]=_):_=e[9];let I;e[10]===h?I=e[11]:(I=(0,s.jsx)($e,{isExpanded:h}),e[10]=h,e[11]=I);let f=o&&h&&"text-foreground",v;e[12]===f?v=e[13]:(v=Q("h-4 w-4 text-muted-foreground",f),e[12]=f,e[13]=v);let C;e[14]===v?C=e[15]:(C=(0,s.jsx)(wa,{className:v}),e[14]=v,e[15]=C);let k=o&&h&&"font-semibold",T;e[16]===k?T=e[17]:(T=Q(k),e[16]=k,e[17]=T);let P;e[18]!==t.name||e[19]!==T?(P=(0,s.jsx)("span",{className:T,children:t.name}),e[18]=t.name,e[19]=T,e[20]=P):P=e[20];let R;e[21]!==P||e[22]!==u||e[23]!==_||e[24]!==I||e[25]!==C||e[26]!==j?(R=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:u,onSelect:_,value:j,children:[I,C,P]}),e[21]=P,e[22]=u,e[23]=_,e[24]=I,e[25]=C,e[26]=j,e[27]=R):R=e[27];let V;e[28]!==w||e[29]!==n||e[30]!==h||e[31]!==t||e[32]!==l||e[33]!==d||e[34]!==i?(V=h&&(0,s.jsxs)(s.Fragment,{children:[(w.length>0||!oe(t))&&(0,s.jsx)(We,{schemas:w,schemasResolved:oe(t),schemaPath:l,depth:n+1}),(0,s.jsx)(be,{tables:t.tables,tablesResolved:me(t),searchValue:d,tableIndentRem:it(n),columnIndentRem:Ue(n),sqlTableContext:Ke(i,{schema:t.name,schemaPath:l})})]}),e[28]=w,e[29]=n,e[30]=h,e[31]=t,e[32]=l,e[33]=d,e[34]=i,e[35]=V):V=e[35];let $;return e[36]!==R||e[37]!==V?($=(0,s.jsxs)(s.Fragment,{children:[R,V]}),e[36]=R,e[37]=V,e[38]=$):$=e[38],$},be=a=>{let e=(0,z.c)(31),{tables:t,sqlTableContext:l,searchValue:n,tablesResolved:i,tableIndentRem:c,columnIndentRem:d}=a,r=i===void 0?!0:i,{addTableList:x}=ie(),[h,m]=F.useState(!1),o;e[0]!==x||e[1]!==l||e[2]!==r?(o=async()=>{if(!r&&l){m(!0);let{engine:u,database:_,schema:I,schemaPath:f}=l,v=await ia.request({engine:u,database:_,schema:I,schemaPath:f??[]});if(!(v!=null&&v.tables))throw m(!1),Error("No tables available");x({tables:v.tables,sqlTableContext:l}),m(!1)}},e[0]=x,e[1]=l,e[2]=r,e[3]=o):o=e[3];let p;e[4]!==l||e[5]!==r?(p=[r,l],e[4]=l,e[5]=r,e[6]=p):p=e[6];let{isPending:S,error:b}=pe(o,p),N=c??A.tableLoading,y;e[7]===N?y=e[8]:(y=L(N),e[7]=N,e[8]=y);let j=y;if(S||h){let u;return e[9]===j?u=e[10]:(u=(0,s.jsx)(he,{message:"Loading tables...",style:j}),e[9]=j,e[10]=u),u}if(b){let u;return e[11]!==b||e[12]!==j?(u=(0,s.jsx)(ue,{error:b,style:j}),e[11]=b,e[12]=j,e[13]=u):u=e[13],u}if(t.length===0){let u;return e[14]===j?u=e[15]:(u=(0,s.jsx)(le,{content:"No tables found",style:j}),e[14]=j,e[15]=u),u}let g;if(e[16]!==d||e[17]!==n||e[18]!==l||e[19]!==c||e[20]!==t){let u;e[22]===n?u=e[23]:(u=f=>n?f.name.toLowerCase().includes(n.toLowerCase()):!0,e[22]=n,e[23]=u);let _=t.filter(u),I;e[24]!==d||e[25]!==n||e[26]!==l||e[27]!==c?(I=f=>(0,s.jsx)(jt,{table:f,sqlTableContext:l,isSearching:!!n,tableIndentRem:c,columnIndentRem:d},f.name),e[24]=d,e[25]=n,e[26]=l,e[27]=c,e[28]=I):I=e[28],g=_.map(I),e[16]=d,e[17]=n,e[18]=l,e[19]=c,e[20]=t,e[21]=g}else g=e[21];let w;return e[29]===g?w=e[30]:(w=(0,s.jsx)(s.Fragment,{children:g}),e[29]=g,e[30]=w),w},jt=a=>{let e=(0,z.c)(69),{table:t,sqlTableContext:l,isSearching:n,tableIndentRem:i,columnIndentRem:c}=a,{addTable:d}=ie(),[r,x]=F.useState(!1),h=t.columns.length>0,m;e[0]!==d||e[1]!==r||e[2]!==l||e[3]!==t.name||e[4]!==h?(m=async()=>{if(r&&!h&&l){let{engine:E,database:ae,schema:te,schemaPath:Je}=l,se=await ra.request({engine:E,database:ae,schema:te,tableName:t.name,schemaPath:Je??[]});if(!(se!=null&&se.table))throw Error("No table details available");d({table:se.table,sqlTableContext:l})}},e[0]=d,e[1]=r,e[2]=l,e[3]=t.name,e[4]=h,e[5]=m):m=e[5];let o;e[6]!==r||e[7]!==h?(o=[r,h],e[6]=r,e[7]=h,e[8]=o):o=e[8];let{isFetching:p,isPending:S,error:b}=pe(m,o),N=J(Sa),y=Ka(),{createNewCell:j}=ta(),g=Re(),w;e[9]!==g||e[10]!==N||e[11]!==j||e[12]!==y||e[13]!==l||e[14]!==t?(w=()=>{Ha({autoInstantiate:N,createNewCell:j,fromCellId:y}),g((()=>{if(t.source_type==="catalog"){let E=l!=null&&l.database?[l.database,...l.schemaPath??[],t.name].join("."):t.name;return`${t.engine}.load_table("${E}")`}if(l)return _e({table:t,columnName:"*",sqlTableContext:l});switch(t.source_type){case"local":return`mo.ui.table(${t.name})`;case"duckdb":case"connection":return _e({table:t,columnName:"*",sqlTableContext:l});default:return Va(t.source_type),""}})())},e[9]=g,e[10]=N,e[11]=j,e[12]=y,e[13]=l,e[14]=t,e[15]=w):w=e[15];let u=w,_;e[16]!==t.num_columns||e[17]!==t.num_rows?(_=()=>{let E=[];return t.num_rows!=null&&E.push(`${t.num_rows} rows`),t.num_columns!=null&&E.push(`${t.num_columns} columns`),E.length===0?null:(0,s.jsx)("div",{className:"flex flex-row gap-2 items-center pl-6 group-hover:hidden",children:(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:E.join(", ")})})},e[16]=t.num_columns,e[17]=t.num_rows,e[18]=_):_=e[18];let I=_,f;e[19]!==c||e[20]!==b||e[21]!==p||e[22]!==S||e[23]!==l||e[24]!==t?(f=()=>{let E=L(c??A.tableLoading);if(S||p)return(0,s.jsx)(he,{message:"Loading columns...",style:E});if(b)return(0,s.jsx)(ue,{error:b,style:E});let ae=t.columns;return ae.length===0?(0,s.jsx)(le,{content:"No columns found",style:E}):ae.map(te=>(0,s.jsx)(yt,{table:t,column:te,sqlTableContext:l,columnIndentRem:c},te.name))},e[19]=c,e[20]=b,e[21]=p,e[22]=S,e[23]=l,e[24]=t,e[25]=f):f=e[25];let v=f,C;e[26]!==r||e[27]!==n||e[28]!==t.source_type||e[29]!==t.type?(C=()=>{if(t.source_type!=="local")return(0,s.jsx)(t.type==="table"?ya:Na,{className:"h-3 w-3",strokeWidth:r||n?2.5:void 0})},e[26]=r,e[27]=n,e[28]=t.source_type,e[29]=t.type,e[30]=C):C=e[30];let k=C,T;e[31]!==l||e[32]!==t.name?(T=Ye(l,t.name),e[31]=l,e[32]=t.name,e[33]=T):T=e[33];let P=T,R=i??(l?A.tableSchemaless:0),V=(r||n)&&"font-semibold",$;e[34]===V?$=e[35]:($=Q("rounded-none group h-8 cursor-pointer",V),e[34]=V,e[35]=$);let D;e[36]===R?D=e[37]:(D=L(R),e[36]=R,e[37]=D);let q;e[38]===r?q=e[39]:(q=()=>x(!r),e[38]=r,e[39]=q);let M;e[40]===k?M=e[41]:(M=k(),e[40]=k,e[41]=M);let O;e[42]===t.name?O=e[43]:(O=(0,s.jsx)("span",{className:"text-sm",children:t.name}),e[42]=t.name,e[43]=O);let U;e[44]!==M||e[45]!==O?(U=(0,s.jsxs)("div",{className:"flex gap-2 items-center flex-1 pl-1",children:[M,O]}),e[44]=M,e[45]=O,e[46]=U):U=e[46];let B;e[47]===I?B=e[48]:(B=I(),e[47]=I,e[48]=B);let H;e[49]===u?H=e[50]:(H=Ra.stopPropagation(()=>u()),e[49]=u,e[50]=H);let Z;e[51]===Symbol.for("react.memo_cache_sentinel")?(Z=(0,s.jsx)(Ua,{className:"h-3 w-3"}),e[51]=Z):Z=e[51];let K;e[52]===H?K=e[53]:(K=(0,s.jsx)(xe,{content:"Add table to notebook",delayDuration:400,children:(0,s.jsx)(ne,{className:"group-hover:inline-flex hidden",variant:"text",size:"icon",onClick:H,children:Z})}),e[52]=H,e[53]=K);let W;e[54]!==r||e[55]!==D||e[56]!==q||e[57]!==U||e[58]!==B||e[59]!==K||e[60]!==$||e[61]!==P?(W=(0,s.jsxs)(re,{className:$,style:D,value:P,"aria-selected":r,forceMount:!0,onSelect:q,children:[U,B,K]}),e[54]=r,e[55]=D,e[56]=q,e[57]=U,e[58]=B,e[59]=K,e[60]=$,e[61]=P,e[62]=W):W=e[62];let X;e[63]!==r||e[64]!==v?(X=r&&v(),e[63]=r,e[64]=v,e[65]=X):X=e[65];let ee;return e[66]!==W||e[67]!==X?(ee=(0,s.jsxs)(s.Fragment,{children:[W,X]}),e[66]=W,e[67]=X,e[68]=ee):ee=e[68],ee},yt=a=>{var O,U;let e=(0,z.c)(51),{table:t,column:l,sqlTableContext:n,columnIndentRem:i}=a,[c,d]=F.useState(!1),r=J(Ne),x=je(na);r&&c&&d(!1),x(c?B=>new Set([...B,`${t.name}:${l.name}`]):B=>(B.delete(`${t.name}:${l.name}`),new Set(B)));let h=Re(),{columnsPreviews:m}=ma(),o;e[0]!==l.name||e[1]!==t.primary_keys?(o=((O=t.primary_keys)==null?void 0:O.includes(l.name))||!1,e[0]=l.name,e[1]=t.primary_keys,e[2]=o):o=e[2];let p=o,S;e[3]!==l.name||e[4]!==t.indexes?(S=((U=t.indexes)==null?void 0:U.includes(l.name))||!1,e[3]=l.name,e[4]=t.indexes,e[5]=S):S=e[5];let b=S,N;e[6]===h?N=e[7]:(N=B=>{h(B)},e[6]=h,e[7]=N);let y=N,j=vt,g=c?"font-semibold":"",w;e[8]!==l.name||e[9]!==g?(w=(0,s.jsx)("span",{className:g,children:l.name}),e[8]=l.name,e[9]=g,e[10]=w):w=e[10];let u=w,_=`${t.name}.${l.name}`,I=`${t.name}.${l.name}`,f;e[11]===c?f=e[12]:(f=()=>d(!c),e[11]=c,e[12]=f);let v;e[13]!==i||e[14]!==n?(v=i??(n?Ue(0):A.columnLocal),e[13]=i,e[14]=n,e[15]=v):v=e[15];let C;e[16]===v?C=e[17]:(C=L(v),e[16]=v,e[17]=C);let k;e[18]!==l.type||e[19]!==u?(k=(0,s.jsx)($a,{columnName:u,dataType:l.type}),e[18]=l.type,e[19]=u,e[20]=k):k=e[20];let T;e[21]===p?T=e[22]:(T=p&&j({tooltipContent:"Primary key",content:"PK"}),e[21]=p,e[22]=T);let P;e[23]===b?P=e[24]:(P=b&&j({tooltipContent:"Indexed",content:"IDX"}),e[23]=b,e[24]=P);let R;e[25]!==C||e[26]!==k||e[27]!==T||e[28]!==P?(R=(0,s.jsxs)("div",{className:"flex flex-row gap-2 items-center flex-1",style:C,children:[k,T,P]}),e[25]=C,e[26]=k,e[27]=T,e[28]=P,e[29]=R):R=e[29];let V;e[30]===l.name?V=e[31]:(V=(0,s.jsx)(xe,{content:"Copy column name",delayDuration:400,children:(0,s.jsx)(ne,{variant:"text",size:"icon",className:"group-hover:opacity-100 opacity-0 hover:bg-muted text-muted-foreground hover:text-foreground",children:(0,s.jsx)(za,{tooltip:!1,value:l.name,className:"h-3 w-3"})})}),e[30]=l.name,e[31]=V);let $;e[32]===l.external_type?$=e[33]:($=(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:l.external_type}),e[32]=l.external_type,e[33]=$);let D;e[34]!==R||e[35]!==V||e[36]!==$||e[37]!==_||e[38]!==I||e[39]!==f?(D=(0,s.jsxs)(re,{className:"rounded-none py-1 group cursor-pointer",value:I,onSelect:f,children:[R,V,$]},_),e[34]=R,e[35]=V,e[36]=$,e[37]=_,e[38]=I,e[39]=f,e[40]=D):D=e[40];let q;e[41]!==l||e[42]!==m||e[43]!==y||e[44]!==c||e[45]!==n||e[46]!==t?(q=c&&(0,s.jsx)("div",{className:"pr-2 py-2 bg-(--slate-1) shadow-inner border-b",style:L(A.columnPreview),children:(0,s.jsx)(_a,{children:(0,s.jsx)(Oa,{table:t,column:l,onAddColumnChart:y,preview:m.get(n?`${n.database}.${n.schema}.${t.name}:${l.name}`:`${t.name}:${l.name}`),sqlTableContext:n})})}),e[41]=l,e[42]=m,e[43]=y,e[44]=c,e[45]=n,e[46]=t,e[47]=q):q=e[47];let M;return e[48]!==D||e[49]!==q?(M=(0,s.jsxs)(s.Fragment,{children:[D,q]}),e[48]=D,e[49]=q,e[50]=M):M=e[50],M};function vt(a){let{tooltipContent:e,content:t}=a;return(0,s.jsx)(xe,{content:e,delayDuration:100,children:(0,s.jsx)("span",{className:"text-xs text-black bg-gray-100 dark:invert rounded px-1",children:t})})}function Ds(a){return a}var G={name:"name",type:"type-value",defs:"defs-refs"},Nt=[{id:G.name,accessorFn:a=>[a.name,a.declaredBy],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(de,{header:"Name",column:a}),cell:({getValue:a})=>{let[e,t]=a();return(0,s.jsx)(rt,{name:e,declaredBy:t})}},{id:G.type,accessorFn:a=>[a.dataType,a.value],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(de,{header:(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("span",{children:"Type"}),(0,s.jsx)("span",{children:"Value"})]}),column:a}),cell:({getValue:a})=>{let[e,t]=a();return(0,s.jsxs)("div",{className:"max-w-[150px]",children:[(0,s.jsx)("div",{className:"text-ellipsis overflow-hidden whitespace-nowrap text-muted-foreground font-mono text-xs",children:e}),(0,s.jsx)("div",{className:"text-ellipsis overflow-hidden whitespace-nowrap",title:t??"",children:t})]})}},{id:G.defs,accessorFn:a=>[a.declaredBy,a.usedBy,a.name,a.declaredByNames,a.usedByNames],enableSorting:!0,sortingFn:"basic",header:({column:a})=>(0,s.jsx)(de,{header:(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("span",{children:"Declared By"}),(0,s.jsx)("span",{children:"Used By"})]}),column:a}),cell:({getValue:a})=>{let[e,t,l]=a(),n=i=>{let c=pa(i);c&&ea(c,l)};return(0,s.jsxs)("div",{className:"flex flex-col gap-1 py-1",children:[(0,s.jsxs)("div",{className:"flex flex-row overflow-auto gap-2 items-center",children:[(0,s.jsx)("span",{title:"Declared by",children:(0,s.jsx)(mt,{className:"w-3.5 h-3.5 text-muted-foreground"})}),e.length===1?(0,s.jsx)(qe,{variant:"focus",cellId:e[0],skipScroll:!0,onClick:()=>n(e[0])}):(0,s.jsx)("div",{className:"text-destructive flex flex-row gap-2",children:e.slice(0,3).map((i,c)=>(0,s.jsxs)("span",{className:"flex",children:[(0,s.jsx)(qe,{variant:"focus",cellId:i,skipScroll:!0,className:"whitespace-nowrap text-destructive",onClick:()=>n(i)},i),c<e.length-1&&", "]},i))})]}),(0,s.jsxs)("div",{className:"flex flex-row overflow-auto gap-2 items-baseline",children:[(0,s.jsx)("span",{title:"Used by",children:(0,s.jsx)(Aa,{className:"w-3.5 h-3.5 text-muted-foreground"})}),(0,s.jsx)(nt,{maxCount:3,cellIds:t,skipScroll:!0,onClick:n})]})]})}}];function wt({variables:a,sort:e,cellIdToIndex:t}){e||(e={id:G.defs,desc:!1});let l=[];switch(e.id){case G.name:l=Y(a,n=>n.name);break;case G.type:l=Y(a,n=>n.dataType);break;case G.defs:l=Y(a,n=>t.get(n.declaredBy[0]));break}return e.desc?l.toReversed():l}const Xe=(0,F.memo)(({className:a,cellIds:e,variables:t})=>{let[l,n]=F.useState([]),[i,c]=F.useState(""),d=ca(),{locale:r}=Ga(),x=(0,F.useMemo)(()=>{let m=o=>{let p=d[o];return sa(p)?`cell-${e.indexOf(o)}`:p??`cell-${e.indexOf(o)}`};return Object.values(t).map(o=>({...o,declaredByNames:o.declaredBy.map(m),usedByNames:o.usedBy.map(m)}))},[t,d,e]),h=Fa({data:(0,F.useMemo)(()=>{let m=new Map;return e.forEach((o,p)=>m.set(o,p)),wt({variables:x,sort:l[0],cellIdToIndex:m})},[x,l,e]),columns:Nt,getCoreRowModel:Ta(),onGlobalFilterChange:c,getFilteredRowModel:Pa(),enableFilters:!0,enableGlobalFilter:!0,enableColumnPinning:!1,getColumnCanGlobalFilter(m){return m.columnDef.enableGlobalFilter??!0},globalFilterFn:"auto",manualSorting:!0,locale:r,onSortingChange:n,getSortedRowModel:ka(),state:{sorting:l,globalFilter:i}});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(La,{className:"w-full",placeholder:"Search",value:i,onChange:m=>c(m.target.value)}),(0,s.jsxs)(Ya,{className:Q("w-full text-sm flex-1 border-separate border-spacing-0",a),children:[(0,s.jsx)(Wa,{children:(0,s.jsx)(Be,{className:"whitespace-nowrap text-xs",children:h.getFlatHeaders().map(m=>(0,s.jsx)(Xa,{className:"sticky top-0 bg-background border-b",children:Pe(m.column.columnDef.header,m.getContext())},m.id))})}),(0,s.jsx)(Ja,{children:h.getRowModel().rows.map(m=>(0,s.jsx)(Be,{className:"hover:bg-accent",children:m.getVisibleCells().map(o=>(0,s.jsx)(Qa,{className:"border-b",children:Pe(o.column.columnDef.cell,o.getContext())},o.id))},m.id))})]})]})});Xe.displayName="VariableTable";var St=Te(),_t=we("marimo:session-panel:state",{openSections:["variables"],hasUserInteracted:!1},ke),Ct=()=>{let a=(0,St.c)(24),e=Ze(),t=ja(),l=J(Ce),n=J(ze),[i,c]=ye(_t),d=l.length+n.length,r;a[0]!==d||a[1]!==i.hasUserInteracted||a[2]!==i.openSections?(r=!i.hasUserInteracted&&d>0?[...new Set([...i.openSections,"datasources"])]:i.openSections,a[0]=d,a[1]=i.hasUserInteracted,a[2]=i.openSections,a[3]=r):r=a[3];let x=r,h;a[4]===c?h=a[5]:(h=u=>{c({openSections:u,hasUserInteracted:!0})},a[4]=c,a[5]=h);let m=h,o=!x.includes("datasources")&&d>0,p;a[6]===Symbol.for("react.memo_cache_sentinel")?(p=(0,s.jsx)(ce,{className:"w-4 h-4"}),a[6]=p):p=a[6];let S;a[7]!==d||a[8]!==o?(S=o&&(0,s.jsx)(ct,{children:d}),a[7]=d,a[8]=o,a[9]=S):S=a[9];let b;a[10]===S?b=a[11]:(b=(0,s.jsxs)(Me,{children:[p,"Data sources",S]}),a[10]=S,a[11]=b);let N;a[12]===Symbol.for("react.memo_cache_sentinel")?(N=(0,s.jsx)(Le,{children:(0,s.jsx)(xt,{})}),a[12]=N):N=a[12];let y;a[13]===b?y=a[14]:(y=(0,s.jsxs)(Ee,{value:"datasources",children:[b,N]}),a[13]=b,a[14]=y);let j;a[15]===Symbol.for("react.memo_cache_sentinel")?(j=(0,s.jsxs)(Me,{children:[(0,s.jsx)(ba,{className:"w-4 h-4"}),"Variables"]}),a[15]=j):j=a[15];let g;a[16]!==t||a[17]!==e?(g=(0,s.jsxs)(Ee,{value:"variables",lastItem:!0,children:[j,(0,s.jsx)(Le,{children:Object.keys(e).length===0?(0,s.jsx)("div",{className:"px-3 py-4 text-sm text-muted-foreground",children:"No variables defined"}):(0,s.jsx)(Xe,{cellIds:t.inOrderIds,variables:e})})]}),a[16]=t,a[17]=e,a[18]=g):g=a[18];let w;return a[19]!==m||a[20]!==x||a[21]!==y||a[22]!==g?(w=(0,s.jsxs)(Ia,{type:"multiple",value:x,onValueChange:m,className:"flex flex-col h-full overflow-auto",children:[y,g]}),a[19]=m,a[20]=x,a[21]=y,a[22]=g,a[23]=w):w=a[23],w};export{Ct as default};
1
+ import{s as ge}from"./chunk-LvLJmgfZ.js";import{d as je,l as ye,p as ve,u as J}from"./useEvent-D91BmmQi.js";import{t as Qe}from"./react-Bj1aDYRI.js";import{$r as Ye,Bn as Ze,Br as Ne,Cn as ea,Dt as aa,E as ta,Ft as sa,Gr as oe,Hn as la,Hr as na,Ht as ra,Ir as oa,Ki as we,Kr as Se,N as ca,Qr as _e,Tr as ce,Ur as ma,Ut as ia,Vr as Ce,Vt as da,Xr as ha,Yr as ua,Zr as xa,d as pa,dr as fa,fr as ba,i as ga,j as ja,mr as ya,ni as Ie,qr as me,ti as va,wr as Na,xr as wa,zn as ke,zr as ie}from"./cells-Cf7bHHq3.js";import"./react-dom-CSu739Rf.js";import{t as Te}from"./compiler-runtime-B3qBwwSJ.js";import{c as Sa}from"./utils-Z80SV4_d.js";import{t as _a}from"./ErrorBoundary-C7_5jjWi.js";import{t as Q}from"./cn-DYvqRARy.js";import{t as Ca}from"./jsx-runtime-Blw4afVn.js";import"./fullscreen-dUjPYOmm.js";import{r as Ia}from"./config-COUOIPEq.js";import"./popover-DrHQ3KEt.js";import{$ as de,et as Pe,f as Fe,g as $e,h as he,it as ka,m as ue,nt as Ta,p as le,rt as Pa,tt as Fa,u as $a}from"./JsonOutput-CkCD-FgM.js";import"./download-BomYt3nl.js";import{r as Re}from"./radio-group-CLBjGkt5.js";import{t as xe}from"./tooltip-CFX4fYHU.js";import{r as Ra,t as ne}from"./button-eIihcbUw.js";import"./dist-12S8I4CH.js";import{l as Y}from"./arrays-DbOq36rN.js";import"./cjs-D5tzp-Y6.js";import"./main-BNL5rxQw.js";import"./useNonce-CbdaHKzX.js";import{i as Va}from"./strings-Djnbwmfl.js";import{r as Da}from"./requests-9-v2bhoi.js";import{t as qa}from"./createLucideIcon-w-Qo9n0R.js";import{t as Ba}from"./x-C-Eq0ag8.js";import{a as Ea,r as Ma}from"./tree-actions-CsC2XmGo.js";import"./markdown-renderer-QvXG0CRk.js";import{t as Ve}from"./add-connection-dialog-B-jCRNTN.js";import{t as De}from"./plus-AgXtozBz.js";import{a as La}from"./input-CqrUjynb.js";import{n as Oa,o as Ua}from"./column-preview-Dne1dIt0.js";import{t as Aa}from"./workflow-e-XGaKyY.js";import"./dist-DcwTQG1A.js";import"./dist-DnjsPBRJ.js";import"./dist-BJZAIIze.js";import"./dist-aRc_dRed.js";import"./dist-CPjTeT8p.js";import"./session-CEFnN9Cq.js";import"./purify.es-CWmnYhGI.js";import"./dates-D-kIKDYA.js";import{t as za}from"./copy-icon-C2pG0ZNK.js";import{t as Ga}from"./context-BFPaAUK_.js";import"./tooltip-HLb6RxVp.js";import"./vega-loader.browser-Dun7Qe4B.js";import"./defaultLocale-DOVIEEPN.js";import"./defaultLocale-BUCH2FMc.js";import{t as qe}from"./cell-link-DqBkyAFe.js";import"./chunk-5FQGJX7Z-Cp0LZT-a.js";import{r as Ha}from"./html-to-image-CwmX28T9.js";import{o as Ka}from"./focus-DiEyfiAG.js";import{n as pe}from"./useAsyncData-Bg5iAViP.js";import{a as Wa,i as Xa,n as Ja,o as Be,r as Qa,t as Ya}from"./table-CH2plyy9.js";import"./react-resizable-panels.browser.esm-Z-MD3n3J.js";import{a as Za,f as et,o as re,t as at}from"./command-CAJLPEBq.js";import{n as tt}from"./icons-CIPE8AIY.js";import{t as st}from"./useDeepCompareMemoize-CSMoa-ga.js";import{t as lt}from"./empty-state-CqJvEFRk.js";import{n as nt,t as rt}from"./common-CD6Mj8n6.js";import{a as ot,i as ct,n as Ee,r as Me,t as Le}from"./components-BH6gDVv6.js";var mt=qa("square-equal",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 10h10",key:"1101jm"}],["path",{d:"M7 14h10",key:"1mhdw3"}]]),z=Te(),F=ge(Qe(),1),s=ge(Ca(),1),fe=1;function Oe(a){return 1.75+a*fe}function it(a){return 3+a*fe}function Ue(a){return 3.25+a*fe}var A={engineEmpty:.75,engine:.75,database:1,tableLoading:2.75,tableSchemaless:2,columnLocal:1.25,columnPreview:2.5};function L(a){return{paddingLeft:`${a}rem`}}var dt=ve(a=>{let e=a(Ce),t=a(la),l=a(ga);return Y(e,n=>{if(!n.variable_name)return-1;let i=Object.values(t).find(d=>d.name===n.variable_name);if(!i)return 0;let c=l.inOrderIds.indexOf(i.declaredBy[0]);return c===-1?0:c})});const ht=we("marimo:datasources:hideEmpty",!1,ke,{getOnInit:!0});function Ae(a){let e=!1,t=[];for(let l of a){if(!me(l)||!oe(l)){t.push(l);continue}let n=l.child_schemas??[],i=Ae(n);if(l.tables.length===0&&i.length===0){e=!0;continue}if(i===n){t.push(l);continue}e=!0,t.push({...l,child_schemas:i})}return e?t:a}function ut(a){let e=!1,t=[];for(let l of a){if(Se(l)&&l.schemas.length===0){e=!0;continue}if(l.schemas.length===0){t.push(l);continue}let n=Ae(l.schemas);if(n.length===0){e=!0;continue}if(n===l.schemas){t.push(l);continue}e=!0,t.push({...l,schemas:n})}return e?t:a}const ze=ve(a=>{let e=new Map(a(oa));for(let t of Ie){let l=e.get(t);l&&(l.databases.length===0&&e.delete(t),l.databases.length===1&&l.databases[0].name==="memory"&&l.databases[0].schemas.length===0&&e.delete(t))}return Y([...e.values()],t=>Ie.has(t.name)?1:0)}),xt=()=>{let a=(0,z.c)(40),[e,t]=F.useState(""),[l,n]=ye(ht),i=je(Ne),c=J(dt),d=J(ze),r;e:{if(!l){r=d;break e}let f,v;a[0]===d?(f=a[1],v=a[2]):(f=!1,v=d.map(C=>{let k=ut(C.databases);return k===C.databases?C:(f=!0,{...C,databases:k})}),a[0]=d,a[1]=f,a[2]=v),r=f?v:d}let x=r;if(c.length===0&&x.length===0){let f;return a[3]===Symbol.for("react.memo_cache_sentinel")?(f=(0,s.jsx)(lt,{title:"No tables found",description:"Any datasets/dataframes in the global scope will be shown here.",action:(0,s.jsx)(Ve,{children:(0,s.jsxs)(ne,{variant:"outline",size:"sm",children:["Add database or catalog",(0,s.jsx)(De,{className:"h-4 w-4 ml-2"})]})}),icon:(0,s.jsx)(ce,{})}),a[3]=f):f=a[3],f}let h=!!e.trim(),m;a[4]===i?m=a[5]:(m=f=>{i(f.length>0),t(f)},a[4]=i,a[5]=m);let o;a[6]!==e||a[7]!==m?(o=(0,s.jsx)(Za,{placeholder:"Search tables...",className:"h-6 m-1",value:e,onValueChange:m,rootClassName:"flex-1 border-r border-b-0"}),a[6]=e,a[7]=m,a[8]=o):o=a[8];let p;a[9]===h?p=a[10]:(p=h&&(0,s.jsx)("button",{type:"button",className:"float-right border-b px-2 m-0 h-full hover:bg-accent hover:text-accent-foreground",onClick:()=>t(""),children:(0,s.jsx)(Ba,{className:"h-4 w-4"})}),a[9]=h,a[10]=p);let S=!l,b;a[11]!==l||a[12]!==n?(b=()=>n(!l),a[11]=l,a[12]=n,a[13]=b):b=a[13];let N;a[14]!==S||a[15]!==b?(N=(0,s.jsx)(Ea,{"data-testid":"datasources-hide-empty-button",isVisible:S,onToggle:b,showTooltip:"Show empty schemas and databases",hideTooltip:"Hide empty schemas and databases",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden"}),a[14]=S,a[15]=b,a[16]=N):N=a[16];let y;a[17]===Symbol.for("react.memo_cache_sentinel")?(y=(0,s.jsx)(Ve,{children:(0,s.jsx)(ne,{variant:"ghost",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden",children:(0,s.jsx)(De,{className:"h-4 w-4"})})}),a[17]=y):y=a[17];let j;a[18]!==o||a[19]!==p||a[20]!==N?(j=(0,s.jsxs)("div",{className:"flex items-center w-full border-b",children:[o,p,N,y]}),a[18]=o,a[19]=p,a[20]=N,a[21]=j):j=a[21];let g;if(a[22]!==x||a[23]!==e){let f;a[25]===e?f=a[26]:(f=v=>(0,s.jsx)(pt,{connection:v,hasChildren:v.databases.length>0,children:v.databases.map(C=>(0,s.jsx)(ft,{connection:v,database:C,searchValue:e},C.name))},v.name),a[25]=e,a[26]=f),g=x.map(f),a[22]=x,a[23]=e,a[24]=g}else g=a[24];let w;a[27]!==x.length||a[28]!==c.length?(w=x.length>0&&c.length>0&&(0,s.jsxs)(Fe,{className:"pr-2",style:L(A.engine),children:[(0,s.jsx)(tt,{className:"h-4 w-4 text-muted-foreground"}),(0,s.jsx)("span",{className:"text-xs",children:"Python"})]}),a[27]=x.length,a[28]=c.length,a[29]=w):w=a[29];let u;a[30]!==e||a[31]!==c?(u=c.length>0&&(0,s.jsx)(be,{tables:c,searchValue:e}),a[30]=e,a[31]=c,a[32]=u):u=a[32];let _;a[33]!==w||a[34]!==u||a[35]!==g?(_=(0,s.jsxs)(et,{className:"flex flex-col",children:[g,w,u]}),a[33]=w,a[34]=u,a[35]=g,a[36]=_):_=a[36];let I;return a[37]!==_||a[38]!==j?(I=(0,s.jsxs)(at,{className:"border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden",shouldFilter:!1,children:[j,_]}),a[37]=_,a[38]=j,a[39]=I):I=a[39],I};var pt=a=>{let e=(0,z.c)(26),{connection:t,children:l,hasChildren:n}=a,i=t.name===va,c=i?"In-Memory":t.name,{previewDataSourceConnection:d}=Da(),r;e[0]!==t.name||e[1]!==d?(r=async()=>{await d({engine:t.name})},e[0]=t.name,e[1]=d,e[2]=r):r=e[2];let x=r,h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=L(A.engine),e[3]=h):h=e[3];let m;e[4]===t.dialect?m=e[5]:(m=(0,s.jsx)(aa,{className:"h-4 w-4 text-muted-foreground",name:t.dialect}),e[4]=t.dialect,e[5]=m);let o;e[6]===t.dialect?o=e[7]:(o=fa(t.dialect),e[6]=t.dialect,e[7]=o);let p;e[8]===o?p=e[9]:(p=(0,s.jsx)("span",{className:"text-xs",children:o}),e[8]=o,e[9]=p);let S=c,b;e[10]===S?b=e[11]:(b=(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",(0,s.jsx)(ot,{variableName:S}),")"]}),e[10]=S,e[11]=b);let N;e[12]!==x||e[13]!==i?(N=!i&&(0,s.jsx)(Ma,{onClick:x,tooltip:"Refresh connection",className:"ml-auto h-4 p-0",iconClassName:"h-3.5 w-3.5"}),e[12]=x,e[13]=i,e[14]=N):N=e[14];let y;e[15]!==m||e[16]!==p||e[17]!==b||e[18]!==N?(y=(0,s.jsxs)(Fe,{className:"pr-2",style:h,children:[m,p,b,N]}),e[15]=m,e[16]=p,e[17]=b,e[18]=N,e[19]=y):y=e[19];let j;e[20]!==l||e[21]!==n?(j=n?l:(0,s.jsx)(le,{content:"No databases available",style:L(A.engineEmpty)}),e[20]=l,e[21]=n,e[22]=j):j=e[22];let g;return e[23]!==j||e[24]!==y?(g=(0,s.jsxs)(s.Fragment,{children:[y,j]}),e[23]=j,e[24]=y,e[25]=g):g=e[25],g},Ge=F.createContext(null);function He(){let a=F.useContext(Ge);if(a==null)throw Error("useDataSourceTree must be used within a DataSourceTreeContext.Provider");return a}function Ke(a,{schema:e,schemaPath:t}){return{engine:a.engineName,database:a.databaseName,schema:e,schemaPath:t,defaultSchema:a.defaultSchema,defaultDatabase:a.defaultDatabase,dialect:a.dialect}}var ft=a=>{let e=(0,z.c)(21),{connection:t,database:l,searchValue:n}=a,i;e[0]!==t.default_database||e[1]!==t.default_schema||e[2]!==t.dialect||e[3]!==t.name||e[4]!==l.name||e[5]!==n?(i={engineName:t.name,databaseName:l.name,dialect:t.dialect,defaultSchema:t.default_schema,defaultDatabase:t.default_database,searchValue:n},e[0]=t.default_database,e[1]=t.default_schema,e[2]=t.dialect,e[3]=t.name,e[4]=l.name,e[5]=n,e[6]=i):i=e[6];let c=i,d=t.name,r=l.schemas,x;e[7]===l?x=e[8]:(x=Se(l),e[7]=l,e[8]=x);let h;e[9]===Symbol.for("react.memo_cache_sentinel")?(h=[],e[9]=h):h=e[9];let m;e[10]!==l.schemas||e[11]!==x?(m=(0,s.jsx)(We,{schemas:r,schemasResolved:x,schemaPath:h,depth:0}),e[10]=l.schemas,e[11]=x,e[12]=m):m=e[12];let o;e[13]!==m||e[14]!==c?(o=(0,s.jsx)(Ge.Provider,{value:c,children:m}),e[13]=m,e[14]=c,e[15]=o):o=e[15];let p;return e[16]!==t.name||e[17]!==l||e[18]!==n||e[19]!==o?(p=(0,s.jsx)(bt,{engineName:d,database:l,searchValue:n,children:o}),e[16]=t.name,e[17]=l,e[18]=n,e[19]=o,e[20]=p):p=e[20],p},bt=a=>{let e=(0,z.c)(29),{searchValue:t,engineName:l,database:n,children:i}=a,c;e[0]!==n||e[1]!==t?(c=xa(n,t),e[0]=n,e[1]=t,e[2]=c):c=e[2];let d=c,[r,x]=F.useState(d),[h,m]=F.useState(!1),[o,p]=F.useState(t),[S,b]=F.useState(d);(o!==t||S!==d)&&(p(t),b(d),x(d));let N;e[3]===Symbol.for("react.memo_cache_sentinel")?(N=L(A.database),e[3]=N):N=e[3];let y;e[4]!==r||e[5]!==h?(y=()=>{x(!r),m(!h)},e[4]=r,e[5]=h,e[6]=y):y=e[6];let j=`${l}:${n.name}`,g;e[7]===r?g=e[8]:(g=(0,s.jsx)($e,{isExpanded:r}),e[7]=r,e[8]=g);let w=h&&r?"text-foreground":"text-muted-foreground",u;e[9]===w?u=e[10]:(u=Q("h-4 w-4",w),e[9]=w,e[10]=u);let _;e[11]===u?_=e[12]:(_=(0,s.jsx)(ce,{className:u}),e[11]=u,e[12]=_);let I=h&&r&&"font-semibold",f;e[13]===I?f=e[14]:(f=Q(I),e[13]=I,e[14]=f);let v;e[15]===n.name?v=e[16]:(v=n.name===""?(0,s.jsx)("i",{children:"Not connected"}):n.name,e[15]=n.name,e[16]=v);let C;e[17]!==f||e[18]!==v?(C=(0,s.jsx)("span",{className:f,children:v}),e[17]=f,e[18]=v,e[19]=C):C=e[19];let k;e[20]!==C||e[21]!==y||e[22]!==j||e[23]!==g||e[24]!==_?(k=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:N,onSelect:y,value:j,children:[g,_,C]}),e[20]=C,e[21]=y,e[22]=j,e[23]=g,e[24]=_,e[25]=k):k=e[25];let T=r&&i,P;return e[26]!==k||e[27]!==T?(P=(0,s.jsxs)(s.Fragment,{children:[k,T]}),e[26]=k,e[27]=T,e[28]=P):P=e[28],P},We=a=>{let{schemas:e,schemasResolved:t,depth:l}=a,n=He(),{engineName:i,databaseName:c,searchValue:d}=n,{addSchemaList:r}=ie(),x=st(a.schemaPath),[h,m]=F.useState(!1),{isPending:o,error:p}=pe(async()=>{if(!t&&i){m(!0);try{r({schemas:(await da.request({engine:i,database:c,schemaPath:x})).schemas??[],sqlSchemaContext:{engine:i,database:c,schemaPath:x}})}finally{m(!1)}}},[t,i,c,x]),S=L(Oe(l));return o||h?(0,s.jsx)(he,{message:"Loading schemas...",style:S}):p?(0,s.jsx)(ue,{error:p,style:S}):e.length===0?(0,s.jsx)(le,{content:"No schemas available",style:S}):(0,s.jsx)(s.Fragment,{children:e.map(b=>ua(b.name)?(0,s.jsx)(be,{tables:b.tables,tablesResolved:me(b),searchValue:d,sqlTableContext:Ke(n,{schema:b.name,schemaPath:x})},b.name):(0,s.jsx)(gt,{schema:b,schemaPath:[...x,b.name],depth:l},b.name))})},gt=a=>{let e=(0,z.c)(39),{schema:t,schemaPath:l,depth:n}=a,i=He(),{databaseName:c,searchValue:d}=i,r;e[0]!==t||e[1]!==d?(r=ha(t,d),e[0]=t,e[1]=d,e[2]=r):r=e[2];let x=r,[h,m]=F.useState(x),[o,p]=F.useState(!1),[S,b]=F.useState(d),[N,y]=F.useState(x),j=`${c}:${l.join(".")}`,g;e[3]===t.child_schemas?g=e[4]:(g=t.child_schemas??[],e[3]=t.child_schemas,e[4]=g);let w=g;(S!==d||N!==x)&&(b(d),y(x),m(x));let u;e[5]===n?u=e[6]:(u=L(Oe(n)),e[5]=n,e[6]=u);let _;e[7]!==h||e[8]!==o?(_=()=>{m(!h),p(!o)},e[7]=h,e[8]=o,e[9]=_):_=e[9];let I;e[10]===h?I=e[11]:(I=(0,s.jsx)($e,{isExpanded:h}),e[10]=h,e[11]=I);let f=o&&h&&"text-foreground",v;e[12]===f?v=e[13]:(v=Q("h-4 w-4 text-muted-foreground",f),e[12]=f,e[13]=v);let C;e[14]===v?C=e[15]:(C=(0,s.jsx)(wa,{className:v}),e[14]=v,e[15]=C);let k=o&&h&&"font-semibold",T;e[16]===k?T=e[17]:(T=Q(k),e[16]=k,e[17]=T);let P;e[18]!==t.name||e[19]!==T?(P=(0,s.jsx)("span",{className:T,children:t.name}),e[18]=t.name,e[19]=T,e[20]=P):P=e[20];let R;e[21]!==P||e[22]!==u||e[23]!==_||e[24]!==I||e[25]!==C||e[26]!==j?(R=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:u,onSelect:_,value:j,children:[I,C,P]}),e[21]=P,e[22]=u,e[23]=_,e[24]=I,e[25]=C,e[26]=j,e[27]=R):R=e[27];let V;e[28]!==w||e[29]!==n||e[30]!==h||e[31]!==t||e[32]!==l||e[33]!==d||e[34]!==i?(V=h&&(0,s.jsxs)(s.Fragment,{children:[(w.length>0||!oe(t))&&(0,s.jsx)(We,{schemas:w,schemasResolved:oe(t),schemaPath:l,depth:n+1}),(0,s.jsx)(be,{tables:t.tables,tablesResolved:me(t),searchValue:d,tableIndentRem:it(n),columnIndentRem:Ue(n),sqlTableContext:Ke(i,{schema:t.name,schemaPath:l})})]}),e[28]=w,e[29]=n,e[30]=h,e[31]=t,e[32]=l,e[33]=d,e[34]=i,e[35]=V):V=e[35];let $;return e[36]!==R||e[37]!==V?($=(0,s.jsxs)(s.Fragment,{children:[R,V]}),e[36]=R,e[37]=V,e[38]=$):$=e[38],$},be=a=>{let e=(0,z.c)(31),{tables:t,sqlTableContext:l,searchValue:n,tablesResolved:i,tableIndentRem:c,columnIndentRem:d}=a,r=i===void 0?!0:i,{addTableList:x}=ie(),[h,m]=F.useState(!1),o;e[0]!==x||e[1]!==l||e[2]!==r?(o=async()=>{if(!r&&l){m(!0);let{engine:u,database:_,schema:I,schemaPath:f}=l,v=await ia.request({engine:u,database:_,schema:I,schemaPath:f??[]});if(!(v!=null&&v.tables))throw m(!1),Error("No tables available");x({tables:v.tables,sqlTableContext:l}),m(!1)}},e[0]=x,e[1]=l,e[2]=r,e[3]=o):o=e[3];let p;e[4]!==l||e[5]!==r?(p=[r,l],e[4]=l,e[5]=r,e[6]=p):p=e[6];let{isPending:S,error:b}=pe(o,p),N=c??A.tableLoading,y;e[7]===N?y=e[8]:(y=L(N),e[7]=N,e[8]=y);let j=y;if(S||h){let u;return e[9]===j?u=e[10]:(u=(0,s.jsx)(he,{message:"Loading tables...",style:j}),e[9]=j,e[10]=u),u}if(b){let u;return e[11]!==b||e[12]!==j?(u=(0,s.jsx)(ue,{error:b,style:j}),e[11]=b,e[12]=j,e[13]=u):u=e[13],u}if(t.length===0){let u;return e[14]===j?u=e[15]:(u=(0,s.jsx)(le,{content:"No tables found",style:j}),e[14]=j,e[15]=u),u}let g;if(e[16]!==d||e[17]!==n||e[18]!==l||e[19]!==c||e[20]!==t){let u;e[22]===n?u=e[23]:(u=f=>n?f.name.toLowerCase().includes(n.toLowerCase()):!0,e[22]=n,e[23]=u);let _=t.filter(u),I;e[24]!==d||e[25]!==n||e[26]!==l||e[27]!==c?(I=f=>(0,s.jsx)(jt,{table:f,sqlTableContext:l,isSearching:!!n,tableIndentRem:c,columnIndentRem:d},f.name),e[24]=d,e[25]=n,e[26]=l,e[27]=c,e[28]=I):I=e[28],g=_.map(I),e[16]=d,e[17]=n,e[18]=l,e[19]=c,e[20]=t,e[21]=g}else g=e[21];let w;return e[29]===g?w=e[30]:(w=(0,s.jsx)(s.Fragment,{children:g}),e[29]=g,e[30]=w),w},jt=a=>{let e=(0,z.c)(69),{table:t,sqlTableContext:l,isSearching:n,tableIndentRem:i,columnIndentRem:c}=a,{addTable:d}=ie(),[r,x]=F.useState(!1),h=t.columns.length>0,m;e[0]!==d||e[1]!==r||e[2]!==l||e[3]!==t.name||e[4]!==h?(m=async()=>{if(r&&!h&&l){let{engine:E,database:ae,schema:te,schemaPath:Je}=l,se=await ra.request({engine:E,database:ae,schema:te,tableName:t.name,schemaPath:Je??[]});if(!(se!=null&&se.table))throw Error("No table details available");d({table:se.table,sqlTableContext:l})}},e[0]=d,e[1]=r,e[2]=l,e[3]=t.name,e[4]=h,e[5]=m):m=e[5];let o;e[6]!==r||e[7]!==h?(o=[r,h],e[6]=r,e[7]=h,e[8]=o):o=e[8];let{isFetching:p,isPending:S,error:b}=pe(m,o),N=J(Sa),y=Ka(),{createNewCell:j}=ta(),g=Re(),w;e[9]!==g||e[10]!==N||e[11]!==j||e[12]!==y||e[13]!==l||e[14]!==t?(w=()=>{Ha({autoInstantiate:N,createNewCell:j,fromCellId:y}),g((()=>{if(t.source_type==="catalog"){let E=l!=null&&l.database?[l.database,...l.schemaPath??[],t.name].join("."):t.name;return`${t.engine}.load_table("${E}")`}if(l)return _e({table:t,columnName:"*",sqlTableContext:l});switch(t.source_type){case"local":return`mo.ui.table(${t.name})`;case"duckdb":case"connection":return _e({table:t,columnName:"*",sqlTableContext:l});default:return Va(t.source_type),""}})())},e[9]=g,e[10]=N,e[11]=j,e[12]=y,e[13]=l,e[14]=t,e[15]=w):w=e[15];let u=w,_;e[16]!==t.num_columns||e[17]!==t.num_rows?(_=()=>{let E=[];return t.num_rows!=null&&E.push(`${t.num_rows} rows`),t.num_columns!=null&&E.push(`${t.num_columns} columns`),E.length===0?null:(0,s.jsx)("div",{className:"flex flex-row gap-2 items-center pl-6 group-hover:hidden",children:(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:E.join(", ")})})},e[16]=t.num_columns,e[17]=t.num_rows,e[18]=_):_=e[18];let I=_,f;e[19]!==c||e[20]!==b||e[21]!==p||e[22]!==S||e[23]!==l||e[24]!==t?(f=()=>{let E=L(c??A.tableLoading);if(S||p)return(0,s.jsx)(he,{message:"Loading columns...",style:E});if(b)return(0,s.jsx)(ue,{error:b,style:E});let ae=t.columns;return ae.length===0?(0,s.jsx)(le,{content:"No columns found",style:E}):ae.map(te=>(0,s.jsx)(yt,{table:t,column:te,sqlTableContext:l,columnIndentRem:c},te.name))},e[19]=c,e[20]=b,e[21]=p,e[22]=S,e[23]=l,e[24]=t,e[25]=f):f=e[25];let v=f,C;e[26]!==r||e[27]!==n||e[28]!==t.source_type||e[29]!==t.type?(C=()=>{if(t.source_type!=="local")return(0,s.jsx)(t.type==="table"?ya:Na,{className:"h-3 w-3",strokeWidth:r||n?2.5:void 0})},e[26]=r,e[27]=n,e[28]=t.source_type,e[29]=t.type,e[30]=C):C=e[30];let k=C,T;e[31]!==l||e[32]!==t.name?(T=Ye(l,t.name),e[31]=l,e[32]=t.name,e[33]=T):T=e[33];let P=T,R=i??(l?A.tableSchemaless:0),V=(r||n)&&"font-semibold",$;e[34]===V?$=e[35]:($=Q("rounded-none group h-8 cursor-pointer",V),e[34]=V,e[35]=$);let D;e[36]===R?D=e[37]:(D=L(R),e[36]=R,e[37]=D);let q;e[38]===r?q=e[39]:(q=()=>x(!r),e[38]=r,e[39]=q);let M;e[40]===k?M=e[41]:(M=k(),e[40]=k,e[41]=M);let O;e[42]===t.name?O=e[43]:(O=(0,s.jsx)("span",{className:"text-sm",children:t.name}),e[42]=t.name,e[43]=O);let U;e[44]!==M||e[45]!==O?(U=(0,s.jsxs)("div",{className:"flex gap-2 items-center flex-1 pl-1",children:[M,O]}),e[44]=M,e[45]=O,e[46]=U):U=e[46];let B;e[47]===I?B=e[48]:(B=I(),e[47]=I,e[48]=B);let H;e[49]===u?H=e[50]:(H=Ra.stopPropagation(()=>u()),e[49]=u,e[50]=H);let Z;e[51]===Symbol.for("react.memo_cache_sentinel")?(Z=(0,s.jsx)(Ua,{className:"h-3 w-3"}),e[51]=Z):Z=e[51];let K;e[52]===H?K=e[53]:(K=(0,s.jsx)(xe,{content:"Add table to notebook",delayDuration:400,children:(0,s.jsx)(ne,{className:"group-hover:inline-flex hidden",variant:"text",size:"icon",onClick:H,children:Z})}),e[52]=H,e[53]=K);let W;e[54]!==r||e[55]!==D||e[56]!==q||e[57]!==U||e[58]!==B||e[59]!==K||e[60]!==$||e[61]!==P?(W=(0,s.jsxs)(re,{className:$,style:D,value:P,"aria-selected":r,forceMount:!0,onSelect:q,children:[U,B,K]}),e[54]=r,e[55]=D,e[56]=q,e[57]=U,e[58]=B,e[59]=K,e[60]=$,e[61]=P,e[62]=W):W=e[62];let X;e[63]!==r||e[64]!==v?(X=r&&v(),e[63]=r,e[64]=v,e[65]=X):X=e[65];let ee;return e[66]!==W||e[67]!==X?(ee=(0,s.jsxs)(s.Fragment,{children:[W,X]}),e[66]=W,e[67]=X,e[68]=ee):ee=e[68],ee},yt=a=>{var O,U;let e=(0,z.c)(51),{table:t,column:l,sqlTableContext:n,columnIndentRem:i}=a,[c,d]=F.useState(!1),r=J(Ne),x=je(na);r&&c&&d(!1),x(c?B=>new Set([...B,`${t.name}:${l.name}`]):B=>(B.delete(`${t.name}:${l.name}`),new Set(B)));let h=Re(),{columnsPreviews:m}=ma(),o;e[0]!==l.name||e[1]!==t.primary_keys?(o=((O=t.primary_keys)==null?void 0:O.includes(l.name))||!1,e[0]=l.name,e[1]=t.primary_keys,e[2]=o):o=e[2];let p=o,S;e[3]!==l.name||e[4]!==t.indexes?(S=((U=t.indexes)==null?void 0:U.includes(l.name))||!1,e[3]=l.name,e[4]=t.indexes,e[5]=S):S=e[5];let b=S,N;e[6]===h?N=e[7]:(N=B=>{h(B)},e[6]=h,e[7]=N);let y=N,j=vt,g=c?"font-semibold":"",w;e[8]!==l.name||e[9]!==g?(w=(0,s.jsx)("span",{className:g,children:l.name}),e[8]=l.name,e[9]=g,e[10]=w):w=e[10];let u=w,_=`${t.name}.${l.name}`,I=`${t.name}.${l.name}`,f;e[11]===c?f=e[12]:(f=()=>d(!c),e[11]=c,e[12]=f);let v;e[13]!==i||e[14]!==n?(v=i??(n?Ue(0):A.columnLocal),e[13]=i,e[14]=n,e[15]=v):v=e[15];let C;e[16]===v?C=e[17]:(C=L(v),e[16]=v,e[17]=C);let k;e[18]!==l.type||e[19]!==u?(k=(0,s.jsx)($a,{columnName:u,dataType:l.type}),e[18]=l.type,e[19]=u,e[20]=k):k=e[20];let T;e[21]===p?T=e[22]:(T=p&&j({tooltipContent:"Primary key",content:"PK"}),e[21]=p,e[22]=T);let P;e[23]===b?P=e[24]:(P=b&&j({tooltipContent:"Indexed",content:"IDX"}),e[23]=b,e[24]=P);let R;e[25]!==C||e[26]!==k||e[27]!==T||e[28]!==P?(R=(0,s.jsxs)("div",{className:"flex flex-row gap-2 items-center flex-1",style:C,children:[k,T,P]}),e[25]=C,e[26]=k,e[27]=T,e[28]=P,e[29]=R):R=e[29];let V;e[30]===l.name?V=e[31]:(V=(0,s.jsx)(xe,{content:"Copy column name",delayDuration:400,children:(0,s.jsx)(ne,{variant:"text",size:"icon",className:"group-hover:opacity-100 opacity-0 hover:bg-muted text-muted-foreground hover:text-foreground",children:(0,s.jsx)(za,{tooltip:!1,value:l.name,className:"h-3 w-3"})})}),e[30]=l.name,e[31]=V);let $;e[32]===l.external_type?$=e[33]:($=(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:l.external_type}),e[32]=l.external_type,e[33]=$);let D;e[34]!==R||e[35]!==V||e[36]!==$||e[37]!==_||e[38]!==I||e[39]!==f?(D=(0,s.jsxs)(re,{className:"rounded-none py-1 group cursor-pointer",value:I,onSelect:f,children:[R,V,$]},_),e[34]=R,e[35]=V,e[36]=$,e[37]=_,e[38]=I,e[39]=f,e[40]=D):D=e[40];let q;e[41]!==l||e[42]!==m||e[43]!==y||e[44]!==c||e[45]!==n||e[46]!==t?(q=c&&(0,s.jsx)("div",{className:"pr-2 py-2 bg-(--slate-1) shadow-inner border-b",style:L(A.columnPreview),children:(0,s.jsx)(_a,{children:(0,s.jsx)(Oa,{table:t,column:l,onAddColumnChart:y,preview:m.get(n?`${n.database}.${n.schema}.${t.name}:${l.name}`:`${t.name}:${l.name}`),sqlTableContext:n})})}),e[41]=l,e[42]=m,e[43]=y,e[44]=c,e[45]=n,e[46]=t,e[47]=q):q=e[47];let M;return e[48]!==D||e[49]!==q?(M=(0,s.jsxs)(s.Fragment,{children:[D,q]}),e[48]=D,e[49]=q,e[50]=M):M=e[50],M};function vt(a){let{tooltipContent:e,content:t}=a;return(0,s.jsx)(xe,{content:e,delayDuration:100,children:(0,s.jsx)("span",{className:"text-xs text-black bg-gray-100 dark:invert rounded px-1",children:t})})}function Ds(a){return a}var G={name:"name",type:"type-value",defs:"defs-refs"},Nt=[{id:G.name,accessorFn:a=>[a.name,a.declaredBy],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(de,{header:"Name",column:a}),cell:({getValue:a})=>{let[e,t]=a();return(0,s.jsx)(rt,{name:e,declaredBy:t})}},{id:G.type,accessorFn:a=>[a.dataType,a.value],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(de,{header:(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("span",{children:"Type"}),(0,s.jsx)("span",{children:"Value"})]}),column:a}),cell:({getValue:a})=>{let[e,t]=a();return(0,s.jsxs)("div",{className:"max-w-[150px]",children:[(0,s.jsx)("div",{className:"text-ellipsis overflow-hidden whitespace-nowrap text-muted-foreground font-mono text-xs",children:e}),(0,s.jsx)("div",{className:"text-ellipsis overflow-hidden whitespace-nowrap",title:t??"",children:t})]})}},{id:G.defs,accessorFn:a=>[a.declaredBy,a.usedBy,a.name,a.declaredByNames,a.usedByNames],enableSorting:!0,sortingFn:"basic",header:({column:a})=>(0,s.jsx)(de,{header:(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("span",{children:"Declared By"}),(0,s.jsx)("span",{children:"Used By"})]}),column:a}),cell:({getValue:a})=>{let[e,t,l]=a(),n=i=>{let c=pa(i);c&&ea(c,l)};return(0,s.jsxs)("div",{className:"flex flex-col gap-1 py-1",children:[(0,s.jsxs)("div",{className:"flex flex-row overflow-auto gap-2 items-center",children:[(0,s.jsx)("span",{title:"Declared by",children:(0,s.jsx)(mt,{className:"w-3.5 h-3.5 text-muted-foreground"})}),e.length===1?(0,s.jsx)(qe,{variant:"focus",cellId:e[0],skipScroll:!0,onClick:()=>n(e[0])}):(0,s.jsx)("div",{className:"text-destructive flex flex-row gap-2",children:e.slice(0,3).map((i,c)=>(0,s.jsxs)("span",{className:"flex",children:[(0,s.jsx)(qe,{variant:"focus",cellId:i,skipScroll:!0,className:"whitespace-nowrap text-destructive",onClick:()=>n(i)},i),c<e.length-1&&", "]},i))})]}),(0,s.jsxs)("div",{className:"flex flex-row overflow-auto gap-2 items-baseline",children:[(0,s.jsx)("span",{title:"Used by",children:(0,s.jsx)(Aa,{className:"w-3.5 h-3.5 text-muted-foreground"})}),(0,s.jsx)(nt,{maxCount:3,cellIds:t,skipScroll:!0,onClick:n})]})]})}}];function wt({variables:a,sort:e,cellIdToIndex:t}){e||(e={id:G.defs,desc:!1});let l=[];switch(e.id){case G.name:l=Y(a,n=>n.name);break;case G.type:l=Y(a,n=>n.dataType);break;case G.defs:l=Y(a,n=>t.get(n.declaredBy[0]));break}return e.desc?l.toReversed():l}const Xe=(0,F.memo)(({className:a,cellIds:e,variables:t})=>{let[l,n]=F.useState([]),[i,c]=F.useState(""),d=ca(),{locale:r}=Ga(),x=(0,F.useMemo)(()=>{let m=o=>{let p=d[o];return sa(p)?`cell-${e.indexOf(o)}`:p??`cell-${e.indexOf(o)}`};return Object.values(t).map(o=>({...o,declaredByNames:o.declaredBy.map(m),usedByNames:o.usedBy.map(m)}))},[t,d,e]),h=Fa({data:(0,F.useMemo)(()=>{let m=new Map;return e.forEach((o,p)=>m.set(o,p)),wt({variables:x,sort:l[0],cellIdToIndex:m})},[x,l,e]),columns:Nt,getCoreRowModel:Ta(),onGlobalFilterChange:c,getFilteredRowModel:Pa(),enableFilters:!0,enableGlobalFilter:!0,enableColumnPinning:!1,getColumnCanGlobalFilter(m){return m.columnDef.enableGlobalFilter??!0},globalFilterFn:"auto",manualSorting:!0,locale:r,onSortingChange:n,getSortedRowModel:ka(),state:{sorting:l,globalFilter:i}});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(La,{className:"w-full",placeholder:"Search",value:i,onChange:m=>c(m.target.value)}),(0,s.jsxs)(Ya,{className:Q("w-full text-sm flex-1 border-separate border-spacing-0",a),children:[(0,s.jsx)(Wa,{children:(0,s.jsx)(Be,{className:"whitespace-nowrap text-xs",children:h.getFlatHeaders().map(m=>(0,s.jsx)(Xa,{className:"sticky top-0 bg-background border-b",children:Pe(m.column.columnDef.header,m.getContext())},m.id))})}),(0,s.jsx)(Ja,{children:h.getRowModel().rows.map(m=>(0,s.jsx)(Be,{className:"hover:bg-accent",children:m.getVisibleCells().map(o=>(0,s.jsx)(Qa,{className:"border-b",children:Pe(o.column.columnDef.cell,o.getContext())},o.id))},m.id))})]})]})});Xe.displayName="VariableTable";var St=Te(),_t=we("marimo:session-panel:state",{openSections:["variables"],hasUserInteracted:!1},ke),Ct=()=>{let a=(0,St.c)(24),e=Ze(),t=ja(),l=J(Ce),n=J(ze),[i,c]=ye(_t),d=l.length+n.length,r;a[0]!==d||a[1]!==i.hasUserInteracted||a[2]!==i.openSections?(r=!i.hasUserInteracted&&d>0?[...new Set([...i.openSections,"datasources"])]:i.openSections,a[0]=d,a[1]=i.hasUserInteracted,a[2]=i.openSections,a[3]=r):r=a[3];let x=r,h;a[4]===c?h=a[5]:(h=u=>{c({openSections:u,hasUserInteracted:!0})},a[4]=c,a[5]=h);let m=h,o=!x.includes("datasources")&&d>0,p;a[6]===Symbol.for("react.memo_cache_sentinel")?(p=(0,s.jsx)(ce,{className:"w-4 h-4"}),a[6]=p):p=a[6];let S;a[7]!==d||a[8]!==o?(S=o&&(0,s.jsx)(ct,{children:d}),a[7]=d,a[8]=o,a[9]=S):S=a[9];let b;a[10]===S?b=a[11]:(b=(0,s.jsxs)(Me,{children:[p,"Data sources",S]}),a[10]=S,a[11]=b);let N;a[12]===Symbol.for("react.memo_cache_sentinel")?(N=(0,s.jsx)(Le,{children:(0,s.jsx)(xt,{})}),a[12]=N):N=a[12];let y;a[13]===b?y=a[14]:(y=(0,s.jsxs)(Ee,{value:"datasources",children:[b,N]}),a[13]=b,a[14]=y);let j;a[15]===Symbol.for("react.memo_cache_sentinel")?(j=(0,s.jsxs)(Me,{children:[(0,s.jsx)(ba,{className:"w-4 h-4"}),"Variables"]}),a[15]=j):j=a[15];let g;a[16]!==t||a[17]!==e?(g=(0,s.jsxs)(Ee,{value:"variables",lastItem:!0,children:[j,(0,s.jsx)(Le,{children:Object.keys(e).length===0?(0,s.jsx)("div",{className:"px-3 py-4 text-sm text-muted-foreground",children:"No variables defined"}):(0,s.jsx)(Xe,{cellIds:t.inOrderIds,variables:e})})]}),a[16]=t,a[17]=e,a[18]=g):g=a[18];let w;return a[19]!==m||a[20]!==x||a[21]!==y||a[22]!==g?(w=(0,s.jsxs)(Ia,{type:"multiple",value:x,onValueChange:m,className:"flex flex-col h-full overflow-auto",children:[y,g]}),a[19]=m,a[20]=x,a[21]=y,a[22]=g,a[23]=w):w=a[23],w};export{Ct as default};
@@ -1 +1 @@
1
- var A=Object.defineProperty;var N=(t,e,a)=>e in t?A(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var b=(t,e,a)=>N(t,typeof e!="symbol"?e+"":e,a);import{s as V}from"./chunk-LvLJmgfZ.js";import{u as I}from"./useEvent-D91BmmQi.js";import{a as T}from"./cells-Cf7bHHq3.js";import{t as M}from"./compiler-runtime-B3qBwwSJ.js";import{g as k}from"./useEventListener-B_w3A283.js";import{t as E}from"./objects-BlG0ZrO0.js";import{o as P}from"./utils-Z80SV4_d.js";import{v as _,w as D}from"./config-BbOTTCYY.js";import{t as z}from"./cn-DYvqRARy.js";import{t as $}from"./jsx-runtime-Blw4afVn.js";import{s as B,u as H}from"./download-BomYt3nl.js";import{r as L}from"./requests-9-v2bhoi.js";import{F as R}from"./layout-BOwE7yok.js";import{t as Y}from"./Deferred-D2igisxY.js";import{t as q}from"./use-toast-BwJoaaDM.js";import{t as x}from"./useInterval-CC0vKpWm.js";var G=class{constructor(){b(this,"capturedInputs",new Map);b(this,"inFlight",new Map)}cancelEntry(t){t.controller.abort(),t.deferred.status==="pending"&&t.deferred.resolve(void 0)}needsCapture(t,e){if(this.capturedInputs.get(t)===e)return!1;let a=this.inFlight.get(t);return!(a&&a.inputValue===e)}waitForInFlight(t,e){let a=this.inFlight.get(t);return a&&a.inputValue===e?a.deferred.promise:null}startCapture(t,e){let a=this.inFlight.get(t);a&&this.cancelEntry(a);let r=new AbortController,i=new Y,s={controller:r,inputValue:e,deferred:i};return this.inFlight.set(t,s),{signal:r.signal,markCaptured:p=>{this.inFlight.get(t)===s&&(i.resolve(p),this.capturedInputs.set(t,e),this.inFlight.delete(t))},markFailed:()=>{this.inFlight.get(t)===s&&(i.resolve(void 0),this.inFlight.delete(t))}}}prune(t){for(let e of this.capturedInputs.keys())t.has(e)||this.capturedInputs.delete(e);for(let[e,a]of this.inFlight)t.has(e)||(this.cancelEntry(a),this.inFlight.delete(e))}get isCapturing(){return this.inFlight.size>0}abort(){for(let t of this.inFlight.values())this.cancelEntry(t);this.inFlight.clear()}reset(){this.abort(),this.capturedInputs.clear()}},J=M(),S=5e3;function K(){let t=(0,J.c)(14),e=I(P),{state:a}=I(_),r=e.auto_download.includes("markdown"),i=e.auto_download.includes("html"),s=e.auto_download.includes("ipynb"),p=a===D.OPEN,m=!r||!p,d=!i||!p,c=!s||!p,{autoExportAsHTML:l,autoExportAsIPYNB:o,autoExportAsMarkdown:n,updateCellOutputs:u}=L(),h=O(),f;t[0]===n?f=t[1]:(f=async()=>{await n({download:!1})},t[0]=n,t[1]=f);let g;t[2]===m?g=t[3]:(g={delayMs:S,whenVisible:!0,disabled:m},t[2]=m,t[3]=g),x(f,g);let w;t[4]===l?w=t[5]:(w=async()=>{await l({download:!1,includeCode:!0,files:R.INSTANCE.filenames()})},t[4]=l,t[5]=w);let v;t[6]===d?v=t[7]:(v={delayMs:S,whenVisible:!0,disabled:d},t[6]=d,t[7]=v),x(w,v);let F;t[8]!==o||t[9]!==h||t[10]!==u?(F=async()=>{await j({takeScreenshots:()=>h({progress:H.indeterminate()}),updateCellOutputs:u}),await o({download:!1})},t[8]=o,t[9]=h,t[10]=u,t[11]=F):F=t[11];let y;t[12]===c?y=t[13]:(y={delayMs:S,whenVisible:!0,disabled:c,skipIfRunning:!0},t[12]=c,t[13]=y),x(F,y)}var Q=new Set(["text/html","application/vnd.vegalite.v5+json","application/vnd.vega.v5+json","application/vnd.vegalite.v6+json","application/vnd.vega.v6+json"]);const C=new G;function O(){let t=I(T);return async e=>{var d,c;let{progress:a}=e,r=new Set(E.keys(t));C.prune(r);let i=[],s=[];for(let[l,o]of E.entries(t)){let n=(d=o.output)==null?void 0:d.data;if((c=o.output)!=null&&c.mimetype&&Q.has(o.output.mimetype)&&n)if(C.needsCapture(l,n))i.push([l,n]);else{let u=C.waitForInFlight(l,n);u&&s.push({cellId:l,promise:u})}}if(i.length===0&&s.length===0)return{};i.length>0&&a.addTotal(i.length);let p={};for(let[l,o]of i){let n=C.startCapture(l,o);try{let u=await B(l);if(n.signal.aborted)continue;if(!u){k.error(`Failed to capture screenshot for cell ${l}`),n.markFailed();continue}let h=["image/png",u];p[l]=h,n.markCaptured(h)}catch(u){k.error(`Error screenshotting cell ${l}:`,u),n.markFailed()}finally{a.increment(1)}}let m=await Promise.allSettled(s.map(({promise:l})=>l));for(let[l,{cellId:o}]of s.entries()){let n=m[l];n.status==="fulfilled"&&n.value&&(p[o]=n.value)}return p}}async function j(t){let{takeScreenshots:e,updateCellOutputs:a}=t;try{let r=await e();E.size(r)>0&&await a({cellIdsToOutput:r})}catch(r){k.error("Error updating cell outputs with screenshots:",r),q({title:"Failed to capture cell outputs",description:"Some outputs may not appear in the PDF. Continuing with export.",variant:"danger"})}}var U=M(),W=V($(),1),X=t=>{let e=(0,U.c)(8),a,r;e[0]===t?(a=e[1],r=e[2]):({className:a,...r}=t,e[0]=t,e[1]=a,e[2]=r);let i;e[3]===a?i=e[4]:(i=z("animate-pulse rounded-md bg-muted",a),e[3]=a,e[4]=i);let s;return e[5]!==r||e[6]!==i?(s=(0,W.jsx)("div",{className:i,...r}),e[5]=r,e[6]=i,e[7]=s):s=e[7],s};export{O as i,j as n,K as r,X as t};
1
+ var A=Object.defineProperty;var N=(t,e,a)=>e in t?A(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var b=(t,e,a)=>N(t,typeof e!="symbol"?e+"":e,a);import{s as V}from"./chunk-LvLJmgfZ.js";import{u as I}from"./useEvent-D91BmmQi.js";import{a as T}from"./cells-Cf7bHHq3.js";import{t as M}from"./compiler-runtime-B3qBwwSJ.js";import{g as k}from"./useEventListener-B_w3A283.js";import{t as E}from"./objects-BlG0ZrO0.js";import{o as P}from"./utils-Z80SV4_d.js";import{v as _,w as D}from"./config-BbOTTCYY.js";import{t as z}from"./cn-DYvqRARy.js";import{t as $}from"./jsx-runtime-Blw4afVn.js";import{s as B,u as H}from"./download-BomYt3nl.js";import{r as L}from"./requests-9-v2bhoi.js";import{F as R}from"./layout-CUlZijwG.js";import{t as Y}from"./Deferred-D2igisxY.js";import{t as q}from"./use-toast-BwJoaaDM.js";import{t as x}from"./useInterval-CC0vKpWm.js";var G=class{constructor(){b(this,"capturedInputs",new Map);b(this,"inFlight",new Map)}cancelEntry(t){t.controller.abort(),t.deferred.status==="pending"&&t.deferred.resolve(void 0)}needsCapture(t,e){if(this.capturedInputs.get(t)===e)return!1;let a=this.inFlight.get(t);return!(a&&a.inputValue===e)}waitForInFlight(t,e){let a=this.inFlight.get(t);return a&&a.inputValue===e?a.deferred.promise:null}startCapture(t,e){let a=this.inFlight.get(t);a&&this.cancelEntry(a);let r=new AbortController,i=new Y,s={controller:r,inputValue:e,deferred:i};return this.inFlight.set(t,s),{signal:r.signal,markCaptured:p=>{this.inFlight.get(t)===s&&(i.resolve(p),this.capturedInputs.set(t,e),this.inFlight.delete(t))},markFailed:()=>{this.inFlight.get(t)===s&&(i.resolve(void 0),this.inFlight.delete(t))}}}prune(t){for(let e of this.capturedInputs.keys())t.has(e)||this.capturedInputs.delete(e);for(let[e,a]of this.inFlight)t.has(e)||(this.cancelEntry(a),this.inFlight.delete(e))}get isCapturing(){return this.inFlight.size>0}abort(){for(let t of this.inFlight.values())this.cancelEntry(t);this.inFlight.clear()}reset(){this.abort(),this.capturedInputs.clear()}},J=M(),S=5e3;function K(){let t=(0,J.c)(14),e=I(P),{state:a}=I(_),r=e.auto_download.includes("markdown"),i=e.auto_download.includes("html"),s=e.auto_download.includes("ipynb"),p=a===D.OPEN,m=!r||!p,d=!i||!p,c=!s||!p,{autoExportAsHTML:l,autoExportAsIPYNB:o,autoExportAsMarkdown:n,updateCellOutputs:u}=L(),h=O(),f;t[0]===n?f=t[1]:(f=async()=>{await n({download:!1})},t[0]=n,t[1]=f);let g;t[2]===m?g=t[3]:(g={delayMs:S,whenVisible:!0,disabled:m},t[2]=m,t[3]=g),x(f,g);let w;t[4]===l?w=t[5]:(w=async()=>{await l({download:!1,includeCode:!0,files:R.INSTANCE.filenames()})},t[4]=l,t[5]=w);let v;t[6]===d?v=t[7]:(v={delayMs:S,whenVisible:!0,disabled:d},t[6]=d,t[7]=v),x(w,v);let F;t[8]!==o||t[9]!==h||t[10]!==u?(F=async()=>{await j({takeScreenshots:()=>h({progress:H.indeterminate()}),updateCellOutputs:u}),await o({download:!1})},t[8]=o,t[9]=h,t[10]=u,t[11]=F):F=t[11];let y;t[12]===c?y=t[13]:(y={delayMs:S,whenVisible:!0,disabled:c,skipIfRunning:!0},t[12]=c,t[13]=y),x(F,y)}var Q=new Set(["text/html","application/vnd.vegalite.v5+json","application/vnd.vega.v5+json","application/vnd.vegalite.v6+json","application/vnd.vega.v6+json"]);const C=new G;function O(){let t=I(T);return async e=>{var d,c;let{progress:a}=e,r=new Set(E.keys(t));C.prune(r);let i=[],s=[];for(let[l,o]of E.entries(t)){let n=(d=o.output)==null?void 0:d.data;if((c=o.output)!=null&&c.mimetype&&Q.has(o.output.mimetype)&&n)if(C.needsCapture(l,n))i.push([l,n]);else{let u=C.waitForInFlight(l,n);u&&s.push({cellId:l,promise:u})}}if(i.length===0&&s.length===0)return{};i.length>0&&a.addTotal(i.length);let p={};for(let[l,o]of i){let n=C.startCapture(l,o);try{let u=await B(l);if(n.signal.aborted)continue;if(!u){k.error(`Failed to capture screenshot for cell ${l}`),n.markFailed();continue}let h=["image/png",u];p[l]=h,n.markCaptured(h)}catch(u){k.error(`Error screenshotting cell ${l}:`,u),n.markFailed()}finally{a.increment(1)}}let m=await Promise.allSettled(s.map(({promise:l})=>l));for(let[l,{cellId:o}]of s.entries()){let n=m[l];n.status==="fulfilled"&&n.value&&(p[o]=n.value)}return p}}async function j(t){let{takeScreenshots:e,updateCellOutputs:a}=t;try{let r=await e();E.size(r)>0&&await a({cellIdsToOutput:r})}catch(r){k.error("Error updating cell outputs with screenshots:",r),q({title:"Failed to capture cell outputs",description:"Some outputs may not appear in the PDF. Continuing with export.",variant:"danger"})}}var U=M(),W=V($(),1),X=t=>{let e=(0,U.c)(8),a,r;e[0]===t?(a=e[1],r=e[2]):({className:a,...r}=t,e[0]=t,e[1]=a,e[2]=r);let i;e[3]===a?i=e[4]:(i=z("animate-pulse rounded-md bg-muted",a),e[3]=a,e[4]=i);let s;return e[5]!==r||e[6]!==i?(s=(0,W.jsx)("div",{className:i,...r}),e[5]=r,e[6]=i,e[7]=s):s=e[7],s};export{O as i,j as n,K as r,X as t};
@@ -1,3 +1,3 @@
1
- var jr=Object.defineProperty;var Ct=g=>{throw TypeError(g)};var $r=(g,y,_)=>y in g?jr(g,y,{enumerable:!0,configurable:!0,writable:!0,value:_}):g[y]=_;var o=(g,y,_)=>$r(g,typeof y!="symbol"?y+"":y,_),We=(g,y,_)=>y.has(g)||Ct("Cannot "+_);var i=(g,y,_)=>(We(g,y,"read from private field"),_?_.call(g):y.get(g)),u=(g,y,_)=>y.has(g)?Ct("Cannot add the same private member more than once"):y instanceof WeakSet?y.add(g):y.set(g,_),h=(g,y,_,le)=>(We(g,y,"write to private field"),le?le.call(g,_):y.set(g,_),_),m=(g,y,_)=>(We(g,y,"access private method"),_);import{i as U,p as Rt,u as Hr}from"./useEvent-D91BmmQi.js";import{Bi as Dr,Gi as Or,Hi as zr,Li as Br,Xi as Vr,Zi as Se,at as qt,b as Qr,qn as Gr,ut as Yr,__tla as Jr}from"./cells-Cf7bHHq3.js";import{t as Kr}from"./get-C-qh_et5.js";import{t as Xr}from"./debounce-OiXznToA.js";import{t as Zr}from"./_baseSet-CsW0tABf.js";import{g as p,v as S}from"./useEventListener-B_w3A283.js";import{t as en}from"./invariant-CkiqGLcK.js";import{E as tn}from"./utils-Z80SV4_d.js";import{T as rn,c as je,l as kt,n as nn}from"./config-BbOTTCYY.js";import{n as sn}from"./switch-CvweaCXq.js";import{c as an}from"./readonly-python-code-CW_G5e4E.js";import{St as ie,xt as Pt,__tla as on}from"./JsonOutput-DnGSkLeP.js";import{t as ln}from"./createReducer-C7kZ8zEe.js";import{r as dn}from"./strings-Djnbwmfl.js";import{t as $e}from"./requests-9-v2bhoi.js";import{c as Ft,o as It,__tla as un}from"./markdown-renderer-QvXG0CRk.js";import{t as cn}from"./DeferredRequestRegistry-C8EV1PoE.js";import{t as hn}from"./preload-helper-TXkS1QI3.js";import{t as Nt}from"./Deferred-D2igisxY.js";import{t as At}from"./uuid-ImXS-885.js";import{t as pn}from"./use-toast-BwJoaaDM.js";import{n as fn}from"./RenderHTML-BCvU9dYz.js";import{t as mn}from"./useRunCells-CSSF_mJ0.js";import{n as gn,t as yn}from"./blob-C3EfaMOb.js";import{n as wn,r as bn,t as vn}from"./share-CYpcX4N4.js";import{i as Lt,r as Sn,t as _n}from"./events-90X9nql5.js";let _e,He,De,Tt,Ut,Wt,jt,ae,oe,$t,Oe,Ht,Dt,Ot,ze,zt,Fe,Bt,Ie,Be,Vt,Qt,xn=Promise.all([(()=>{try{return Jr}catch{}})(),(()=>{try{return on}catch{}})(),(()=>{try{return un}catch{}})()]).then(async()=>{var vt,Re,$,H,Z,q,D,Yt,Jt,Kt,qe,ee,z,ke,Xt,St,te,de,ue,ce,he,B,re,V,Zt,Qe,ne,O,pe,fe,me,ge,F,C,Q,N,A,G,E,ye,Y,b,Ge,Ye,er,Je,tr,Ke,Xe,rr,_t,L,we,be,W,X,xt;function g(t,e,r){return t==null?t:Zr(t,e,r)}_e=g,Qt=Rt(null);var{valueAtom:y,useActions:_}=ln(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:At()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(r=>r.id!==e)}),clearBanners:t=>({...t,banners:[]})});Tt=()=>Hr(y),Vt=function(){return _()};let le,Ze;Be=class{constructor(){o(this,"subscriptions",new Map)}addSubscription(t,e){var r;this.subscriptions.has(t)||this.subscriptions.set(t,new Set),(r=this.subscriptions.get(t))==null||r.add(e)}removeSubscription(t,e){var r;(r=this.subscriptions.get(t))==null||r.delete(e)}notify(t,e){for(let r of this.subscriptions.get(t)??[])r(e)}},He=class Ve{constructor(e){o(this,"subscriptions",new Be);this.producer=e}static withProducerCallback(e){return new Ve(e)}static empty(){return new Ve}startProducer(){this.producer&&this.producer(e=>{this.subscriptions.notify("message",e)})}connect(){return new Promise(e=>setTimeout(e,0)).then(()=>{this.subscriptions.notify("open",new Event("open"))})}get readyState(){return WebSocket.OPEN}reconnect(e,r){this.close(),this.connect()}close(){this.subscriptions.notify("close",new Event("close"))}send(e){return this.subscriptions.notify("message",new MessageEvent("message",{data:e})),Promise.resolve()}addEventListener(e,r){this.subscriptions.addSubscription(e,r),e==="open"&&r(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,r){this.subscriptions.removeSubscription(e,r)}},le=1e10,Ze=1e3;function xe(t,e){let r=t.map(n=>`"${n}"`).join(", ");return Error(`This RPC instance cannot ${e} because the transport did not provide one or more of these methods: ${r}`)}function sr(t={}){let e={};function r(d){e=d}let n={};function s(d){var f;n.unregisterHandler&&n.unregisterHandler(),n=d,(f=n.registerHandler)==null||f.call(n,Wr)}let a;function l(d){if(typeof d=="function"){a=d;return}a=(f,x)=>{let v=d[f];if(v)return v(x);let M=d._;if(!M)throw Error(`The requested method has no handler: ${f}`);return M(f,x)}}let{maxRequestTime:c=Ze}=t;t.transport&&s(t.transport),t.requestHandler&&l(t.requestHandler),t._debugHooks&&r(t._debugHooks);let w=0;function R(){return w<=le?++w:w=0}let k=new Map,P=new Map;function j(d,...f){let x=f[0];return new Promise((v,M)=>{var se;if(!n.send)throw xe(["send"],"make requests");let T=R(),K={type:"request",id:T,method:d,params:x};k.set(T,{resolve:v,reject:M}),c!==1/0&&P.set(T,setTimeout(()=>{P.delete(T),M(Error("RPC request timed out."))},c)),(se=e.onSend)==null||se.call(e,K),n.send(K)})}let I=new Proxy(j,{get:(d,f,x)=>f in d?Reflect.get(d,f,x):v=>j(f,v)}),Pe=I;function ve(d,...f){var M;let x=f[0];if(!n.send)throw xe(["send"],"send messages");let v={type:"message",id:d,payload:x};(M=e.onSend)==null||M.call(e,v),n.send(v)}let Et=new Proxy(ve,{get:(d,f,x)=>f in d?Reflect.get(d,f,x):v=>ve(f,v)}),Mt=Et,J=new Map,Ue=new Set;function Tr(d,f){var x;if(!n.registerHandler)throw xe(["registerHandler"],"register message listeners");if(d==="*"){Ue.add(f);return}J.has(d)||J.set(d,new Set),(x=J.get(d))==null||x.add(f)}function Ur(d,f){var x,v;if(d==="*"){Ue.delete(f);return}(x=J.get(d))==null||x.delete(f),((v=J.get(d))==null?void 0:v.size)===0&&J.delete(d)}async function Wr(d){var f,x;if((f=e.onReceive)==null||f.call(e,d),!("type"in d))throw Error("Message does not contain a type.");if(d.type==="request"){if(!n.send||!a)throw xe(["send","requestHandler"],"handle requests");let{id:v,method:M,params:T}=d,K;try{K={type:"response",id:v,success:!0,payload:await a(M,T)}}catch(se){if(!(se instanceof Error))throw se;K={type:"response",id:v,success:!1,error:se.message}}(x=e.onSend)==null||x.call(e,K),n.send(K);return}if(d.type==="response"){let v=P.get(d.id);v!=null&&clearTimeout(v);let{resolve:M,reject:T}=k.get(d.id)??{};d.success?M==null||M(d.payload):T==null||T(Error(d.error));return}if(d.type==="message"){for(let M of Ue)M(d.id,d.payload);let v=J.get(d.id);if(!v)return;for(let M of v)M(d.payload);return}throw Error(`Unexpected RPC message type: ${d.type}`)}return{setTransport:s,setRequestHandler:l,request:I,requestProxy:Pe,send:Et,sendProxy:Mt,addMessageListener:Tr,removeMessageListener:Ur,proxy:{send:Mt,request:Pe},_setDebugHooks:r}}function ir(t){return sr(t)}var et="[transport-id]";function ar(t,e){let{transportId:r}=e;return r==null?t:{[et]:r,data:t}}function or(t,e){let{transportId:r,filter:n}=e,s=n==null?void 0:n();if(r!=null&&s!=null)throw Error("Cannot use both `transportId` and `filter` at the same time");let a=t;if(r){if(t[et]!==r)return[!0];a=t.data}return s===!1?[!0]:[!1,a]}function lr(t,e={}){let{transportId:r,filter:n,remotePort:s}=e,a=t,l=s??t,c;return{send(w){l.postMessage(ar(w,{transportId:r}))},registerHandler(w){c=R=>{let k=R.data,[P,j]=or(k,{transportId:r,filter:()=>n==null?void 0:n(R)});P||w(j)},a.addEventListener("message",c)},unregisterHandler(){c&&a.removeEventListener("message",c)}}}function dr(t,e){return lr(t,e)}function tt(t){return ir({transport:dr(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{p.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{p.debug("[rpc] Worker -> Parent",e)}}})}ae=Rt({kind:"loading",message:"Initializing..."});var rt=wn(),nt="marimo:file",st=new Br(null);const ur={saveFile(t){st.set(nt,t)},readFile(){return st.get(nt)}};var cr={saveFile(t){Se.setCodeForHash((0,rt.compressToEncodedURIComponent)(t))},readFile(){let t=Se.getCodeFromHash()||Se.getCodeFromSearchParam();return t?(0,rt.decompressFromEncodedURIComponent)(t):null}};const hr={saveFile(t){},readFile(){let t=document.querySelector("marimo-code");return t?decodeURIComponent(t.textContent||"").trim():null}};var pr={saveFile(t){},readFile(){if(window.location.hostname!=="marimo.app")return null;let t=new URL("export_demos/wasm-intro.py",document.baseURI);return fetch(t.toString()).then(e=>e.ok?e.text():null).catch(()=>null)}};const fr={saveFile(t){},readFile(){return U.get(Dr)??null}};var mr={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
1
+ var jr=Object.defineProperty;var Ct=g=>{throw TypeError(g)};var $r=(g,y,_)=>y in g?jr(g,y,{enumerable:!0,configurable:!0,writable:!0,value:_}):g[y]=_;var o=(g,y,_)=>$r(g,typeof y!="symbol"?y+"":y,_),We=(g,y,_)=>y.has(g)||Ct("Cannot "+_);var i=(g,y,_)=>(We(g,y,"read from private field"),_?_.call(g):y.get(g)),u=(g,y,_)=>y.has(g)?Ct("Cannot add the same private member more than once"):y instanceof WeakSet?y.add(g):y.set(g,_),h=(g,y,_,le)=>(We(g,y,"write to private field"),le?le.call(g,_):y.set(g,_),_),m=(g,y,_)=>(We(g,y,"access private method"),_);import{i as U,p as Rt,u as Hr}from"./useEvent-D91BmmQi.js";import{Bi as Dr,Gi as Or,Hi as zr,Li as Br,Xi as Vr,Zi as Se,at as qt,b as Qr,qn as Gr,ut as Yr,__tla as Jr}from"./cells-Cf7bHHq3.js";import{t as Kr}from"./get-C-qh_et5.js";import{t as Xr}from"./debounce-OiXznToA.js";import{t as Zr}from"./_baseSet-CsW0tABf.js";import{g as p,v as S}from"./useEventListener-B_w3A283.js";import{t as en}from"./invariant-CkiqGLcK.js";import{E as tn}from"./utils-Z80SV4_d.js";import{T as rn,c as je,l as kt,n as nn}from"./config-BbOTTCYY.js";import{n as sn}from"./switch-CvweaCXq.js";import{c as an}from"./readonly-python-code-CW_G5e4E.js";import{St as ie,xt as Pt,__tla as on}from"./JsonOutput-CkCD-FgM.js";import{t as ln}from"./createReducer-C7kZ8zEe.js";import{r as dn}from"./strings-Djnbwmfl.js";import{t as $e}from"./requests-9-v2bhoi.js";import{c as Ft,o as It,__tla as un}from"./markdown-renderer-QvXG0CRk.js";import{t as cn}from"./DeferredRequestRegistry-C8EV1PoE.js";import{t as hn}from"./preload-helper-TXkS1QI3.js";import{t as Nt}from"./Deferred-D2igisxY.js";import{t as At}from"./uuid-ImXS-885.js";import{t as pn}from"./use-toast-BwJoaaDM.js";import{n as fn}from"./RenderHTML-BCvU9dYz.js";import{t as mn}from"./useRunCells-CSSF_mJ0.js";import{n as gn,t as yn}from"./blob-C3EfaMOb.js";import{n as wn,r as bn,t as vn}from"./share-CYpcX4N4.js";import{i as Lt,r as Sn,t as _n}from"./events-90X9nql5.js";let _e,He,De,Tt,Ut,Wt,jt,ae,oe,$t,Oe,Ht,Dt,Ot,ze,zt,Fe,Bt,Ie,Be,Vt,Qt,xn=Promise.all([(()=>{try{return Jr}catch{}})(),(()=>{try{return on}catch{}})(),(()=>{try{return un}catch{}})()]).then(async()=>{var vt,Re,$,H,Z,q,D,Yt,Jt,Kt,qe,ee,z,ke,Xt,St,te,de,ue,ce,he,B,re,V,Zt,Qe,ne,O,pe,fe,me,ge,F,C,Q,N,A,G,E,ye,Y,b,Ge,Ye,er,Je,tr,Ke,Xe,rr,_t,L,we,be,W,X,xt;function g(t,e,r){return t==null?t:Zr(t,e,r)}_e=g,Qt=Rt(null);var{valueAtom:y,useActions:_}=ln(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:At()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(r=>r.id!==e)}),clearBanners:t=>({...t,banners:[]})});Tt=()=>Hr(y),Vt=function(){return _()};let le,Ze;Be=class{constructor(){o(this,"subscriptions",new Map)}addSubscription(t,e){var r;this.subscriptions.has(t)||this.subscriptions.set(t,new Set),(r=this.subscriptions.get(t))==null||r.add(e)}removeSubscription(t,e){var r;(r=this.subscriptions.get(t))==null||r.delete(e)}notify(t,e){for(let r of this.subscriptions.get(t)??[])r(e)}},He=class Ve{constructor(e){o(this,"subscriptions",new Be);this.producer=e}static withProducerCallback(e){return new Ve(e)}static empty(){return new Ve}startProducer(){this.producer&&this.producer(e=>{this.subscriptions.notify("message",e)})}connect(){return new Promise(e=>setTimeout(e,0)).then(()=>{this.subscriptions.notify("open",new Event("open"))})}get readyState(){return WebSocket.OPEN}reconnect(e,r){this.close(),this.connect()}close(){this.subscriptions.notify("close",new Event("close"))}send(e){return this.subscriptions.notify("message",new MessageEvent("message",{data:e})),Promise.resolve()}addEventListener(e,r){this.subscriptions.addSubscription(e,r),e==="open"&&r(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,r){this.subscriptions.removeSubscription(e,r)}},le=1e10,Ze=1e3;function xe(t,e){let r=t.map(n=>`"${n}"`).join(", ");return Error(`This RPC instance cannot ${e} because the transport did not provide one or more of these methods: ${r}`)}function sr(t={}){let e={};function r(d){e=d}let n={};function s(d){var f;n.unregisterHandler&&n.unregisterHandler(),n=d,(f=n.registerHandler)==null||f.call(n,Wr)}let a;function l(d){if(typeof d=="function"){a=d;return}a=(f,x)=>{let v=d[f];if(v)return v(x);let M=d._;if(!M)throw Error(`The requested method has no handler: ${f}`);return M(f,x)}}let{maxRequestTime:c=Ze}=t;t.transport&&s(t.transport),t.requestHandler&&l(t.requestHandler),t._debugHooks&&r(t._debugHooks);let w=0;function R(){return w<=le?++w:w=0}let k=new Map,P=new Map;function j(d,...f){let x=f[0];return new Promise((v,M)=>{var se;if(!n.send)throw xe(["send"],"make requests");let T=R(),K={type:"request",id:T,method:d,params:x};k.set(T,{resolve:v,reject:M}),c!==1/0&&P.set(T,setTimeout(()=>{P.delete(T),M(Error("RPC request timed out."))},c)),(se=e.onSend)==null||se.call(e,K),n.send(K)})}let I=new Proxy(j,{get:(d,f,x)=>f in d?Reflect.get(d,f,x):v=>j(f,v)}),Pe=I;function ve(d,...f){var M;let x=f[0];if(!n.send)throw xe(["send"],"send messages");let v={type:"message",id:d,payload:x};(M=e.onSend)==null||M.call(e,v),n.send(v)}let Et=new Proxy(ve,{get:(d,f,x)=>f in d?Reflect.get(d,f,x):v=>ve(f,v)}),Mt=Et,J=new Map,Ue=new Set;function Tr(d,f){var x;if(!n.registerHandler)throw xe(["registerHandler"],"register message listeners");if(d==="*"){Ue.add(f);return}J.has(d)||J.set(d,new Set),(x=J.get(d))==null||x.add(f)}function Ur(d,f){var x,v;if(d==="*"){Ue.delete(f);return}(x=J.get(d))==null||x.delete(f),((v=J.get(d))==null?void 0:v.size)===0&&J.delete(d)}async function Wr(d){var f,x;if((f=e.onReceive)==null||f.call(e,d),!("type"in d))throw Error("Message does not contain a type.");if(d.type==="request"){if(!n.send||!a)throw xe(["send","requestHandler"],"handle requests");let{id:v,method:M,params:T}=d,K;try{K={type:"response",id:v,success:!0,payload:await a(M,T)}}catch(se){if(!(se instanceof Error))throw se;K={type:"response",id:v,success:!1,error:se.message}}(x=e.onSend)==null||x.call(e,K),n.send(K);return}if(d.type==="response"){let v=P.get(d.id);v!=null&&clearTimeout(v);let{resolve:M,reject:T}=k.get(d.id)??{};d.success?M==null||M(d.payload):T==null||T(Error(d.error));return}if(d.type==="message"){for(let M of Ue)M(d.id,d.payload);let v=J.get(d.id);if(!v)return;for(let M of v)M(d.payload);return}throw Error(`Unexpected RPC message type: ${d.type}`)}return{setTransport:s,setRequestHandler:l,request:I,requestProxy:Pe,send:Et,sendProxy:Mt,addMessageListener:Tr,removeMessageListener:Ur,proxy:{send:Mt,request:Pe},_setDebugHooks:r}}function ir(t){return sr(t)}var et="[transport-id]";function ar(t,e){let{transportId:r}=e;return r==null?t:{[et]:r,data:t}}function or(t,e){let{transportId:r,filter:n}=e,s=n==null?void 0:n();if(r!=null&&s!=null)throw Error("Cannot use both `transportId` and `filter` at the same time");let a=t;if(r){if(t[et]!==r)return[!0];a=t.data}return s===!1?[!0]:[!1,a]}function lr(t,e={}){let{transportId:r,filter:n,remotePort:s}=e,a=t,l=s??t,c;return{send(w){l.postMessage(ar(w,{transportId:r}))},registerHandler(w){c=R=>{let k=R.data,[P,j]=or(k,{transportId:r,filter:()=>n==null?void 0:n(R)});P||w(j)},a.addEventListener("message",c)},unregisterHandler(){c&&a.removeEventListener("message",c)}}}function dr(t,e){return lr(t,e)}function tt(t){return ir({transport:dr(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{p.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{p.debug("[rpc] Worker -> Parent",e)}}})}ae=Rt({kind:"loading",message:"Initializing..."});var rt=wn(),nt="marimo:file",st=new Br(null);const ur={saveFile(t){st.set(nt,t)},readFile(){return st.get(nt)}};var cr={saveFile(t){Se.setCodeForHash((0,rt.compressToEncodedURIComponent)(t))},readFile(){let t=Se.getCodeFromHash()||Se.getCodeFromSearchParam();return t?(0,rt.decompressFromEncodedURIComponent)(t):null}};const hr={saveFile(t){},readFile(){let t=document.querySelector("marimo-code");return t?decodeURIComponent(t.textContent||"").trim():null}};var pr={saveFile(t){},readFile(){if(window.location.hostname!=="marimo.app")return null;let t=new URL("export_demos/wasm-intro.py",document.baseURI);return fetch(t.toString()).then(e=>e.ok?e.text():null).catch(()=>null)}};const fr={saveFile(t){},readFile(){return U.get(Dr)??null}};var mr={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
2
2
  `)}},it=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 Ee;oe=new it([fr,hr,cr]),Ee=new it([ur,pr,mr]),ze=class Gt{constructor(){o(this,"initialized",new Nt);o(this,"sendRename",async({filename:e})=>(e===null||(Se.setFilename(e),await this.rpc.proxy.request.bridge({functionName:"rename_file",payload:e})),null));o(this,"sendSave",async e=>{if(!this.saveRpc)return p.warn("Save RPC not initialized"),null;await this.saveRpc.saveNotebook(e);let r=await this.readCode();return r.contents&&(oe.saveFile(r.contents),Ee.saveFile(r.contents)),this.rpc.proxy.request.saveNotebook(e).catch(n=>{p.error(n)}),null});o(this,"sendCopy",async()=>{S()});o(this,"sendStdin",async e=>(await this.rpc.proxy.request.bridge({functionName:"put_input",payload:e.text}),null));o(this,"sendPdb",async()=>{S()});o(this,"sendSetBreakpoints",async()=>{S()});o(this,"sendRun",async e=>(await this.rpc.proxy.request.loadPackages(e.codes.join(`
3
3
  `)),await this.putControlRequest({type:"execute-cells",...e}),null));o(this,"sendRunScratchpad",async e=>(await this.rpc.proxy.request.loadPackages(e.code),await this.putControlRequest({type:"execute-scratchpad",...e}),null));o(this,"sendInterrupt",async()=>(this.interruptBuffer!==void 0&&(this.interruptBuffer[0]=2),null));o(this,"sendShutdown",async()=>(window.close(),null));o(this,"sendFormat",async e=>await this.rpc.proxy.request.bridge({functionName:"format",payload:e}));o(this,"sendDeleteCell",async e=>(await this.putControlRequest({type:"delete-cell",...e}),null));o(this,"sendInstallMissingPackages",async e=>(this.putControlRequest({type:"install-packages",...e}),null));o(this,"sendCodeCompletionRequest",async e=>(U.get(Qr)||await this.rpc.proxy.request.bridge({functionName:"code_complete",payload:e}),null));o(this,"saveUserConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_user_config",payload:e}),sn.post("/kernel/save_user_config",e,{baseUrl:"/"}).catch(r=>(p.error(r),null))));o(this,"saveAppConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_app_config",payload:e}),null));o(this,"saveCellConfig",async e=>(await this.putControlRequest({type:"update-cell-config",...e}),null));o(this,"sendRestart",async()=>{let e=await this.readCode();return e.contents&&(oe.saveFile(e.contents),Ee.saveFile(e.contents)),bn(),null});o(this,"readCode",async()=>this.saveRpc?{contents:await this.saveRpc.readNotebook()}:(p.warn("Save RPC not initialized"),{contents:""}));o(this,"readSnippets",async()=>await this.rpc.proxy.request.bridge({functionName:"read_snippets",payload:void 0}));o(this,"openFile",async({path:e})=>{let r=vn({code:null,baseUrl:window.location.origin});return window.open(r,"_blank"),null});o(this,"sendListFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"list_files",payload:e}));o(this,"sendSearchFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"search_files",payload:e}));o(this,"sendComponentValues",async e=>(await this.putControlRequest({type:"update-ui-element",...e,token:At()}),null));o(this,"sendInstantiate",async e=>null);o(this,"sendFunctionRequest",async e=>(await this.putControlRequest({type:"invoke-function",...e}),null));o(this,"sendCreateFileOrFolder",async e=>{let r=null;return e.file&&(r=(await gn(e.file)).split(",")[1]??""),await this.rpc.proxy.request.bridge({functionName:"create_file_or_directory",payload:{path:e.path,type:e.type,name:e.name,contents:r}})});o(this,"sendDeleteFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"delete_file_or_directory",payload:e}));o(this,"sendCopyFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"copy_file_or_directory",payload:e}));o(this,"sendRenameFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"move_file_or_directory",payload:e}));o(this,"sendUpdateFile",async e=>await this.rpc.proxy.request.bridge({functionName:"update_file",payload:e}));o(this,"sendFileDetails",async e=>await this.rpc.proxy.request.bridge({functionName:"file_details",payload:e}));o(this,"exportAsHTML",async e=>await this.rpc.proxy.request.bridge({functionName:"export_html",payload:e}));o(this,"exportAsMarkdown",async e=>await this.rpc.proxy.request.bridge({functionName:"export_markdown",payload:e}));o(this,"previewDatasetColumn",async e=>(await this.putControlRequest({type:"preview-dataset-column",...e}),null));o(this,"previewSQLTable",async e=>(await this.putControlRequest({type:"preview-sql-table",...e}),null));o(this,"previewSQLTableList",async e=>(await this.putControlRequest({type:"list-sql-tables",...e}),null));o(this,"previewSQLSchemaList",async e=>(await this.putControlRequest({type:"list-sql-schemas",...e}),null));o(this,"previewDataSourceConnection",async e=>(await this.putControlRequest({type:"list-data-source-connection",...e}),null));o(this,"validateSQL",async e=>(await this.putControlRequest({type:"validate-sql",...e}),null));o(this,"sendModelValue",async e=>(await this.putControlRequest({type:"model",...e}),null));o(this,"sendDocumentTransaction",()=>Promise.resolve(null));o(this,"addPackage",async e=>this.rpc.proxy.request.addPackage(e));o(this,"removePackage",async e=>this.rpc.proxy.request.removePackage(e));o(this,"getPackageList",async()=>await this.rpc.proxy.request.listPackages());o(this,"getDependencyTree",async()=>({tree:{dependencies:[],name:"",tags:[],version:null}}));o(this,"listSecretKeys",async e=>(await this.putControlRequest({type:"list-secret-keys",...e}),null));o(this,"getUsageStats",S);o(this,"getEnvironmentInfo",async()=>await this.rpc.proxy.request.bridge({functionName:"get_environment_info",payload:void 0}));o(this,"openTutorial",S);o(this,"getRecentFiles",S);o(this,"getWorkspaceFiles",S);o(this,"getRunningNotebooks",S);o(this,"shutdownSession",S);o(this,"exportAsIPYNB",S);o(this,"exportAsPDF",S);o(this,"autoExportAsHTML",S);o(this,"autoExportAsMarkdown",S);o(this,"autoExportAsIPYNB",S);o(this,"updateCellOutputs",S);o(this,"writeSecret",S);o(this,"invokeAiTool",S);o(this,"clearCache",S);o(this,"getCacheInfo",S);o(this,"listStorageEntries",S);o(this,"downloadStorage",S);rn()&&(this.rpc=tt(new Worker(new URL(""+new URL("worker-BQo2bijx.js",import.meta.url).href,""+import.meta.url),{type:"module",name:at()})),this.rpc.addMessageListener("ready",()=>{this.startSession()}),this.rpc.addMessageListener("initialized",()=>{this.saveRpc=this.getSaveWorker(),this.setInterruptBuffer(),U.set(ae,{kind:"ready"}),this.initialized.resolve()}),this.rpc.addMessageListener("initializingMessage",({message:e})=>{U.get(ae).kind==="loading"&&U.set(ae,{kind:"loading",message:e})}),this.rpc.addMessageListener("initializedError",({error:e})=>{if(this.initialized.status==="resolved"){p.error(e),pn({title:"Error initializing",description:e,variant:"danger"});return}U.set(ae,{kind:"error",message:e}),this.initialized.reject(Error(e))}),this.rpc.addMessageListener("kernelMessage",({message:e})=>{var r;(r=this.messageConsumer)==null||r.call(this,new MessageEvent("message",{data:e}))}))}static get INSTANCE(){let e="_marimo_private_PyodideBridge";return window[e]||(window[e]=new Gt),window[e]}getSaveWorker(){return qt()==="read"?(p.debug("Using partially disabled SaveWorker in read-mode"),{readFile:S,readNotebook:async()=>await oe.readFile()??"",saveNotebook:S}):tt(new Worker(new URL(""+new URL("save-worker-_Qc1hOeF.js",import.meta.url).href,""+import.meta.url),{type:"module",name:at()})).proxy.request}async startSession(){let e=await oe.readFile(),r=await Ee.readFile(),n=U.get(zr)??Se.getFilename(),s=U.get(tn),a={},l=new URLSearchParams(window.location.search);for(let c of l.keys()){let w=l.getAll(c);a[c]=w.length===1?w[0]:w}await this.rpc.proxy.request.startSession({queryParameters:a,code:e||r||"",filename:n,userConfig:{...s,runtime:{...s.runtime,auto_instantiate:qt()==="read"?!0:s.runtime.auto_instantiate}}})}setInterruptBuffer(){crossOriginIsolated?(this.interruptBuffer=new Uint8Array(new SharedArrayBuffer(1)),this.rpc.proxy.request.setInterruptBuffer(this.interruptBuffer)):p.warn("Not running in a secure context; interrupts are not available.")}attachMessageConsumer(e){this.messageConsumer=e,this.rpc.proxy.send.consumerReady({})}async putControlRequest(e){await this.rpc.proxy.request.bridge({functionName:"put_control_request",payload:e})}},Ht=function(){return He.withProducerCallback(t=>{ze.INSTANCE.attachMessageConsumer(t)})};function at(){let t=typeof window<"u"&&window.__MARIMO_HAS_WASM_CONTROLLER__===!0;return an()+(t?"::controller":"")}Wt=function(t=je()){let e=window.fetch;return window.fetch=async(r,n)=>{let s=r instanceof Request?r.url:r.toString();if(s.startsWith("data:"))return e(r,n);try{let a=Me(s,t);if(a){let l=await(await e(a)).arrayBuffer();return new Response(l,{headers:{"Content-Type":gr(s)}})}return e(r,n)}catch(a){return p.error("Error parsing URL",a),e(r,n)}},()=>{window.fetch=e}};function gr(t){return t.endsWith(".csv")?"text/csv":t.endsWith(".json")?"application/json":t.endsWith(".txt")?"text/plain":"application/octet-stream"}jt=function(t,e=je()){let r=t.http.bind(t),n=t.load.bind(t);return t.http=async s=>{let a=Me(s,e);if(a)return await window.fetch(a).then(l=>l.text());try{return await r(s)}catch(l){if(s.startsWith("data:"))return await window.fetch(s).then(c=>c.text());throw l}},t.load=async s=>{let a=Me(s,e);if(a)return await window.fetch(a).then(l=>l.text());try{return await n(s)}catch(l){if(s.startsWith("data:"))return await window.fetch(s).then(c=>c.text());throw l}},()=>{t.http=r,t.load=n}};function ot(t){return t.startsWith(".")?t.slice(1):t}function yr(t,e=je()){let r=Me(t,e);if(!r)return t;let n=yn(r);return URL.createObjectURL(n)}function Me(t,e){let r=document.baseURI;r.startsWith("blob:")&&(r=r.replace("blob:",""));let n=new URL(t,r).pathname,s=lt(t),a=lt(n);return e[t]||e[ot(t)]||e[n]||e[ot(n)]||s&&e[s]||a&&e[a]}function lt(t){let e=t.indexOf("/@file/");return e===-1?null:t.slice(e)}function Ce(t,e){return{get(r){return t.get(r)},set(r,n){t.set(r,n)},save_changes(){t.save_changes()},send:t.send.bind(t),on(r,n){e.aborted||(t.on(r,n),e.addEventListener("abort",()=>t.off(r,n),{once:!0}))},off(r,n){t.off(r??null,n??null)},widget_manager:{async get_model(r){return Ce(await t.widget_manager.get_model(r),e)}}}}Ie=function(t){return typeof t=="string"&&t.length>0};function dt(t){if(typeof t=="string"&&t.startsWith("anywidget:")){let e=t.slice(10);if(Ie(e))return e}throw Error(`[anywidget] Invalid widget reference: ${JSON.stringify(t)}`)}function wr(t,e){return{async getModel(r){let n=dt(r);return Ce(await t.getModel(n),e)},async getWidget(r){let n=dt(r),s=await t.getWidget(n);return{exports:s.exports,async render({el:a,signal:l}){await s.render({el:a,signal:l??e})}}}}}var ut=Symbol("marimo");function Ne(t){return t[ut]}var ct=(vt=ut,ee=class{constructor(e,r,n){u(this,D);u(this,Re,"change");u(this,$);u(this,H);u(this,Z);u(this,q,{});o(this,vt,{updateAndEmitDiffs:e=>m(this,D,Jt).call(this,e),emitCustomMessage:(e,r)=>m(this,D,Kt).call(this,e,r)});o(this,"widget_manager",{async get_model(e){let r=await ee._modelManager.getModel(e);if(!r)throw Error(`Model not found with id: ${e}. This is likely because the model was not registered.`);return r}});u(this,qe,Xr(()=>{let e=i(this,q)[i(this,Re)];if(e)for(let r of[...e])try{r()}catch(n){p.error("Error emitting event",n)}},0));h(this,H,e),h(this,Z,r),h(this,$,new Map),n&&n.addEventListener("abort",()=>{p.debug("[Model] Signal aborted, clearing all listeners"),h(this,q,{})})}off(e,r){var n;if(!e){h(this,q,{});return}if(!r){i(this,q)[e]=new Set;return}(n=i(this,q)[e])==null||n.delete(r)}send(e,r,n){let s=(n??[]).map(a=>a instanceof ArrayBuffer?new DataView(a):new DataView(a.buffer,a.byteOffset,a.byteLength));return i(this,Z).sendCustomMessage(e,s).then(()=>r==null?void 0:r())}get(e){return i(this,H)[e]}set(e,r){h(this,H,{...i(this,H),[e]:r}),i(this,$).set(e,r),m(this,D,Yt).call(this,`change:${e}`,r),i(this,qe).call(this)}save_changes(){if(i(this,$).size===0)return;let e=Object.fromEntries(i(this,$).entries());i(this,$).clear(),i(this,Z).sendUpdate(e)}on(e,r,n){let s=n==null?void 0:n.signal;s!=null&&s.aborted||(i(this,q)[e]||(i(this,q)[e]=new Set),i(this,q)[e].add(r),s==null||s.addEventListener("abort",()=>this.off(e,r),{once:!0}))}},Re=new WeakMap,$=new WeakMap,H=new WeakMap,Z=new WeakMap,q=new WeakMap,D=new WeakSet,Yt=function(e,r){let n=i(this,q)[e];if(n)for(let s of[...n])try{s(r)}catch(a){p.error("Error emitting event",a)}},Jt=function(e){e!=null&&Object.keys(e).forEach(r=>{let n=r;i(this,H)[n]!==e[n]&&this.set(n,e[n])})},Kt=function(e,r=[]){let n=i(this,q)["msg:custom"];if(n)for(let s of[...n])try{s(e.content,r)}catch(a){p.error("Error emitting event",a)}},qe=new WeakMap,ee);function ht(t){return typeof t=="function"}function pt(t){return typeof t=="function"}function br(t){return ie(t)&&(ht(t.render)||pt(t.initialize))}function vr(t){return typeof t=="function"||br(t)}function Sr(t){return ie(t)&&vr(t.default)}var ft=new Set,mt=new WeakMap;function _r(t,e){if(Sr(t))return t.default;if(!ie(t)||t.default!==void 0)return null;let r=ht(t.render)?t.render:void 0,n=pt(t.initialize)?t.initialize:void 0;if(r===void 0&&n===void 0)return null;let s=mt.get(t);if(s)return s;ft.has(e)||(ft.add(e),p.warn(`Anywidget module at ${e} uses deprecated top-level named exports (\`render\`/\`initialize\`). Per the AFM spec, use a default export instead: \`export default { render }\`. See https://anywidget.dev/en/afm/`));let a={render:r,initialize:n};return mt.set(t,a),a}function xr(t,e){let r="https://anywidget.dev/en/afm/",n=ie(t)&&Pt(t,"render"),s=ie(t)&&Pt(t,"initialize");if(ie(t)&&t.default!==void 0)return Error(`Anywidget module at ${e} has an invalid default export. Expected a factory function or an object with \`render\` or \`initialize\`. See ${r}`);if(n||s){let a=[n?"`render`":null,s?"`initialize`":null].filter(Boolean).join(" and "),l=[n?"render":null,s?"initialize":null].filter(R=>R!==null),c=`export default { ${l.join(", ")} }`,w=l.length===1?`export function ${l[0]}`:"named export function ...";return Error(`Anywidget module at ${e} uses named exports (${a}). Per the AFM spec, use a default export instead: \`${c}\` (not \`${w}\`). See ${r}`)}return Error(`Anywidget module at ${e} is missing a default export. Per the AFM spec, use \`export default { render }\` or \`export default async () => ({ render })\`. See ${r}`)}Oe=function(t){return typeof t!="string"||t.length===0?!1:!!(/^(\.?\/)?@file\/[^?#]+$/.test(t)||Mr(t))};function Er(){return U.get(mn)||fn()}function Mr(t){return t.startsWith("data:text/javascript;base64,")||t.startsWith("data:application/javascript;base64,")||t.startsWith("data:text/css;base64,")?Er():!1}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 p.warn(t),Error(t)}};function Cr(t){if(typeof AbortSignal.any=="function")return AbortSignal.any(t);let e=new AbortController;for(let r of t){if(r.aborted)return e.abort(r.reason),e.signal;r.addEventListener("abort",()=>e.abort(r.reason),{once:!0})}return e.signal}var Rr=(St=class{constructor(){u(this,ke);u(this,z,new Map)}getModule(t){let{jsUrl:e,jsHash:r,kernelAuthored:n=!1}=t,s=i(this,z).get(r);if(s)return s;let a=m(this,ke,Xt).call(this,e,{kernelAuthored:n}).catch(l=>{throw i(this,z).delete(r),l});return i(this,z).set(r,a),a}invalidate(t){i(this,z).delete(t)}},z=new WeakMap,ke=new WeakSet,Xt=async function(t,e={}){if(!(Oe(t)||e.kernelAuthored===!0&&/^(https?:|data:)/.test(t)))throw Error(`Refusing to load anywidget module from untrusted URL: ${String(t)}`);let r=nn(t).toString();return kt()&&(r=yr(r)),hn(()=>import(r).then(async n=>(await n.__tla,n)),[],import.meta.url)},St);function Ae(t){return typeof t=="function"}async function yt(t,e){try{await t()}catch(r){p.warn(`[WidgetBinding] ${e} cleanup failed`,r)}}var qr=(ne=class{constructor(e){u(this,V);u(this,te);u(this,de);u(this,ue);u(this,ce);u(this,he);u(this,B,new Set);u(this,re,new Set);h(this,de,e.widget),h(this,ue,e.model),h(this,ce,e.exports),h(this,te,e.controller),h(this,he,e.createHost)}static async create({widgetDef:e,model:r,createHost:n,controller:s=new AbortController}){var j;let a=s.signal,l=typeof e=="function"?await e():e,c=Promise.resolve((j=l.initialize)==null?void 0:j.call(l,{model:Ce(r,a),experimental:gt,signal:a}));c.then(async I=>{a.aborted&&Ae(I)&&await yt(I,"late initialize")}).catch(()=>{});let w=await Promise.race([c,new Promise((I,Pe)=>{let ve=()=>Pe(Error("[anywidget] binding destroyed"));if(a.aborted){ve();return}a.addEventListener("abort",ve,{once:!0})})]);if(a.aborted)throw Error("[anywidget] binding destroyed");let R,k;Ae(w)?(k=w,R=void 0):R=typeof w=="object"&&w?w:void 0;let P=new ne({widget:l,model:r,exports:R,controller:s,createHost:n});return k&&a.addEventListener("abort",()=>{var I;m(I=P,V,Qe).call(I,k,"initialize")},{once:!0}),P}get exports(){return i(this,ce)}async createView(e,r){let n=m(this,V,Zt).call(this,e,r);i(this,re).add(n);try{await n}finally{i(this,re).delete(n)}}async destroy(){for(p.debug("[WidgetBinding] Destroying binding generation"),i(this,te).abort(),await Promise.allSettled(i(this,re));i(this,B).size>0;)await Promise.all(i(this,B))}},te=new WeakMap,de=new WeakMap,ue=new WeakMap,ce=new WeakMap,he=new WeakMap,B=new WeakMap,re=new WeakMap,V=new WeakSet,Zt=async function(e,r){let n=i(this,de);if(!n.render)return;let s=Cr([r.signal,i(this,te).signal]);if(s.aborted)return;e.el.innerHTML="";let a=i(this,he).call(this,s),l=await n.render({model:Ce(i(this,ue),s),el:e.el,experimental:gt,signal:s,host:a});if(Ae(l)){let c=()=>{let w=r.signal.aborted?"view unmount":"binding destroyed";return p.debug(`[WidgetBinding] Render cleanup triggered (reason: ${w})`),m(this,V,Qe).call(this,l,"render")};if(s.aborted){await c();return}s.addEventListener("abort",()=>{c()},{once:!0})}},Qe=function(e,r){let n=yt(e,r);return i(this,B).add(n),n.finally(()=>i(this,B).delete(n)),n},ne);const wt=new Rr;var kr=(_t=class{constructor(t,e){u(this,b);u(this,O);u(this,pe);u(this,fe);u(this,me);u(this,ge);u(this,F,new AbortController);u(this,C,new Nt);u(this,Q,new Set);u(this,N,new Map);u(this,A);u(this,G);u(this,E);u(this,ye,Promise.resolve());u(this,Y,"");h(this,O,t),h(this,pe,e.timeout),h(this,fe,e.isEditMode),h(this,me,e.createHost),h(this,ge,e.onModelTimeout)}getModel(){return i(this,C).status==="pending"&&!i(this,A)&&h(this,A,setTimeout(()=>{i(this,C).status==="pending"&&(h(this,A,void 0),i(this,C).reject(Error(`Model not found for key: ${i(this,O)}`)),i(this,ge).call(this))},i(this,pe))),i(this,C).promise}getModelSync(){return i(this,C).status==="resolved"?i(this,C).value:void 0}createModel(t){i(this,C).status==="pending"&&m(this,b,Ge).call(this,t(i(this,F).signal))}setModel(t){i(this,C).status==="pending"&&m(this,b,Ge).call(this,t)}setSpec(t){if(!i(this,G)){h(this,G,t);return}i(this,fe).call(this)&&(h(this,G,t),i(this,E)&&i(this,E).hash!==t.hash&&m(this,b,tr).call(this,t))}async getWidget(){return{exports:(await m(this,b,Ye).call(this)).exports,render:async({el:t,signal:e})=>{await this.createView({el:t,signal:e??i(this,F).signal})}}}async createView(t){if(t.signal.aborted||i(this,F).signal.aborted)return;let e={el:t.el,signal:t.signal};i(this,Q).add(e),m(this,b,rr).call(this,e),t.signal.addEventListener("abort",()=>i(this,Q).delete(e),{once:!0}),await m(this,b,Xe).call(this,e)}dispose(){if(!i(this,F).signal.aborted){p.debug(`[WidgetRuntime] Disposing model=${i(this,O)}`),i(this,A)&&h(this,A,(clearTimeout(i(this,A)),void 0)),i(this,C).status==="pending"&&(i(this,C).promise.catch(()=>{}),i(this,C).reject(Error("[anywidget] widget runtime destroyed"))),i(this,E)&&m(this,b,Ke).call(this,i(this,E)),i(this,F).abort(),i(this,Q).clear();for(let t of i(this,N).values())t.dispose();i(this,N).clear()}}},O=new WeakMap,pe=new WeakMap,fe=new WeakMap,me=new WeakMap,ge=new WeakMap,F=new WeakMap,C=new WeakMap,Q=new WeakMap,N=new WeakMap,A=new WeakMap,G=new WeakMap,E=new WeakMap,ye=new WeakMap,Y=new WeakMap,b=new WeakSet,Ge=function(t){i(this,A)&&h(this,A,(clearTimeout(i(this,A)),void 0)),i(this,C).resolve(t);let e=t.get("_css");h(this,Y,typeof e=="string"?e:""),t.on("change:_css",r=>{h(this,Y,typeof r=="string"?r:"");for(let n of i(this,N).values())n.update(i(this,Y))},{signal:i(this,F).signal})},Ye=async function(){for(;!i(this,F).signal.aborted;){let t=await this.getModel(),e=i(this,E);if(!e){let r=i(this,G);if(!r)throw Error(`[anywidget] No ESM spec for model ${i(this,O)}: nothing ever provided this widget's code`);e=m(this,b,Je).call(this,r,t)}try{let r=await e.promise;if(e===i(this,E))return r}catch(r){if(!i(this,E)||e===i(this,E))throw r}}throw Error("[anywidget] widget runtime destroyed")},er=async function(t){let{spec:e,model:r,controller:n}=t,s=await wt.getModule({jsUrl:e.url,jsHash:e.hash,kernelAuthored:!0}),a=_r(s,e.url);if(!a)throw wt.invalidate(e.hash),xr(s,e.url);return qr.create({widgetDef:a,model:r,createHost:i(this,me),controller:n})},Je=function(t,e){let r=new AbortController,n={hash:t.hash,controller:r,promise:m(this,b,er).call(this,{spec:t,model:e,controller:r})};return n.promise.catch(()=>{i(this,E)===n&&h(this,E,void 0)}),h(this,E,n),n},tr=function(t){let e=i(this,E);if(!e)return;p.debug(`[WidgetRuntime] Hot-swapping generation for model=${i(this,O)}`);let r=m(this,b,Ke).call(this,e),n=this.getModelSync();if(!n)return;let s=m(this,b,Je).call(this,t,n);for(let a of i(this,Q))a.generation=void 0,r.then(()=>m(this,b,Xe).call(this,a,s)).catch(l=>{p.error("[WidgetRuntime] Error replacing widget view",l)})},Ke=function(t){t.controller.abort();let e=i(this,ye).then(async()=>{try{await(await t.promise).destroy()}catch{}});return h(this,ye,e),e},Xe=async function(t,e){if(t.signal.aborted||i(this,F).signal.aborted)return;let r=e??i(this,E),n=r?await r.promise:await m(this,b,Ye).call(this),s=i(this,E);if(!(!s||s!==(r??s))&&t.generation!==s){t.generation=s;try{await n.createView({el:t.el},{signal:t.signal})}catch(a){if(s!==i(this,E)){t.generation=void 0;return}throw a}}},rr=function(t){let e=t.el.getRootNode();if(!Le(e)&&!Pr(e))return;let r=i(this,N).get(e);r||(r=Fr(e,i(this,Y)),i(this,N).set(e,r)),r.references+=1;let n=!1;t.signal.addEventListener("abort",()=>{if(n)return;n=!0;let s=i(this,N).get(e);s&&(--s.references,s.references===0&&(s.dispose(),i(this,N).delete(e)))},{once:!0})},_t);function Le(t){return t.nodeType===Node.DOCUMENT_NODE}function Pr(t){return t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&"host"in t}function Fr(t,e){let r=Le(t)?t:t.ownerDocument??document,n=r.defaultView??window;if("adoptedStyleSheets"in t&&n.CSSStyleSheet!==void 0&&typeof n.CSSStyleSheet.prototype.replaceSync=="function")try{let a=new n.CSSStyleSheet;return a.replaceSync(e),t.adoptedStyleSheets=[...t.adoptedStyleSheets,a],{references:0,update(l){a.replaceSync(l)},dispose(){t.adoptedStyleSheets=t.adoptedStyleSheets.filter(l=>l!==a)}}}catch{}let s=r.createElement("style");return s.textContent=e,Le(t)?r.head.append(s):t.append(s),{references:0,update(a){s.textContent=a},dispose(){s.remove()}}}function Te(t,e=[]){let r=[];if(t instanceof DataView)r.push(e);else if(Array.isArray(t))for(let[n,s]of t.entries())r.push(...Te(s,[...e,n]));else if(typeof t=="object"&&t)for(let[n,s]of Object.entries(t))r.push(...Te(s,[...e,n]));return r}function Ir(t){let e=Te(t);if(e.length===0)return{state:t,buffers:[],bufferPaths:[]};let r=structuredClone(t),n=[],s=[];for(let a of e){let l=Kr(t,a);if(l instanceof DataView){let c=Ft(l);n.push(c),s.push(a),_e(r,a,c)}}return{state:r,buffers:n,bufferPaths:s}}function bt(t){let{state:e,bufferPaths:r,buffers:n}=t;if(!r||r.length===0)return e;n&&en(n.length===r.length,"Buffers and buffer paths not the same length");let s=e;for(let[a,l]of r.entries()){let c=n==null?void 0:n[a];if(c==null){p.warn("[anywidget] Could not find buffer at path",l);continue}typeof c=="string"?_e(s,l,It(c)):_e(s,l,c)}return s}function Nr(){let t=U.get(Yr).mode;return t==="edit"||t==="present"}Fe=new(xt=class{constructor(t=1e4,e=Nr){u(this,W);u(this,L,new Map);u(this,we);u(this,be);h(this,we,t),h(this,be,e)}getModel(t){return m(this,W,X).call(this,t).getModel()}getModelSync(t){var e;return(e=i(this,L).get(t))==null?void 0:e.getModelSync()}createModel(t,e){m(this,W,X).call(this,t).createModel(e)}setModel(t,e){m(this,W,X).call(this,t).setModel(e)}setSpec(t,e){m(this,W,X).call(this,t).setSpec(e)}getWidget(t){return m(this,W,X).call(this,t).getWidget()}createView(t){return m(this,W,X).call(this,t.modelId).createView(t)}delete(t){let e=i(this,L).get(t);e&&(e.dispose(),i(this,L).delete(t))}},L=new WeakMap,we=new WeakMap,be=new WeakMap,W=new WeakSet,X=function(t){let e=i(this,L).get(t);if(!e){let r=new kr(t,{timeout:i(this,we),isEditMode:i(this,be),createHost:n=>wr(this,n),onModelTimeout:()=>{i(this,L).get(t)===r&&(r.dispose(),i(this,L).delete(t))}});e=r,i(this,L).set(t,e)}return e},xt),ct._modelManager=Fe,Ut=async function(t,e){let r=e.model_id;if(!Ie(r))throw Error(`[anywidget] Invalid model id: ${String(r)}`);let n=e.message,s=("buffers"in n?n.buffers:[]).map(It);switch(n.method){case"open":{let{state:a,buffer_paths:l=[]}=n;n.esm_spec&&t.setSpec(r,n.esm_spec);let c=bt({state:a,bufferPaths:l,buffers:s}),w=t.getModelSync(r);if(w){Ne(w).updateAndEmitDiffs(c);return}t.createModel(r,R=>new ct(c,kt()?{sendUpdate:async()=>{},sendCustomMessage:async()=>{}}:{async sendUpdate(k){if(R.aborted){p.debug(`[Model] sendUpdate suppressed for model=${r} (signal aborted)`);return}let{state:P,buffers:j,bufferPaths:I}=Ir(k);await $e().sendModelValue({modelId:r,message:{method:"update",state:P,bufferPaths:I},buffers:j})},async sendCustomMessage(k,P){if(R.aborted){p.debug(`[Model] sendCustomMessage suppressed for model=${r} (signal aborted)`);return}await $e().sendModelValue({modelId:r,message:{method:"custom",content:k},buffers:P.map(Ft)})}},R));return}case"custom":Ne(await t.getModel(r)).emitCustomMessage({method:"custom",content:n.content},s);return;case"close":t.delete(r);return;case"update":{let{state:a,buffer_paths:l=[]}=n;n.esm_spec&&t.setSpec(r,n.esm_spec);let c=bt({state:a,bufferPaths:l,buffers:s});Ne(await t.getModel(r)).updateAndEmitDiffs(c);return}default:dn(n)}},Gr(Fe,"WIDGET_REGISTRY");function Ar(t){return typeof t!="object"||!t?!1:"type"in t&&t.type==="marimo-ui-value-update"}De=class nr{static get INSTANCE(){let e="_marimo_private_UIElementRegistry";return window[e]||(window[e]=new nr),window[e]}constructor(){this.entries=new Map}has(e){return this.entries.has(e)}set(e,r){this.entries.has(e)&&p.debug("UIElementRegistry overwriting entry for objectId.",e),this.entries.set(e,{objectId:e,value:r,elements:new Set})}registerInstance(e,r){let n=this.entries.get(e);n===void 0?this.entries.set(e,{objectId:e,value:Vr(r,this),elements:new Set([r])}):n.elements.add(r)}removeInstance(e,r){let n=this.entries.get(e);n!=null&&n.elements.has(r)&&n.elements.delete(r)}removeElementsByCell(e){[...this.entries.keys()].filter(r=>r.startsWith(`${e}-`)).forEach(r=>{this.entries.delete(r)})}lookupValue(e){let r=this.entries.get(e);return r===void 0?void 0:r.value}broadcastMessage(e,r,n){let s=this.entries.get(e);if(s===void 0){p.warn("UIElementRegistry missing entry",e);return}if(Ar(r)){s.value=r.value,s.elements.forEach(a=>{a.dispatchEvent(Lt.create({bubbles:!1,composed:!0,detail:{value:r.value,element:a}}))});return}s.elements.forEach(a=>{a.dispatchEvent(_n.create({bubbles:!1,composed:!0,detail:{objectId:e,message:r,buffers:n}}))})}broadcastValueUpdate(e,r,n){let s=this.entries.get(r);s===void 0?p.warn("UIElementRegistry missing entry",r):(s.value=n,s.elements.forEach(a=>{a!==e&&a.dispatchEvent(Lt.create({bubbles:!1,composed:!0,detail:{value:n,element:a}}))}),document.dispatchEvent(Sn.create({bubbles:!0,composed:!0,detail:{objectId:r}})))}},Ot=De.INSTANCE,$t=new cn("function-call-result",async(t,e)=>{await $e().sendFunctionRequest({functionCallId:t,...e})}),Bt="68px";var Lr="288px";Dt=t=>t?/^\d+$/.test(t)?`${t}px`:t:Lr,zt=Or({isOpen:!0},(t,e)=>{if(!e)return t;switch(e.type){case"toggle":return{...t,isOpen:e.isOpen??t.isOpen};case"setWidth":return{...t,width:e.width};default:return t}})});export{_e as S,He as _,xn as __tla,De as a,Tt as b,Ut as c,Wt as d,jt as f,ae as g,oe as h,$t as i,Oe as l,Ht as m,Dt as n,Ot as o,ze as p,zt as r,Fe as s,Bt as t,Ie as u,Be as v,Vt as x,Qt as y};
@@ -1,4 +1,4 @@
1
- import{s as _e}from"./chunk-LvLJmgfZ.js";import{d as R,i as St,l as At,p as _t,u as N}from"./useEvent-D91BmmQi.js";import{t as Dt}from"./react-Bj1aDYRI.js";import{An as Et,Cr as It,E as De,Fn as Pt,Hi as Lt,Jt as Tt,Kn as Ot,Li as Ht,Ln as Rt,Lt as Ee,Nn as $t,Nr as Bt,Or as Ft,Pn as qt,T as Ut,Tr as Yt,ct as Kt,ea as ke,g as Vt,m as Ie,si as Gt,st as Jt,t as Xt,ut as Pe,wr as Le,y as Qt}from"./cells-Cf7bHHq3.js";import{t as z}from"./compiler-runtime-B3qBwwSJ.js";import{n as Zt,r as ea,x as ta}from"./ai-model-dropdown-DXgLphFa.js";import{g as $,n as aa}from"./useEventListener-B_w3A283.js";import{t as Te}from"./objects-BlG0ZrO0.js";import{C as na,r as oa}from"./utils-Z80SV4_d.js";import{n as C,t as Oe}from"./constants-CDyU_g2F.js";import{T as ee,v as He,w as Re}from"./config-BbOTTCYY.js";import{c as sa}from"./readonly-python-code-CW_G5e4E.js";import{t as ra}from"./cn-DYvqRARy.js";import{t as la}from"./jsx-runtime-Blw4afVn.js";import{o as ia}from"./alert-dialog-BXegNC0I.js";import{a as da,c as ca,i as ha,n as ma,r as ua,s as pa,t as fa}from"./select-B5TFNjmU.js";import{It as xa}from"./JsonOutput-DnGSkLeP.js";import{c as $e,d as we,n as ba,o as ya,r as ge,t as ka}from"./download-BomYt3nl.js";import{t as wa}from"./tooltip-CFX4fYHU.js";import{r as ga,t as P}from"./button-eIihcbUw.js";import{i as ja,t as je}from"./strings-Djnbwmfl.js";import{r as L}from"./requests-9-v2bhoi.js";import{t as k}from"./createLucideIcon-w-Qo9n0R.js";import{F as va,I as Ca,L as Na,R as Be,a as Fe,d as za,i as qe,u as Ue}from"./layout-BOwE7yok.js";import{t as Ye}from"./check-rzLRd0j9.js";import{r as Ma}from"./useCellActionButton-CRfIEVB5.js";import{t as Wa}from"./code-B2aKtXoe.js";import{t as Sa}from"./copy-3iHFdt22.js";import{t as Ke}from"./eye-off-BOZA7gbn.js";import{t as Ve}from"./external-link-BOlXZUla.js";import{t as te}from"./file-CJH9JNGH.js";import{u as Aa}from"./form-CgWNb44_.js";import{n as _a,r as Da,t as Ea}from"./youtube-OwaksuQt.js";import{i as Ia,n as Ge}from"./add-connection-dialog-CEp3SJR2.js";import{t as Pa}from"./house-DS0r7dNZ.js";import{t as La}from"./image-5XI2VU-q.js";import{t as Ta}from"./link-CHdiBDr5.js";import{r as Oa}from"./input-CqrUjynb.js";import{t as Ha}from"./settings-D_PiwXwo.js";import{t as Ra}from"./sparkles-DUCpRFlS.js";import{y as $a}from"./textarea-CpFfEUet.js";import{t as Ba}from"./square-DFICx2Qv.js";import{t as Je}from"./triangle-alert-BL4YVsPy.js";import{t as W}from"./use-toast-BwJoaaDM.js";import{n as Xe,t as Fa}from"./paths-BKO-pHK6.js";import{o as qa}from"./session-CEFnN9Cq.js";import{n as ae}from"./copy-BtTOqPTS.js";import{t as Qe}from"./copy-icon-C2pG0ZNK.js";import{r as Ua}from"./useRunCells-CSSF_mJ0.js";import{a as Ze,c as et,i as Ya,n as tt,r as at}from"./dialog-D1DEsRZ2.js";import{n as ne}from"./ImperativeModal-BIavOiUv.js";import{r as Ka,t as nt}from"./share-CYpcX4N4.js";import{a as Va}from"./cell-link-DqBkyAFe.js";import{n as ot}from"./useAsyncData-Bg5iAViP.js";import{a as Ga}from"./renderShortcut-BZLr8D7H.js";import{t as Ja}from"./icons-CIPE8AIY.js";import{i as Xa,n as st}from"./error-entries-Birw-8VX.js";import{t as Qa}from"./pair-with-agent-modal-CKOYwOYw.js";import{t as Za}from"./github-_JH-0hIO.js";import{n as rt}from"./marimo-icons-C_nFooxr.js";import{t as en}from"./links-CToBjIIj.js";import{i as tn,n as lt,t as ve}from"./skeleton-B_4CZVEm.js";import{t as it}from"./types-Da7lA5YC.js";var an=k("circle-chevron-down",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 10-4 4-4-4",key:"894hmk"}]]),nn=k("circle-chevron-right",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m10 8 4 4-4 4",key:"1wy4r4"}]]),dt=k("clipboard-copy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]),ct=k("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]),ht=k("diamond-plus",[["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z",key:"1ey20j"}],["path",{d:"M8 12h8",key:"1wcyev"}]]),on=k("fast-forward",[["path",{d:"M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z",key:"b19h5q"}],["path",{d:"M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z",key:"h7h5ge"}]]),sn=k("files",[["path",{d:"M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"14sh0y"}],["path",{d:"M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",key:"1970lx"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]]),rn=k("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]),mt=k("message-circle-question-mark",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),ln=k("notebook",[["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["path",{d:"M16 2v20",key:"rotuqe"}]]),dn=k("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]),ut=k("presentation",[["path",{d:"M2 3h20",key:"91anmk"}],["path",{d:"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3",key:"2k9sn8"}],["path",{d:"m7 21 5-5 5 5",key:"bip4we"}]]),cn=k("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),hn=k("square-power",[["path",{d:"M12 7v4",key:"xawao1"}],["path",{d:"M7.998 9.003a5 5 0 1 0 8-.005",key:"1pek45"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]]),pt=k("undo-2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]),mn=z(),T=_e(Dt(),1);function Ce(e,t){let n=(0,mn.c)(11),o;n[0]===t?o=n[1]:(o=new Ht(t),n[0]=t,n[1]=o);let s=o,l;n[2]!==e||n[3]!==s?(l=()=>s.get(e),n[2]=e,n[3]=s,n[4]=l):l=n[4];let[r,d]=(0,T.useState)(l),i;n[5]!==e||n[6]!==s?(i=x=>{d(x),s.set(e,x)},n[5]=e,n[6]=s,n[7]=i):i=n[7];let c=i,h;return n[8]!==c||n[9]!==r?(h=[r,c],n[8]=c,n[9]=r,n[10]=h):h=n[10],h}function un(e,t){return{...e,Binaries:{...e.Binaries,Browser:t}}}function pn(e,t,n,o){return{marimo:e,Locale:n||void 0,Binaries:{Browser:t},"Environment Collection Error":o}}function Ne(e,t){let n=Math.max(2,...Array.from(t.matchAll(/`+/g),s=>s[0].length)),o="`".repeat(n+1);return`${o}${e}
1
+ import{s as _e}from"./chunk-LvLJmgfZ.js";import{d as R,i as St,l as At,p as _t,u as N}from"./useEvent-D91BmmQi.js";import{t as Dt}from"./react-Bj1aDYRI.js";import{An as Et,Cr as It,E as De,Fn as Pt,Hi as Lt,Jt as Tt,Kn as Ot,Li as Ht,Ln as Rt,Lt as Ee,Nn as $t,Nr as Bt,Or as Ft,Pn as qt,T as Ut,Tr as Yt,ct as Kt,ea as ke,g as Vt,m as Ie,si as Gt,st as Jt,t as Xt,ut as Pe,wr as Le,y as Qt}from"./cells-Cf7bHHq3.js";import{t as z}from"./compiler-runtime-B3qBwwSJ.js";import{n as Zt,r as ea,x as ta}from"./ai-model-dropdown-DXgLphFa.js";import{g as $,n as aa}from"./useEventListener-B_w3A283.js";import{t as Te}from"./objects-BlG0ZrO0.js";import{C as na,r as oa}from"./utils-Z80SV4_d.js";import{n as C,t as Oe}from"./constants-CDyU_g2F.js";import{T as ee,v as He,w as Re}from"./config-BbOTTCYY.js";import{c as sa}from"./readonly-python-code-CW_G5e4E.js";import{t as ra}from"./cn-DYvqRARy.js";import{t as la}from"./jsx-runtime-Blw4afVn.js";import{o as ia}from"./alert-dialog-BXegNC0I.js";import{a as da,c as ca,i as ha,n as ma,r as ua,s as pa,t as fa}from"./select-B5TFNjmU.js";import{Lt as xa}from"./JsonOutput-CkCD-FgM.js";import{c as $e,d as we,n as ba,o as ya,r as ge,t as ka}from"./download-BomYt3nl.js";import{t as wa}from"./tooltip-CFX4fYHU.js";import{r as ga,t as P}from"./button-eIihcbUw.js";import{i as ja,t as je}from"./strings-Djnbwmfl.js";import{r as L}from"./requests-9-v2bhoi.js";import{t as k}from"./createLucideIcon-w-Qo9n0R.js";import{F as va,I as Ca,L as Na,R as Be,a as Fe,d as za,i as qe,u as Ue}from"./layout-CUlZijwG.js";import{t as Ye}from"./check-rzLRd0j9.js";import{r as Ma}from"./useCellActionButton-CRfIEVB5.js";import{t as Wa}from"./code-B2aKtXoe.js";import{t as Sa}from"./copy-3iHFdt22.js";import{t as Ke}from"./eye-off-BOZA7gbn.js";import{t as Ve}from"./external-link-BOlXZUla.js";import{t as te}from"./file-CJH9JNGH.js";import{u as Aa}from"./form-B6BkSCJb.js";import{n as _a,r as Da,t as Ea}from"./youtube-OwaksuQt.js";import{i as Ia,n as Ge}from"./add-connection-dialog-B-jCRNTN.js";import{t as Pa}from"./house-DS0r7dNZ.js";import{t as La}from"./image-5XI2VU-q.js";import{t as Ta}from"./link-CHdiBDr5.js";import{r as Oa}from"./input-CqrUjynb.js";import{t as Ha}from"./settings-D_PiwXwo.js";import{t as Ra}from"./sparkles-DUCpRFlS.js";import{y as $a}from"./textarea-CpFfEUet.js";import{t as Ba}from"./square-DFICx2Qv.js";import{t as Je}from"./triangle-alert-BL4YVsPy.js";import{t as W}from"./use-toast-BwJoaaDM.js";import{n as Xe,t as Fa}from"./paths-BKO-pHK6.js";import{o as qa}from"./session-CEFnN9Cq.js";import{n as ae}from"./copy-BtTOqPTS.js";import{t as Qe}from"./copy-icon-C2pG0ZNK.js";import{r as Ua}from"./useRunCells-CSSF_mJ0.js";import{a as Ze,c as et,i as Ya,n as tt,r as at}from"./dialog-D1DEsRZ2.js";import{n as ne}from"./ImperativeModal-BIavOiUv.js";import{r as Ka,t as nt}from"./share-CYpcX4N4.js";import{a as Va}from"./cell-link-DqBkyAFe.js";import{n as ot}from"./useAsyncData-Bg5iAViP.js";import{a as Ga}from"./renderShortcut-BZLr8D7H.js";import{t as Ja}from"./icons-CIPE8AIY.js";import{i as Xa,n as st}from"./error-entries-Birw-8VX.js";import{t as Qa}from"./pair-with-agent-modal-CKOYwOYw.js";import{t as Za}from"./github-_JH-0hIO.js";import{n as rt}from"./marimo-icons-C_nFooxr.js";import{t as en}from"./links-CToBjIIj.js";import{i as tn,n as lt,t as ve}from"./skeleton-D3QPxqWC.js";import{t as it}from"./types-Da7lA5YC.js";var an=k("circle-chevron-down",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 10-4 4-4-4",key:"894hmk"}]]),nn=k("circle-chevron-right",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m10 8 4 4-4 4",key:"1wy4r4"}]]),dt=k("clipboard-copy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]),ct=k("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]),ht=k("diamond-plus",[["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z",key:"1ey20j"}],["path",{d:"M8 12h8",key:"1wcyev"}]]),on=k("fast-forward",[["path",{d:"M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z",key:"b19h5q"}],["path",{d:"M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z",key:"h7h5ge"}]]),sn=k("files",[["path",{d:"M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"14sh0y"}],["path",{d:"M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",key:"1970lx"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]]),rn=k("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]),mt=k("message-circle-question-mark",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),ln=k("notebook",[["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["path",{d:"M16 2v20",key:"rotuqe"}]]),dn=k("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]),ut=k("presentation",[["path",{d:"M2 3h20",key:"91anmk"}],["path",{d:"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3",key:"2k9sn8"}],["path",{d:"m7 21 5-5 5 5",key:"bip4we"}]]),cn=k("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),hn=k("square-power",[["path",{d:"M12 7v4",key:"xawao1"}],["path",{d:"M7.998 9.003a5 5 0 1 0 8-.005",key:"1pek45"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]]),pt=k("undo-2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]),mn=z(),T=_e(Dt(),1);function Ce(e,t){let n=(0,mn.c)(11),o;n[0]===t?o=n[1]:(o=new Ht(t),n[0]=t,n[1]=o);let s=o,l;n[2]!==e||n[3]!==s?(l=()=>s.get(e),n[2]=e,n[3]=s,n[4]=l):l=n[4];let[r,d]=(0,T.useState)(l),i;n[5]!==e||n[6]!==s?(i=x=>{d(x),s.set(e,x)},n[5]=e,n[6]=s,n[7]=i):i=n[7];let c=i,h;return n[8]!==c||n[9]!==r?(h=[r,c],n[8]=c,n[9]=r,n[10]=h):h=n[10],h}function un(e,t){return{...e,Binaries:{...e.Binaries,Browser:t}}}function pn(e,t,n,o){return{marimo:e,Locale:n||void 0,Binaries:{Browser:t},"Environment Collection Error":o}}function Ne(e,t){let n=Math.max(2,...Array.from(t.matchAll(/`+/g),s=>s[0].length)),o="`".repeat(n+1);return`${o}${e}
2
2
  ${t}
3
3
  ${o}`}function fn(e,t){let n=e.includes("?")?"&":"?",o=[],s=e,l=0;for(let[r,d]of Object.entries(t)){if(d.length===0)continue;let i=`${r}=${encodeURIComponent(d)}`,c=`${s}${l===0?n:"&"}${i}`;if(c.length>6e3){o.push(r);continue}s=c,l+=1}return{url:s,omitted:o}}function ze(e,t){return["<details>",`<summary>${je.htmlEscape(e)??""}</summary>`,"",t,"","</details>"].join(`
4
4
  `)}function xn(e){return ze("Environment",Ne("json",JSON.stringify(e,null,2)))}function ft(e){return ze("Errors",Ne("text",e.map(st).join(`
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-Cl0lNhQU.js"></script>
69
+ <script type="module" crossorigin src="./assets/index-CMZzy-dF.js"></script>
70
70
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-TXkS1QI3.js">
71
71
  <link rel="modulepreload" crossorigin href="./assets/objects-BlG0ZrO0.js">
72
72
  <link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
@@ -201,11 +201,11 @@
201
201
  <link rel="modulepreload" crossorigin href="./assets/plus-AgXtozBz.js">
202
202
  <link rel="modulepreload" crossorigin href="./assets/trash-2-72W0TZ3L.js">
203
203
  <link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-Z-MD3n3J.js">
204
- <link rel="modulepreload" crossorigin href="./assets/JsonOutput-DnGSkLeP.js">
204
+ <link rel="modulepreload" crossorigin href="./assets/JsonOutput-CkCD-FgM.js">
205
205
  <link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-iDRxid4h.js">
206
206
  <link rel="modulepreload" crossorigin href="./assets/square-function-DNNRTPQJ.js">
207
207
  <link rel="modulepreload" crossorigin href="./assets/spec-CzqcmYQk.js">
208
- <link rel="modulepreload" crossorigin href="./assets/column-preview-BgZLUEOj.js">
208
+ <link rel="modulepreload" crossorigin href="./assets/column-preview-Dne1dIt0.js">
209
209
  <link rel="modulepreload" crossorigin href="./assets/icons-CIPE8AIY.js">
210
210
  <link rel="modulepreload" crossorigin href="./assets/radio-group-CLBjGkt5.js">
211
211
  <link rel="modulepreload" crossorigin href="./assets/floating-outline-wz-WSRgP.js">
@@ -223,11 +223,11 @@
223
223
  <link rel="modulepreload" crossorigin href="./assets/memoize-Tp7rARFe.js">
224
224
  <link rel="modulepreload" crossorigin href="./assets/get-C-qh_et5.js">
225
225
  <link rel="modulepreload" crossorigin href="./assets/_baseSet-CsW0tABf.js">
226
- <link rel="modulepreload" crossorigin href="./assets/state-BXbiRXZk.js">
226
+ <link rel="modulepreload" crossorigin href="./assets/state-BZQc7xxL.js">
227
227
  <link rel="modulepreload" crossorigin href="./assets/label-BElwWzf0.js">
228
228
  <link rel="modulepreload" crossorigin href="./assets/textarea-CpFfEUet.js">
229
229
  <link rel="modulepreload" crossorigin href="./assets/refresh-ccw-sLaKP2vj.js">
230
- <link rel="modulepreload" crossorigin href="./assets/form-CgWNb44_.js">
230
+ <link rel="modulepreload" crossorigin href="./assets/form-B6BkSCJb.js">
231
231
  <link rel="modulepreload" crossorigin href="./assets/renderShortcut-BZLr8D7H.js">
232
232
  <link rel="modulepreload" crossorigin href="./assets/useBoolean-D89u30n-.js">
233
233
  <link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-CSMoa-ga.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/frontend",
3
- "version": "0.23.16-dev2",
3
+ "version": "0.23.16-dev4",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -9,6 +9,7 @@ import {
9
9
  type TableFeature,
10
10
  type Updater,
11
11
  } from "@tanstack/react-table";
12
+ import { browserLocale } from "@/core/i18n/locale";
12
13
  import type { DataType } from "@/core/kernel/messages";
13
14
  import { logNever } from "@/utils/assertNever";
14
15
  import {
@@ -40,7 +41,7 @@ export const ColumnFormattingFeature: TableFeature = {
40
41
  return {
41
42
  enableColumnFormatting: true,
42
43
  onColumnFormattingChange: makeStateUpdater("columnFormatting", table),
43
- locale: navigator.language,
44
+ locale: browserLocale(),
44
45
  } as ColumnFormattingOptions;
45
46
  },
46
47
 
@@ -0,0 +1,27 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { describe, expect, it } from "vitest";
4
+ import { getFileRenderMode } from "../file-render-mode";
5
+
6
+ describe("getFileRenderMode", () => {
7
+ it.each([
8
+ ["text/plain", false, "text"],
9
+ ["text/x-rust", false, "text"],
10
+ ["application/json", false, "text"],
11
+ ["application/xml", false, "text"],
12
+ ["text/csv", false, "csv"],
13
+ ["image/png", true, "media"],
14
+ ["video/mp4", true, "media"],
15
+ ["application/pdf", true, "media"],
16
+ ["application/x-apple-diskimage", true, "unsupported"],
17
+ ["application/zip", true, "unsupported"],
18
+ ["application/octet-stream", false, "unsupported"],
19
+ [null, false, "text"],
20
+ [null, true, "unsupported"],
21
+ ] as const)(
22
+ "maps %s with isBase64=%s to %s",
23
+ (mimeType, isBase64, expected) => {
24
+ expect(getFileRenderMode(mimeType, isBase64)).toBe(expected);
25
+ },
26
+ );
27
+ });
@@ -0,0 +1,150 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { fireEvent, render, screen, waitFor } from "@testing-library/react";
4
+ import { Provider } from "jotai";
5
+ import type React from "react";
6
+ import { beforeEach, describe, expect, it, vi } from "vitest";
7
+ import { MockRequestClient } from "@/__mocks__/requests";
8
+ import { TooltipProvider } from "@/components/ui/tooltip";
9
+ import { requestClientAtom } from "@/core/network/requests";
10
+ import type { FileDetailsResponse, FileInfo } from "@/core/network/types";
11
+ import { store } from "@/core/state/jotai";
12
+ import { FileViewer, MAX_FILE_PREVIEW_BYTES } from "../file-viewer";
13
+
14
+ vi.mock("@/plugins/impl/code/LazyAnyLanguageCodeMirror", () => ({
15
+ LazyAnyLanguageCodeMirror: ({
16
+ value,
17
+ onChange,
18
+ }: {
19
+ value?: string;
20
+ onChange?: (value: string) => void;
21
+ }) => (
22
+ <textarea
23
+ data-testid="code-editor"
24
+ value={value ?? ""}
25
+ onChange={(evt) => onChange?.(evt.target.value)}
26
+ />
27
+ ),
28
+ }));
29
+
30
+ vi.mock("@/core/wasm/utils", () => ({ isWasm: () => false }));
31
+
32
+ const wrapper = ({ children }: { children: React.ReactNode }) => (
33
+ <Provider store={store}>
34
+ <TooltipProvider>{children}</TooltipProvider>
35
+ </Provider>
36
+ );
37
+
38
+ const file: FileInfo = {
39
+ id: "/workspace/installer.dmg",
40
+ path: "/workspace/installer.dmg",
41
+ name: "installer.dmg",
42
+ isDirectory: false,
43
+ isMarimoFile: false,
44
+ size: 20 * 1024 * 1024,
45
+ };
46
+
47
+ function renderViewer(response: FileDetailsResponse) {
48
+ const client = MockRequestClient.create({
49
+ sendFileDetails: vi.fn().mockResolvedValue(response),
50
+ });
51
+ store.set(requestClientAtom, client);
52
+ render(<FileViewer file={file} onOpenNotebook={vi.fn()} />, { wrapper });
53
+ return client;
54
+ }
55
+
56
+ describe("FileViewer bounded previews", () => {
57
+ beforeEach(() => {
58
+ store.set(requestClientAtom, null);
59
+ });
60
+
61
+ it("requests a bounded preview and shows oversized metadata", async () => {
62
+ const client = renderViewer({
63
+ file,
64
+ contents: null,
65
+ mimeType: "application/x-apple-diskimage",
66
+ isBase64: false,
67
+ isTooLarge: true,
68
+ });
69
+
70
+ expect(await screen.findByText(/too large to preview/i)).toBeVisible();
71
+ expect(screen.getByText("20 MB")).toBeVisible();
72
+ expect(screen.getByRole("button", { name: /download/i })).toBeVisible();
73
+ expect(screen.queryByTestId("code-editor")).not.toBeInTheDocument();
74
+ expect(client.sendFileDetails).toHaveBeenCalledWith({
75
+ path: file.path,
76
+ maxBytes: MAX_FILE_PREVIEW_BYTES,
77
+ });
78
+ });
79
+
80
+ it("shows unsupported metadata with a download action, not base64 text", async () => {
81
+ renderViewer({
82
+ file: { ...file, size: 4 },
83
+ contents: "AAEC",
84
+ mimeType: "application/x-apple-diskimage",
85
+ isBase64: true,
86
+ isTooLarge: false,
87
+ });
88
+
89
+ expect(await screen.findByText(/cannot be previewed/i)).toBeVisible();
90
+ expect(screen.getByRole("button", { name: /download/i })).toBeVisible();
91
+ expect(screen.queryByTestId("code-editor")).not.toBeInTheDocument();
92
+ });
93
+
94
+ it("continues to render small text files", async () => {
95
+ renderViewer({
96
+ file: { ...file, name: "notes.txt", size: 5 },
97
+ contents: "hello",
98
+ mimeType: "text/plain",
99
+ isBase64: false,
100
+ isTooLarge: false,
101
+ });
102
+
103
+ await waitFor(() => {
104
+ expect(screen.getByTestId("code-editor")).toBeInTheDocument();
105
+ });
106
+ expect(screen.queryByText(/too large to preview/i)).not.toBeInTheDocument();
107
+ });
108
+
109
+ it("preserves edits to an initially empty text file across remount", async () => {
110
+ const emptyFile: FileInfo = {
111
+ id: "/workspace/empty.txt",
112
+ path: "/workspace/empty.txt",
113
+ name: "empty.txt",
114
+ isDirectory: false,
115
+ isMarimoFile: false,
116
+ size: 0,
117
+ };
118
+ const response: FileDetailsResponse = {
119
+ file: emptyFile,
120
+ contents: "",
121
+ mimeType: "text/plain",
122
+ isBase64: false,
123
+ isTooLarge: false,
124
+ };
125
+ const client = MockRequestClient.create({
126
+ sendFileDetails: vi.fn().mockResolvedValue(response),
127
+ });
128
+ store.set(requestClientAtom, client);
129
+
130
+ const { unmount } = render(
131
+ <FileViewer file={emptyFile} onOpenNotebook={vi.fn()} />,
132
+ { wrapper },
133
+ );
134
+
135
+ const editor =
136
+ await screen.findByTestId<HTMLTextAreaElement>("code-editor");
137
+ fireEvent.change(editor, { target: { value: "draft" } });
138
+ unmount();
139
+
140
+ render(<FileViewer file={emptyFile} onOpenNotebook={vi.fn()} />, {
141
+ wrapper,
142
+ });
143
+
144
+ const reopened =
145
+ await screen.findByTestId<HTMLTextAreaElement>("code-editor");
146
+ await waitFor(() => {
147
+ expect(reopened.value).toBe("draft");
148
+ });
149
+ });
150
+ });