@marimo-team/frontend 0.24.1-dev29 → 0.24.1-dev30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/add-connection-dialog-DGYhyXo6.js +181 -0
- package/dist/assets/{command-palette-CGyST5ig.js → command-palette-Cbie8JV9.js} +1 -1
- package/dist/assets/{edit-page-CyOOxVHO.js → edit-page-DKAg2YW9.js} +4 -4
- package/dist/assets/{file-explorer-panel-DNDgcn0k.js → file-explorer-panel-DwA9Lprz.js} +1 -1
- package/dist/assets/{index-CtIZviYn.js → index-T5Rre8Dj.js} +2 -2
- package/dist/assets/{session-panel-aBrv2szQ.js → session-panel-BmQ0PDHO.js} +1 -1
- package/dist/assets/{useNotebookActions-CFJducB0.js → useNotebookActions-BI53NQV3.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +43 -0
- package/src/components/editor/connections/storage/__tests__/as-code.test.ts +127 -0
- package/src/components/editor/connections/storage/add-storage-form.tsx +11 -1
- package/src/components/editor/connections/storage/as-code.ts +30 -1
- package/src/components/editor/connections/storage/schemas.ts +63 -0
- package/dist/assets/add-connection-dialog-lQ4vVMYK.js +0 -178
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as ge}from"./chunk-C4rtOYze.js";import{d as je,l as ye,p as Ke,u as J}from"./useEvent-GCVIknuR.js";import{t as We}from"./react-C60yClUi.js";import{Bt as Xe,Ct as Je,Dr as Ye,E as Qe,Fr as Ze,Kn as ea,N as aa,Rr as ta,Rt as sa,Tr as la,Xr as ve,Yn as na,aa as ra,ci as oe,d as oa,di as ca,ei as ce,fi as ia,hi as ma,i as da,ii as ha,j as ua,jt as xa,mi as pa,ni as Ne,oi as ie,pi as we,pn as fa,qn as ba,ri as ga,si as Se,ti as _e,ui as ja,wr as ya,zr as me,zt as va}from"./cells-Biwqg0z6.js";import"./react-dom-Ba2zmJWD.js";import{t as Ce}from"./compiler-runtime-DnimoHo0.js";import{c as Na}from"./utils-C8Yt16Y7.js";import{t as wa}from"./ErrorBoundary-B392qglD.js";import{t as Y}from"./cn-DCUzRj2J.js";import{t as Sa}from"./jsx-runtime-3wZU7vFS.js";import"./fullscreen-CrevbcR_.js";import{r as _a}from"./config-DjP9S1hr.js";import"./popover-B96fOqfH.js";import{_ as Ie,at as Ca,d as Ia,g as de,h as he,it as Ta,m as se,nt as Te,ot as ka,p as ke,rt as Pa,tt as ue}from"./JsonOutput-htT793Wj.js";import"./download-CfUkZlw7.js";import{r as Pe}from"./radio-group-YNmbPL7y.js";import{t as xe}from"./tooltip-C9LWGQ7Y.js";import{r as Fa,t as le}from"./button-W__YVea9.js";import"./dist-CeF1Em5L.js";import{l as ne}from"./arrays-UzzAzxsG.js";import"./cjs-DCKmcMBz.js";import"./useNonce-C2dwX-sI.js";import{i as Ra}from"./strings-DmKKoXrM.js";import{r as $a}from"./requests-B9zEd_sW.js";import{t as Da}from"./createLucideIcon-B8oVfJNp.js";import{t as Va}from"./x-4y-nyVDU.js";import{a as qa,r as Ba}from"./tree-actions-pW_UgP3m.js";import"./markdown-renderer-BOS4jZLt.js";import{t as Fe}from"./plus-r1QITpsJ.js";import{a as Ea}from"./input-BN98e517.js";import{n as La,o as Oa}from"./column-preview-BaRqZ9P8.js";import{t as Ma}from"./workflow-CAJ8rXSh.js";import"./dist-BPoMypmC.js";import"./dist-5bwTcyKs.js";import"./dist-BVNaV53g.js";import"./dist-BrqkjqDe.js";import"./dist-Bm9PT5P9.js";import"./session-D-SddyN0.js";import"./purify.es-Bwm8T4QC.js";import"./dates-CZTDC2tF.js";import{t as za}from"./copy-icon-Cn8LzPNx.js";import{t as Aa}from"./context-BJMN4ll3.js";import"./tooltip-BUmTS76K.js";import"./vega-loader.browser-DLY285WP.js";import"./defaultLocale-CGJY8D9C.js";import"./defaultLocale-DzliDDTm.js";import{t as Re}from"./cell-link-Bx8FWjns.js";import"./chunk-5FQGJX7Z-BIDn9QG0.js";import{r as Ua}from"./html-to-image-ChfBVn8-.js";import{o as Ga}from"./focus-CeTtpVjV.js";import{n as pe}from"./useAsyncData-BcvSvTUt.js";import{a as Ha,i as Ka,n as Wa,o as $e,r as Xa,t as Ja}from"./table-xPvP31p3.js";import"./react-resizable-panels.browser.esm-CLaR27oP.js";import{a as Ya,f as Qa,o as re,t as Za}from"./command-D5LtSvbN.js";import{n as et}from"./icons-BwSNDWAP.js";import{t as at}from"./useDeepCompareMemoize-CbFVGT0j.js";import{t as tt}from"./empty-state-CBq3j1LH.js";import{n as st,t as lt}from"./common-sBRwGAKy.js";import{a as nt,i as De,n as Ve,o as rt,r as qe,t as ot}from"./components-DsJAWbBR.js";import{r as ct,t as Be}from"./add-connection-dialog-lQ4vVMYK.js";import{r as it}from"./panel-accordion-state-CgvX-ElJ.js";var mt=Da("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"}]]),U=Ce(),F=ge(We(),1),s=ge(Sa(),1),fe=1;function Ee(a){return 1.75+a*fe}function dt(a){return 3+a*fe}function Le(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 O(a){return{paddingLeft:`${a}rem`}}var ht=Ke(a=>{let e=a(Ne),t=a(na),l=a(da);return ne(e,n=>{if(!n.variable_name)return-1;let m=Object.values(t).find(u=>u.name===n.variable_name);if(!m)return 0;let r=l.inOrderIds.indexOf(m.declaredBy[0]);return r===-1?0:r})});const ut=ra("marimo:datasources:hideEmpty",!1,ea,{getOnInit:!0});function Oe(a){let e=!1,t=[];for(let l of a){if(!oe(l)||!ie(l)){t.push(l);continue}let n=l.child_schemas??[],m=Oe(n);if(l.tables.length===0&&m.length===0){e=!0;continue}if(m===n){t.push(l);continue}e=!0,t.push({...l,child_schemas:m})}return e?t:a}function xt(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=Oe(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 pt=()=>{let a=(0,U.c)(40),[e,t]=F.useState(""),[l,n]=ye(ut),m=je(_e),r=J(ht),u=J(ve),o;e:{if(!l){o=u;break e}let x,w;a[0]===u?(x=a[1],w=a[2]):(x=!1,w=u.map(C=>{let T=xt(C.databases);return T===C.databases?C:(x=!0,{...C,databases:T})}),a[0]=u,a[1]=x,a[2]=w),o=x?w:u}let p=o;if(r.length===0&&p.length===0){let x;return a[3]===Symbol.for("react.memo_cache_sentinel")?(x=(0,s.jsx)(tt,{title:"No tables found",description:"Any datasets/dataframes in the global scope will be shown here.",action:(0,s.jsx)(Be,{children:(0,s.jsxs)(le,{variant:"outline",size:"sm",children:["Add database or catalog",(0,s.jsx)(Fe,{className:"h-4 w-4 ml-2"})]})}),icon:(0,s.jsx)(me,{})}),a[3]=x):x=a[3],x}let h=!!e.trim(),c;a[4]===m?c=a[5]:(c=x=>{m(x.length>0),t(x)},a[4]=m,a[5]=c);let i;a[6]!==e||a[7]!==c?(i=(0,s.jsx)(Ya,{placeholder:"Search tables...",className:"h-6 m-1",value:e,onValueChange:c,rootClassName:"flex-1 border-r border-b-0"}),a[6]=e,a[7]=c,a[8]=i):i=a[8];let f;a[9]===h?f=a[10]:(f=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)(Va,{className:"h-4 w-4"})}),a[9]=h,a[10]=f);let I=!l,b;a[11]!==l||a[12]!==n?(b=()=>n(!l),a[11]=l,a[12]=n,a[13]=b):b=a[13];let y;a[14]!==I||a[15]!==b?(y=(0,s.jsx)(qa,{"data-testid":"datasources-hide-empty-button",isVisible:I,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]=I,a[15]=b,a[16]=y):y=a[16];let v;a[17]===Symbol.for("react.memo_cache_sentinel")?(v=(0,s.jsx)(Be,{children:(0,s.jsx)(le,{variant:"ghost",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden",children:(0,s.jsx)(Fe,{className:"h-4 w-4"})})}),a[17]=v):v=a[17];let g;a[18]!==i||a[19]!==f||a[20]!==y?(g=(0,s.jsxs)("div",{className:"flex items-center w-full border-b",children:[i,f,y,v]}),a[18]=i,a[19]=f,a[20]=y,a[21]=g):g=a[21];let j;if(a[22]!==p||a[23]!==e){let x;a[25]===e?x=a[26]:(x=w=>(0,s.jsx)(ft,{connection:w,hasChildren:w.databases.length>0,children:w.databases.map(C=>(0,s.jsx)(bt,{connection:w,database:C,searchValue:e},C.name))},w.name),a[25]=e,a[26]=x),j=p.map(x),a[22]=p,a[23]=e,a[24]=j}else j=a[24];let S;a[27]!==p.length||a[28]!==r.length?(S=p.length>0&&r.length>0&&(0,s.jsxs)(ke,{className:"pr-2",style:O(A.engine),children:[(0,s.jsx)(et,{className:"h-4 w-4 text-muted-foreground"}),(0,s.jsx)("span",{className:"text-xs",children:"Python"})]}),a[27]=p.length,a[28]=r.length,a[29]=S):S=a[29];let d;a[30]!==e||a[31]!==r?(d=r.length>0&&(0,s.jsx)(be,{tables:r,searchValue:e}),a[30]=e,a[31]=r,a[32]=d):d=a[32];let N;a[33]!==S||a[34]!==d||a[35]!==j?(N=(0,s.jsxs)(Qa,{className:"flex flex-col",children:[j,S,d]}),a[33]=S,a[34]=d,a[35]=j,a[36]=N):N=a[36];let _;return a[37]!==N||a[38]!==g?(_=(0,s.jsxs)(Za,{className:"border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden",shouldFilter:!1,children:[g,N]}),a[37]=N,a[38]=g,a[39]=_):_=a[39],_};var ft=a=>{let e=(0,U.c)(26),{connection:t,children:l,hasChildren:n}=a,m=t.name===ma,r=m?"In-Memory":t.name,{previewDataSourceConnection:u}=$a(),o;e[0]!==t.name||e[1]!==u?(o=async()=>{await u({engine:t.name})},e[0]=t.name,e[1]=u,e[2]=o):o=e[2];let p=o,h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=O(A.engine),e[3]=h):h=e[3];let c;e[4]===t.dialect?c=e[5]:(c=(0,s.jsx)(Je,{className:"h-4 w-4 text-muted-foreground",name:t.dialect}),e[4]=t.dialect,e[5]=c);let i;e[6]===t.dialect?i=e[7]:(i=ya(t.dialect),e[6]=t.dialect,e[7]=i);let f;e[8]===i?f=e[9]:(f=(0,s.jsx)("span",{className:"text-xs",children:i}),e[8]=i,e[9]=f);let I=r,b;e[10]===I?b=e[11]:(b=(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",(0,s.jsx)(rt,{variableName:I}),")"]}),e[10]=I,e[11]=b);let y;e[12]!==p||e[13]!==m?(y=!m&&(0,s.jsx)(Ba,{onClick:p,tooltip:"Refresh connection",className:"ml-auto h-4 p-0",iconClassName:"h-3.5 w-3.5"}),e[12]=p,e[13]=m,e[14]=y):y=e[14];let v;e[15]!==c||e[16]!==f||e[17]!==b||e[18]!==y?(v=(0,s.jsxs)(ke,{className:"pr-2",style:h,children:[c,f,b,y]}),e[15]=c,e[16]=f,e[17]=b,e[18]=y,e[19]=v):v=e[19];let g;e[20]!==l||e[21]!==n?(g=n?l:(0,s.jsx)(se,{content:"No databases available",style:O(A.engineEmpty)}),e[20]=l,e[21]=n,e[22]=g):g=e[22];let j;return e[23]!==g||e[24]!==v?(j=(0,s.jsxs)(s.Fragment,{children:[v,g]}),e[23]=g,e[24]=v,e[25]=j):j=e[25],j},Me=F.createContext(null);function ze(){let a=F.useContext(Me);if(a==null)throw Error("useDataSourceTree must be used within a DataSourceTreeContext.Provider");return a}function Ae(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 bt=a=>{let e=(0,U.c)(21),{connection:t,database:l,searchValue:n}=a,m;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?(m={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]=m):m=e[6];let r=m,u=t.name,o=l.schemas,p;e[7]===l?p=e[8]:(p=Se(l),e[7]=l,e[8]=p);let h;e[9]===Symbol.for("react.memo_cache_sentinel")?(h=[],e[9]=h):h=e[9];let c;e[10]!==l.schemas||e[11]!==p?(c=(0,s.jsx)(Ue,{schemas:o,schemasResolved:p,schemaPath:h,depth:0}),e[10]=l.schemas,e[11]=p,e[12]=c):c=e[12];let i;e[13]!==c||e[14]!==r?(i=(0,s.jsx)(Me.Provider,{value:r,children:c}),e[13]=c,e[14]=r,e[15]=i):i=e[15];let f;return e[16]!==t.name||e[17]!==l||e[18]!==n||e[19]!==i?(f=(0,s.jsx)(gt,{engineName:u,database:l,searchValue:n,children:i}),e[16]=t.name,e[17]=l,e[18]=n,e[19]=i,e[20]=f):f=e[20],f},gt=a=>{let e=(0,U.c)(29),{searchValue:t,engineName:l,database:n,children:m}=a,r;e[0]!==n||e[1]!==t?(r=ia(n,t),e[0]=n,e[1]=t,e[2]=r):r=e[2];let u=r,[o,p]=F.useState(u),[h,c]=F.useState(!1),[i,f]=F.useState(t),[I,b]=F.useState(u);(i!==t||I!==u)&&(f(t),b(u),p(u));let y;e[3]===Symbol.for("react.memo_cache_sentinel")?(y=O(A.database),e[3]=y):y=e[3];let v;e[4]!==o||e[5]!==h?(v=()=>{p(!o),c(!h)},e[4]=o,e[5]=h,e[6]=v):v=e[6];let g=`${l}:${n.name}`,j;e[7]===o?j=e[8]:(j=(0,s.jsx)(Ie,{isExpanded:o}),e[7]=o,e[8]=j);let S=h&&o?"text-foreground":"text-muted-foreground",d;e[9]===S?d=e[10]:(d=Y("h-4 w-4",S),e[9]=S,e[10]=d);let N;e[11]===d?N=e[12]:(N=(0,s.jsx)(me,{className:d}),e[11]=d,e[12]=N);let _=h&&o&&"font-semibold",x;e[13]===_?x=e[14]:(x=Y(_),e[13]=_,e[14]=x);let w;e[15]===n.name?w=e[16]:(w=n.name===""?(0,s.jsx)("i",{children:"Not connected"}):n.name,e[15]=n.name,e[16]=w);let C;e[17]!==x||e[18]!==w?(C=(0,s.jsx)("span",{className:x,children:w}),e[17]=x,e[18]=w,e[19]=C):C=e[19];let T;e[20]!==C||e[21]!==v||e[22]!==g||e[23]!==j||e[24]!==N?(T=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:y,onSelect:v,value:g,children:[j,N,C]}),e[20]=C,e[21]=v,e[22]=g,e[23]=j,e[24]=N,e[25]=T):T=e[25];let k=o&&m,P;return e[26]!==T||e[27]!==k?(P=(0,s.jsxs)(s.Fragment,{children:[T,k]}),e[26]=T,e[27]=k,e[28]=P):P=e[28],P},Ue=a=>{let{schemas:e,schemasResolved:t,depth:l}=a,n=ze(),{engineName:m,databaseName:r,searchValue:u}=n,{addSchemaList:o}=ce(),p=at(a.schemaPath),[h,c]=F.useState(!1),{isPending:i,error:f}=pe(async()=>{if(!t&&m){c(!0);try{o({schemas:(await sa.request({engine:m,database:r,schemaPath:p})).schemas??[],sqlSchemaContext:{engine:m,database:r,schemaPath:p}})}finally{c(!1)}}},[t,m,r,p]),I=O(Ee(l));return i||h?(0,s.jsx)(de,{message:"Loading schemas...",style:I}):f?(0,s.jsx)(he,{error:f,style:I}):e.length===0?(0,s.jsx)(se,{content:"No schemas available",style:I}):(0,s.jsx)(s.Fragment,{children:e.map(b=>ja(b.name)?(0,s.jsx)(be,{tables:b.tables,tablesResolved:oe(b),searchValue:u,sqlTableContext:Ae(n,{schema:b.name,schemaPath:p})},b.name):(0,s.jsx)(jt,{schema:b,schemaPath:[...p,b.name],depth:l},b.name))})},jt=a=>{let e=(0,U.c)(39),{schema:t,schemaPath:l,depth:n}=a,m=ze(),{databaseName:r,searchValue:u}=m,o;e[0]!==t||e[1]!==u?(o=ca(t,u),e[0]=t,e[1]=u,e[2]=o):o=e[2];let p=o,[h,c]=F.useState(p),[i,f]=F.useState(!1),[I,b]=F.useState(u),[y,v]=F.useState(p),g=`${r}:${l.join(".")}`,j;e[3]===t.child_schemas?j=e[4]:(j=t.child_schemas??[],e[3]=t.child_schemas,e[4]=j);let S=j;(I!==u||y!==p)&&(b(u),v(p),c(p));let d;e[5]===n?d=e[6]:(d=O(Ee(n)),e[5]=n,e[6]=d);let N;e[7]!==h||e[8]!==i?(N=()=>{c(!h),f(!i)},e[7]=h,e[8]=i,e[9]=N):N=e[9];let _;e[10]===h?_=e[11]:(_=(0,s.jsx)(Ie,{isExpanded:h}),e[10]=h,e[11]=_);let x=i&&h&&"text-foreground",w;e[12]===x?w=e[13]:(w=Y("h-4 w-4 text-muted-foreground",x),e[12]=x,e[13]=w);let C;e[14]===w?C=e[15]:(C=(0,s.jsx)(Ze,{className:w}),e[14]=w,e[15]=C);let T=i&&h&&"font-semibold",k;e[16]===T?k=e[17]:(k=Y(T),e[16]=T,e[17]=k);let P;e[18]!==t.name||e[19]!==k?(P=(0,s.jsx)("span",{className:k,children:t.name}),e[18]=t.name,e[19]=k,e[20]=P):P=e[20];let $;e[21]!==P||e[22]!==d||e[23]!==N||e[24]!==_||e[25]!==C||e[26]!==g?($=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:d,onSelect:N,value:g,children:[_,C,P]}),e[21]=P,e[22]=d,e[23]=N,e[24]=_,e[25]=C,e[26]=g,e[27]=$):$=e[27];let D;e[28]!==S||e[29]!==n||e[30]!==h||e[31]!==t||e[32]!==l||e[33]!==u||e[34]!==m?(D=h&&(0,s.jsxs)(s.Fragment,{children:[(S.length>0||!ie(t))&&(0,s.jsx)(Ue,{schemas:S,schemasResolved:ie(t),schemaPath:l,depth:n+1}),(0,s.jsx)(be,{tables:t.tables,tablesResolved:oe(t),searchValue:u,tableIndentRem:dt(n),columnIndentRem:Le(n),sqlTableContext:Ae(m,{schema:t.name,schemaPath:l})})]}),e[28]=S,e[29]=n,e[30]=h,e[31]=t,e[32]=l,e[33]=u,e[34]=m,e[35]=D):D=e[35];let R;return e[36]!==$||e[37]!==D?(R=(0,s.jsxs)(s.Fragment,{children:[$,D]}),e[36]=$,e[37]=D,e[38]=R):R=e[38],R},be=a=>{let e=(0,U.c)(31),{tables:t,sqlTableContext:l,searchValue:n,tablesResolved:m,tableIndentRem:r,columnIndentRem:u}=a,o=m===void 0?!0:m,{addTableList:p}=ce(),[h,c]=F.useState(!1),i;e[0]!==p||e[1]!==l||e[2]!==o?(i=async()=>{if(!o&&l){c(!0);let{engine:d,database:N,schema:_,schemaPath:x}=l,w=await Xe.request({engine:d,database:N,schema:_,schemaPath:x??[]});if(!(w!=null&&w.tables))throw c(!1),Error("No tables available");p({tables:w.tables,sqlTableContext:l}),c(!1)}},e[0]=p,e[1]=l,e[2]=o,e[3]=i):i=e[3];let f;e[4]!==l||e[5]!==o?(f=[o,l],e[4]=l,e[5]=o,e[6]=f):f=e[6];let{isPending:I,error:b}=pe(i,f),y=r??A.tableLoading,v;e[7]===y?v=e[8]:(v=O(y),e[7]=y,e[8]=v);let g=v;if(I||h){let d;return e[9]===g?d=e[10]:(d=(0,s.jsx)(de,{message:"Loading tables...",style:g}),e[9]=g,e[10]=d),d}if(b){let d;return e[11]!==b||e[12]!==g?(d=(0,s.jsx)(he,{error:b,style:g}),e[11]=b,e[12]=g,e[13]=d):d=e[13],d}if(t.length===0){let d;return e[14]===g?d=e[15]:(d=(0,s.jsx)(se,{content:"No tables found",style:g}),e[14]=g,e[15]=d),d}let j;if(e[16]!==u||e[17]!==n||e[18]!==l||e[19]!==r||e[20]!==t){let d;e[22]===n?d=e[23]:(d=x=>n?x.name.toLowerCase().includes(n.toLowerCase()):!0,e[22]=n,e[23]=d);let N=t.filter(d),_;e[24]!==u||e[25]!==n||e[26]!==l||e[27]!==r?(_=x=>(0,s.jsx)(yt,{table:x,sqlTableContext:l,isSearching:!!n,tableIndentRem:r,columnIndentRem:u},x.name),e[24]=u,e[25]=n,e[26]=l,e[27]=r,e[28]=_):_=e[28],j=N.map(_),e[16]=u,e[17]=n,e[18]=l,e[19]=r,e[20]=t,e[21]=j}else j=e[21];let S;return e[29]===j?S=e[30]:(S=(0,s.jsx)(s.Fragment,{children:j}),e[29]=j,e[30]=S),S},yt=a=>{let e=(0,U.c)(69),{table:t,sqlTableContext:l,isSearching:n,tableIndentRem:m,columnIndentRem:r}=a,{addTable:u}=ce(),[o,p]=F.useState(!1),h=t.columns.length>0,c;e[0]!==u||e[1]!==o||e[2]!==l||e[3]!==t.name||e[4]!==h?(c=async()=>{if(o&&!h&&l){let{engine:E,database:ee,schema:ae,schemaPath:He}=l,te=await va.request({engine:E,database:ee,schema:ae,tableName:t.name,schemaPath:He??[]});if(!(te!=null&&te.table))throw Error("No table details available");u({table:te.table,sqlTableContext:l})}},e[0]=u,e[1]=o,e[2]=l,e[3]=t.name,e[4]=h,e[5]=c):c=e[5];let i;e[6]!==o||e[7]!==h?(i=[o,h],e[6]=o,e[7]=h,e[8]=i):i=e[8];let{isFetching:f,isPending:I,error:b}=pe(c,i),y=J(Na),v=Ga(),{createNewCell:g}=Qe(),j=Pe(),S;e[9]!==j||e[10]!==y||e[11]!==g||e[12]!==v||e[13]!==l||e[14]!==t?(S=()=>{Ua({autoInstantiate:y,createNewCell:g,fromCellId:v}),j((()=>{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 we({table:t,columnName:"*",sqlTableContext:l});switch(t.source_type){case"local":return`mo.ui.table(${t.name})`;case"duckdb":case"connection":return we({table:t,columnName:"*",sqlTableContext:l});default:return Ra(t.source_type),""}})())},e[9]=j,e[10]=y,e[11]=g,e[12]=v,e[13]=l,e[14]=t,e[15]=S):S=e[15];let d=S,N;e[16]!==t.num_columns||e[17]!==t.num_rows?(N=()=>{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]=N):N=e[18];let _=N,x;e[19]!==r||e[20]!==b||e[21]!==f||e[22]!==I||e[23]!==l||e[24]!==t?(x=()=>{let E=O(r??A.tableLoading);if(I||f)return(0,s.jsx)(de,{message:"Loading columns...",style:E});if(b)return(0,s.jsx)(he,{error:b,style:E});let ee=t.columns;return ee.length===0?(0,s.jsx)(se,{content:"No columns found",style:E}):ee.map(ae=>(0,s.jsx)(vt,{table:t,column:ae,sqlTableContext:l,columnIndentRem:r},ae.name))},e[19]=r,e[20]=b,e[21]=f,e[22]=I,e[23]=l,e[24]=t,e[25]=x):x=e[25];let w=x,C;e[26]!==o||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"?Ye:ta,{className:"h-3 w-3",strokeWidth:o||n?2.5:void 0})},e[26]=o,e[27]=n,e[28]=t.source_type,e[29]=t.type,e[30]=C):C=e[30];let T=C,k;e[31]!==l||e[32]!==t.name?(k=pa(l,t.name),e[31]=l,e[32]=t.name,e[33]=k):k=e[33];let P=k,$=m??(l?A.tableSchemaless:0),D=(o||n)&&"font-semibold",R;e[34]===D?R=e[35]:(R=Y("rounded-none group h-8 cursor-pointer",D),e[34]=D,e[35]=R);let V;e[36]===$?V=e[37]:(V=O($),e[36]=$,e[37]=V);let q;e[38]===o?q=e[39]:(q=()=>p(!o),e[38]=o,e[39]=q);let L;e[40]===T?L=e[41]:(L=T(),e[40]=T,e[41]=L);let M;e[42]===t.name?M=e[43]:(M=(0,s.jsx)("span",{className:"text-sm",children:t.name}),e[42]=t.name,e[43]=M);let z;e[44]!==L||e[45]!==M?(z=(0,s.jsxs)("div",{className:"flex gap-2 items-center flex-1 pl-1",children:[L,M]}),e[44]=L,e[45]=M,e[46]=z):z=e[46];let B;e[47]===_?B=e[48]:(B=_(),e[47]=_,e[48]=B);let H;e[49]===d?H=e[50]:(H=Fa.stopPropagation(()=>d()),e[49]=d,e[50]=H);let Q;e[51]===Symbol.for("react.memo_cache_sentinel")?(Q=(0,s.jsx)(Oa,{className:"h-3 w-3"}),e[51]=Q):Q=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)(le,{className:"group-hover:inline-flex hidden",variant:"text",size:"icon",onClick:H,children:Q})}),e[52]=H,e[53]=K);let W;e[54]!==o||e[55]!==V||e[56]!==q||e[57]!==z||e[58]!==B||e[59]!==K||e[60]!==R||e[61]!==P?(W=(0,s.jsxs)(re,{className:R,style:V,value:P,"aria-selected":o,forceMount:!0,onSelect:q,children:[z,B,K]}),e[54]=o,e[55]=V,e[56]=q,e[57]=z,e[58]=B,e[59]=K,e[60]=R,e[61]=P,e[62]=W):W=e[62];let X;e[63]!==o||e[64]!==w?(X=o&&w(),e[63]=o,e[64]=w,e[65]=X):X=e[65];let Z;return e[66]!==W||e[67]!==X?(Z=(0,s.jsxs)(s.Fragment,{children:[W,X]}),e[66]=W,e[67]=X,e[68]=Z):Z=e[68],Z},vt=a=>{var M,z;let e=(0,U.c)(51),{table:t,column:l,sqlTableContext:n,columnIndentRem:m}=a,[r,u]=F.useState(!1),o=J(_e),p=je(ga);o&&r&&u(!1),p(r?B=>new Set([...B,`${t.name}:${l.name}`]):B=>(B.delete(`${t.name}:${l.name}`),new Set(B)));let h=Pe(),{columnsPreviews:c}=ha(),i;e[0]!==l.name||e[1]!==t.primary_keys?(i=((M=t.primary_keys)==null?void 0:M.includes(l.name))||!1,e[0]=l.name,e[1]=t.primary_keys,e[2]=i):i=e[2];let f=i,I;e[3]!==l.name||e[4]!==t.indexes?(I=((z=t.indexes)==null?void 0:z.includes(l.name))||!1,e[3]=l.name,e[4]=t.indexes,e[5]=I):I=e[5];let b=I,y;e[6]===h?y=e[7]:(y=B=>{h(B)},e[6]=h,e[7]=y);let v=y,g=Nt,j=r?"font-semibold":"",S;e[8]!==l.name||e[9]!==j?(S=(0,s.jsx)("span",{className:j,children:l.name}),e[8]=l.name,e[9]=j,e[10]=S):S=e[10];let d=S,N=`${t.name}.${l.name}`,_=`${t.name}.${l.name}`,x;e[11]===r?x=e[12]:(x=()=>u(!r),e[11]=r,e[12]=x);let w;e[13]!==m||e[14]!==n?(w=m??(n?Le(0):A.columnLocal),e[13]=m,e[14]=n,e[15]=w):w=e[15];let C;e[16]===w?C=e[17]:(C=O(w),e[16]=w,e[17]=C);let T;e[18]!==l.type||e[19]!==d?(T=(0,s.jsx)(Ia,{columnName:d,dataType:l.type}),e[18]=l.type,e[19]=d,e[20]=T):T=e[20];let k;e[21]===f?k=e[22]:(k=f&&g({tooltipContent:"Primary key",content:"PK"}),e[21]=f,e[22]=k);let P;e[23]===b?P=e[24]:(P=b&&g({tooltipContent:"Indexed",content:"IDX"}),e[23]=b,e[24]=P);let $;e[25]!==C||e[26]!==T||e[27]!==k||e[28]!==P?($=(0,s.jsxs)("div",{className:"flex flex-row gap-2 items-center flex-1",style:C,children:[T,k,P]}),e[25]=C,e[26]=T,e[27]=k,e[28]=P,e[29]=$):$=e[29];let D;e[30]===l.name?D=e[31]:(D=(0,s.jsx)(xe,{content:"Copy column name",delayDuration:400,children:(0,s.jsx)(le,{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]=D);let R;e[32]===l.external_type?R=e[33]:(R=(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:l.external_type}),e[32]=l.external_type,e[33]=R);let V;e[34]!==$||e[35]!==D||e[36]!==R||e[37]!==N||e[38]!==_||e[39]!==x?(V=(0,s.jsxs)(re,{className:"rounded-none py-1 group cursor-pointer",value:_,onSelect:x,children:[$,D,R]},N),e[34]=$,e[35]=D,e[36]=R,e[37]=N,e[38]=_,e[39]=x,e[40]=V):V=e[40];let q;e[41]!==l||e[42]!==c||e[43]!==v||e[44]!==r||e[45]!==n||e[46]!==t?(q=r&&(0,s.jsx)("div",{className:"pr-2 py-2 bg-(--slate-1) shadow-inner border-b",style:O(A.columnPreview),children:(0,s.jsx)(wa,{children:(0,s.jsx)(La,{table:t,column:l,onAddColumnChart:v,preview:c.get(n?`${n.database}.${n.schema}.${t.name}:${l.name}`:`${t.name}:${l.name}`),sqlTableContext:n})})}),e[41]=l,e[42]=c,e[43]=v,e[44]=r,e[45]=n,e[46]=t,e[47]=q):q=e[47];let L;return e[48]!==V||e[49]!==q?(L=(0,s.jsxs)(s.Fragment,{children:[V,q]}),e[48]=V,e[49]=q,e[50]=L):L=e[50],L};function Nt(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"},wt=[{id:G.name,accessorFn:a=>[a.name,a.declaredBy],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(ue,{header:"Name",column:a}),cell:({getValue:a})=>{let[e,t]=a();return(0,s.jsx)(lt,{name:e,declaredBy:t})}},{id:G.type,accessorFn:a=>[a.dataType,a.value],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(ue,{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)(ue,{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=m=>{let r=oa(m);r&&fa(r,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)(Re,{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((m,r)=>(0,s.jsxs)("span",{className:"flex",children:[(0,s.jsx)(Re,{variant:"focus",cellId:m,skipScroll:!0,className:"whitespace-nowrap text-destructive",onClick:()=>n(m)},m),r<e.length-1&&", "]},m))})]}),(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)(Ma,{className:"w-3.5 h-3.5 text-muted-foreground"})}),(0,s.jsx)(st,{maxCount:3,cellIds:t,skipScroll:!0,onClick:n})]})]})}}];function St({variables:a,sort:e,cellIdToIndex:t}){e||(e={id:G.defs,desc:!1});let l=[];switch(e.id){case G.name:l=ne(a,n=>n.name);break;case G.type:l=ne(a,n=>n.dataType);break;case G.defs:l=ne(a,n=>t.get(n.declaredBy[0]));break}return e.desc?l.toReversed():l}const Ge=(0,F.memo)(({className:a,cellIds:e,variables:t})=>{let[l,n]=F.useState([]),[m,r]=F.useState(""),u=aa(),{locale:o}=Aa(),p=(0,F.useMemo)(()=>{let c=i=>{let f=u[i];return xa(f)?`cell-${e.indexOf(i)}`:f??`cell-${e.indexOf(i)}`};return Object.values(t).map(i=>({...i,declaredByNames:i.declaredBy.map(c),usedByNames:i.usedBy.map(c)}))},[t,u,e]),h=Pa({data:(0,F.useMemo)(()=>{let c=new Map;return e.forEach((i,f)=>c.set(i,f)),St({variables:p,sort:l[0],cellIdToIndex:c})},[p,l,e]),columns:wt,getCoreRowModel:Ta(),onGlobalFilterChange:r,getFilteredRowModel:Ca(),enableFilters:!0,enableGlobalFilter:!0,enableColumnPinning:!1,getColumnCanGlobalFilter(c){return c.columnDef.enableGlobalFilter??!0},globalFilterFn:"auto",manualSorting:!0,locale:o,onSortingChange:n,getSortedRowModel:ka(),state:{sorting:l,globalFilter:m}});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(Ea,{className:"w-full",placeholder:"Search",value:m,onChange:c=>r(c.target.value)}),(0,s.jsxs)(Ja,{className:Y("w-full text-sm flex-1 border-separate border-spacing-0",a),children:[(0,s.jsx)(Ha,{children:(0,s.jsx)($e,{className:"whitespace-nowrap text-xs",children:h.getFlatHeaders().map(c=>(0,s.jsx)(Ka,{className:"sticky top-0 bg-background border-b",children:Te(c.column.columnDef.header,c.getContext())},c.id))})}),(0,s.jsx)(Wa,{children:h.getRowModel().rows.map(c=>(0,s.jsx)($e,{className:"hover:bg-accent",children:c.getVisibleCells().map(i=>(0,s.jsx)(Xa,{className:"border-b",children:Te(i.column.columnDef.cell,i.getContext())},i.id))},c.id))})]})]})});Ge.displayName="VariableTable";var _t=Ce(),Ct=()=>{let a=(0,_t.c)(28),e=ba(),t=ua(),l=J(Ne),n=J(ve),m=ct("database"),[r,u]=ye(it),o=l.length+n.length,p;a[0]!==o||a[1]!==r.hasUserInteracted||a[2]!==r.openSections?(p=!r.hasUserInteracted&&o>0?[...new Set([...r.openSections,"datasources"])]:r.openSections,a[0]=o,a[1]=r.hasUserInteracted,a[2]=r.openSections,a[3]=p):p=a[3];let h=p,c;a[4]===u?c=a[5]:(c=x=>{u({openSections:x,hasUserInteracted:!0})},a[4]=u,a[5]=c);let i=c,f=!h.includes("datasources")&&o>0,I=m.length>0,b;a[6]===Symbol.for("react.memo_cache_sentinel")?(b=(0,s.jsx)(me,{className:"w-4 h-4"}),a[6]=b):b=a[6];let y;a[7]!==o||a[8]!==f?(y=f&&(0,s.jsx)(nt,{children:o}),a[7]=o,a[8]=f,a[9]=y):y=a[9];let v;a[10]!==m.length||a[11]!==I?(v=I&&(0,s.jsx)(ot,{count:m.length,type:"database"}),a[10]=m.length,a[11]=I,a[12]=v):v=a[12];let g;a[13]!==y||a[14]!==v?(g=(0,s.jsxs)(De,{children:[b,"Data sources",y,v]}),a[13]=y,a[14]=v,a[15]=g):g=a[15];let j;a[16]===Symbol.for("react.memo_cache_sentinel")?(j=(0,s.jsx)(Ve,{children:(0,s.jsx)(pt,{})}),a[16]=j):j=a[16];let S;a[17]===g?S=a[18]:(S=(0,s.jsxs)(qe,{value:"datasources",children:[g,j]}),a[17]=g,a[18]=S);let d;a[19]===Symbol.for("react.memo_cache_sentinel")?(d=(0,s.jsxs)(De,{children:[(0,s.jsx)(la,{className:"w-4 h-4"}),"Variables"]}),a[19]=d):d=a[19];let N;a[20]!==t||a[21]!==e?(N=(0,s.jsxs)(qe,{value:"variables",lastItem:!0,children:[d,(0,s.jsx)(Ve,{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)(Ge,{cellIds:t.inOrderIds,variables:e})})]}),a[20]=t,a[21]=e,a[22]=N):N=a[22];let _;return a[23]!==i||a[24]!==h||a[25]!==S||a[26]!==N?(_=(0,s.jsxs)(_a,{type:"multiple",value:h,onValueChange:i,className:"flex flex-col h-full overflow-auto",children:[S,N]}),a[23]=i,a[24]=h,a[25]=S,a[26]=N,a[27]=_):_=a[27],_};export{Ct as default};
|
|
1
|
+
import{o as ge}from"./chunk-C4rtOYze.js";import{d as je,l as ye,p as Ke,u as J}from"./useEvent-GCVIknuR.js";import{t as We}from"./react-C60yClUi.js";import{Bt as Xe,Ct as Je,Dr as Ye,E as Qe,Fr as Ze,Kn as ea,N as aa,Rr as ta,Rt as sa,Tr as la,Xr as ve,Yn as na,aa as ra,ci as oe,d as oa,di as ca,ei as ce,fi as ia,hi as ma,i as da,ii as ha,j as ua,jt as xa,mi as pa,ni as Ne,oi as ie,pi as we,pn as fa,qn as ba,ri as ga,si as Se,ti as _e,ui as ja,wr as ya,zr as me,zt as va}from"./cells-Biwqg0z6.js";import"./react-dom-Ba2zmJWD.js";import{t as Ce}from"./compiler-runtime-DnimoHo0.js";import{c as Na}from"./utils-C8Yt16Y7.js";import{t as wa}from"./ErrorBoundary-B392qglD.js";import{t as Y}from"./cn-DCUzRj2J.js";import{t as Sa}from"./jsx-runtime-3wZU7vFS.js";import"./fullscreen-CrevbcR_.js";import{r as _a}from"./config-DjP9S1hr.js";import"./popover-B96fOqfH.js";import{_ as Ie,at as Ca,d as Ia,g as de,h as he,it as Ta,m as se,nt as Te,ot as ka,p as ke,rt as Pa,tt as ue}from"./JsonOutput-htT793Wj.js";import"./download-CfUkZlw7.js";import{r as Pe}from"./radio-group-YNmbPL7y.js";import{t as xe}from"./tooltip-C9LWGQ7Y.js";import{r as Fa,t as le}from"./button-W__YVea9.js";import"./dist-CeF1Em5L.js";import{l as ne}from"./arrays-UzzAzxsG.js";import"./cjs-DCKmcMBz.js";import"./useNonce-C2dwX-sI.js";import{i as Ra}from"./strings-DmKKoXrM.js";import{r as $a}from"./requests-B9zEd_sW.js";import{t as Da}from"./createLucideIcon-B8oVfJNp.js";import{t as Va}from"./x-4y-nyVDU.js";import{a as qa,r as Ba}from"./tree-actions-pW_UgP3m.js";import"./markdown-renderer-BOS4jZLt.js";import{t as Fe}from"./plus-r1QITpsJ.js";import{a as Ea}from"./input-BN98e517.js";import{n as La,o as Oa}from"./column-preview-BaRqZ9P8.js";import{t as Ma}from"./workflow-CAJ8rXSh.js";import"./dist-BPoMypmC.js";import"./dist-5bwTcyKs.js";import"./dist-BVNaV53g.js";import"./dist-BrqkjqDe.js";import"./dist-Bm9PT5P9.js";import"./session-D-SddyN0.js";import"./purify.es-Bwm8T4QC.js";import"./dates-CZTDC2tF.js";import{t as za}from"./copy-icon-Cn8LzPNx.js";import{t as Aa}from"./context-BJMN4ll3.js";import"./tooltip-BUmTS76K.js";import"./vega-loader.browser-DLY285WP.js";import"./defaultLocale-CGJY8D9C.js";import"./defaultLocale-DzliDDTm.js";import{t as Re}from"./cell-link-Bx8FWjns.js";import"./chunk-5FQGJX7Z-BIDn9QG0.js";import{r as Ua}from"./html-to-image-ChfBVn8-.js";import{o as Ga}from"./focus-CeTtpVjV.js";import{n as pe}from"./useAsyncData-BcvSvTUt.js";import{a as Ha,i as Ka,n as Wa,o as $e,r as Xa,t as Ja}from"./table-xPvP31p3.js";import"./react-resizable-panels.browser.esm-CLaR27oP.js";import{a as Ya,f as Qa,o as re,t as Za}from"./command-D5LtSvbN.js";import{n as et}from"./icons-BwSNDWAP.js";import{t as at}from"./useDeepCompareMemoize-CbFVGT0j.js";import{t as tt}from"./empty-state-CBq3j1LH.js";import{n as st,t as lt}from"./common-sBRwGAKy.js";import{a as nt,i as De,n as Ve,o as rt,r as qe,t as ot}from"./components-DsJAWbBR.js";import{r as ct,t as Be}from"./add-connection-dialog-DGYhyXo6.js";import{r as it}from"./panel-accordion-state-CgvX-ElJ.js";var mt=Da("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"}]]),U=Ce(),F=ge(We(),1),s=ge(Sa(),1),fe=1;function Ee(a){return 1.75+a*fe}function dt(a){return 3+a*fe}function Le(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 O(a){return{paddingLeft:`${a}rem`}}var ht=Ke(a=>{let e=a(Ne),t=a(na),l=a(da);return ne(e,n=>{if(!n.variable_name)return-1;let m=Object.values(t).find(u=>u.name===n.variable_name);if(!m)return 0;let r=l.inOrderIds.indexOf(m.declaredBy[0]);return r===-1?0:r})});const ut=ra("marimo:datasources:hideEmpty",!1,ea,{getOnInit:!0});function Oe(a){let e=!1,t=[];for(let l of a){if(!oe(l)||!ie(l)){t.push(l);continue}let n=l.child_schemas??[],m=Oe(n);if(l.tables.length===0&&m.length===0){e=!0;continue}if(m===n){t.push(l);continue}e=!0,t.push({...l,child_schemas:m})}return e?t:a}function xt(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=Oe(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 pt=()=>{let a=(0,U.c)(40),[e,t]=F.useState(""),[l,n]=ye(ut),m=je(_e),r=J(ht),u=J(ve),o;e:{if(!l){o=u;break e}let x,w;a[0]===u?(x=a[1],w=a[2]):(x=!1,w=u.map(C=>{let T=xt(C.databases);return T===C.databases?C:(x=!0,{...C,databases:T})}),a[0]=u,a[1]=x,a[2]=w),o=x?w:u}let p=o;if(r.length===0&&p.length===0){let x;return a[3]===Symbol.for("react.memo_cache_sentinel")?(x=(0,s.jsx)(tt,{title:"No tables found",description:"Any datasets/dataframes in the global scope will be shown here.",action:(0,s.jsx)(Be,{children:(0,s.jsxs)(le,{variant:"outline",size:"sm",children:["Add database or catalog",(0,s.jsx)(Fe,{className:"h-4 w-4 ml-2"})]})}),icon:(0,s.jsx)(me,{})}),a[3]=x):x=a[3],x}let h=!!e.trim(),c;a[4]===m?c=a[5]:(c=x=>{m(x.length>0),t(x)},a[4]=m,a[5]=c);let i;a[6]!==e||a[7]!==c?(i=(0,s.jsx)(Ya,{placeholder:"Search tables...",className:"h-6 m-1",value:e,onValueChange:c,rootClassName:"flex-1 border-r border-b-0"}),a[6]=e,a[7]=c,a[8]=i):i=a[8];let f;a[9]===h?f=a[10]:(f=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)(Va,{className:"h-4 w-4"})}),a[9]=h,a[10]=f);let I=!l,b;a[11]!==l||a[12]!==n?(b=()=>n(!l),a[11]=l,a[12]=n,a[13]=b):b=a[13];let y;a[14]!==I||a[15]!==b?(y=(0,s.jsx)(qa,{"data-testid":"datasources-hide-empty-button",isVisible:I,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]=I,a[15]=b,a[16]=y):y=a[16];let v;a[17]===Symbol.for("react.memo_cache_sentinel")?(v=(0,s.jsx)(Be,{children:(0,s.jsx)(le,{variant:"ghost",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden",children:(0,s.jsx)(Fe,{className:"h-4 w-4"})})}),a[17]=v):v=a[17];let g;a[18]!==i||a[19]!==f||a[20]!==y?(g=(0,s.jsxs)("div",{className:"flex items-center w-full border-b",children:[i,f,y,v]}),a[18]=i,a[19]=f,a[20]=y,a[21]=g):g=a[21];let j;if(a[22]!==p||a[23]!==e){let x;a[25]===e?x=a[26]:(x=w=>(0,s.jsx)(ft,{connection:w,hasChildren:w.databases.length>0,children:w.databases.map(C=>(0,s.jsx)(bt,{connection:w,database:C,searchValue:e},C.name))},w.name),a[25]=e,a[26]=x),j=p.map(x),a[22]=p,a[23]=e,a[24]=j}else j=a[24];let S;a[27]!==p.length||a[28]!==r.length?(S=p.length>0&&r.length>0&&(0,s.jsxs)(ke,{className:"pr-2",style:O(A.engine),children:[(0,s.jsx)(et,{className:"h-4 w-4 text-muted-foreground"}),(0,s.jsx)("span",{className:"text-xs",children:"Python"})]}),a[27]=p.length,a[28]=r.length,a[29]=S):S=a[29];let d;a[30]!==e||a[31]!==r?(d=r.length>0&&(0,s.jsx)(be,{tables:r,searchValue:e}),a[30]=e,a[31]=r,a[32]=d):d=a[32];let N;a[33]!==S||a[34]!==d||a[35]!==j?(N=(0,s.jsxs)(Qa,{className:"flex flex-col",children:[j,S,d]}),a[33]=S,a[34]=d,a[35]=j,a[36]=N):N=a[36];let _;return a[37]!==N||a[38]!==g?(_=(0,s.jsxs)(Za,{className:"border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden",shouldFilter:!1,children:[g,N]}),a[37]=N,a[38]=g,a[39]=_):_=a[39],_};var ft=a=>{let e=(0,U.c)(26),{connection:t,children:l,hasChildren:n}=a,m=t.name===ma,r=m?"In-Memory":t.name,{previewDataSourceConnection:u}=$a(),o;e[0]!==t.name||e[1]!==u?(o=async()=>{await u({engine:t.name})},e[0]=t.name,e[1]=u,e[2]=o):o=e[2];let p=o,h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=O(A.engine),e[3]=h):h=e[3];let c;e[4]===t.dialect?c=e[5]:(c=(0,s.jsx)(Je,{className:"h-4 w-4 text-muted-foreground",name:t.dialect}),e[4]=t.dialect,e[5]=c);let i;e[6]===t.dialect?i=e[7]:(i=ya(t.dialect),e[6]=t.dialect,e[7]=i);let f;e[8]===i?f=e[9]:(f=(0,s.jsx)("span",{className:"text-xs",children:i}),e[8]=i,e[9]=f);let I=r,b;e[10]===I?b=e[11]:(b=(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",(0,s.jsx)(rt,{variableName:I}),")"]}),e[10]=I,e[11]=b);let y;e[12]!==p||e[13]!==m?(y=!m&&(0,s.jsx)(Ba,{onClick:p,tooltip:"Refresh connection",className:"ml-auto h-4 p-0",iconClassName:"h-3.5 w-3.5"}),e[12]=p,e[13]=m,e[14]=y):y=e[14];let v;e[15]!==c||e[16]!==f||e[17]!==b||e[18]!==y?(v=(0,s.jsxs)(ke,{className:"pr-2",style:h,children:[c,f,b,y]}),e[15]=c,e[16]=f,e[17]=b,e[18]=y,e[19]=v):v=e[19];let g;e[20]!==l||e[21]!==n?(g=n?l:(0,s.jsx)(se,{content:"No databases available",style:O(A.engineEmpty)}),e[20]=l,e[21]=n,e[22]=g):g=e[22];let j;return e[23]!==g||e[24]!==v?(j=(0,s.jsxs)(s.Fragment,{children:[v,g]}),e[23]=g,e[24]=v,e[25]=j):j=e[25],j},Me=F.createContext(null);function ze(){let a=F.useContext(Me);if(a==null)throw Error("useDataSourceTree must be used within a DataSourceTreeContext.Provider");return a}function Ae(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 bt=a=>{let e=(0,U.c)(21),{connection:t,database:l,searchValue:n}=a,m;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?(m={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]=m):m=e[6];let r=m,u=t.name,o=l.schemas,p;e[7]===l?p=e[8]:(p=Se(l),e[7]=l,e[8]=p);let h;e[9]===Symbol.for("react.memo_cache_sentinel")?(h=[],e[9]=h):h=e[9];let c;e[10]!==l.schemas||e[11]!==p?(c=(0,s.jsx)(Ue,{schemas:o,schemasResolved:p,schemaPath:h,depth:0}),e[10]=l.schemas,e[11]=p,e[12]=c):c=e[12];let i;e[13]!==c||e[14]!==r?(i=(0,s.jsx)(Me.Provider,{value:r,children:c}),e[13]=c,e[14]=r,e[15]=i):i=e[15];let f;return e[16]!==t.name||e[17]!==l||e[18]!==n||e[19]!==i?(f=(0,s.jsx)(gt,{engineName:u,database:l,searchValue:n,children:i}),e[16]=t.name,e[17]=l,e[18]=n,e[19]=i,e[20]=f):f=e[20],f},gt=a=>{let e=(0,U.c)(29),{searchValue:t,engineName:l,database:n,children:m}=a,r;e[0]!==n||e[1]!==t?(r=ia(n,t),e[0]=n,e[1]=t,e[2]=r):r=e[2];let u=r,[o,p]=F.useState(u),[h,c]=F.useState(!1),[i,f]=F.useState(t),[I,b]=F.useState(u);(i!==t||I!==u)&&(f(t),b(u),p(u));let y;e[3]===Symbol.for("react.memo_cache_sentinel")?(y=O(A.database),e[3]=y):y=e[3];let v;e[4]!==o||e[5]!==h?(v=()=>{p(!o),c(!h)},e[4]=o,e[5]=h,e[6]=v):v=e[6];let g=`${l}:${n.name}`,j;e[7]===o?j=e[8]:(j=(0,s.jsx)(Ie,{isExpanded:o}),e[7]=o,e[8]=j);let S=h&&o?"text-foreground":"text-muted-foreground",d;e[9]===S?d=e[10]:(d=Y("h-4 w-4",S),e[9]=S,e[10]=d);let N;e[11]===d?N=e[12]:(N=(0,s.jsx)(me,{className:d}),e[11]=d,e[12]=N);let _=h&&o&&"font-semibold",x;e[13]===_?x=e[14]:(x=Y(_),e[13]=_,e[14]=x);let w;e[15]===n.name?w=e[16]:(w=n.name===""?(0,s.jsx)("i",{children:"Not connected"}):n.name,e[15]=n.name,e[16]=w);let C;e[17]!==x||e[18]!==w?(C=(0,s.jsx)("span",{className:x,children:w}),e[17]=x,e[18]=w,e[19]=C):C=e[19];let T;e[20]!==C||e[21]!==v||e[22]!==g||e[23]!==j||e[24]!==N?(T=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:y,onSelect:v,value:g,children:[j,N,C]}),e[20]=C,e[21]=v,e[22]=g,e[23]=j,e[24]=N,e[25]=T):T=e[25];let k=o&&m,P;return e[26]!==T||e[27]!==k?(P=(0,s.jsxs)(s.Fragment,{children:[T,k]}),e[26]=T,e[27]=k,e[28]=P):P=e[28],P},Ue=a=>{let{schemas:e,schemasResolved:t,depth:l}=a,n=ze(),{engineName:m,databaseName:r,searchValue:u}=n,{addSchemaList:o}=ce(),p=at(a.schemaPath),[h,c]=F.useState(!1),{isPending:i,error:f}=pe(async()=>{if(!t&&m){c(!0);try{o({schemas:(await sa.request({engine:m,database:r,schemaPath:p})).schemas??[],sqlSchemaContext:{engine:m,database:r,schemaPath:p}})}finally{c(!1)}}},[t,m,r,p]),I=O(Ee(l));return i||h?(0,s.jsx)(de,{message:"Loading schemas...",style:I}):f?(0,s.jsx)(he,{error:f,style:I}):e.length===0?(0,s.jsx)(se,{content:"No schemas available",style:I}):(0,s.jsx)(s.Fragment,{children:e.map(b=>ja(b.name)?(0,s.jsx)(be,{tables:b.tables,tablesResolved:oe(b),searchValue:u,sqlTableContext:Ae(n,{schema:b.name,schemaPath:p})},b.name):(0,s.jsx)(jt,{schema:b,schemaPath:[...p,b.name],depth:l},b.name))})},jt=a=>{let e=(0,U.c)(39),{schema:t,schemaPath:l,depth:n}=a,m=ze(),{databaseName:r,searchValue:u}=m,o;e[0]!==t||e[1]!==u?(o=ca(t,u),e[0]=t,e[1]=u,e[2]=o):o=e[2];let p=o,[h,c]=F.useState(p),[i,f]=F.useState(!1),[I,b]=F.useState(u),[y,v]=F.useState(p),g=`${r}:${l.join(".")}`,j;e[3]===t.child_schemas?j=e[4]:(j=t.child_schemas??[],e[3]=t.child_schemas,e[4]=j);let S=j;(I!==u||y!==p)&&(b(u),v(p),c(p));let d;e[5]===n?d=e[6]:(d=O(Ee(n)),e[5]=n,e[6]=d);let N;e[7]!==h||e[8]!==i?(N=()=>{c(!h),f(!i)},e[7]=h,e[8]=i,e[9]=N):N=e[9];let _;e[10]===h?_=e[11]:(_=(0,s.jsx)(Ie,{isExpanded:h}),e[10]=h,e[11]=_);let x=i&&h&&"text-foreground",w;e[12]===x?w=e[13]:(w=Y("h-4 w-4 text-muted-foreground",x),e[12]=x,e[13]=w);let C;e[14]===w?C=e[15]:(C=(0,s.jsx)(Ze,{className:w}),e[14]=w,e[15]=C);let T=i&&h&&"font-semibold",k;e[16]===T?k=e[17]:(k=Y(T),e[16]=T,e[17]=k);let P;e[18]!==t.name||e[19]!==k?(P=(0,s.jsx)("span",{className:k,children:t.name}),e[18]=t.name,e[19]=k,e[20]=P):P=e[20];let $;e[21]!==P||e[22]!==d||e[23]!==N||e[24]!==_||e[25]!==C||e[26]!==g?($=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:d,onSelect:N,value:g,children:[_,C,P]}),e[21]=P,e[22]=d,e[23]=N,e[24]=_,e[25]=C,e[26]=g,e[27]=$):$=e[27];let D;e[28]!==S||e[29]!==n||e[30]!==h||e[31]!==t||e[32]!==l||e[33]!==u||e[34]!==m?(D=h&&(0,s.jsxs)(s.Fragment,{children:[(S.length>0||!ie(t))&&(0,s.jsx)(Ue,{schemas:S,schemasResolved:ie(t),schemaPath:l,depth:n+1}),(0,s.jsx)(be,{tables:t.tables,tablesResolved:oe(t),searchValue:u,tableIndentRem:dt(n),columnIndentRem:Le(n),sqlTableContext:Ae(m,{schema:t.name,schemaPath:l})})]}),e[28]=S,e[29]=n,e[30]=h,e[31]=t,e[32]=l,e[33]=u,e[34]=m,e[35]=D):D=e[35];let R;return e[36]!==$||e[37]!==D?(R=(0,s.jsxs)(s.Fragment,{children:[$,D]}),e[36]=$,e[37]=D,e[38]=R):R=e[38],R},be=a=>{let e=(0,U.c)(31),{tables:t,sqlTableContext:l,searchValue:n,tablesResolved:m,tableIndentRem:r,columnIndentRem:u}=a,o=m===void 0?!0:m,{addTableList:p}=ce(),[h,c]=F.useState(!1),i;e[0]!==p||e[1]!==l||e[2]!==o?(i=async()=>{if(!o&&l){c(!0);let{engine:d,database:N,schema:_,schemaPath:x}=l,w=await Xe.request({engine:d,database:N,schema:_,schemaPath:x??[]});if(!(w!=null&&w.tables))throw c(!1),Error("No tables available");p({tables:w.tables,sqlTableContext:l}),c(!1)}},e[0]=p,e[1]=l,e[2]=o,e[3]=i):i=e[3];let f;e[4]!==l||e[5]!==o?(f=[o,l],e[4]=l,e[5]=o,e[6]=f):f=e[6];let{isPending:I,error:b}=pe(i,f),y=r??A.tableLoading,v;e[7]===y?v=e[8]:(v=O(y),e[7]=y,e[8]=v);let g=v;if(I||h){let d;return e[9]===g?d=e[10]:(d=(0,s.jsx)(de,{message:"Loading tables...",style:g}),e[9]=g,e[10]=d),d}if(b){let d;return e[11]!==b||e[12]!==g?(d=(0,s.jsx)(he,{error:b,style:g}),e[11]=b,e[12]=g,e[13]=d):d=e[13],d}if(t.length===0){let d;return e[14]===g?d=e[15]:(d=(0,s.jsx)(se,{content:"No tables found",style:g}),e[14]=g,e[15]=d),d}let j;if(e[16]!==u||e[17]!==n||e[18]!==l||e[19]!==r||e[20]!==t){let d;e[22]===n?d=e[23]:(d=x=>n?x.name.toLowerCase().includes(n.toLowerCase()):!0,e[22]=n,e[23]=d);let N=t.filter(d),_;e[24]!==u||e[25]!==n||e[26]!==l||e[27]!==r?(_=x=>(0,s.jsx)(yt,{table:x,sqlTableContext:l,isSearching:!!n,tableIndentRem:r,columnIndentRem:u},x.name),e[24]=u,e[25]=n,e[26]=l,e[27]=r,e[28]=_):_=e[28],j=N.map(_),e[16]=u,e[17]=n,e[18]=l,e[19]=r,e[20]=t,e[21]=j}else j=e[21];let S;return e[29]===j?S=e[30]:(S=(0,s.jsx)(s.Fragment,{children:j}),e[29]=j,e[30]=S),S},yt=a=>{let e=(0,U.c)(69),{table:t,sqlTableContext:l,isSearching:n,tableIndentRem:m,columnIndentRem:r}=a,{addTable:u}=ce(),[o,p]=F.useState(!1),h=t.columns.length>0,c;e[0]!==u||e[1]!==o||e[2]!==l||e[3]!==t.name||e[4]!==h?(c=async()=>{if(o&&!h&&l){let{engine:E,database:ee,schema:ae,schemaPath:He}=l,te=await va.request({engine:E,database:ee,schema:ae,tableName:t.name,schemaPath:He??[]});if(!(te!=null&&te.table))throw Error("No table details available");u({table:te.table,sqlTableContext:l})}},e[0]=u,e[1]=o,e[2]=l,e[3]=t.name,e[4]=h,e[5]=c):c=e[5];let i;e[6]!==o||e[7]!==h?(i=[o,h],e[6]=o,e[7]=h,e[8]=i):i=e[8];let{isFetching:f,isPending:I,error:b}=pe(c,i),y=J(Na),v=Ga(),{createNewCell:g}=Qe(),j=Pe(),S;e[9]!==j||e[10]!==y||e[11]!==g||e[12]!==v||e[13]!==l||e[14]!==t?(S=()=>{Ua({autoInstantiate:y,createNewCell:g,fromCellId:v}),j((()=>{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 we({table:t,columnName:"*",sqlTableContext:l});switch(t.source_type){case"local":return`mo.ui.table(${t.name})`;case"duckdb":case"connection":return we({table:t,columnName:"*",sqlTableContext:l});default:return Ra(t.source_type),""}})())},e[9]=j,e[10]=y,e[11]=g,e[12]=v,e[13]=l,e[14]=t,e[15]=S):S=e[15];let d=S,N;e[16]!==t.num_columns||e[17]!==t.num_rows?(N=()=>{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]=N):N=e[18];let _=N,x;e[19]!==r||e[20]!==b||e[21]!==f||e[22]!==I||e[23]!==l||e[24]!==t?(x=()=>{let E=O(r??A.tableLoading);if(I||f)return(0,s.jsx)(de,{message:"Loading columns...",style:E});if(b)return(0,s.jsx)(he,{error:b,style:E});let ee=t.columns;return ee.length===0?(0,s.jsx)(se,{content:"No columns found",style:E}):ee.map(ae=>(0,s.jsx)(vt,{table:t,column:ae,sqlTableContext:l,columnIndentRem:r},ae.name))},e[19]=r,e[20]=b,e[21]=f,e[22]=I,e[23]=l,e[24]=t,e[25]=x):x=e[25];let w=x,C;e[26]!==o||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"?Ye:ta,{className:"h-3 w-3",strokeWidth:o||n?2.5:void 0})},e[26]=o,e[27]=n,e[28]=t.source_type,e[29]=t.type,e[30]=C):C=e[30];let T=C,k;e[31]!==l||e[32]!==t.name?(k=pa(l,t.name),e[31]=l,e[32]=t.name,e[33]=k):k=e[33];let P=k,$=m??(l?A.tableSchemaless:0),D=(o||n)&&"font-semibold",R;e[34]===D?R=e[35]:(R=Y("rounded-none group h-8 cursor-pointer",D),e[34]=D,e[35]=R);let V;e[36]===$?V=e[37]:(V=O($),e[36]=$,e[37]=V);let q;e[38]===o?q=e[39]:(q=()=>p(!o),e[38]=o,e[39]=q);let L;e[40]===T?L=e[41]:(L=T(),e[40]=T,e[41]=L);let M;e[42]===t.name?M=e[43]:(M=(0,s.jsx)("span",{className:"text-sm",children:t.name}),e[42]=t.name,e[43]=M);let z;e[44]!==L||e[45]!==M?(z=(0,s.jsxs)("div",{className:"flex gap-2 items-center flex-1 pl-1",children:[L,M]}),e[44]=L,e[45]=M,e[46]=z):z=e[46];let B;e[47]===_?B=e[48]:(B=_(),e[47]=_,e[48]=B);let H;e[49]===d?H=e[50]:(H=Fa.stopPropagation(()=>d()),e[49]=d,e[50]=H);let Q;e[51]===Symbol.for("react.memo_cache_sentinel")?(Q=(0,s.jsx)(Oa,{className:"h-3 w-3"}),e[51]=Q):Q=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)(le,{className:"group-hover:inline-flex hidden",variant:"text",size:"icon",onClick:H,children:Q})}),e[52]=H,e[53]=K);let W;e[54]!==o||e[55]!==V||e[56]!==q||e[57]!==z||e[58]!==B||e[59]!==K||e[60]!==R||e[61]!==P?(W=(0,s.jsxs)(re,{className:R,style:V,value:P,"aria-selected":o,forceMount:!0,onSelect:q,children:[z,B,K]}),e[54]=o,e[55]=V,e[56]=q,e[57]=z,e[58]=B,e[59]=K,e[60]=R,e[61]=P,e[62]=W):W=e[62];let X;e[63]!==o||e[64]!==w?(X=o&&w(),e[63]=o,e[64]=w,e[65]=X):X=e[65];let Z;return e[66]!==W||e[67]!==X?(Z=(0,s.jsxs)(s.Fragment,{children:[W,X]}),e[66]=W,e[67]=X,e[68]=Z):Z=e[68],Z},vt=a=>{var M,z;let e=(0,U.c)(51),{table:t,column:l,sqlTableContext:n,columnIndentRem:m}=a,[r,u]=F.useState(!1),o=J(_e),p=je(ga);o&&r&&u(!1),p(r?B=>new Set([...B,`${t.name}:${l.name}`]):B=>(B.delete(`${t.name}:${l.name}`),new Set(B)));let h=Pe(),{columnsPreviews:c}=ha(),i;e[0]!==l.name||e[1]!==t.primary_keys?(i=((M=t.primary_keys)==null?void 0:M.includes(l.name))||!1,e[0]=l.name,e[1]=t.primary_keys,e[2]=i):i=e[2];let f=i,I;e[3]!==l.name||e[4]!==t.indexes?(I=((z=t.indexes)==null?void 0:z.includes(l.name))||!1,e[3]=l.name,e[4]=t.indexes,e[5]=I):I=e[5];let b=I,y;e[6]===h?y=e[7]:(y=B=>{h(B)},e[6]=h,e[7]=y);let v=y,g=Nt,j=r?"font-semibold":"",S;e[8]!==l.name||e[9]!==j?(S=(0,s.jsx)("span",{className:j,children:l.name}),e[8]=l.name,e[9]=j,e[10]=S):S=e[10];let d=S,N=`${t.name}.${l.name}`,_=`${t.name}.${l.name}`,x;e[11]===r?x=e[12]:(x=()=>u(!r),e[11]=r,e[12]=x);let w;e[13]!==m||e[14]!==n?(w=m??(n?Le(0):A.columnLocal),e[13]=m,e[14]=n,e[15]=w):w=e[15];let C;e[16]===w?C=e[17]:(C=O(w),e[16]=w,e[17]=C);let T;e[18]!==l.type||e[19]!==d?(T=(0,s.jsx)(Ia,{columnName:d,dataType:l.type}),e[18]=l.type,e[19]=d,e[20]=T):T=e[20];let k;e[21]===f?k=e[22]:(k=f&&g({tooltipContent:"Primary key",content:"PK"}),e[21]=f,e[22]=k);let P;e[23]===b?P=e[24]:(P=b&&g({tooltipContent:"Indexed",content:"IDX"}),e[23]=b,e[24]=P);let $;e[25]!==C||e[26]!==T||e[27]!==k||e[28]!==P?($=(0,s.jsxs)("div",{className:"flex flex-row gap-2 items-center flex-1",style:C,children:[T,k,P]}),e[25]=C,e[26]=T,e[27]=k,e[28]=P,e[29]=$):$=e[29];let D;e[30]===l.name?D=e[31]:(D=(0,s.jsx)(xe,{content:"Copy column name",delayDuration:400,children:(0,s.jsx)(le,{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]=D);let R;e[32]===l.external_type?R=e[33]:(R=(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:l.external_type}),e[32]=l.external_type,e[33]=R);let V;e[34]!==$||e[35]!==D||e[36]!==R||e[37]!==N||e[38]!==_||e[39]!==x?(V=(0,s.jsxs)(re,{className:"rounded-none py-1 group cursor-pointer",value:_,onSelect:x,children:[$,D,R]},N),e[34]=$,e[35]=D,e[36]=R,e[37]=N,e[38]=_,e[39]=x,e[40]=V):V=e[40];let q;e[41]!==l||e[42]!==c||e[43]!==v||e[44]!==r||e[45]!==n||e[46]!==t?(q=r&&(0,s.jsx)("div",{className:"pr-2 py-2 bg-(--slate-1) shadow-inner border-b",style:O(A.columnPreview),children:(0,s.jsx)(wa,{children:(0,s.jsx)(La,{table:t,column:l,onAddColumnChart:v,preview:c.get(n?`${n.database}.${n.schema}.${t.name}:${l.name}`:`${t.name}:${l.name}`),sqlTableContext:n})})}),e[41]=l,e[42]=c,e[43]=v,e[44]=r,e[45]=n,e[46]=t,e[47]=q):q=e[47];let L;return e[48]!==V||e[49]!==q?(L=(0,s.jsxs)(s.Fragment,{children:[V,q]}),e[48]=V,e[49]=q,e[50]=L):L=e[50],L};function Nt(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"},wt=[{id:G.name,accessorFn:a=>[a.name,a.declaredBy],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(ue,{header:"Name",column:a}),cell:({getValue:a})=>{let[e,t]=a();return(0,s.jsx)(lt,{name:e,declaredBy:t})}},{id:G.type,accessorFn:a=>[a.dataType,a.value],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(ue,{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)(ue,{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=m=>{let r=oa(m);r&&fa(r,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)(Re,{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((m,r)=>(0,s.jsxs)("span",{className:"flex",children:[(0,s.jsx)(Re,{variant:"focus",cellId:m,skipScroll:!0,className:"whitespace-nowrap text-destructive",onClick:()=>n(m)},m),r<e.length-1&&", "]},m))})]}),(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)(Ma,{className:"w-3.5 h-3.5 text-muted-foreground"})}),(0,s.jsx)(st,{maxCount:3,cellIds:t,skipScroll:!0,onClick:n})]})]})}}];function St({variables:a,sort:e,cellIdToIndex:t}){e||(e={id:G.defs,desc:!1});let l=[];switch(e.id){case G.name:l=ne(a,n=>n.name);break;case G.type:l=ne(a,n=>n.dataType);break;case G.defs:l=ne(a,n=>t.get(n.declaredBy[0]));break}return e.desc?l.toReversed():l}const Ge=(0,F.memo)(({className:a,cellIds:e,variables:t})=>{let[l,n]=F.useState([]),[m,r]=F.useState(""),u=aa(),{locale:o}=Aa(),p=(0,F.useMemo)(()=>{let c=i=>{let f=u[i];return xa(f)?`cell-${e.indexOf(i)}`:f??`cell-${e.indexOf(i)}`};return Object.values(t).map(i=>({...i,declaredByNames:i.declaredBy.map(c),usedByNames:i.usedBy.map(c)}))},[t,u,e]),h=Pa({data:(0,F.useMemo)(()=>{let c=new Map;return e.forEach((i,f)=>c.set(i,f)),St({variables:p,sort:l[0],cellIdToIndex:c})},[p,l,e]),columns:wt,getCoreRowModel:Ta(),onGlobalFilterChange:r,getFilteredRowModel:Ca(),enableFilters:!0,enableGlobalFilter:!0,enableColumnPinning:!1,getColumnCanGlobalFilter(c){return c.columnDef.enableGlobalFilter??!0},globalFilterFn:"auto",manualSorting:!0,locale:o,onSortingChange:n,getSortedRowModel:ka(),state:{sorting:l,globalFilter:m}});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(Ea,{className:"w-full",placeholder:"Search",value:m,onChange:c=>r(c.target.value)}),(0,s.jsxs)(Ja,{className:Y("w-full text-sm flex-1 border-separate border-spacing-0",a),children:[(0,s.jsx)(Ha,{children:(0,s.jsx)($e,{className:"whitespace-nowrap text-xs",children:h.getFlatHeaders().map(c=>(0,s.jsx)(Ka,{className:"sticky top-0 bg-background border-b",children:Te(c.column.columnDef.header,c.getContext())},c.id))})}),(0,s.jsx)(Wa,{children:h.getRowModel().rows.map(c=>(0,s.jsx)($e,{className:"hover:bg-accent",children:c.getVisibleCells().map(i=>(0,s.jsx)(Xa,{className:"border-b",children:Te(i.column.columnDef.cell,i.getContext())},i.id))},c.id))})]})]})});Ge.displayName="VariableTable";var _t=Ce(),Ct=()=>{let a=(0,_t.c)(28),e=ba(),t=ua(),l=J(Ne),n=J(ve),m=ct("database"),[r,u]=ye(it),o=l.length+n.length,p;a[0]!==o||a[1]!==r.hasUserInteracted||a[2]!==r.openSections?(p=!r.hasUserInteracted&&o>0?[...new Set([...r.openSections,"datasources"])]:r.openSections,a[0]=o,a[1]=r.hasUserInteracted,a[2]=r.openSections,a[3]=p):p=a[3];let h=p,c;a[4]===u?c=a[5]:(c=x=>{u({openSections:x,hasUserInteracted:!0})},a[4]=u,a[5]=c);let i=c,f=!h.includes("datasources")&&o>0,I=m.length>0,b;a[6]===Symbol.for("react.memo_cache_sentinel")?(b=(0,s.jsx)(me,{className:"w-4 h-4"}),a[6]=b):b=a[6];let y;a[7]!==o||a[8]!==f?(y=f&&(0,s.jsx)(nt,{children:o}),a[7]=o,a[8]=f,a[9]=y):y=a[9];let v;a[10]!==m.length||a[11]!==I?(v=I&&(0,s.jsx)(ot,{count:m.length,type:"database"}),a[10]=m.length,a[11]=I,a[12]=v):v=a[12];let g;a[13]!==y||a[14]!==v?(g=(0,s.jsxs)(De,{children:[b,"Data sources",y,v]}),a[13]=y,a[14]=v,a[15]=g):g=a[15];let j;a[16]===Symbol.for("react.memo_cache_sentinel")?(j=(0,s.jsx)(Ve,{children:(0,s.jsx)(pt,{})}),a[16]=j):j=a[16];let S;a[17]===g?S=a[18]:(S=(0,s.jsxs)(qe,{value:"datasources",children:[g,j]}),a[17]=g,a[18]=S);let d;a[19]===Symbol.for("react.memo_cache_sentinel")?(d=(0,s.jsxs)(De,{children:[(0,s.jsx)(la,{className:"w-4 h-4"}),"Variables"]}),a[19]=d):d=a[19];let N;a[20]!==t||a[21]!==e?(N=(0,s.jsxs)(qe,{value:"variables",lastItem:!0,children:[d,(0,s.jsx)(Ve,{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)(Ge,{cellIds:t.inOrderIds,variables:e})})]}),a[20]=t,a[21]=e,a[22]=N):N=a[22];let _;return a[23]!==i||a[24]!==h||a[25]!==S||a[26]!==N?(_=(0,s.jsxs)(_a,{type:"multiple",value:h,onValueChange:i,className:"flex flex-col h-full overflow-auto",children:[S,N]}),a[23]=i,a[24]=h,a[25]=S,a[26]=N,a[27]=_):_=a[27],_};export{Ct as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as Ke}from"./chunk-C4rtOYze.js";import{d as ce,i as ma,l as _e,p as pa,u as ee}from"./useEvent-GCVIknuR.js";import{t as ha}from"./react-C60yClUi.js";import{$n as fa,Bn as ba,E as Je,Gn as Ye,Hn as xa,Hr as ya,In as ka,Jt as ga,Lr as Xe,Nt as Qe,Rr as Ze,T as va,Ur as et,Vn as wa,Wn as ja,Xi as Na,aa as tt,g as Ca,m as at,pa as Le,qr as Sa,t as za,ta as Ia,xi as Ma,y as Oa,zr as _a}from"./cells-Biwqg0z6.js";import{P as st,T as he,b as je}from"./zod-BIDX-mZr.js";import{t as W}from"./compiler-runtime-DnimoHo0.js";import{C as La,n as Fa,r as Pa}from"./ai-model-dropdown-BUCPZ0ND.js";import{g as ue,n as Wa}from"./useEventListener-DpNnLPuE.js";import{t as nt}from"./objects-CrbstYTV.js";import{C as Ea,r as Aa}from"./utils-C8Yt16Y7.js";import{n as B,t as ot}from"./constants-DifUxsbZ.js";import{A as qa,M as rt,N as fe,O as Da,T as it,j as Ra,k as Ta,v as lt}from"./config-DFK5eCC3.js";import{t as $a}from"./switch-ulnbZFaI.js";import{c as Ha}from"./readonly-python-code-BHrAhtGV.js";import{t as be}from"./cn-DCUzRj2J.js";import{t as Va}from"./jsx-runtime-3wZU7vFS.js";import{o as Ba}from"./alert-dialog-D_kB5FIu.js";import{a as Ua,c as Ga,o as Ka,s as Ja}from"./popover-B96fOqfH.js";import{a as Ya,c as dt,i as ct,n as ut,r as Xa,s as mt,t as pt}from"./select-CPo-KTTe.js";import{$ as Qa,Lt as ht}from"./JsonOutput-htT793Wj.js";import{a as Za,c as es,o as ts,p as me,t as as}from"./download-CfUkZlw7.js";import{n as ss,t as ns}from"./radio-group-YNmbPL7y.js";import{t as os}from"./tooltip-C9LWGQ7Y.js";import{n as rs,r as is,t as oe}from"./button-W__YVea9.js";import{i as ls,r as ft,t as Fe}from"./strings-DmKKoXrM.js";import{r as re}from"./requests-B9zEd_sW.js";import{t as _}from"./createLucideIcon-B8oVfJNp.js";import{F as ds,I as cs,L as bt,P as xt,a as yt,i as kt,u as us}from"./layout-YPBtS2D6.js";import{t as gt}from"./check-CyyJPf_5.js";import{r as ms}from"./useCellActionButton-De17Z9R3.js";import{t as Pe}from"./code-DzY0vbKf.js";import{t as ps}from"./copy-DlR5UiIE.js";import{t as vt}from"./eye-off-DfXRjba3.js";import{t as wt}from"./external-link-C8y9rFms.js";import{t as xe}from"./file-BjlLTeSV.js";import{t as jt}from"./globe-C2tUp3NL.js";import{n as hs,r as fs,t as bs}from"./youtube-Bm-0BwCx.js";import{n as xs}from"./components-CGGSwziZ.js";import{i as ys,n as ks,r as gs}from"./markdown-export-D-ZHIs71.js";import{t as Nt}from"./image-Dvcyi0uu.js";import{t as vs}from"./link-DCLOj_aN.js";import{t as Ne}from"./spinner-Cj3eM5bt.js";import{r as ws}from"./input-BN98e517.js";import{t as js}from"./settings-IZvUqDP4.js";import{t as Ns}from"./sparkles-DwqcWrJl.js";import{g as Cs}from"./form-B10bgcbQ.js";import{t as Ss}from"./square-DVd8Y612.js";import{t as Ct}from"./triangle-alert-DGiOSARf.js";import{t as de}from"./use-toast-DjpWVza6.js";import{n as We,t as zs}from"./paths-D5zczhUD.js";import{o as Is}from"./session-D-SddyN0.js";import{n as Ce}from"./copy-HCSOwOwk.js";import{t as Ee}from"./copy-icon-Cn8LzPNx.js";import{r as Ms}from"./useRunCells-CAfRBo7h.js";import{a as Ae,c as qe,i as Os,n as De,r as Re}from"./dialog-WU4x2UpK.js";import{n as Se}from"./ImperativeModal-Dxj31V4A.js";import{r as _s,t as St}from"./share-c5Zh8BM8.js";import{n as zt,t as It}from"./alert-CHWQT4zh.js";import{a as Mt}from"./cell-link-Bx8FWjns.js";import{n as Te}from"./useAsyncData-BcvSvTUt.js";import{t as Ls}from"./icons-BwSNDWAP.js";import{i as Fs,n as Ot}from"./error-entries-DpvSrZSw.js";import{n as _t,t as Ps}from"./pair-with-agent-modal-DiDLAjxV.js";import{n as Lt}from"./add-connection-dialog-
|
|
1
|
+
import{o as Ke}from"./chunk-C4rtOYze.js";import{d as ce,i as ma,l as _e,p as pa,u as ee}from"./useEvent-GCVIknuR.js";import{t as ha}from"./react-C60yClUi.js";import{$n as fa,Bn as ba,E as Je,Gn as Ye,Hn as xa,Hr as ya,In as ka,Jt as ga,Lr as Xe,Nt as Qe,Rr as Ze,T as va,Ur as et,Vn as wa,Wn as ja,Xi as Na,aa as tt,g as Ca,m as at,pa as Le,qr as Sa,t as za,ta as Ia,xi as Ma,y as Oa,zr as _a}from"./cells-Biwqg0z6.js";import{P as st,T as he,b as je}from"./zod-BIDX-mZr.js";import{t as W}from"./compiler-runtime-DnimoHo0.js";import{C as La,n as Fa,r as Pa}from"./ai-model-dropdown-BUCPZ0ND.js";import{g as ue,n as Wa}from"./useEventListener-DpNnLPuE.js";import{t as nt}from"./objects-CrbstYTV.js";import{C as Ea,r as Aa}from"./utils-C8Yt16Y7.js";import{n as B,t as ot}from"./constants-DifUxsbZ.js";import{A as qa,M as rt,N as fe,O as Da,T as it,j as Ra,k as Ta,v as lt}from"./config-DFK5eCC3.js";import{t as $a}from"./switch-ulnbZFaI.js";import{c as Ha}from"./readonly-python-code-BHrAhtGV.js";import{t as be}from"./cn-DCUzRj2J.js";import{t as Va}from"./jsx-runtime-3wZU7vFS.js";import{o as Ba}from"./alert-dialog-D_kB5FIu.js";import{a as Ua,c as Ga,o as Ka,s as Ja}from"./popover-B96fOqfH.js";import{a as Ya,c as dt,i as ct,n as ut,r as Xa,s as mt,t as pt}from"./select-CPo-KTTe.js";import{$ as Qa,Lt as ht}from"./JsonOutput-htT793Wj.js";import{a as Za,c as es,o as ts,p as me,t as as}from"./download-CfUkZlw7.js";import{n as ss,t as ns}from"./radio-group-YNmbPL7y.js";import{t as os}from"./tooltip-C9LWGQ7Y.js";import{n as rs,r as is,t as oe}from"./button-W__YVea9.js";import{i as ls,r as ft,t as Fe}from"./strings-DmKKoXrM.js";import{r as re}from"./requests-B9zEd_sW.js";import{t as _}from"./createLucideIcon-B8oVfJNp.js";import{F as ds,I as cs,L as bt,P as xt,a as yt,i as kt,u as us}from"./layout-YPBtS2D6.js";import{t as gt}from"./check-CyyJPf_5.js";import{r as ms}from"./useCellActionButton-De17Z9R3.js";import{t as Pe}from"./code-DzY0vbKf.js";import{t as ps}from"./copy-DlR5UiIE.js";import{t as vt}from"./eye-off-DfXRjba3.js";import{t as wt}from"./external-link-C8y9rFms.js";import{t as xe}from"./file-BjlLTeSV.js";import{t as jt}from"./globe-C2tUp3NL.js";import{n as hs,r as fs,t as bs}from"./youtube-Bm-0BwCx.js";import{n as xs}from"./components-CGGSwziZ.js";import{i as ys,n as ks,r as gs}from"./markdown-export-D-ZHIs71.js";import{t as Nt}from"./image-Dvcyi0uu.js";import{t as vs}from"./link-DCLOj_aN.js";import{t as Ne}from"./spinner-Cj3eM5bt.js";import{r as ws}from"./input-BN98e517.js";import{t as js}from"./settings-IZvUqDP4.js";import{t as Ns}from"./sparkles-DwqcWrJl.js";import{g as Cs}from"./form-B10bgcbQ.js";import{t as Ss}from"./square-DVd8Y612.js";import{t as Ct}from"./triangle-alert-DGiOSARf.js";import{t as de}from"./use-toast-DjpWVza6.js";import{n as We,t as zs}from"./paths-D5zczhUD.js";import{o as Is}from"./session-D-SddyN0.js";import{n as Ce}from"./copy-HCSOwOwk.js";import{t as Ee}from"./copy-icon-Cn8LzPNx.js";import{r as Ms}from"./useRunCells-CAfRBo7h.js";import{a as Ae,c as qe,i as Os,n as De,r as Re}from"./dialog-WU4x2UpK.js";import{n as Se}from"./ImperativeModal-Dxj31V4A.js";import{r as _s,t as St}from"./share-c5Zh8BM8.js";import{n as zt,t as It}from"./alert-CHWQT4zh.js";import{a as Mt}from"./cell-link-Bx8FWjns.js";import{n as Te}from"./useAsyncData-BcvSvTUt.js";import{t as Ls}from"./icons-BwSNDWAP.js";import{i as Fs,n as Ot}from"./error-entries-DpvSrZSw.js";import{n as _t,t as Ps}from"./pair-with-agent-modal-DiDLAjxV.js";import{n as Lt}from"./add-connection-dialog-DGYhyXo6.js";import{t as Ws}from"./github-CE-ZvKrv.js";import{n as Ft}from"./marimo-icons-BT3Q9hP-.js";import{t as Es}from"./links-CWv16njv.js";import{i as As,n as qs,t as $e}from"./skeleton-BsZq3Vmq.js";import{t as Pt}from"./types-l38AsXoI.js";var Ds=_("circle-chevron-down",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 10-4 4-4-4",key:"894hmk"}]]),Rs=_("circle-chevron-right",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m10 8 4 4-4 4",key:"1wy4r4"}]]),Wt=_("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"}]]),Et=_("cloud-download",[["path",{d:"M12 13v8l-4-4",key:"1f5nwf"}],["path",{d:"m12 21 4-4",key:"1lfcce"}],["path",{d:"M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284",key:"ui1hmy"}]]),At=_("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"}]]),qt=_("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"}]]),Ts=_("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"}]]),$s=_("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"}]]),Hs=_("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"}]]),Dt=_("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"}]]),Rt=_("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"}]]),Vs=_("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]),Tt=_("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"}]]),Bs=_("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"}]]),Us=_("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"}]]),$t=_("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"}]]),Gs=W(),L=Ke(ha(),1);function He(t,e){let s=(0,Gs.c)(11),n;s[0]===e?n=s[1]:(n=new Na(e),s[0]=e,s[1]=n);let i=n,l;s[2]!==t||s[3]!==i?(l=()=>i.get(t),s[2]=t,s[3]=i,s[4]=l):l=s[4];let[o,r]=(0,L.useState)(l),d;s[5]!==t||s[6]!==i?(d=m=>{r(m),i.set(t,m)},s[5]=t,s[6]=i,s[7]=d):d=s[7];let c=d,u;return s[8]!==c||s[9]!==o?(u=[o,c],s[8]=c,s[9]=o,s[10]=u):u=s[10],u}function Ks(t,e){return{...t,Binaries:{...t.Binaries,Browser:e}}}function Js(t,e,s,n){return{marimo:t,Locale:s||void 0,Binaries:{Browser:e},"Environment Collection Error":n}}function Ve(t,e){let s=Math.max(2,...Array.from(e.matchAll(/`+/g),i=>i[0].length)),n="`".repeat(s+1);return`${n}${t}
|
|
2
2
|
${e}
|
|
3
3
|
${n}`}function Ys(t,e){let s=t.includes("?")?"&":"?",n=[],i=t,l=0;for(let[o,r]of Object.entries(e)){if(r.length===0)continue;let d=`${o}=${encodeURIComponent(r)}`,c=`${i}${l===0?s:"&"}${d}`;if(c.length>6e3){n.push(o);continue}i=c,l+=1}return{url:i,omitted:n}}function Be(t,e){return["<details>",`<summary>${Fe.htmlEscape(t)??""}</summary>`,"",e,"","</details>"].join(`
|
|
4
4
|
`)}function Xs(t){return Be("Environment",Ve("json",JSON.stringify(t,null,2)))}function Ht(t){return Be("Errors",Ve("text",t.map(Ot).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-
|
|
69
|
+
<script type="module" crossorigin src="./assets/index-T5Rre8Dj.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-BPPi7vOr.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/objects-CrbstYTV.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/chunk-C4rtOYze.js">
|
package/package.json
CHANGED
package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap
CHANGED
|
@@ -117,6 +117,49 @@ exports[`generateStorageCode > GCS > without service account key (default creden
|
|
|
117
117
|
store = GCSStore("my-bucket")"
|
|
118
118
|
`;
|
|
119
119
|
|
|
120
|
+
exports[`generateStorageCode > GitHub > public repo 1`] = `
|
|
121
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
122
|
+
|
|
123
|
+
fs = GithubFileSystem(
|
|
124
|
+
org="marimo-team",
|
|
125
|
+
repo="marimo",
|
|
126
|
+
)"
|
|
127
|
+
`;
|
|
128
|
+
|
|
129
|
+
exports[`generateStorageCode > GitHub > with sha 1`] = `
|
|
130
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
131
|
+
|
|
132
|
+
fs = GithubFileSystem(
|
|
133
|
+
org="marimo-team",
|
|
134
|
+
repo="marimo",
|
|
135
|
+
sha="main",
|
|
136
|
+
)"
|
|
137
|
+
`;
|
|
138
|
+
|
|
139
|
+
exports[`generateStorageCode > GitHub > with username and token 1`] = `
|
|
140
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
141
|
+
|
|
142
|
+
fs = GithubFileSystem(
|
|
143
|
+
org="marimo-team",
|
|
144
|
+
repo="marimo",
|
|
145
|
+
username="octocat",
|
|
146
|
+
token="ghp_example",
|
|
147
|
+
)"
|
|
148
|
+
`;
|
|
149
|
+
|
|
150
|
+
exports[`generateStorageCode > GitHub > with username and token from secrets 1`] = `
|
|
151
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
152
|
+
import os
|
|
153
|
+
|
|
154
|
+
_token = os.environ.get("GITHUB_TOKEN")
|
|
155
|
+
fs = GithubFileSystem(
|
|
156
|
+
org="marimo-team",
|
|
157
|
+
repo="marimo",
|
|
158
|
+
username="octocat",
|
|
159
|
+
token=_token,
|
|
160
|
+
)"
|
|
161
|
+
`;
|
|
162
|
+
|
|
120
163
|
exports[`generateStorageCode > Google Drive > with default auth (no credentials) 1`] = `
|
|
121
164
|
"from gdrive_fsspec import GoogleDriveFileSystem
|
|
122
165
|
|
|
@@ -329,6 +329,83 @@ describe("generateStorageCode", () => {
|
|
|
329
329
|
});
|
|
330
330
|
});
|
|
331
331
|
|
|
332
|
+
describe("GitHub", () => {
|
|
333
|
+
it("public repo", () => {
|
|
334
|
+
expect(
|
|
335
|
+
generateStorageCode(
|
|
336
|
+
{ type: "github", org: "marimo-team", repo: "marimo" },
|
|
337
|
+
{ library: "fsspec" },
|
|
338
|
+
),
|
|
339
|
+
).toMatchSnapshot();
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
it("with sha", () => {
|
|
343
|
+
expect(
|
|
344
|
+
generateStorageCode(
|
|
345
|
+
{
|
|
346
|
+
type: "github",
|
|
347
|
+
org: "marimo-team",
|
|
348
|
+
repo: "marimo",
|
|
349
|
+
sha: "main",
|
|
350
|
+
},
|
|
351
|
+
{ library: "fsspec" },
|
|
352
|
+
),
|
|
353
|
+
).toMatchSnapshot();
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
it("escapes quotes and backslashes in sha", () => {
|
|
357
|
+
expect(
|
|
358
|
+
generateStorageCode(
|
|
359
|
+
{
|
|
360
|
+
type: "github",
|
|
361
|
+
org: "marimo-team",
|
|
362
|
+
repo: "marimo",
|
|
363
|
+
sha: 'feature/\\"new"',
|
|
364
|
+
},
|
|
365
|
+
{ library: "fsspec" },
|
|
366
|
+
),
|
|
367
|
+
).toMatchInlineSnapshot(`
|
|
368
|
+
"from fsspec.implementations.github import GithubFileSystem
|
|
369
|
+
|
|
370
|
+
fs = GithubFileSystem(
|
|
371
|
+
org="marimo-team",
|
|
372
|
+
repo="marimo",
|
|
373
|
+
sha="feature/\\\\\\"new\\"",
|
|
374
|
+
)"
|
|
375
|
+
`);
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
it("with username and token", () => {
|
|
379
|
+
expect(
|
|
380
|
+
generateStorageCode(
|
|
381
|
+
{
|
|
382
|
+
type: "github",
|
|
383
|
+
org: "marimo-team",
|
|
384
|
+
repo: "marimo",
|
|
385
|
+
username: "octocat",
|
|
386
|
+
token: "ghp_example",
|
|
387
|
+
},
|
|
388
|
+
{ library: "fsspec" },
|
|
389
|
+
),
|
|
390
|
+
).toMatchSnapshot();
|
|
391
|
+
});
|
|
392
|
+
|
|
393
|
+
it("with username and token from secrets", () => {
|
|
394
|
+
expect(
|
|
395
|
+
generateStorageCode(
|
|
396
|
+
{
|
|
397
|
+
type: "github",
|
|
398
|
+
org: "marimo-team",
|
|
399
|
+
repo: "marimo",
|
|
400
|
+
username: "octocat",
|
|
401
|
+
token: prefixSecret("GITHUB_TOKEN"),
|
|
402
|
+
},
|
|
403
|
+
{ library: "fsspec" },
|
|
404
|
+
),
|
|
405
|
+
).toMatchSnapshot();
|
|
406
|
+
});
|
|
407
|
+
});
|
|
408
|
+
|
|
332
409
|
describe("invalid cases", () => {
|
|
333
410
|
it("throws for empty S3 bucket", () => {
|
|
334
411
|
expect(() =>
|
|
@@ -397,5 +474,55 @@ describe("generateStorageCode", () => {
|
|
|
397
474
|
),
|
|
398
475
|
).toThrow();
|
|
399
476
|
});
|
|
477
|
+
|
|
478
|
+
it("throws for empty GitHub org", () => {
|
|
479
|
+
expect(() =>
|
|
480
|
+
generateStorageCode(
|
|
481
|
+
{ type: "github", org: "", repo: "marimo" } as StorageConnection,
|
|
482
|
+
{ library: "fsspec" },
|
|
483
|
+
),
|
|
484
|
+
).toThrow();
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
it("throws for empty GitHub repo", () => {
|
|
488
|
+
expect(() =>
|
|
489
|
+
generateStorageCode(
|
|
490
|
+
{
|
|
491
|
+
type: "github",
|
|
492
|
+
org: "marimo-team",
|
|
493
|
+
repo: "",
|
|
494
|
+
} as StorageConnection,
|
|
495
|
+
{ library: "fsspec" },
|
|
496
|
+
),
|
|
497
|
+
).toThrow();
|
|
498
|
+
});
|
|
499
|
+
|
|
500
|
+
it("throws when GitHub username is set without token", () => {
|
|
501
|
+
expect(() =>
|
|
502
|
+
generateStorageCode(
|
|
503
|
+
{
|
|
504
|
+
type: "github",
|
|
505
|
+
org: "marimo-team",
|
|
506
|
+
repo: "marimo",
|
|
507
|
+
username: "octocat",
|
|
508
|
+
},
|
|
509
|
+
{ library: "fsspec" },
|
|
510
|
+
),
|
|
511
|
+
).toThrow();
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
it("throws when GitHub token is set without username", () => {
|
|
515
|
+
expect(() =>
|
|
516
|
+
generateStorageCode(
|
|
517
|
+
{
|
|
518
|
+
type: "github",
|
|
519
|
+
org: "marimo-team",
|
|
520
|
+
repo: "marimo",
|
|
521
|
+
token: "ghp_example",
|
|
522
|
+
},
|
|
523
|
+
{ library: "fsspec" },
|
|
524
|
+
),
|
|
525
|
+
).toThrow();
|
|
526
|
+
});
|
|
400
527
|
});
|
|
401
528
|
});
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
AzureStorageSchema,
|
|
17
17
|
CoreWeaveStorageSchema,
|
|
18
18
|
GCSStorageSchema,
|
|
19
|
+
GithubStorageSchema,
|
|
19
20
|
GoogleDriveStorageSchema,
|
|
20
21
|
HuggingfaceStorageSchema,
|
|
21
22
|
S3StorageSchema,
|
|
@@ -89,6 +90,15 @@ const STORAGE_PROVIDERS = [
|
|
|
89
90
|
preferred: "huggingface_hub",
|
|
90
91
|
},
|
|
91
92
|
},
|
|
93
|
+
{
|
|
94
|
+
name: "GitHub",
|
|
95
|
+
schema: GithubStorageSchema,
|
|
96
|
+
protocol: "github",
|
|
97
|
+
storageLibraries: {
|
|
98
|
+
libraries: ["fsspec"],
|
|
99
|
+
preferred: "fsspec",
|
|
100
|
+
},
|
|
101
|
+
},
|
|
92
102
|
] satisfies StorageProviderSchema[];
|
|
93
103
|
|
|
94
104
|
const StorageProviderSelector: React.FC<{
|
|
@@ -105,7 +115,7 @@ const StorageProviderSelector: React.FC<{
|
|
|
105
115
|
<ProtocolIcon
|
|
106
116
|
protocol={protocol as KnownStorageProtocol}
|
|
107
117
|
forceDark={true}
|
|
108
|
-
className="w-7.5 h-7.5"
|
|
118
|
+
className="w-7.5 h-7.5 text-white"
|
|
109
119
|
/>
|
|
110
120
|
}
|
|
111
121
|
onSelect={() => onSelect(schema)}
|
|
@@ -43,7 +43,7 @@ class SecretContainer {
|
|
|
43
43
|
this.secrets[privateVar] = `os.environ.get("${envVar}")`;
|
|
44
44
|
return privateVar;
|
|
45
45
|
}
|
|
46
|
-
return `"${value}"`;
|
|
46
|
+
return `"${escapePythonString(value)}"`;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
formatSecrets(): string {
|
|
@@ -260,6 +260,32 @@ function generateHuggingfaceCode(
|
|
|
260
260
|
return { imports, code: `hf = HfApi(token=${token})` };
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
+
function generateGithubCode(
|
|
264
|
+
connection: Extract<StorageConnection, { type: "github" }>,
|
|
265
|
+
secrets: SecretContainer,
|
|
266
|
+
): { imports: Set<string>; code: string } {
|
|
267
|
+
const imports = new Set([
|
|
268
|
+
"from fsspec.implementations.github import GithubFileSystem",
|
|
269
|
+
]);
|
|
270
|
+
const params: string[] = [
|
|
271
|
+
`org=${secrets.print("org", connection.org)},`,
|
|
272
|
+
`repo=${secrets.print("repo", connection.repo)},`,
|
|
273
|
+
];
|
|
274
|
+
|
|
275
|
+
if (connection.sha) {
|
|
276
|
+
params.push(`sha=${secrets.print("sha", connection.sha)},`);
|
|
277
|
+
}
|
|
278
|
+
if (connection.username && connection.token) {
|
|
279
|
+
params.push(
|
|
280
|
+
`username=${secrets.print("username", connection.username)},`,
|
|
281
|
+
`token=${secrets.print("token", connection.token)},`,
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
const paramsStr = params.map((param) => ` ${param}`).join("\n");
|
|
286
|
+
return { imports, code: `fs = GithubFileSystem(\n${paramsStr}\n)` };
|
|
287
|
+
}
|
|
288
|
+
|
|
263
289
|
export function generateStorageCode(
|
|
264
290
|
connection: StorageConnection,
|
|
265
291
|
options: StorageCodeOptions,
|
|
@@ -291,6 +317,9 @@ export function generateStorageCode(
|
|
|
291
317
|
case "huggingface":
|
|
292
318
|
result = generateHuggingfaceCode(connection, secrets);
|
|
293
319
|
break;
|
|
320
|
+
case "github":
|
|
321
|
+
result = generateGithubCode(connection, secrets);
|
|
322
|
+
break;
|
|
294
323
|
default:
|
|
295
324
|
assertNever(connection);
|
|
296
325
|
}
|
|
@@ -238,6 +238,68 @@ export const HuggingfaceStorageSchema = z
|
|
|
238
238
|
})
|
|
239
239
|
.describe(FieldOptions.of({ direction: "two-columns" }));
|
|
240
240
|
|
|
241
|
+
function isFilled(value: string | undefined): boolean {
|
|
242
|
+
return value != null && value !== "";
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export const GithubStorageSchema = z
|
|
246
|
+
.object({
|
|
247
|
+
type: z.literal("github"),
|
|
248
|
+
org: z
|
|
249
|
+
.string()
|
|
250
|
+
.nonempty()
|
|
251
|
+
.describe(
|
|
252
|
+
FieldOptions.of({
|
|
253
|
+
label: "Organization or user",
|
|
254
|
+
}),
|
|
255
|
+
),
|
|
256
|
+
repo: z
|
|
257
|
+
.string()
|
|
258
|
+
.nonempty()
|
|
259
|
+
.describe(
|
|
260
|
+
FieldOptions.of({
|
|
261
|
+
label: "Repository",
|
|
262
|
+
}),
|
|
263
|
+
),
|
|
264
|
+
sha: z
|
|
265
|
+
.string()
|
|
266
|
+
.optional()
|
|
267
|
+
.describe(
|
|
268
|
+
FieldOptions.of({
|
|
269
|
+
label: "Branch, tag, or commit",
|
|
270
|
+
placeholder: "main",
|
|
271
|
+
description: "Leave empty to use the default branch",
|
|
272
|
+
}),
|
|
273
|
+
),
|
|
274
|
+
username: z
|
|
275
|
+
.string()
|
|
276
|
+
.optional()
|
|
277
|
+
.describe(
|
|
278
|
+
FieldOptions.of({
|
|
279
|
+
label: "Username",
|
|
280
|
+
description: "Set this together with access token",
|
|
281
|
+
optionRegex: "(github.?username|github.?user)",
|
|
282
|
+
}),
|
|
283
|
+
),
|
|
284
|
+
token: z
|
|
285
|
+
.string()
|
|
286
|
+
.optional()
|
|
287
|
+
.describe(
|
|
288
|
+
FieldOptions.of({
|
|
289
|
+
label: "Access Token",
|
|
290
|
+
description:
|
|
291
|
+
"Set this together with username. Required for private repos and to avoid GitHub's rate limits.",
|
|
292
|
+
inputType: "password",
|
|
293
|
+
optionRegex: "(github.?token|gh.?token|github.?pat)",
|
|
294
|
+
}),
|
|
295
|
+
),
|
|
296
|
+
})
|
|
297
|
+
.refine((value) => isFilled(value.username) === isFilled(value.token), {
|
|
298
|
+
message: "Username and access token are required together",
|
|
299
|
+
path: ["token"],
|
|
300
|
+
})
|
|
301
|
+
.describe(FieldOptions.of({ direction: "two-columns" }));
|
|
302
|
+
|
|
241
303
|
export const StorageConnectionSchema = z.discriminatedUnion("type", [
|
|
242
304
|
S3StorageSchema,
|
|
243
305
|
GCSStorageSchema,
|
|
@@ -245,6 +307,7 @@ export const StorageConnectionSchema = z.discriminatedUnion("type", [
|
|
|
245
307
|
CoreWeaveStorageSchema,
|
|
246
308
|
GoogleDriveStorageSchema,
|
|
247
309
|
HuggingfaceStorageSchema,
|
|
310
|
+
GithubStorageSchema,
|
|
248
311
|
]);
|
|
249
312
|
|
|
250
313
|
export type StorageConnection = z.infer<typeof StorageConnectionSchema>;
|