@marimo-team/frontend 0.23.11-dev7 → 0.23.11-dev8
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/column-preview-C1eLuwSw.js +1 -0
- package/dist/assets/{edit-page-C4YQzfXX.js → edit-page-CqaFVVce.js} +2 -2
- package/dist/assets/{index-BT43KXXM.js → index-DIYQ6dU9.js} +2 -2
- package/dist/assets/{session-panel-DbKOGT8V.js → session-panel-DDxa_jef.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/src/components/datasources/__tests__/column-preview.test.tsx +97 -0
- package/src/components/datasources/column-preview.tsx +2 -4
- package/dist/assets/column-preview-DypE7iks.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as ge}from"./chunk-LvLJmgfZ.js";import{d as je,l as ye,p as ve,u as Q}from"./useEvent-D91BmmQi.js";import{t as Xe}from"./react-Bj1aDYRI.js";import{Br as oe,D as Ye,Fr as Ne,Gr as we,Gt as Ze,Hr as ce,In as Se,Ir as _e,Jr as ea,Kr as aa,Kt as ta,Ln as sa,Lr as la,M as na,Ni as Ce,P as ra,Pr as me,Rr as oa,Vr as Ie,Wr as ca,Yr as ke,a as ma,br as ie,f as ia,gr as da,jr as ha,jt as ua,lr as xa,or as pa,qt as fa,sr as ba,vn as ga,yr as ja,zn as ya,zt as va}from"./cells-DGi-ohLl.js";import"./react-dom-CSu739Rf.js";import{t as Pe}from"./compiler-runtime-B3qBwwSJ.js";import{c as Na}from"./utils-CvI-39U6.js";import{t as wa}from"./ErrorBoundary-DyYDV0HI.js";import{t as X}from"./cn-DCUzRj2J.js";import{t as Sa}from"./jsx-runtime-BqBOg78p.js";import"./fullscreen-DFky0PAA.js";import{n as _a}from"./multi-map-C4OANz8X.js";import"./popover-CNCYAwbC.js";import{$ as Te,Q as de,et as Ca,f as Fe,g as $e,h as he,m as ue,nt as Ia,p as le,rt as ka,tt as Pa,u as Ta}from"./JsonOutput-CbiJ_QRH.js";import"./download-YWP1Hdr2.js";import{r as Re}from"./radio-group-NLdY8xke.js";import{t as xe}from"./tooltip-B_PkSKN3.js";import{r as Fa,t as ne}from"./button-BbCh-29a.js";import"./dist-D0HyMpgV.js";import{u as Y}from"./arrays-DYDL-3-i.js";import"./cjs-BRGiG41H.js";import"./main-B0OX4z33.js";import"./useNonce-DfoVjkkH.js";import{i as $a}from"./strings-wdPMRf6Z.js";import{r as Ra}from"./requests-DIwGYs0l.js";import{t as Da}from"./createLucideIcon-D5guW7EU.js";import{t as qa}from"./x-C-6liIBr.js";import{a as Va,r as La}from"./tree-actions-DupCr05h.js";import"./markdown-renderer-iZsApCjt.js";import{t as De}from"./add-connection-dialog-CTDOffvK.js";import{t as qe}from"./plus-BgB18UzY.js";import{a as Ba}from"./input-DA8xlX70.js";import{n as Ma,o as Ea}from"./column-preview-DypE7iks.js";import{t as Oa}from"./workflow-Bm8qF7yj.js";import"./dist-HyCgERnW.js";import"./dist-BwnT-_gD.js";import"./dist-rBRbke5D.js";import"./dist-RMRSa-Mj.js";import"./dist-BURue7-e.js";import"./session-0B5NBztP.js";import"./purify.es-B9KxLTTS.js";import"./dates-CTxr0EqQ.js";import{t as za}from"./copy-icon-BuRdHNPA.js";import{t as Ua}from"./context-QkTujrKn.js";import"./utils-DCL4n9wx.js";import"./vega-loader.browser-C8wT63Va.js";import"./defaultLocale-BLUna9fQ.js";import"./defaultLocale-DzliDDTm.js";import{t as Ve}from"./cell-link-kkkjfd8C.js";import"./chunk-5FQGJX7Z-D91x7QHS.js";import{r as Aa}from"./html-to-image-Cso6uxBX.js";import{o as Ga}from"./focus-cLz6vpFk.js";import{n as pe}from"./useAsyncData-bgszE9F0.js";import{a as Ha,i as Ka,n as Wa,o as Le,r as Ja,t as Qa}from"./table-BGPSHfig.js";import"./react-resizable-panels.browser.esm-CV8-hvjx.js";import{a as Xa,f as Ya,o as re,t as Za}from"./command-BmOGG6-2.js";import{n as et}from"./icons-Ol38nIbL.js";import{t as at}from"./useDeepCompareMemoize-CVmg-GkP.js";import{t as tt}from"./empty-state-vCWg-_A9.js";import{n as st,t as lt}from"./common-ByASZK7c.js";import{a as nt,i as rt,n as Be,r as Me,t as Ee}from"./components-D8MC-pIV.js";var ot=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"}]]),A=Pe(),P=ge(Xe(),1),s=ge(Sa(),1),fe=1;function Oe(a){return 1.75+a*fe}function ct(a){return 3+a*fe}function ze(a){return 3.25+a*fe}var U={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 mt=ve(a=>{let e=a(_e),t=a(ya),l=a(ma);return Y(e,n=>{if(!n.variable_name)return-1;let m=Object.values(t).find(g=>g.name===n.variable_name);if(!m)return 0;let r=l.inOrderIds.indexOf(m.declaredBy[0]);return r===-1?0:r})});const it=Ce("marimo:datasources:hideEmpty",!1,Se,{getOnInit:!0});function Ue(a){let e=!1,t=[];for(let l of a){if(!ce(l)||!oe(l)){t.push(l);continue}let n=l.child_schemas??[],m=Ue(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 dt(a){let e=!1,t=[];for(let l of a){if(Ie(l)&&l.schemas.length===0){e=!0;continue}if(l.schemas.length===0){t.push(l);continue}let n=Ue(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 Ae=ve(a=>{let e=new Map(a(ha));for(let t of ke){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=>ke.has(t.name)?1:0)}),ht=()=>{let a=(0,A.c)(42),[e,t]=P.useState(""),[l,n]=ye(it),m=je(Ne),r=Q(mt),g=Q(Ae),i;e:{if(!l){i=g;break e}let f,S;a[0]===g?(f=a[1],S=a[2]):(f=!1,S=g.map(I=>{let k=dt(I.databases);return k===I.databases?I:(f=!0,{...I,databases:k})}),a[0]=g,a[1]=f,a[2]=S),i=f?S:g}let x=i;if(r.length===0&&x.length===0){let f;return a[3]===Symbol.for("react.memo_cache_sentinel")?(f=(0,s.jsx)(tt,{title:"No tables found",description:"Any datasets/dataframes in the global scope will be shown here.",action:(0,s.jsx)(De,{children:(0,s.jsxs)(ne,{variant:"outline",size:"sm",children:["Add database or catalog",(0,s.jsx)(qe,{className:"h-4 w-4 ml-2"})]})}),icon:(0,s.jsx)(ie,{})}),a[3]=f):f=a[3],f}let b=!!e.trim(),o;a[4]===m?o=a[5]:(o=f=>{m(f.length>0),t(f)},a[4]=m,a[5]=o);let c;a[6]!==e||a[7]!==o?(c=(0,s.jsx)(Xa,{placeholder:"Search tables...",className:"h-6 m-1",value:e,onValueChange:o,rootClassName:"flex-1 border-r border-b-0"}),a[6]=e,a[7]=o,a[8]=c):c=a[8];let d;a[9]===b?d=a[10]:(d=b&&(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)(qa,{className:"h-4 w-4"})}),a[9]=b,a[10]=d);let y=!l,h;a[11]!==l||a[12]!==n?(h=()=>n(!l),a[11]=l,a[12]=n,a[13]=h):h=a[13];let v;a[14]!==y||a[15]!==h?(v=(0,s.jsx)(Va,{"data-testid":"datasources-hide-empty-button",isVisible:y,onToggle:h,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]=y,a[15]=h,a[16]=v):v=a[16];let j;a[17]===Symbol.for("react.memo_cache_sentinel")?(j=(0,s.jsx)(De,{children:(0,s.jsx)(ne,{variant:"ghost",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden",children:(0,s.jsx)(qe,{className:"h-4 w-4"})})}),a[17]=j):j=a[17];let p;a[18]!==c||a[19]!==d||a[20]!==v?(p=(0,s.jsxs)("div",{className:"flex items-center w-full border-b",children:[c,d,v,j]}),a[18]=c,a[19]=d,a[20]=v,a[21]=p):p=a[21];let N;if(a[22]!==x||a[23]!==b||a[24]!==e){let f;a[26]!==b||a[27]!==e?(f=S=>(0,s.jsx)(ut,{connection:S,hasChildren:S.databases.length>0,children:S.databases.map(I=>(0,s.jsx)(xt,{connection:S,database:I,hasSearch:b,searchValue:e},I.name))},S.name),a[26]=b,a[27]=e,a[28]=f):f=a[28],N=x.map(f),a[22]=x,a[23]=b,a[24]=e,a[25]=N}else N=a[25];let w;a[29]!==x.length||a[30]!==r.length?(w=x.length>0&&r.length>0&&(0,s.jsxs)(Fe,{className:"pr-2",style:L(U.engine),children:[(0,s.jsx)(et,{className:"h-4 w-4 text-muted-foreground"}),(0,s.jsx)("span",{className:"text-xs",children:"Python"})]}),a[29]=x.length,a[30]=r.length,a[31]=w):w=a[31];let u;a[32]!==e||a[33]!==r?(u=r.length>0&&(0,s.jsx)(be,{tables:r,searchValue:e}),a[32]=e,a[33]=r,a[34]=u):u=a[34];let C;a[35]!==w||a[36]!==u||a[37]!==N?(C=(0,s.jsxs)(Ya,{className:"flex flex-col",children:[N,w,u]}),a[35]=w,a[36]=u,a[37]=N,a[38]=C):C=a[38];let _;return a[39]!==C||a[40]!==p?(_=(0,s.jsxs)(Za,{className:"border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden",shouldFilter:!1,children:[p,C]}),a[39]=C,a[40]=p,a[41]=_):_=a[41],_};var ut=a=>{let e=(0,A.c)(26),{connection:t,children:l,hasChildren:n}=a,m=t.name===ea,r=m?"In-Memory":t.name,{previewDataSourceConnection:g}=Ra(),i;e[0]!==t.name||e[1]!==g?(i=async()=>{await g({engine:t.name})},e[0]=t.name,e[1]=g,e[2]=i):i=e[2];let x=i,b;e[3]===Symbol.for("react.memo_cache_sentinel")?(b=L(U.engine),e[3]=b):b=e[3];let o;e[4]===t.dialect?o=e[5]:(o=(0,s.jsx)(ua,{className:"h-4 w-4 text-muted-foreground",name:t.dialect}),e[4]=t.dialect,e[5]=o);let c;e[6]===t.dialect?c=e[7]:(c=pa(t.dialect),e[6]=t.dialect,e[7]=c);let d;e[8]===c?d=e[9]:(d=(0,s.jsx)("span",{className:"text-xs",children:c}),e[8]=c,e[9]=d);let y=r,h;e[10]===y?h=e[11]:(h=(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",(0,s.jsx)(nt,{variableName:y}),")"]}),e[10]=y,e[11]=h);let v;e[12]!==x||e[13]!==m?(v=!m&&(0,s.jsx)(La,{onClick:x,tooltip:"Refresh connection",className:"ml-auto h-4 p-0",iconClassName:"h-3.5 w-3.5"}),e[12]=x,e[13]=m,e[14]=v):v=e[14];let j;e[15]!==o||e[16]!==d||e[17]!==h||e[18]!==v?(j=(0,s.jsxs)(Fe,{className:"pr-2",style:b,children:[o,d,h,v]}),e[15]=o,e[16]=d,e[17]=h,e[18]=v,e[19]=j):j=e[19];let p;e[20]!==l||e[21]!==n?(p=n?l:(0,s.jsx)(le,{content:"No databases available",style:L(U.engineEmpty)}),e[20]=l,e[21]=n,e[22]=p):p=e[22];let N;return e[23]!==p||e[24]!==j?(N=(0,s.jsxs)(s.Fragment,{children:[j,p]}),e[23]=p,e[24]=j,e[25]=N):N=e[25],N},Ge=P.createContext(null);function He(){let a=P.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 xt=a=>{let e=(0,A.c)(22),{connection:t,database:l,hasSearch:n,searchValue:m}=a,r;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?(r={engineName:t.name,databaseName:l.name,dialect:t.dialect,defaultSchema:t.default_schema,defaultDatabase:t.default_database,hasSearch:n,searchValue: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,e[6]=m,e[7]=r):r=e[7];let g=r,i=t.name,x=l.schemas,b;e[8]===l?b=e[9]:(b=Ie(l),e[8]=l,e[9]=b);let o;e[10]===Symbol.for("react.memo_cache_sentinel")?(o=[],e[10]=o):o=e[10];let c;e[11]!==l.schemas||e[12]!==b?(c=(0,s.jsx)(We,{schemas:x,schemasResolved:b,schemaPath:o,depth:0}),e[11]=l.schemas,e[12]=b,e[13]=c):c=e[13];let d;e[14]!==c||e[15]!==g?(d=(0,s.jsx)(Ge.Provider,{value:g,children:c}),e[14]=c,e[15]=g,e[16]=d):d=e[16];let y;return e[17]!==t.name||e[18]!==l||e[19]!==n||e[20]!==d?(y=(0,s.jsx)(pt,{engineName:i,database:l,hasSearch:n,children:d}),e[17]=t.name,e[18]=l,e[19]=n,e[20]=d,e[21]=y):y=e[21],y},pt=a=>{let e=(0,A.c)(26),{hasSearch:t,engineName:l,database:n,children:m}=a,[r,g]=P.useState(!1),[i,x]=P.useState(!1),[b,o]=P.useState(t);b!==t&&(o(t),g(t));let c;e[0]===Symbol.for("react.memo_cache_sentinel")?(c=L(U.database),e[0]=c):c=e[0];let d;e[1]!==r||e[2]!==i?(d=()=>{g(!r),x(!i)},e[1]=r,e[2]=i,e[3]=d):d=e[3];let y=`${l}:${n.name}`,h;e[4]===r?h=e[5]:(h=(0,s.jsx)($e,{isExpanded:r}),e[4]=r,e[5]=h);let v=i&&r?"text-foreground":"text-muted-foreground",j;e[6]===v?j=e[7]:(j=X("h-4 w-4",v),e[6]=v,e[7]=j);let p;e[8]===j?p=e[9]:(p=(0,s.jsx)(ie,{className:j}),e[8]=j,e[9]=p);let N=i&&r&&"font-semibold",w;e[10]===N?w=e[11]:(w=X(N),e[10]=N,e[11]=w);let u;e[12]===n.name?u=e[13]:(u=n.name===""?(0,s.jsx)("i",{children:"Not connected"}):n.name,e[12]=n.name,e[13]=u);let C;e[14]!==u||e[15]!==w?(C=(0,s.jsx)("span",{className:w,children:u}),e[14]=u,e[15]=w,e[16]=C):C=e[16];let _;e[17]!==C||e[18]!==d||e[19]!==y||e[20]!==h||e[21]!==p?(_=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:c,onSelect:d,value:y,children:[h,p,C]}),e[17]=C,e[18]=d,e[19]=y,e[20]=h,e[21]=p,e[22]=_):_=e[22];let f=r&&m,S;return e[23]!==_||e[24]!==f?(S=(0,s.jsxs)(s.Fragment,{children:[_,f]}),e[23]=_,e[24]=f,e[25]=S):S=e[25],S},We=a=>{let{schemas:e,schemasResolved:t,depth:l}=a,n=He(),{engineName:m,databaseName:r,searchValue:g}=n,{addSchemaList:i}=me(),x=at(a.schemaPath),[b,o]=P.useState(!1),{isPending:c,error:d}=pe(async()=>{if(!t&&m){o(!0);try{i({schemas:(await Ze.request({engine:m,database:r,schemaPath:x})).schemas??[],sqlSchemaContext:{engine:m,database:r,schemaPath:x}})}finally{o(!1)}}},[t,m,r,x]),y=L(Oe(l));return c||b?(0,s.jsx)(he,{message:"Loading schemas...",style:y}):d?(0,s.jsx)(ue,{error:d,style:y}):e.length===0?(0,s.jsx)(le,{content:"No schemas available",style:y}):(0,s.jsx)(s.Fragment,{children:e.map(h=>ca(h.name)?(0,s.jsx)(be,{tables:h.tables,tablesResolved:ce(h),searchValue:g,sqlTableContext:Ke(n,{schema:h.name,schemaPath:x})},h.name):(0,s.jsx)(ft,{schema:h,schemaPath:[...x,h.name],depth:l},h.name))})},ft=a=>{let e=(0,A.c)(36),{schema:t,schemaPath:l,depth:n}=a,m=He(),{databaseName:r,hasSearch:g,searchValue:i}=m,[x,b]=P.useState(g),[o,c]=P.useState(!1),d=`${r}:${l.join(".")}`,y;e[0]===t.child_schemas?y=e[1]:(y=t.child_schemas??[],e[0]=t.child_schemas,e[1]=y);let h=y,v;e[2]===n?v=e[3]:(v=L(Oe(n)),e[2]=n,e[3]=v);let j;e[4]!==x||e[5]!==o?(j=()=>{b(!x),c(!o)},e[4]=x,e[5]=o,e[6]=j):j=e[6];let p;e[7]===x?p=e[8]:(p=(0,s.jsx)($e,{isExpanded:x}),e[7]=x,e[8]=p);let N=o&&x&&"text-foreground",w;e[9]===N?w=e[10]:(w=X("h-4 w-4 text-muted-foreground",N),e[9]=N,e[10]=w);let u;e[11]===w?u=e[12]:(u=(0,s.jsx)(da,{className:w}),e[11]=w,e[12]=u);let C=o&&x&&"font-semibold",_;e[13]===C?_=e[14]:(_=X(C),e[13]=C,e[14]=_);let f;e[15]!==t.name||e[16]!==_?(f=(0,s.jsx)("span",{className:_,children:t.name}),e[15]=t.name,e[16]=_,e[17]=f):f=e[17];let S;e[18]!==v||e[19]!==j||e[20]!==p||e[21]!==u||e[22]!==f||e[23]!==d?(S=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:v,onSelect:j,value:d,children:[p,u,f]}),e[18]=v,e[19]=j,e[20]=p,e[21]=u,e[22]=f,e[23]=d,e[24]=S):S=e[24];let I;e[25]!==h||e[26]!==n||e[27]!==x||e[28]!==t||e[29]!==l||e[30]!==i||e[31]!==m?(I=x&&(0,s.jsxs)(s.Fragment,{children:[(h.length>0||!oe(t))&&(0,s.jsx)(We,{schemas:h,schemasResolved:oe(t),schemaPath:l,depth:n+1}),(0,s.jsx)(be,{tables:t.tables,tablesResolved:ce(t),searchValue:i,tableIndentRem:ct(n),columnIndentRem:ze(n),sqlTableContext:Ke(m,{schema:t.name,schemaPath:l})})]}),e[25]=h,e[26]=n,e[27]=x,e[28]=t,e[29]=l,e[30]=i,e[31]=m,e[32]=I):I=e[32];let k;return e[33]!==S||e[34]!==I?(k=(0,s.jsxs)(s.Fragment,{children:[S,I]}),e[33]=S,e[34]=I,e[35]=k):k=e[35],k},be=a=>{let e=(0,A.c)(31),{tables:t,sqlTableContext:l,searchValue:n,tablesResolved:m,tableIndentRem:r,columnIndentRem:g}=a,i=m===void 0?!0:m,{addTableList:x}=me(),[b,o]=P.useState(!1),c;e[0]!==x||e[1]!==l||e[2]!==i?(c=async()=>{if(!i&&l){o(!0);let{engine:u,database:C,schema:_,schemaPath:f}=l,S=await fa.request({engine:u,database:C,schema:_,schemaPath:f??[]});if(!(S!=null&&S.tables))throw o(!1),Error("No tables available");x({tables:S.tables,sqlTableContext:l}),o(!1)}},e[0]=x,e[1]=l,e[2]=i,e[3]=c):c=e[3];let d;e[4]!==l||e[5]!==i?(d=[i,l],e[4]=l,e[5]=i,e[6]=d):d=e[6];let{isPending:y,error:h}=pe(c,d),v=r??U.tableLoading,j;e[7]===v?j=e[8]:(j=L(v),e[7]=v,e[8]=j);let p=j;if(y||b){let u;return e[9]===p?u=e[10]:(u=(0,s.jsx)(he,{message:"Loading tables...",style:p}),e[9]=p,e[10]=u),u}if(h){let u;return e[11]!==h||e[12]!==p?(u=(0,s.jsx)(ue,{error:h,style:p}),e[11]=h,e[12]=p,e[13]=u):u=e[13],u}if(t.length===0){let u;return e[14]===p?u=e[15]:(u=(0,s.jsx)(le,{content:"No tables found",style:p}),e[14]=p,e[15]=u),u}let N;if(e[16]!==g||e[17]!==n||e[18]!==l||e[19]!==r||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 C=t.filter(u),_;e[24]!==g||e[25]!==n||e[26]!==l||e[27]!==r?(_=f=>(0,s.jsx)(bt,{table:f,sqlTableContext:l,isSearching:!!n,tableIndentRem:r,columnIndentRem:g},f.name),e[24]=g,e[25]=n,e[26]=l,e[27]=r,e[28]=_):_=e[28],N=C.map(_),e[16]=g,e[17]=n,e[18]=l,e[19]=r,e[20]=t,e[21]=N}else N=e[21];let w;return e[29]===N?w=e[30]:(w=(0,s.jsx)(s.Fragment,{children:N}),e[29]=N,e[30]=w),w},bt=a=>{let e=(0,A.c)(69),{table:t,sqlTableContext:l,isSearching:n,tableIndentRem:m,columnIndentRem:r}=a,{addTable:g}=me(),[i,x]=P.useState(!1),b=t.columns.length>0,o;e[0]!==g||e[1]!==i||e[2]!==l||e[3]!==t.name||e[4]!==b?(o=async()=>{if(i&&!b&&l){let{engine:D,database:ae,schema:te,schemaPath:Qe}=l,se=await ta.request({engine:D,database:ae,schema:te,tableName:t.name,schemaPath:Qe??[]});if(!(se!=null&&se.table))throw Error("No table details available");g({table:se.table,sqlTableContext:l})}},e[0]=g,e[1]=i,e[2]=l,e[3]=t.name,e[4]=b,e[5]=o):o=e[5];let c;e[6]!==i||e[7]!==b?(c=[i,b],e[6]=i,e[7]=b,e[8]=c):c=e[8];let{isFetching:d,isPending:y,error:h}=pe(o,c),v=Q(Na),j=Ga(),{createNewCell:p}=Ye(),N=Re(),w;e[9]!==N||e[10]!==v||e[11]!==p||e[12]!==j||e[13]!==l||e[14]!==t?(w=()=>{Aa({autoInstantiate:v,createNewCell:p,fromCellId:j}),N((()=>{if(t.source_type==="catalog"){let D=l!=null&&l.database?[l.database,...l.schemaPath??[],t.name].join("."):t.name;return`${t.engine}.load_table("${D}")`}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 $a(t.source_type),""}})())},e[9]=N,e[10]=v,e[11]=p,e[12]=j,e[13]=l,e[14]=t,e[15]=w):w=e[15];let u=w,C;e[16]!==t.num_columns||e[17]!==t.num_rows?(C=()=>{let D=[];return t.num_rows!=null&&D.push(`${t.num_rows} rows`),t.num_columns!=null&&D.push(`${t.num_columns} columns`),D.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:D.join(", ")})})},e[16]=t.num_columns,e[17]=t.num_rows,e[18]=C):C=e[18];let _=C,f;e[19]!==r||e[20]!==h||e[21]!==d||e[22]!==y||e[23]!==l||e[24]!==t?(f=()=>{let D=L(r??U.tableLoading);if(y||d)return(0,s.jsx)(he,{message:"Loading columns...",style:D});if(h)return(0,s.jsx)(ue,{error:h,style:D});let ae=t.columns;return ae.length===0?(0,s.jsx)(le,{content:"No columns found",style:D}):ae.map(te=>(0,s.jsx)(gt,{table:t,column:te,sqlTableContext:l,columnIndentRem:r},te.name))},e[19]=r,e[20]=h,e[21]=d,e[22]=y,e[23]=l,e[24]=t,e[25]=f):f=e[25];let S=f,I;e[26]!==i||e[27]!==n||e[28]!==t.source_type||e[29]!==t.type?(I=()=>{if(t.source_type!=="local")return(0,s.jsx)(t.type==="table"?xa:ja,{className:"h-3 w-3",strokeWidth:i||n?2.5:void 0})},e[26]=i,e[27]=n,e[28]=t.source_type,e[29]=t.type,e[30]=I):I=e[30];let k=I,q;e[31]!==l||e[32]!==t.name?(q=aa(l,t.name),e[31]=l,e[32]=t.name,e[33]=q):q=e[33];let B=q,M=m??(l?U.tableSchemaless:0),E=(i||n)&&"font-semibold",T;e[34]===E?T=e[35]:(T=X("rounded-none group h-8 cursor-pointer",E),e[34]=E,e[35]=T);let F;e[36]===M?F=e[37]:(F=L(M),e[36]=M,e[37]=F);let $;e[38]===i?$=e[39]:($=()=>x(!i),e[38]=i,e[39]=$);let V;e[40]===k?V=e[41]:(V=k(),e[40]=k,e[41]=V);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 z;e[44]!==V||e[45]!==O?(z=(0,s.jsxs)("div",{className:"flex gap-2 items-center flex-1 pl-1",children:[V,O]}),e[44]=V,e[45]=O,e[46]=z):z=e[46];let R;e[47]===_?R=e[48]:(R=_(),e[47]=_,e[48]=R);let H;e[49]===u?H=e[50]:(H=Fa.stopPropagation(()=>u()),e[49]=u,e[50]=H);let Z;e[51]===Symbol.for("react.memo_cache_sentinel")?(Z=(0,s.jsx)(Ea,{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]!==i||e[55]!==F||e[56]!==$||e[57]!==z||e[58]!==R||e[59]!==K||e[60]!==T||e[61]!==B?(W=(0,s.jsxs)(re,{className:T,style:F,value:B,"aria-selected":i,forceMount:!0,onSelect:$,children:[z,R,K]}),e[54]=i,e[55]=F,e[56]=$,e[57]=z,e[58]=R,e[59]=K,e[60]=T,e[61]=B,e[62]=W):W=e[62];let J;e[63]!==i||e[64]!==S?(J=i&&S(),e[63]=i,e[64]=S,e[65]=J):J=e[65];let ee;return e[66]!==W||e[67]!==J?(ee=(0,s.jsxs)(s.Fragment,{children:[W,J]}),e[66]=W,e[67]=J,e[68]=ee):ee=e[68],ee},gt=a=>{var O,z;let e=(0,A.c)(51),{table:t,column:l,sqlTableContext:n,columnIndentRem:m}=a,[r,g]=P.useState(!1),i=Q(Ne),x=je(la);i&&r&&g(!1),x(r?R=>new Set([...R,`${t.name}:${l.name}`]):R=>(R.delete(`${t.name}:${l.name}`),new Set(R)));let b=Re(),{columnsPreviews:o}=oa(),c;e[0]!==l.name||e[1]!==t.primary_keys?(c=((O=t.primary_keys)==null?void 0:O.includes(l.name))||!1,e[0]=l.name,e[1]=t.primary_keys,e[2]=c):c=e[2];let d=c,y;e[3]!==l.name||e[4]!==t.indexes?(y=((z=t.indexes)==null?void 0:z.includes(l.name))||!1,e[3]=l.name,e[4]=t.indexes,e[5]=y):y=e[5];let h=y,v;e[6]===b?v=e[7]:(v=R=>{b(R)},e[6]=b,e[7]=v);let j=v,p=jt,N=r?"font-semibold":"",w;e[8]!==l.name||e[9]!==N?(w=(0,s.jsx)("span",{className:N,children:l.name}),e[8]=l.name,e[9]=N,e[10]=w):w=e[10];let u=w,C=`${t.name}.${l.name}`,_=`${t.name}.${l.name}`,f;e[11]===r?f=e[12]:(f=()=>g(!r),e[11]=r,e[12]=f);let S;e[13]!==m||e[14]!==n?(S=m??(n?ze(0):U.columnLocal),e[13]=m,e[14]=n,e[15]=S):S=e[15];let I;e[16]===S?I=e[17]:(I=L(S),e[16]=S,e[17]=I);let k;e[18]!==l.type||e[19]!==u?(k=(0,s.jsx)(Ta,{columnName:u,dataType:l.type}),e[18]=l.type,e[19]=u,e[20]=k):k=e[20];let q;e[21]===d?q=e[22]:(q=d&&p({tooltipContent:"Primary key",content:"PK"}),e[21]=d,e[22]=q);let B;e[23]===h?B=e[24]:(B=h&&p({tooltipContent:"Indexed",content:"IDX"}),e[23]=h,e[24]=B);let M;e[25]!==I||e[26]!==k||e[27]!==q||e[28]!==B?(M=(0,s.jsxs)("div",{className:"flex flex-row gap-2 items-center flex-1",style:I,children:[k,q,B]}),e[25]=I,e[26]=k,e[27]=q,e[28]=B,e[29]=M):M=e[29];let E;e[30]===l.name?E=e[31]:(E=(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]=E);let T;e[32]===l.external_type?T=e[33]:(T=(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:l.external_type}),e[32]=l.external_type,e[33]=T);let F;e[34]!==M||e[35]!==E||e[36]!==T||e[37]!==C||e[38]!==_||e[39]!==f?(F=(0,s.jsxs)(re,{className:"rounded-none py-1 group cursor-pointer",value:_,onSelect:f,children:[M,E,T]},C),e[34]=M,e[35]=E,e[36]=T,e[37]=C,e[38]=_,e[39]=f,e[40]=F):F=e[40];let $;e[41]!==l||e[42]!==o||e[43]!==j||e[44]!==r||e[45]!==n||e[46]!==t?($=r&&(0,s.jsx)("div",{className:"pr-2 py-2 bg-(--slate-1) shadow-inner border-b",style:L(U.columnPreview),children:(0,s.jsx)(wa,{children:(0,s.jsx)(Ma,{table:t,column:l,onAddColumnChart:j,preview:o.get(n?`${n.database}.${n.schema}.${t.name}:${l.name}`:`${t.name}:${l.name}`),sqlTableContext:n})})}),e[41]=l,e[42]=o,e[43]=j,e[44]=r,e[45]=n,e[46]=t,e[47]=$):$=e[47];let V;return e[48]!==F||e[49]!==$?(V=(0,s.jsxs)(s.Fragment,{children:[F,$]}),e[48]=F,e[49]=$,e[50]=V):V=e[50],V};function jt(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 Rs(a){return a}var G={name:"name",type:"type-value",defs:"defs-refs"},yt=[{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)(lt,{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=m=>{let r=ia(m);r&&ga(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)(ot,{className:"w-3.5 h-3.5 text-muted-foreground"})}),e.length===1?(0,s.jsx)(Ve,{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)(Ve,{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)(Oa,{className:"w-3.5 h-3.5 text-muted-foreground"})}),(0,s.jsx)(st,{maxCount:3,cellIds:t,skipScroll:!0,onClick:n})]})]})}}];function vt({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 Je=(0,P.memo)(({className:a,cellIds:e,variables:t})=>{let[l,n]=P.useState([]),[m,r]=P.useState(""),g=ra(),{locale:i}=Ua(),x=(0,P.useMemo)(()=>{let o=c=>{let d=g[c];return va(d)?`cell-${e.indexOf(c)}`:d??`cell-${e.indexOf(c)}`};return Object.values(t).map(c=>({...c,declaredByNames:c.declaredBy.map(o),usedByNames:c.usedBy.map(o)}))},[t,g,e]),b=Ca({data:(0,P.useMemo)(()=>{let o=new Map;return e.forEach((c,d)=>o.set(c,d)),vt({variables:x,sort:l[0],cellIdToIndex:o})},[x,l,e]),columns:yt,getCoreRowModel:Pa(),onGlobalFilterChange:r,getFilteredRowModel:Ia(),enableFilters:!0,enableGlobalFilter:!0,enableColumnPinning:!1,getColumnCanGlobalFilter(o){return o.columnDef.enableGlobalFilter??!0},globalFilterFn:"auto",manualSorting:!0,locale:i,onSortingChange:n,getSortedRowModel:ka(),state:{sorting:l,globalFilter:m}});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(Ba,{className:"w-full",placeholder:"Search",value:m,onChange:o=>r(o.target.value)}),(0,s.jsxs)(Qa,{className:X("w-full text-sm flex-1 border-separate border-spacing-0",a),children:[(0,s.jsx)(Ha,{children:(0,s.jsx)(Le,{className:"whitespace-nowrap text-xs",children:b.getFlatHeaders().map(o=>(0,s.jsx)(Ka,{className:"sticky top-0 bg-background border-b",children:Te(o.column.columnDef.header,o.getContext())},o.id))})}),(0,s.jsx)(Wa,{children:b.getRowModel().rows.map(o=>(0,s.jsx)(Le,{className:"hover:bg-accent",children:o.getVisibleCells().map(c=>(0,s.jsx)(Ja,{className:"border-b",children:Te(c.column.columnDef.cell,c.getContext())},c.id))},o.id))})]})]})});Je.displayName="VariableTable";var Nt=Pe(),wt=Ce("marimo:session-panel:state",{openSections:["variables"],hasUserInteracted:!1},Se),St=()=>{let a=(0,Nt.c)(24),e=sa(),t=na(),l=Q(_e),n=Q(Ae),[m,r]=ye(wt),g=l.length+n.length,i;a[0]!==g||a[1]!==m.hasUserInteracted||a[2]!==m.openSections?(i=!m.hasUserInteracted&&g>0?[...new Set([...m.openSections,"datasources"])]:m.openSections,a[0]=g,a[1]=m.hasUserInteracted,a[2]=m.openSections,a[3]=i):i=a[3];let x=i,b;a[4]===r?b=a[5]:(b=u=>{r({openSections:u,hasUserInteracted:!0})},a[4]=r,a[5]=b);let o=b,c=!x.includes("datasources")&&g>0,d;a[6]===Symbol.for("react.memo_cache_sentinel")?(d=(0,s.jsx)(ie,{className:"w-4 h-4"}),a[6]=d):d=a[6];let y;a[7]!==g||a[8]!==c?(y=c&&(0,s.jsx)(rt,{children:g}),a[7]=g,a[8]=c,a[9]=y):y=a[9];let h;a[10]===y?h=a[11]:(h=(0,s.jsxs)(Me,{children:[d,"Data sources",y]}),a[10]=y,a[11]=h);let v;a[12]===Symbol.for("react.memo_cache_sentinel")?(v=(0,s.jsx)(Ee,{children:(0,s.jsx)(ht,{})}),a[12]=v):v=a[12];let j;a[13]===h?j=a[14]:(j=(0,s.jsxs)(Be,{value:"datasources",children:[h,v]}),a[13]=h,a[14]=j);let p;a[15]===Symbol.for("react.memo_cache_sentinel")?(p=(0,s.jsxs)(Me,{children:[(0,s.jsx)(ba,{className:"w-4 h-4"}),"Variables"]}),a[15]=p):p=a[15];let N;a[16]!==t||a[17]!==e?(N=(0,s.jsxs)(Be,{value:"variables",lastItem:!0,children:[p,(0,s.jsx)(Ee,{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)(Je,{cellIds:t.inOrderIds,variables:e})})]}),a[16]=t,a[17]=e,a[18]=N):N=a[18];let w;return a[19]!==o||a[20]!==x||a[21]!==j||a[22]!==N?(w=(0,s.jsxs)(_a,{type:"multiple",value:x,onValueChange:o,className:"flex flex-col h-full overflow-auto",children:[j,N]}),a[19]=o,a[20]=x,a[21]=j,a[22]=N,a[23]=w):w=a[23],w};export{St as default};
|
|
1
|
+
import{s as ge}from"./chunk-LvLJmgfZ.js";import{d as je,l as ye,p as ve,u as Q}from"./useEvent-D91BmmQi.js";import{t as Xe}from"./react-Bj1aDYRI.js";import{Br as oe,D as Ye,Fr as Ne,Gr as we,Gt as Ze,Hr as ce,In as Se,Ir as _e,Jr as ea,Kr as aa,Kt as ta,Ln as sa,Lr as la,M as na,Ni as Ce,P as ra,Pr as me,Rr as oa,Vr as Ie,Wr as ca,Yr as ke,a as ma,br as ie,f as ia,gr as da,jr as ha,jt as ua,lr as xa,or as pa,qt as fa,sr as ba,vn as ga,yr as ja,zn as ya,zt as va}from"./cells-DGi-ohLl.js";import"./react-dom-CSu739Rf.js";import{t as Pe}from"./compiler-runtime-B3qBwwSJ.js";import{c as Na}from"./utils-CvI-39U6.js";import{t as wa}from"./ErrorBoundary-DyYDV0HI.js";import{t as X}from"./cn-DCUzRj2J.js";import{t as Sa}from"./jsx-runtime-BqBOg78p.js";import"./fullscreen-DFky0PAA.js";import{n as _a}from"./multi-map-C4OANz8X.js";import"./popover-CNCYAwbC.js";import{$ as Te,Q as de,et as Ca,f as Fe,g as $e,h as he,m as ue,nt as Ia,p as le,rt as ka,tt as Pa,u as Ta}from"./JsonOutput-CbiJ_QRH.js";import"./download-YWP1Hdr2.js";import{r as Re}from"./radio-group-NLdY8xke.js";import{t as xe}from"./tooltip-B_PkSKN3.js";import{r as Fa,t as ne}from"./button-BbCh-29a.js";import"./dist-D0HyMpgV.js";import{u as Y}from"./arrays-DYDL-3-i.js";import"./cjs-BRGiG41H.js";import"./main-B0OX4z33.js";import"./useNonce-DfoVjkkH.js";import{i as $a}from"./strings-wdPMRf6Z.js";import{r as Ra}from"./requests-DIwGYs0l.js";import{t as Da}from"./createLucideIcon-D5guW7EU.js";import{t as qa}from"./x-C-6liIBr.js";import{a as Va,r as La}from"./tree-actions-DupCr05h.js";import"./markdown-renderer-iZsApCjt.js";import{t as De}from"./add-connection-dialog-CTDOffvK.js";import{t as qe}from"./plus-BgB18UzY.js";import{a as Ba}from"./input-DA8xlX70.js";import{n as Ma,o as Ea}from"./column-preview-C1eLuwSw.js";import{t as Oa}from"./workflow-Bm8qF7yj.js";import"./dist-HyCgERnW.js";import"./dist-BwnT-_gD.js";import"./dist-rBRbke5D.js";import"./dist-RMRSa-Mj.js";import"./dist-BURue7-e.js";import"./session-0B5NBztP.js";import"./purify.es-B9KxLTTS.js";import"./dates-CTxr0EqQ.js";import{t as za}from"./copy-icon-BuRdHNPA.js";import{t as Ua}from"./context-QkTujrKn.js";import"./utils-DCL4n9wx.js";import"./vega-loader.browser-C8wT63Va.js";import"./defaultLocale-BLUna9fQ.js";import"./defaultLocale-DzliDDTm.js";import{t as Ve}from"./cell-link-kkkjfd8C.js";import"./chunk-5FQGJX7Z-D91x7QHS.js";import{r as Aa}from"./html-to-image-Cso6uxBX.js";import{o as Ga}from"./focus-cLz6vpFk.js";import{n as pe}from"./useAsyncData-bgszE9F0.js";import{a as Ha,i as Ka,n as Wa,o as Le,r as Ja,t as Qa}from"./table-BGPSHfig.js";import"./react-resizable-panels.browser.esm-CV8-hvjx.js";import{a as Xa,f as Ya,o as re,t as Za}from"./command-BmOGG6-2.js";import{n as et}from"./icons-Ol38nIbL.js";import{t as at}from"./useDeepCompareMemoize-CVmg-GkP.js";import{t as tt}from"./empty-state-vCWg-_A9.js";import{n as st,t as lt}from"./common-ByASZK7c.js";import{a as nt,i as rt,n as Be,r as Me,t as Ee}from"./components-D8MC-pIV.js";var ot=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"}]]),A=Pe(),P=ge(Xe(),1),s=ge(Sa(),1),fe=1;function Oe(a){return 1.75+a*fe}function ct(a){return 3+a*fe}function ze(a){return 3.25+a*fe}var U={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 mt=ve(a=>{let e=a(_e),t=a(ya),l=a(ma);return Y(e,n=>{if(!n.variable_name)return-1;let m=Object.values(t).find(g=>g.name===n.variable_name);if(!m)return 0;let r=l.inOrderIds.indexOf(m.declaredBy[0]);return r===-1?0:r})});const it=Ce("marimo:datasources:hideEmpty",!1,Se,{getOnInit:!0});function Ue(a){let e=!1,t=[];for(let l of a){if(!ce(l)||!oe(l)){t.push(l);continue}let n=l.child_schemas??[],m=Ue(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 dt(a){let e=!1,t=[];for(let l of a){if(Ie(l)&&l.schemas.length===0){e=!0;continue}if(l.schemas.length===0){t.push(l);continue}let n=Ue(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 Ae=ve(a=>{let e=new Map(a(ha));for(let t of ke){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=>ke.has(t.name)?1:0)}),ht=()=>{let a=(0,A.c)(42),[e,t]=P.useState(""),[l,n]=ye(it),m=je(Ne),r=Q(mt),g=Q(Ae),i;e:{if(!l){i=g;break e}let f,S;a[0]===g?(f=a[1],S=a[2]):(f=!1,S=g.map(I=>{let k=dt(I.databases);return k===I.databases?I:(f=!0,{...I,databases:k})}),a[0]=g,a[1]=f,a[2]=S),i=f?S:g}let x=i;if(r.length===0&&x.length===0){let f;return a[3]===Symbol.for("react.memo_cache_sentinel")?(f=(0,s.jsx)(tt,{title:"No tables found",description:"Any datasets/dataframes in the global scope will be shown here.",action:(0,s.jsx)(De,{children:(0,s.jsxs)(ne,{variant:"outline",size:"sm",children:["Add database or catalog",(0,s.jsx)(qe,{className:"h-4 w-4 ml-2"})]})}),icon:(0,s.jsx)(ie,{})}),a[3]=f):f=a[3],f}let b=!!e.trim(),o;a[4]===m?o=a[5]:(o=f=>{m(f.length>0),t(f)},a[4]=m,a[5]=o);let c;a[6]!==e||a[7]!==o?(c=(0,s.jsx)(Xa,{placeholder:"Search tables...",className:"h-6 m-1",value:e,onValueChange:o,rootClassName:"flex-1 border-r border-b-0"}),a[6]=e,a[7]=o,a[8]=c):c=a[8];let d;a[9]===b?d=a[10]:(d=b&&(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)(qa,{className:"h-4 w-4"})}),a[9]=b,a[10]=d);let y=!l,h;a[11]!==l||a[12]!==n?(h=()=>n(!l),a[11]=l,a[12]=n,a[13]=h):h=a[13];let v;a[14]!==y||a[15]!==h?(v=(0,s.jsx)(Va,{"data-testid":"datasources-hide-empty-button",isVisible:y,onToggle:h,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]=y,a[15]=h,a[16]=v):v=a[16];let j;a[17]===Symbol.for("react.memo_cache_sentinel")?(j=(0,s.jsx)(De,{children:(0,s.jsx)(ne,{variant:"ghost",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden",children:(0,s.jsx)(qe,{className:"h-4 w-4"})})}),a[17]=j):j=a[17];let p;a[18]!==c||a[19]!==d||a[20]!==v?(p=(0,s.jsxs)("div",{className:"flex items-center w-full border-b",children:[c,d,v,j]}),a[18]=c,a[19]=d,a[20]=v,a[21]=p):p=a[21];let N;if(a[22]!==x||a[23]!==b||a[24]!==e){let f;a[26]!==b||a[27]!==e?(f=S=>(0,s.jsx)(ut,{connection:S,hasChildren:S.databases.length>0,children:S.databases.map(I=>(0,s.jsx)(xt,{connection:S,database:I,hasSearch:b,searchValue:e},I.name))},S.name),a[26]=b,a[27]=e,a[28]=f):f=a[28],N=x.map(f),a[22]=x,a[23]=b,a[24]=e,a[25]=N}else N=a[25];let w;a[29]!==x.length||a[30]!==r.length?(w=x.length>0&&r.length>0&&(0,s.jsxs)(Fe,{className:"pr-2",style:L(U.engine),children:[(0,s.jsx)(et,{className:"h-4 w-4 text-muted-foreground"}),(0,s.jsx)("span",{className:"text-xs",children:"Python"})]}),a[29]=x.length,a[30]=r.length,a[31]=w):w=a[31];let u;a[32]!==e||a[33]!==r?(u=r.length>0&&(0,s.jsx)(be,{tables:r,searchValue:e}),a[32]=e,a[33]=r,a[34]=u):u=a[34];let C;a[35]!==w||a[36]!==u||a[37]!==N?(C=(0,s.jsxs)(Ya,{className:"flex flex-col",children:[N,w,u]}),a[35]=w,a[36]=u,a[37]=N,a[38]=C):C=a[38];let _;return a[39]!==C||a[40]!==p?(_=(0,s.jsxs)(Za,{className:"border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden",shouldFilter:!1,children:[p,C]}),a[39]=C,a[40]=p,a[41]=_):_=a[41],_};var ut=a=>{let e=(0,A.c)(26),{connection:t,children:l,hasChildren:n}=a,m=t.name===ea,r=m?"In-Memory":t.name,{previewDataSourceConnection:g}=Ra(),i;e[0]!==t.name||e[1]!==g?(i=async()=>{await g({engine:t.name})},e[0]=t.name,e[1]=g,e[2]=i):i=e[2];let x=i,b;e[3]===Symbol.for("react.memo_cache_sentinel")?(b=L(U.engine),e[3]=b):b=e[3];let o;e[4]===t.dialect?o=e[5]:(o=(0,s.jsx)(ua,{className:"h-4 w-4 text-muted-foreground",name:t.dialect}),e[4]=t.dialect,e[5]=o);let c;e[6]===t.dialect?c=e[7]:(c=pa(t.dialect),e[6]=t.dialect,e[7]=c);let d;e[8]===c?d=e[9]:(d=(0,s.jsx)("span",{className:"text-xs",children:c}),e[8]=c,e[9]=d);let y=r,h;e[10]===y?h=e[11]:(h=(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",(0,s.jsx)(nt,{variableName:y}),")"]}),e[10]=y,e[11]=h);let v;e[12]!==x||e[13]!==m?(v=!m&&(0,s.jsx)(La,{onClick:x,tooltip:"Refresh connection",className:"ml-auto h-4 p-0",iconClassName:"h-3.5 w-3.5"}),e[12]=x,e[13]=m,e[14]=v):v=e[14];let j;e[15]!==o||e[16]!==d||e[17]!==h||e[18]!==v?(j=(0,s.jsxs)(Fe,{className:"pr-2",style:b,children:[o,d,h,v]}),e[15]=o,e[16]=d,e[17]=h,e[18]=v,e[19]=j):j=e[19];let p;e[20]!==l||e[21]!==n?(p=n?l:(0,s.jsx)(le,{content:"No databases available",style:L(U.engineEmpty)}),e[20]=l,e[21]=n,e[22]=p):p=e[22];let N;return e[23]!==p||e[24]!==j?(N=(0,s.jsxs)(s.Fragment,{children:[j,p]}),e[23]=p,e[24]=j,e[25]=N):N=e[25],N},Ge=P.createContext(null);function He(){let a=P.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 xt=a=>{let e=(0,A.c)(22),{connection:t,database:l,hasSearch:n,searchValue:m}=a,r;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?(r={engineName:t.name,databaseName:l.name,dialect:t.dialect,defaultSchema:t.default_schema,defaultDatabase:t.default_database,hasSearch:n,searchValue: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,e[6]=m,e[7]=r):r=e[7];let g=r,i=t.name,x=l.schemas,b;e[8]===l?b=e[9]:(b=Ie(l),e[8]=l,e[9]=b);let o;e[10]===Symbol.for("react.memo_cache_sentinel")?(o=[],e[10]=o):o=e[10];let c;e[11]!==l.schemas||e[12]!==b?(c=(0,s.jsx)(We,{schemas:x,schemasResolved:b,schemaPath:o,depth:0}),e[11]=l.schemas,e[12]=b,e[13]=c):c=e[13];let d;e[14]!==c||e[15]!==g?(d=(0,s.jsx)(Ge.Provider,{value:g,children:c}),e[14]=c,e[15]=g,e[16]=d):d=e[16];let y;return e[17]!==t.name||e[18]!==l||e[19]!==n||e[20]!==d?(y=(0,s.jsx)(pt,{engineName:i,database:l,hasSearch:n,children:d}),e[17]=t.name,e[18]=l,e[19]=n,e[20]=d,e[21]=y):y=e[21],y},pt=a=>{let e=(0,A.c)(26),{hasSearch:t,engineName:l,database:n,children:m}=a,[r,g]=P.useState(!1),[i,x]=P.useState(!1),[b,o]=P.useState(t);b!==t&&(o(t),g(t));let c;e[0]===Symbol.for("react.memo_cache_sentinel")?(c=L(U.database),e[0]=c):c=e[0];let d;e[1]!==r||e[2]!==i?(d=()=>{g(!r),x(!i)},e[1]=r,e[2]=i,e[3]=d):d=e[3];let y=`${l}:${n.name}`,h;e[4]===r?h=e[5]:(h=(0,s.jsx)($e,{isExpanded:r}),e[4]=r,e[5]=h);let v=i&&r?"text-foreground":"text-muted-foreground",j;e[6]===v?j=e[7]:(j=X("h-4 w-4",v),e[6]=v,e[7]=j);let p;e[8]===j?p=e[9]:(p=(0,s.jsx)(ie,{className:j}),e[8]=j,e[9]=p);let N=i&&r&&"font-semibold",w;e[10]===N?w=e[11]:(w=X(N),e[10]=N,e[11]=w);let u;e[12]===n.name?u=e[13]:(u=n.name===""?(0,s.jsx)("i",{children:"Not connected"}):n.name,e[12]=n.name,e[13]=u);let C;e[14]!==u||e[15]!==w?(C=(0,s.jsx)("span",{className:w,children:u}),e[14]=u,e[15]=w,e[16]=C):C=e[16];let _;e[17]!==C||e[18]!==d||e[19]!==y||e[20]!==h||e[21]!==p?(_=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:c,onSelect:d,value:y,children:[h,p,C]}),e[17]=C,e[18]=d,e[19]=y,e[20]=h,e[21]=p,e[22]=_):_=e[22];let f=r&&m,S;return e[23]!==_||e[24]!==f?(S=(0,s.jsxs)(s.Fragment,{children:[_,f]}),e[23]=_,e[24]=f,e[25]=S):S=e[25],S},We=a=>{let{schemas:e,schemasResolved:t,depth:l}=a,n=He(),{engineName:m,databaseName:r,searchValue:g}=n,{addSchemaList:i}=me(),x=at(a.schemaPath),[b,o]=P.useState(!1),{isPending:c,error:d}=pe(async()=>{if(!t&&m){o(!0);try{i({schemas:(await Ze.request({engine:m,database:r,schemaPath:x})).schemas??[],sqlSchemaContext:{engine:m,database:r,schemaPath:x}})}finally{o(!1)}}},[t,m,r,x]),y=L(Oe(l));return c||b?(0,s.jsx)(he,{message:"Loading schemas...",style:y}):d?(0,s.jsx)(ue,{error:d,style:y}):e.length===0?(0,s.jsx)(le,{content:"No schemas available",style:y}):(0,s.jsx)(s.Fragment,{children:e.map(h=>ca(h.name)?(0,s.jsx)(be,{tables:h.tables,tablesResolved:ce(h),searchValue:g,sqlTableContext:Ke(n,{schema:h.name,schemaPath:x})},h.name):(0,s.jsx)(ft,{schema:h,schemaPath:[...x,h.name],depth:l},h.name))})},ft=a=>{let e=(0,A.c)(36),{schema:t,schemaPath:l,depth:n}=a,m=He(),{databaseName:r,hasSearch:g,searchValue:i}=m,[x,b]=P.useState(g),[o,c]=P.useState(!1),d=`${r}:${l.join(".")}`,y;e[0]===t.child_schemas?y=e[1]:(y=t.child_schemas??[],e[0]=t.child_schemas,e[1]=y);let h=y,v;e[2]===n?v=e[3]:(v=L(Oe(n)),e[2]=n,e[3]=v);let j;e[4]!==x||e[5]!==o?(j=()=>{b(!x),c(!o)},e[4]=x,e[5]=o,e[6]=j):j=e[6];let p;e[7]===x?p=e[8]:(p=(0,s.jsx)($e,{isExpanded:x}),e[7]=x,e[8]=p);let N=o&&x&&"text-foreground",w;e[9]===N?w=e[10]:(w=X("h-4 w-4 text-muted-foreground",N),e[9]=N,e[10]=w);let u;e[11]===w?u=e[12]:(u=(0,s.jsx)(da,{className:w}),e[11]=w,e[12]=u);let C=o&&x&&"font-semibold",_;e[13]===C?_=e[14]:(_=X(C),e[13]=C,e[14]=_);let f;e[15]!==t.name||e[16]!==_?(f=(0,s.jsx)("span",{className:_,children:t.name}),e[15]=t.name,e[16]=_,e[17]=f):f=e[17];let S;e[18]!==v||e[19]!==j||e[20]!==p||e[21]!==u||e[22]!==f||e[23]!==d?(S=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:v,onSelect:j,value:d,children:[p,u,f]}),e[18]=v,e[19]=j,e[20]=p,e[21]=u,e[22]=f,e[23]=d,e[24]=S):S=e[24];let I;e[25]!==h||e[26]!==n||e[27]!==x||e[28]!==t||e[29]!==l||e[30]!==i||e[31]!==m?(I=x&&(0,s.jsxs)(s.Fragment,{children:[(h.length>0||!oe(t))&&(0,s.jsx)(We,{schemas:h,schemasResolved:oe(t),schemaPath:l,depth:n+1}),(0,s.jsx)(be,{tables:t.tables,tablesResolved:ce(t),searchValue:i,tableIndentRem:ct(n),columnIndentRem:ze(n),sqlTableContext:Ke(m,{schema:t.name,schemaPath:l})})]}),e[25]=h,e[26]=n,e[27]=x,e[28]=t,e[29]=l,e[30]=i,e[31]=m,e[32]=I):I=e[32];let k;return e[33]!==S||e[34]!==I?(k=(0,s.jsxs)(s.Fragment,{children:[S,I]}),e[33]=S,e[34]=I,e[35]=k):k=e[35],k},be=a=>{let e=(0,A.c)(31),{tables:t,sqlTableContext:l,searchValue:n,tablesResolved:m,tableIndentRem:r,columnIndentRem:g}=a,i=m===void 0?!0:m,{addTableList:x}=me(),[b,o]=P.useState(!1),c;e[0]!==x||e[1]!==l||e[2]!==i?(c=async()=>{if(!i&&l){o(!0);let{engine:u,database:C,schema:_,schemaPath:f}=l,S=await fa.request({engine:u,database:C,schema:_,schemaPath:f??[]});if(!(S!=null&&S.tables))throw o(!1),Error("No tables available");x({tables:S.tables,sqlTableContext:l}),o(!1)}},e[0]=x,e[1]=l,e[2]=i,e[3]=c):c=e[3];let d;e[4]!==l||e[5]!==i?(d=[i,l],e[4]=l,e[5]=i,e[6]=d):d=e[6];let{isPending:y,error:h}=pe(c,d),v=r??U.tableLoading,j;e[7]===v?j=e[8]:(j=L(v),e[7]=v,e[8]=j);let p=j;if(y||b){let u;return e[9]===p?u=e[10]:(u=(0,s.jsx)(he,{message:"Loading tables...",style:p}),e[9]=p,e[10]=u),u}if(h){let u;return e[11]!==h||e[12]!==p?(u=(0,s.jsx)(ue,{error:h,style:p}),e[11]=h,e[12]=p,e[13]=u):u=e[13],u}if(t.length===0){let u;return e[14]===p?u=e[15]:(u=(0,s.jsx)(le,{content:"No tables found",style:p}),e[14]=p,e[15]=u),u}let N;if(e[16]!==g||e[17]!==n||e[18]!==l||e[19]!==r||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 C=t.filter(u),_;e[24]!==g||e[25]!==n||e[26]!==l||e[27]!==r?(_=f=>(0,s.jsx)(bt,{table:f,sqlTableContext:l,isSearching:!!n,tableIndentRem:r,columnIndentRem:g},f.name),e[24]=g,e[25]=n,e[26]=l,e[27]=r,e[28]=_):_=e[28],N=C.map(_),e[16]=g,e[17]=n,e[18]=l,e[19]=r,e[20]=t,e[21]=N}else N=e[21];let w;return e[29]===N?w=e[30]:(w=(0,s.jsx)(s.Fragment,{children:N}),e[29]=N,e[30]=w),w},bt=a=>{let e=(0,A.c)(69),{table:t,sqlTableContext:l,isSearching:n,tableIndentRem:m,columnIndentRem:r}=a,{addTable:g}=me(),[i,x]=P.useState(!1),b=t.columns.length>0,o;e[0]!==g||e[1]!==i||e[2]!==l||e[3]!==t.name||e[4]!==b?(o=async()=>{if(i&&!b&&l){let{engine:D,database:ae,schema:te,schemaPath:Qe}=l,se=await ta.request({engine:D,database:ae,schema:te,tableName:t.name,schemaPath:Qe??[]});if(!(se!=null&&se.table))throw Error("No table details available");g({table:se.table,sqlTableContext:l})}},e[0]=g,e[1]=i,e[2]=l,e[3]=t.name,e[4]=b,e[5]=o):o=e[5];let c;e[6]!==i||e[7]!==b?(c=[i,b],e[6]=i,e[7]=b,e[8]=c):c=e[8];let{isFetching:d,isPending:y,error:h}=pe(o,c),v=Q(Na),j=Ga(),{createNewCell:p}=Ye(),N=Re(),w;e[9]!==N||e[10]!==v||e[11]!==p||e[12]!==j||e[13]!==l||e[14]!==t?(w=()=>{Aa({autoInstantiate:v,createNewCell:p,fromCellId:j}),N((()=>{if(t.source_type==="catalog"){let D=l!=null&&l.database?[l.database,...l.schemaPath??[],t.name].join("."):t.name;return`${t.engine}.load_table("${D}")`}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 $a(t.source_type),""}})())},e[9]=N,e[10]=v,e[11]=p,e[12]=j,e[13]=l,e[14]=t,e[15]=w):w=e[15];let u=w,C;e[16]!==t.num_columns||e[17]!==t.num_rows?(C=()=>{let D=[];return t.num_rows!=null&&D.push(`${t.num_rows} rows`),t.num_columns!=null&&D.push(`${t.num_columns} columns`),D.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:D.join(", ")})})},e[16]=t.num_columns,e[17]=t.num_rows,e[18]=C):C=e[18];let _=C,f;e[19]!==r||e[20]!==h||e[21]!==d||e[22]!==y||e[23]!==l||e[24]!==t?(f=()=>{let D=L(r??U.tableLoading);if(y||d)return(0,s.jsx)(he,{message:"Loading columns...",style:D});if(h)return(0,s.jsx)(ue,{error:h,style:D});let ae=t.columns;return ae.length===0?(0,s.jsx)(le,{content:"No columns found",style:D}):ae.map(te=>(0,s.jsx)(gt,{table:t,column:te,sqlTableContext:l,columnIndentRem:r},te.name))},e[19]=r,e[20]=h,e[21]=d,e[22]=y,e[23]=l,e[24]=t,e[25]=f):f=e[25];let S=f,I;e[26]!==i||e[27]!==n||e[28]!==t.source_type||e[29]!==t.type?(I=()=>{if(t.source_type!=="local")return(0,s.jsx)(t.type==="table"?xa:ja,{className:"h-3 w-3",strokeWidth:i||n?2.5:void 0})},e[26]=i,e[27]=n,e[28]=t.source_type,e[29]=t.type,e[30]=I):I=e[30];let k=I,q;e[31]!==l||e[32]!==t.name?(q=aa(l,t.name),e[31]=l,e[32]=t.name,e[33]=q):q=e[33];let B=q,M=m??(l?U.tableSchemaless:0),E=(i||n)&&"font-semibold",T;e[34]===E?T=e[35]:(T=X("rounded-none group h-8 cursor-pointer",E),e[34]=E,e[35]=T);let F;e[36]===M?F=e[37]:(F=L(M),e[36]=M,e[37]=F);let $;e[38]===i?$=e[39]:($=()=>x(!i),e[38]=i,e[39]=$);let V;e[40]===k?V=e[41]:(V=k(),e[40]=k,e[41]=V);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 z;e[44]!==V||e[45]!==O?(z=(0,s.jsxs)("div",{className:"flex gap-2 items-center flex-1 pl-1",children:[V,O]}),e[44]=V,e[45]=O,e[46]=z):z=e[46];let R;e[47]===_?R=e[48]:(R=_(),e[47]=_,e[48]=R);let H;e[49]===u?H=e[50]:(H=Fa.stopPropagation(()=>u()),e[49]=u,e[50]=H);let Z;e[51]===Symbol.for("react.memo_cache_sentinel")?(Z=(0,s.jsx)(Ea,{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]!==i||e[55]!==F||e[56]!==$||e[57]!==z||e[58]!==R||e[59]!==K||e[60]!==T||e[61]!==B?(W=(0,s.jsxs)(re,{className:T,style:F,value:B,"aria-selected":i,forceMount:!0,onSelect:$,children:[z,R,K]}),e[54]=i,e[55]=F,e[56]=$,e[57]=z,e[58]=R,e[59]=K,e[60]=T,e[61]=B,e[62]=W):W=e[62];let J;e[63]!==i||e[64]!==S?(J=i&&S(),e[63]=i,e[64]=S,e[65]=J):J=e[65];let ee;return e[66]!==W||e[67]!==J?(ee=(0,s.jsxs)(s.Fragment,{children:[W,J]}),e[66]=W,e[67]=J,e[68]=ee):ee=e[68],ee},gt=a=>{var O,z;let e=(0,A.c)(51),{table:t,column:l,sqlTableContext:n,columnIndentRem:m}=a,[r,g]=P.useState(!1),i=Q(Ne),x=je(la);i&&r&&g(!1),x(r?R=>new Set([...R,`${t.name}:${l.name}`]):R=>(R.delete(`${t.name}:${l.name}`),new Set(R)));let b=Re(),{columnsPreviews:o}=oa(),c;e[0]!==l.name||e[1]!==t.primary_keys?(c=((O=t.primary_keys)==null?void 0:O.includes(l.name))||!1,e[0]=l.name,e[1]=t.primary_keys,e[2]=c):c=e[2];let d=c,y;e[3]!==l.name||e[4]!==t.indexes?(y=((z=t.indexes)==null?void 0:z.includes(l.name))||!1,e[3]=l.name,e[4]=t.indexes,e[5]=y):y=e[5];let h=y,v;e[6]===b?v=e[7]:(v=R=>{b(R)},e[6]=b,e[7]=v);let j=v,p=jt,N=r?"font-semibold":"",w;e[8]!==l.name||e[9]!==N?(w=(0,s.jsx)("span",{className:N,children:l.name}),e[8]=l.name,e[9]=N,e[10]=w):w=e[10];let u=w,C=`${t.name}.${l.name}`,_=`${t.name}.${l.name}`,f;e[11]===r?f=e[12]:(f=()=>g(!r),e[11]=r,e[12]=f);let S;e[13]!==m||e[14]!==n?(S=m??(n?ze(0):U.columnLocal),e[13]=m,e[14]=n,e[15]=S):S=e[15];let I;e[16]===S?I=e[17]:(I=L(S),e[16]=S,e[17]=I);let k;e[18]!==l.type||e[19]!==u?(k=(0,s.jsx)(Ta,{columnName:u,dataType:l.type}),e[18]=l.type,e[19]=u,e[20]=k):k=e[20];let q;e[21]===d?q=e[22]:(q=d&&p({tooltipContent:"Primary key",content:"PK"}),e[21]=d,e[22]=q);let B;e[23]===h?B=e[24]:(B=h&&p({tooltipContent:"Indexed",content:"IDX"}),e[23]=h,e[24]=B);let M;e[25]!==I||e[26]!==k||e[27]!==q||e[28]!==B?(M=(0,s.jsxs)("div",{className:"flex flex-row gap-2 items-center flex-1",style:I,children:[k,q,B]}),e[25]=I,e[26]=k,e[27]=q,e[28]=B,e[29]=M):M=e[29];let E;e[30]===l.name?E=e[31]:(E=(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]=E);let T;e[32]===l.external_type?T=e[33]:(T=(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:l.external_type}),e[32]=l.external_type,e[33]=T);let F;e[34]!==M||e[35]!==E||e[36]!==T||e[37]!==C||e[38]!==_||e[39]!==f?(F=(0,s.jsxs)(re,{className:"rounded-none py-1 group cursor-pointer",value:_,onSelect:f,children:[M,E,T]},C),e[34]=M,e[35]=E,e[36]=T,e[37]=C,e[38]=_,e[39]=f,e[40]=F):F=e[40];let $;e[41]!==l||e[42]!==o||e[43]!==j||e[44]!==r||e[45]!==n||e[46]!==t?($=r&&(0,s.jsx)("div",{className:"pr-2 py-2 bg-(--slate-1) shadow-inner border-b",style:L(U.columnPreview),children:(0,s.jsx)(wa,{children:(0,s.jsx)(Ma,{table:t,column:l,onAddColumnChart:j,preview:o.get(n?`${n.database}.${n.schema}.${t.name}:${l.name}`:`${t.name}:${l.name}`),sqlTableContext:n})})}),e[41]=l,e[42]=o,e[43]=j,e[44]=r,e[45]=n,e[46]=t,e[47]=$):$=e[47];let V;return e[48]!==F||e[49]!==$?(V=(0,s.jsxs)(s.Fragment,{children:[F,$]}),e[48]=F,e[49]=$,e[50]=V):V=e[50],V};function jt(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 Rs(a){return a}var G={name:"name",type:"type-value",defs:"defs-refs"},yt=[{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)(lt,{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=m=>{let r=ia(m);r&&ga(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)(ot,{className:"w-3.5 h-3.5 text-muted-foreground"})}),e.length===1?(0,s.jsx)(Ve,{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)(Ve,{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)(Oa,{className:"w-3.5 h-3.5 text-muted-foreground"})}),(0,s.jsx)(st,{maxCount:3,cellIds:t,skipScroll:!0,onClick:n})]})]})}}];function vt({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 Je=(0,P.memo)(({className:a,cellIds:e,variables:t})=>{let[l,n]=P.useState([]),[m,r]=P.useState(""),g=ra(),{locale:i}=Ua(),x=(0,P.useMemo)(()=>{let o=c=>{let d=g[c];return va(d)?`cell-${e.indexOf(c)}`:d??`cell-${e.indexOf(c)}`};return Object.values(t).map(c=>({...c,declaredByNames:c.declaredBy.map(o),usedByNames:c.usedBy.map(o)}))},[t,g,e]),b=Ca({data:(0,P.useMemo)(()=>{let o=new Map;return e.forEach((c,d)=>o.set(c,d)),vt({variables:x,sort:l[0],cellIdToIndex:o})},[x,l,e]),columns:yt,getCoreRowModel:Pa(),onGlobalFilterChange:r,getFilteredRowModel:Ia(),enableFilters:!0,enableGlobalFilter:!0,enableColumnPinning:!1,getColumnCanGlobalFilter(o){return o.columnDef.enableGlobalFilter??!0},globalFilterFn:"auto",manualSorting:!0,locale:i,onSortingChange:n,getSortedRowModel:ka(),state:{sorting:l,globalFilter:m}});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(Ba,{className:"w-full",placeholder:"Search",value:m,onChange:o=>r(o.target.value)}),(0,s.jsxs)(Qa,{className:X("w-full text-sm flex-1 border-separate border-spacing-0",a),children:[(0,s.jsx)(Ha,{children:(0,s.jsx)(Le,{className:"whitespace-nowrap text-xs",children:b.getFlatHeaders().map(o=>(0,s.jsx)(Ka,{className:"sticky top-0 bg-background border-b",children:Te(o.column.columnDef.header,o.getContext())},o.id))})}),(0,s.jsx)(Wa,{children:b.getRowModel().rows.map(o=>(0,s.jsx)(Le,{className:"hover:bg-accent",children:o.getVisibleCells().map(c=>(0,s.jsx)(Ja,{className:"border-b",children:Te(c.column.columnDef.cell,c.getContext())},c.id))},o.id))})]})]})});Je.displayName="VariableTable";var Nt=Pe(),wt=Ce("marimo:session-panel:state",{openSections:["variables"],hasUserInteracted:!1},Se),St=()=>{let a=(0,Nt.c)(24),e=sa(),t=na(),l=Q(_e),n=Q(Ae),[m,r]=ye(wt),g=l.length+n.length,i;a[0]!==g||a[1]!==m.hasUserInteracted||a[2]!==m.openSections?(i=!m.hasUserInteracted&&g>0?[...new Set([...m.openSections,"datasources"])]:m.openSections,a[0]=g,a[1]=m.hasUserInteracted,a[2]=m.openSections,a[3]=i):i=a[3];let x=i,b;a[4]===r?b=a[5]:(b=u=>{r({openSections:u,hasUserInteracted:!0})},a[4]=r,a[5]=b);let o=b,c=!x.includes("datasources")&&g>0,d;a[6]===Symbol.for("react.memo_cache_sentinel")?(d=(0,s.jsx)(ie,{className:"w-4 h-4"}),a[6]=d):d=a[6];let y;a[7]!==g||a[8]!==c?(y=c&&(0,s.jsx)(rt,{children:g}),a[7]=g,a[8]=c,a[9]=y):y=a[9];let h;a[10]===y?h=a[11]:(h=(0,s.jsxs)(Me,{children:[d,"Data sources",y]}),a[10]=y,a[11]=h);let v;a[12]===Symbol.for("react.memo_cache_sentinel")?(v=(0,s.jsx)(Ee,{children:(0,s.jsx)(ht,{})}),a[12]=v):v=a[12];let j;a[13]===h?j=a[14]:(j=(0,s.jsxs)(Be,{value:"datasources",children:[h,v]}),a[13]=h,a[14]=j);let p;a[15]===Symbol.for("react.memo_cache_sentinel")?(p=(0,s.jsxs)(Me,{children:[(0,s.jsx)(ba,{className:"w-4 h-4"}),"Variables"]}),a[15]=p):p=a[15];let N;a[16]!==t||a[17]!==e?(N=(0,s.jsxs)(Be,{value:"variables",lastItem:!0,children:[p,(0,s.jsx)(Ee,{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)(Je,{cellIds:t.inOrderIds,variables:e})})]}),a[16]=t,a[17]=e,a[18]=N):N=a[18];let w;return a[19]!==o||a[20]!==x||a[21]!==j||a[22]!==N?(w=(0,s.jsxs)(_a,{type:"multiple",value:x,onValueChange:o,className:"flex flex-col h-full overflow-auto",children:[j,N]}),a[19]=o,a[20]=x,a[21]=j,a[22]=N,a[23]=w):w=a[23],w};export{St as default};
|
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-DIYQ6dU9.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-BPPi7vOr.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/react-Bj1aDYRI.js">
|
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
<link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-nqk474t8.js">
|
|
203
203
|
<link rel="modulepreload" crossorigin href="./assets/square-function-uY_yJr5g.js">
|
|
204
204
|
<link rel="modulepreload" crossorigin href="./assets/spec-CPQR_o92.js">
|
|
205
|
-
<link rel="modulepreload" crossorigin href="./assets/column-preview-
|
|
205
|
+
<link rel="modulepreload" crossorigin href="./assets/column-preview-C1eLuwSw.js">
|
|
206
206
|
<link rel="modulepreload" crossorigin href="./assets/icons-Ol38nIbL.js">
|
|
207
207
|
<link rel="modulepreload" crossorigin href="./assets/radio-group-NLdY8xke.js">
|
|
208
208
|
<link rel="modulepreload" crossorigin href="./assets/floating-outline-C3q3X-Lc.js">
|
package/package.json
CHANGED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import { render } 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 type { SQLTableContext } from "@/core/datasets/data-source-connections";
|
|
9
|
+
import type { DataTable, DataTableColumn } from "@/core/kernel/messages";
|
|
10
|
+
import { requestClientAtom } from "@/core/network/requests";
|
|
11
|
+
import { store } from "@/core/state/jotai";
|
|
12
|
+
import { DatasetColumnPreview } from "../column-preview";
|
|
13
|
+
|
|
14
|
+
const wrapper = ({ children }: { children: React.ReactNode }) => (
|
|
15
|
+
<Provider store={store}>{children}</Provider>
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const table: DataTable = {
|
|
19
|
+
name: "users",
|
|
20
|
+
columns: [],
|
|
21
|
+
source: "my_engine",
|
|
22
|
+
// Not "connection"/"catalog", so a preview is requested on mount.
|
|
23
|
+
source_type: "duckdb",
|
|
24
|
+
type: "table",
|
|
25
|
+
engine: "my_engine" as DataTable["engine"],
|
|
26
|
+
indexes: null,
|
|
27
|
+
num_columns: null,
|
|
28
|
+
num_rows: null,
|
|
29
|
+
variable_name: null,
|
|
30
|
+
primary_keys: null,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const column = { name: "email" } as DataTableColumn;
|
|
34
|
+
|
|
35
|
+
function renderPreview(sqlTableContext?: SQLTableContext) {
|
|
36
|
+
const client = MockRequestClient.create();
|
|
37
|
+
store.set(requestClientAtom, client);
|
|
38
|
+
render(
|
|
39
|
+
<DatasetColumnPreview
|
|
40
|
+
table={table}
|
|
41
|
+
column={column}
|
|
42
|
+
preview={undefined}
|
|
43
|
+
onAddColumnChart={vi.fn()}
|
|
44
|
+
sqlTableContext={sqlTableContext}
|
|
45
|
+
/>,
|
|
46
|
+
{ wrapper },
|
|
47
|
+
);
|
|
48
|
+
return client;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const ctx = (
|
|
52
|
+
overrides: Partial<SQLTableContext> & { database: string; schema: string },
|
|
53
|
+
): SQLTableContext => ({
|
|
54
|
+
engine: "my_engine",
|
|
55
|
+
dialect: "duckdb",
|
|
56
|
+
...overrides,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
describe("DatasetColumnPreview fullyQualifiedTableName", () => {
|
|
60
|
+
beforeEach(() => {
|
|
61
|
+
vi.clearAllMocks();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it("uses just the table name without a SQL context", () => {
|
|
65
|
+
const client = renderPreview(undefined);
|
|
66
|
+
expect(client.previewDatasetColumn).toHaveBeenCalledWith(
|
|
67
|
+
expect.objectContaining({ fullyQualifiedTableName: "users" }),
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("qualifies with database and schema for flat engines", () => {
|
|
72
|
+
const client = renderPreview(ctx({ database: "db", schema: "public" }));
|
|
73
|
+
expect(client.previewDatasetColumn).toHaveBeenCalledWith(
|
|
74
|
+
expect.objectContaining({ fullyQualifiedTableName: "db.public.users" }),
|
|
75
|
+
);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it("does not emit a double dot for schemaless tables", () => {
|
|
79
|
+
// Regression: previously produced "db..users".
|
|
80
|
+
const client = renderPreview(ctx({ database: "db", schema: "" }));
|
|
81
|
+
expect(client.previewDatasetColumn).toHaveBeenCalledWith(
|
|
82
|
+
expect.objectContaining({ fullyQualifiedTableName: "db.users" }),
|
|
83
|
+
);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("includes the full schema path for nested namespaces", () => {
|
|
87
|
+
// Regression: previously dropped schemaPath and emitted "top.deep.users".
|
|
88
|
+
const client = renderPreview(
|
|
89
|
+
ctx({ database: "top", schema: "deep", schemaPath: ["nested", "deep"] }),
|
|
90
|
+
);
|
|
91
|
+
expect(client.previewDatasetColumn).toHaveBeenCalledWith(
|
|
92
|
+
expect.objectContaining({
|
|
93
|
+
fullyQualifiedTableName: "top.nested.deep.users",
|
|
94
|
+
}),
|
|
95
|
+
);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
@@ -29,7 +29,7 @@ import { Button } from "../ui/button";
|
|
|
29
29
|
import { Tooltip } from "../ui/tooltip";
|
|
30
30
|
import { ColumnPreviewContainer } from "./components";
|
|
31
31
|
import { InstallPackageButton } from "./install-package-button";
|
|
32
|
-
import { convertStatsName, sqlCode } from "./utils";
|
|
32
|
+
import { convertStatsName, sqlCode, tableUniqueId } from "./utils";
|
|
33
33
|
|
|
34
34
|
export const DatasetColumnPreview: React.FC<{
|
|
35
35
|
table: DataTable;
|
|
@@ -48,9 +48,7 @@ export const DatasetColumnPreview: React.FC<{
|
|
|
48
48
|
tableName: table.name,
|
|
49
49
|
columnName: column.name,
|
|
50
50
|
sourceType: table.source_type,
|
|
51
|
-
fullyQualifiedTableName: sqlTableContext
|
|
52
|
-
? `${sqlTableContext.database}.${sqlTableContext.schema}.${table.name}`
|
|
53
|
-
: table.name,
|
|
51
|
+
fullyQualifiedTableName: tableUniqueId(sqlTableContext, table.name),
|
|
54
52
|
});
|
|
55
53
|
};
|
|
56
54
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as I}from"./chunk-LvLJmgfZ.js";import{u as G}from"./useEvent-D91BmmQi.js";import{t as J}from"./react-Bj1aDYRI.js";import{D as R,Gr as M,Ur as U}from"./cells-DGi-ohLl.js";import{t as B}from"./compiler-runtime-B3qBwwSJ.js";import{c as H}from"./utils-CvI-39U6.js";import{t as K}from"./jsx-runtime-BqBOg78p.js";import{c as V,d as W,gt as X}from"./JsonOutput-CbiJ_QRH.js";import{t as q}from"./tooltip-B_PkSKN3.js";import{r as D,t as A}from"./button-BbCh-29a.js";import{r as Y}from"./requests-DIwGYs0l.js";import{t as Z}from"./createLucideIcon-D5guW7EU.js";import{t as ee}from"./useLifecycle-DieWOfXE.js";import{t as te}from"./spinner-Bhir8k53.js";import{r as ae}from"./useTheme-CI2eq4XN.js";import{t as re}from"./copy-icon-BuRdHNPA.js";import{t as se}from"./context-QkTujrKn.js";import{i as oe}from"./numbers-DGxQfQ-A.js";import{n as ne}from"./html-to-image-Cso6uxBX.js";import{o as ce}from"./focus-cLz6vpFk.js";var P=Z("square-plus",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]),L=B(),le=I(J(),1),s=I(K(),1);const ie=i=>{let e=(0,L.c)(53),{table:t,column:a,preview:r,onAddColumnChart:c,sqlTableContext:o}=i,{theme:u}=ae(),{previewDatasetColumn:l}=Y(),{locale:d}=se(),m;e[0]!==a.name||e[1]!==l||e[2]!==o||e[3]!==t.name||e[4]!==t.source||e[5]!==t.source_type?(m=()=>{l({source:t.source,tableName:t.name,columnName:a.name,sourceType:t.source_type,fullyQualifiedTableName:o?`${o.database}.${o.schema}.${t.name}`:t.name})},e[0]=a.name,e[1]=l,e[2]=o,e[3]=t.name,e[4]=t.source,e[5]=t.source_type,e[6]=m):m=e[6];let p=m,f;if(e[7]!==r||e[8]!==p||e[9]!==t.source_type?(f=()=>{r||t.source_type==="connection"||t.source_type==="catalog"||p()},e[7]=r,e[8]=p,e[9]=t.source_type,e[10]=f):f=e[10],ee(f),t.source_type==="connection"){let n=a.name,F=a.external_type,x;e[11]!==a.name||e[12]!==c||e[13]!==o||e[14]!==t?(x=D.stopPropagation(()=>{c(M({table:t,columnName:a.name,sqlTableContext:o}))}),e[11]=a.name,e[12]=c,e[13]=o,e[14]=t,e[15]=x):x=e[15];let C;e[16]===Symbol.for("react.memo_cache_sentinel")?(C=(0,s.jsx)(P,{className:"h-3 w-3 mr-1"}),e[16]=C):C=e[16];let h;e[17]===x?h=e[18]:(h=(0,s.jsxs)(A,{variant:"outline",size:"xs",onClick:x,children:[C," Add SQL cell"]}),e[17]=x,e[18]=h);let S;return e[19]!==a.external_type||e[20]!==a.name||e[21]!==h?(S=(0,s.jsxs)("span",{className:"text-xs text-muted-foreground gap-2 flex items-center justify-between pl-7",children:[n," (",F,")",h]}),e[19]=a.external_type,e[20]=a.name,e[21]=h,e[22]=S):S=e[22],S}if(t.source_type==="catalog"){let n;return e[23]!==a.external_type||e[24]!==a.name?(n=(0,s.jsxs)("span",{className:"text-xs text-muted-foreground gap-2 flex items-center justify-between pl-7",children:[a.name," (",a.external_type,")"]}),e[23]=a.external_type,e[24]=a.name,e[25]=n):n=e[25],n}if(!r){let n;return e[26]===Symbol.for("react.memo_cache_sentinel")?(n=(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:"Loading..."}),e[26]=n):n=e[26],n}let g;e[27]!==r.error||e[28]!==r.missing_packages||e[29]!==p?(g=r.error&&O({error:r.error,missingPackages:r.missing_packages,refetchPreview:p}),e[27]=r.error,e[28]=r.missing_packages,e[29]=p,e[30]=g):g=e[30];let y=g,_;e[31]!==a.type||e[32]!==d||e[33]!==r.stats?(_=r.stats&&Q({stats:r.stats,dataType:a.type,locale:d}),e[31]=a.type,e[32]=d,e[33]=r.stats,e[34]=_):_=e[34];let b=_,j;e[35]!==r.chart_spec||e[36]!==u?(j=r.chart_spec&&$(r.chart_spec,u),e[35]=r.chart_spec,e[36]=u,e[37]=j):j=e[37];let N=j,k;e[38]!==r.chart_code||e[39]!==t.source_type?(k=r.chart_code&&t.source_type==="local"&&(0,s.jsx)(E,{chartCode:r.chart_code}),e[38]=r.chart_code,e[39]=t.source_type,e[40]=k):k=e[40];let z=k,v;e[41]!==a.name||e[42]!==c||e[43]!==o||e[44]!==t?(v=t.source_type==="duckdb"&&(0,s.jsx)(q,{content:"Add SQL cell",delayDuration:400,children:(0,s.jsx)(A,{variant:"outline",size:"icon",className:"z-10 bg-background absolute right-1 -top-1",onClick:D.stopPropagation(()=>{c(M({table:t,columnName:a.name,sqlTableContext:o}))}),children:(0,s.jsx)(P,{className:"h-3 w-3"})})}),e[41]=a.name,e[42]=c,e[43]=o,e[44]=t,e[45]=v):v=e[45];let T=v;if(!y&&!b&&!N){let n;return e[46]===Symbol.for("react.memo_cache_sentinel")?(n=(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:"No data"}),e[46]=n):n=e[46],n}let w;return e[47]!==z||e[48]!==T||e[49]!==N||e[50]!==y||e[51]!==b?(w=(0,s.jsxs)(W,{children:[y,z,T,N,b]}),e[47]=z,e[48]=T,e[49]=N,e[50]=y,e[51]=b,e[52]=w):w=e[52],w};function O({error:i,missingPackages:e,refetchPreview:t}){return(0,s.jsxs)("div",{className:"text-xs text-muted-foreground p-2 border border-border rounded flex items-center justify-between",children:[(0,s.jsx)("span",{children:i}),e&&(0,s.jsx)(V,{packages:e,showMaxPackages:1,className:"w-32",onInstall:t})]})}function Q({stats:i,dataType:e,locale:t}){return(0,s.jsx)("div",{className:"gap-x-16 gap-y-1 grid grid-cols-2-fit border rounded p-2 empty:hidden",children:Object.entries(i).map(([a,r])=>r==null?null:(0,s.jsxs)("div",{className:"flex items-center gap-1 group",children:[(0,s.jsx)("span",{className:"text-xs min-w-[60px] capitalize",children:U(a,e)}),(0,s.jsx)("span",{className:"text-xs font-bold text-muted-foreground tracking-wide",children:oe(r,t)}),(0,s.jsx)(re,{className:"h-3 w-3 invisible group-hover:visible",value:String(r)})]},a))})}var me=(0,s.jsx)("div",{className:"flex justify-center",children:(0,s.jsx)(te,{className:"size-4"})});function $(i,e){let t=a=>({...a,background:"transparent",config:{...a.config,background:"transparent"}});return(0,s.jsx)(le.Suspense,{fallback:me,children:(0,s.jsx)(X,{"data-container-width":"container",spec:t(JSON.parse(i)),options:{theme:e==="dark"?"dark":"vox",height:100,width:"container",actions:!1,renderer:"canvas"}})})}const E=i=>{let e=(0,L.c)(10),{chartCode:t}=i,a=G(H),r=ce(),{createNewCell:c}=R(),o;e[0]!==a||e[1]!==c||e[2]!==r?(o=p=>{p.includes("alt")&&ne({autoInstantiate:a,createNewCell:c,fromCellId:r}),c({code:p,before:!1,cellId:r??"__end__"})},e[0]=a,e[1]=c,e[2]=r,e[3]=o):o=e[3];let u=o,l;e[4]!==t||e[5]!==u?(l=D.stopPropagation(()=>u(t)),e[4]=t,e[5]=u,e[6]=l):l=e[6];let d;e[7]===Symbol.for("react.memo_cache_sentinel")?(d=(0,s.jsx)(P,{className:"h-3 w-3"}),e[7]=d):d=e[7];let m;return e[8]===l?m=e[9]:(m=(0,s.jsx)(q,{content:"Add chart to notebook",delayDuration:400,children:(0,s.jsx)(A,{variant:"outline",size:"icon",className:"z-10 bg-background absolute right-1 -top-0.5",onClick:l,children:d})}),e[8]=l,e[9]=m),m};export{Q as a,O as i,ie as n,P as o,$ as r,E as t};
|