@marimo-team/frontend 0.24.1-dev73 → 0.24.1-dev76
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/{JsonOutput-CccpgHhH.js → JsonOutput-DFd7q8lz.js} +1 -1
- package/dist/assets/{MarimoErrorOutput-CQSjUfZF.js → MarimoErrorOutput-DfRv7_jc.js} +1 -1
- package/dist/assets/{agent-panel-aCrdxBqR.js → agent-panel-COvCNnaD.js} +1 -1
- package/dist/assets/{cell-editor-Ccz6ZIrN.js → cell-editor-DnyPiOtX.js} +1 -1
- package/dist/assets/{column-preview-Bu0prcGL.js → column-preview-_GkpGxG-.js} +1 -1
- package/dist/assets/{command-palette-BkgqIPoA.js → command-palette-BeHx267T.js} +1 -1
- package/dist/assets/{edit-page-D3tcLUVh.js → edit-page-C3Uo5Msq.js} +4 -4
- package/dist/assets/{error-panel-BfIYO7rp.js → error-panel-COOOtEg7.js} +1 -1
- package/dist/assets/{file-explorer-panel-B-2gZbyM.js → file-explorer-panel-DeF49Ng1.js} +1 -1
- package/dist/assets/{index-D5wvLV5P.js → index-BmNpxjzV.js} +2 -2
- package/dist/assets/{layout-DTlbjDSj.js → layout-RSFs10mJ.js} +3 -3
- package/dist/assets/{packages-panel-DYReU_PY.js → packages-panel-B8AaXFcI.js} +1 -1
- package/dist/assets/{panels-TxtH9Ugu.js → panels-DecWMR6G.js} +1 -1
- package/dist/assets/{reveal-component-DwgOv5_e.js → reveal-component-yDciCkP9.js} +1 -1
- package/dist/assets/{run-page-DHU-Zsqr.js → run-page-CCk94ccj.js} +1 -1
- package/dist/assets/{scratchpad-panel-HgEC2IJ_.js → scratchpad-panel-EL1m3Huh.js} +1 -1
- package/dist/assets/{session-panel-C2aB8z0I.js → session-panel-DKjUcjvg.js} +1 -1
- package/dist/assets/{skeleton-DMouyo29.js → skeleton-D71npu63.js} +1 -1
- package/dist/assets/useInstallPackage-u7d0wo79.js +1 -0
- package/dist/assets/{useNotebookActions-DIydRXTu.js → useNotebookActions-C0Uw9roU.js} +1 -1
- package/dist/index.html +5 -5
- package/package.json +1 -1
- package/src/core/packages/__tests__/useInstallPackage.test.tsx +123 -0
- package/src/core/packages/toast-components.tsx +16 -5
- package/src/core/packages/useInstallPackage.ts +12 -11
- package/dist/assets/useInstallPackage-Bq7SlWgN.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{c as t,f as n,l as r,u as i}from"./useEvent-xfs0Sn4r.js";import{t as a}from"./react-CBDbhulC.js";import{Cr as o,Ct as s,D as c,Da as l,Dn as u,Ea as d,Fi as f,Fn as p,Hn as m,Ht as h,Ji as g,Li as _,M as v,Oa as y,P as b,Pi as x,Qi as S,Sa as C,Ta as w,Wt as T,Xn as E,Yn as D,Zi as O,Zn as k,_a as A,ai as j,ba as M,bn as N,c as P,ga as F,gn as I,ha as L,i as R,ka as z,ma as ee,ni as te,ri as ne,ua as B,va as V,wa as re,xa as H,xn as ie,xo as U}from"./cells-CD9Jbpoa.js";import{t as W}from"./compiler-runtime-CYIjoINj.js";import{c as ae}from"./utils-CUZQNAWJ.js";import{t as oe}from"./ErrorBoundary-npvnLp9x.js";import{t as se}from"./cn-ldLVeaqm.js";import{t as ce}from"./jsx-runtime-B74pBk57.js";import{r as G}from"./config-Cl3eMWxb.js";import{$ as K,Q as q,_ as le,d as ue,et as de,g as fe,h as pe,m as me,nt as he,p as ge,rt as _e,tt as ve}from"./JsonOutput-CccpgHhH.js";import{t as ye}from"./tooltip-D7dq6bnc.js";import{r as be,t as xe}from"./button-Btj6GXNy.js";import{l as Se}from"./arrays-BqUx5USx.js";import{i as Ce}from"./strings-CpYReX2Q.js";import{r as we}from"./requests-C6_IaFh7.js";import{t as Te}from"./createLucideIcon-B7HeEoG2.js";import{r as Ee}from"./useNumberFormatter-DHJ9s6Vk.js";import{a as De,r as Oe}from"./tree-actions-Bjyy0vFK.js";import{a as ke}from"./input-Daz6sk8l.js";import{n as Ae,o as je}from"./column-preview-Bu0prcGL.js";import{t as Me}from"./workflow-SJ9KZapt.js";import{t as Ne}from"./context-Do8M9TDF.js";import{n as Pe}from"./useAsyncData-Buhk-UgR.js";import{t as Fe}from"./copy-icon-CRxVZTJ9.js";import{t as Ie}from"./cell-link-Z8JrraTv.js";import{a as Le,i as Re,n as ze,o as Be,r as Ve,t as He}from"./table-DmqOOjfe.js";import{n as Ue}from"./icons-CjLa9BiH.js";import{t as We}from"./useAddCell-h4OWLK5y.js";import{t as Ge}from"./useDeepCompareMemoize-CLytDdMl.js";import{t as Ke}from"./empty-state-kWyb5dCS.js";import{n as qe,t as Je}from"./common-Bb2s_Imb.js";import{a as Ye,i as Xe,n as Ze,o as Qe,r as $e,s as et,t as tt}from"./components-D5125bx8.js";import{r as nt}from"./panel-accordion-state-COnGLerF.js";var rt=Te(`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`}]]),J=W(),Y=e(a(),1),X=ce(),it=1;function at(e){return 1.75+e*it}function ot(e){return 3+e*it}function st(e){return 3.25+e*it}var Z={engineEmpty:.75,engine:.75,database:1,tableLoading:2.75,tableSchemaless:2,columnLocal:1.25,columnPreview:2.5};function Q(e){return{paddingLeft:`${e}rem`}}var ct=n(e=>{let t=e(F),n=e(j),r=e(R);return Se(t,e=>{if(!e.variable_name)return-1;let t=Object.values(n).find(t=>t.name===e.variable_name);if(!t)return 0;let i=r.inOrderIds.indexOf(t.declaredBy[0]);return i===-1?0:i})}),lt=U(`marimo:datasources:hideEmpty`,!1,te,{getOnInit:!0});function ut(e){let t=!1,n=[];for(let r of e){if(!C(r)||!M(r)){n.push(r);continue}let e=r.child_schemas??[],i=ut(e);if(r.tables.length===0&&i.length===0){t=!0;continue}if(i===e){n.push(r);continue}t=!0,n.push({...r,child_schemas:i})}return t?n:e}function dt(e){let t=!1,n=[];for(let r of e){if(H(r)&&r.schemas.length===0){t=!0;continue}if(r.schemas.length===0){n.push(r);continue}let e=ut(r.schemas);if(e.length===0){t=!0;continue}if(e===r.schemas){n.push(r);continue}t=!0,n.push({...r,schemas:e})}return t?n:e}var ft=()=>{let e=(0,J.c)(42),[n,a]=Y.useState(``),[o,s]=t(lt),c=i(L),l=r(ct),d=r(B),f;bb0:{if(!o){f=d;break bb0}let t,n;e[0]===d?(t=e[1],n=e[2]):(t=!1,n=d.map(e=>{let n=dt(e.databases);return n===e.databases?e:(t=!0,{...e,databases:n})}),e[0]=d,e[1]=t,e[2]=n),f=t?n:d}let p=f;if(l.length===0&&p.length===0){let t;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,X.jsx)(Ke,{title:`No tables found`,description:`Any datasets/dataframes in the global scope will be shown here.`,action:(0,X.jsx)(Qe,{group:`database`,label:`Add database or catalog`,variant:`outline`,size:`sm`}),icon:(0,X.jsx)(S,{})}),e[3]=t):t=e[3],t}let m;e[4]===n?m=e[5]:(m=n.trim(),e[4]=n,e[5]=m);let h=!!m,g;e[6]===c?g=e[7]:(g=e=>{c(e.length>0),a(e)},e[6]=c,e[7]=g);let _;e[8]!==n||e[9]!==g?(_=(0,X.jsx)(N,{placeholder:`Search tables...`,className:`h-6 m-1`,value:n,onValueChange:g,rootClassName:`flex-1 border-r border-b-0`}),e[8]=n,e[9]=g,e[10]=_):_=e[10];let v;e[11]===h?v=e[12]:(v=h&&(0,X.jsx)(`button`,{type:`button`,className:`float-right border-b px-2 m-0 h-full hover:bg-accent hover:text-accent-foreground`,onClick:()=>a(``),children:(0,X.jsx)(Ee,{className:`h-4 w-4`})}),e[11]=h,e[12]=v);let y=!o,b;e[13]!==o||e[14]!==s?(b=()=>s(!o),e[13]=o,e[14]=s,e[15]=b):b=e[15];let x;e[16]!==y||e[17]!==b?(x=(0,X.jsx)(De,{"data-testid":`datasources-hide-empty-button`,isVisible:y,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`}),e[16]=y,e[17]=b,e[18]=x):x=e[18];let C;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,X.jsx)(Qe,{group:`database`,label:`Add database or catalog`,compact:!0,variant:`ghost`,size:`sm`,className:`px-2 rounded-none focus-visible:outline-hidden`}),e[19]=C):C=e[19];let w;e[20]!==_||e[21]!==v||e[22]!==x?(w=(0,X.jsxs)(`div`,{className:`flex items-center w-full border-b`,children:[_,v,x,C]}),e[20]=_,e[21]=v,e[22]=x,e[23]=w):w=e[23];let T;if(e[24]!==p||e[25]!==n){let t;e[27]===n?t=e[28]:(t=e=>(0,X.jsx)(pt,{connection:e,hasChildren:e.databases.length>0,children:e.databases.map(t=>(0,X.jsx)(_t,{connection:e,database:t,searchValue:n},t.name))},e.name),e[27]=n,e[28]=t),T=p.map(t),e[24]=p,e[25]=n,e[26]=T}else T=e[26];let E;e[29]!==p.length||e[30]!==l.length?(E=p.length>0&&l.length>0&&(0,X.jsxs)(ge,{className:`pr-2`,style:Q(Z.engine),children:[(0,X.jsx)(Ue,{className:`h-4 w-4 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`text-xs`,children:`Python`})]}),e[29]=p.length,e[30]=l.length,e[31]=E):E=e[31];let D;e[32]!==n||e[33]!==l?(D=l.length>0&&(0,X.jsx)(xt,{tables:l,searchValue:n}),e[32]=n,e[33]=l,e[34]=D):D=e[34];let O;e[35]!==T||e[36]!==E||e[37]!==D?(O=(0,X.jsxs)(u,{className:`flex flex-col`,children:[T,E,D]}),e[35]=T,e[36]=E,e[37]=D,e[38]=O):O=e[38];let k;return e[39]!==O||e[40]!==w?(k=(0,X.jsxs)(I,{className:`border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden`,shouldFilter:!1,children:[w,O]}),e[39]=O,e[40]=w,e[41]=k):k=e[41],k},pt=e=>{let t=(0,J.c)(26),{connection:n,children:r,hasChildren:i}=e,a=n.name===z,o=a?`In-Memory`:n.name,{previewDataSourceConnection:s}=we(),c;t[0]!==n.name||t[1]!==s?(c=async()=>{await s({engine:n.name})},t[0]=n.name,t[1]=s,t[2]=c):c=t[2];let l=c,u;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=Q(Z.engine),t[3]=u):u=t[3];let d;t[4]===n.dialect?d=t[5]:(d=(0,X.jsx)(p,{className:`h-4 w-4 text-muted-foreground`,name:n.dialect}),t[4]=n.dialect,t[5]=d);let f;t[6]===n.dialect?f=t[7]:(f=x(n.dialect),t[6]=n.dialect,t[7]=f);let m;t[8]===f?m=t[9]:(m=(0,X.jsx)(`span`,{className:`text-xs`,children:f}),t[8]=f,t[9]=m);let h=o,g;t[10]===h?g=t[11]:(g=(0,X.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,(0,X.jsx)(et,{variableName:h}),`)`]}),t[10]=h,t[11]=g);let _;t[12]!==l||t[13]!==a?(_=!a&&(0,X.jsx)(Oe,{onClick:l,tooltip:`Refresh connection`,className:`ml-auto h-4 p-0`,iconClassName:`h-3.5 w-3.5`}),t[12]=l,t[13]=a,t[14]=_):_=t[14];let v;t[15]!==d||t[16]!==m||t[17]!==g||t[18]!==_?(v=(0,X.jsxs)(ge,{className:`pr-2`,style:u,children:[d,m,g,_]}),t[15]=d,t[16]=m,t[17]=g,t[18]=_,t[19]=v):v=t[19];let y;t[20]!==r||t[21]!==i?(y=i?r:(0,X.jsx)(me,{content:`No databases available`,style:Q(Z.engineEmpty)}),t[20]=r,t[21]=i,t[22]=y):y=t[22];let b;return t[23]!==y||t[24]!==v?(b=(0,X.jsxs)(X.Fragment,{children:[v,y]}),t[23]=y,t[24]=v,t[25]=b):b=t[25],b},mt=Y.createContext(null);function ht(){let e=Y.useContext(mt);if(e==null)throw Error(`useDataSourceTree must be used within a DataSourceTreeContext.Provider`);return e}function gt(e,{schema:t,schemaPath:n}){return{engine:e.engineName,database:e.databaseName,schema:t,schemaPath:n,defaultSchema:e.defaultSchema,defaultDatabase:e.defaultDatabase,dialect:e.dialect}}var _t=e=>{let t=(0,J.c)(21),{connection:n,database:r,searchValue:i}=e,a;t[0]!==n.default_database||t[1]!==n.default_schema||t[2]!==n.dialect||t[3]!==n.name||t[4]!==r.name||t[5]!==i?(a={engineName:n.name,databaseName:r.name,dialect:n.dialect,defaultSchema:n.default_schema,defaultDatabase:n.default_database,searchValue:i},t[0]=n.default_database,t[1]=n.default_schema,t[2]=n.dialect,t[3]=n.name,t[4]=r.name,t[5]=i,t[6]=a):a=t[6];let o=a,s=n.name,c=r.schemas,l;t[7]===r?l=t[8]:(l=H(r),t[7]=r,t[8]=l);let u;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(u=[],t[9]=u):u=t[9];let d;t[10]!==r.schemas||t[11]!==l?(d=(0,X.jsx)(yt,{schemas:c,schemasResolved:l,schemaPath:u,depth:0}),t[10]=r.schemas,t[11]=l,t[12]=d):d=t[12];let f;t[13]!==d||t[14]!==o?(f=(0,X.jsx)(mt.Provider,{value:o,children:d}),t[13]=d,t[14]=o,t[15]=f):f=t[15];let p;return t[16]!==n.name||t[17]!==r||t[18]!==i||t[19]!==f?(p=(0,X.jsx)(vt,{engineName:s,database:r,searchValue:i,children:f}),t[16]=n.name,t[17]=r,t[18]=i,t[19]=f,t[20]=p):p=t[20],p},vt=e=>{let t=(0,J.c)(29),{searchValue:n,engineName:r,database:i,children:a}=e,o;t[0]!==i||t[1]!==n?(o=d(i,n),t[0]=i,t[1]=n,t[2]=o):o=t[2];let s=o,[c,l]=Y.useState(s),[u,f]=Y.useState(!1),[p,m]=Y.useState(n),[h,g]=Y.useState(s);(p!==n||h!==s)&&(m(n),g(s),l(s));let _;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(_=Q(Z.database),t[3]=_):_=t[3];let v;t[4]!==c||t[5]!==u?(v=()=>{l(!c),f(!u)},t[4]=c,t[5]=u,t[6]=v):v=t[6];let y=`${r}:${i.name}`,b;t[7]===c?b=t[8]:(b=(0,X.jsx)(le,{isExpanded:c}),t[7]=c,t[8]=b);let x=u&&c?`text-foreground`:`text-muted-foreground`,C;t[9]===x?C=t[10]:(C=se(`h-4 w-4`,x),t[9]=x,t[10]=C);let w;t[11]===C?w=t[12]:(w=(0,X.jsx)(S,{className:C}),t[11]=C,t[12]=w);let T=u&&c&&`font-semibold`,E;t[13]===T?E=t[14]:(E=se(T),t[13]=T,t[14]=E);let D;t[15]===i.name?D=t[16]:(D=i.name===``?(0,X.jsx)(`i`,{children:`Not connected`}):i.name,t[15]=i.name,t[16]=D);let O;t[17]!==E||t[18]!==D?(O=(0,X.jsx)(`span`,{className:E,children:D}),t[17]=E,t[18]=D,t[19]=O):O=t[19];let k;t[20]!==O||t[21]!==v||t[22]!==y||t[23]!==b||t[24]!==w?(k=(0,X.jsxs)(ie,{className:`text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none`,style:_,onSelect:v,value:y,children:[b,w,O]}),t[20]=O,t[21]=v,t[22]=y,t[23]=b,t[24]=w,t[25]=k):k=t[25];let A=c&&a,j;return t[26]!==k||t[27]!==A?(j=(0,X.jsxs)(X.Fragment,{children:[k,A]}),t[26]=k,t[27]=A,t[28]=j):j=t[28],j},yt=e=>{let{schemas:t,schemasResolved:n,depth:r}=e,i=ht(),{engineName:a,databaseName:o,searchValue:s}=i,{addSchemaList:c}=ee(),l=Ge(e.schemaPath),[u,d]=Y.useState(!1),{isPending:f,error:p}=Pe(async()=>{if(!n&&a){d(!0);try{let e=await D.request({engine:a,database:o,schemaPath:l});c({schemas:e.schemas??[],sqlSchemaContext:{engine:a,database:o,schemaPath:l}})}finally{d(!1)}}},[n,a,o,l]),m=Q(at(r));return f||u?(0,X.jsx)(fe,{message:`Loading schemas...`,style:m}):p?(0,X.jsx)(pe,{error:p,style:m}):t.length===0?(0,X.jsx)(me,{content:`No schemas available`,style:m}):(0,X.jsx)(X.Fragment,{children:t.map(e=>re(e.name)?(0,X.jsx)(xt,{tables:e.tables,tablesResolved:C(e),searchValue:s,sqlTableContext:gt(i,{schema:e.name,schemaPath:l})},e.name):(0,X.jsx)(bt,{schema:e,schemaPath:[...l,e.name],depth:r},e.name))})},bt=e=>{let t=(0,J.c)(41),{schema:n,schemaPath:r,depth:i}=e,a=ht(),{databaseName:o,searchValue:s}=a,c;t[0]!==n||t[1]!==s?(c=w(n,s),t[0]=n,t[1]=s,t[2]=c):c=t[2];let l=c,[u,d]=Y.useState(l),[f,p]=Y.useState(!1),[m,h]=Y.useState(s),[_,v]=Y.useState(l),y;t[3]===r?y=t[4]:(y=r.join(`.`),t[3]=r,t[4]=y);let b=`${o}:${y}`,x;t[5]===n.child_schemas?x=t[6]:(x=n.child_schemas??[],t[5]=n.child_schemas,t[6]=x);let S=x;(m!==s||_!==l)&&(h(s),v(l),d(l));let T;t[7]===i?T=t[8]:(T=Q(at(i)),t[7]=i,t[8]=T);let E;t[9]!==u||t[10]!==f?(E=()=>{d(!u),p(!f)},t[9]=u,t[10]=f,t[11]=E):E=t[11];let D;t[12]===u?D=t[13]:(D=(0,X.jsx)(le,{isExpanded:u}),t[12]=u,t[13]=D);let O=f&&u&&`text-foreground`,k;t[14]===O?k=t[15]:(k=se(`h-4 w-4 text-muted-foreground`,O),t[14]=O,t[15]=k);let A;t[16]===k?A=t[17]:(A=(0,X.jsx)(g,{className:k}),t[16]=k,t[17]=A);let j=f&&u&&`font-semibold`,N;t[18]===j?N=t[19]:(N=se(j),t[18]=j,t[19]=N);let P;t[20]!==n.name||t[21]!==N?(P=(0,X.jsx)(`span`,{className:N,children:n.name}),t[20]=n.name,t[21]=N,t[22]=P):P=t[22];let F;t[23]!==P||t[24]!==T||t[25]!==E||t[26]!==D||t[27]!==A||t[28]!==b?(F=(0,X.jsxs)(ie,{className:`text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none`,style:T,onSelect:E,value:b,children:[D,A,P]}),t[23]=P,t[24]=T,t[25]=E,t[26]=D,t[27]=A,t[28]=b,t[29]=F):F=t[29];let I;t[30]!==S||t[31]!==i||t[32]!==u||t[33]!==n||t[34]!==r||t[35]!==s||t[36]!==a?(I=u&&(0,X.jsxs)(X.Fragment,{children:[(S.length>0||!M(n))&&(0,X.jsx)(yt,{schemas:S,schemasResolved:M(n),schemaPath:r,depth:i+1}),(0,X.jsx)(xt,{tables:n.tables,tablesResolved:C(n),searchValue:s,tableIndentRem:ot(i),columnIndentRem:st(i),sqlTableContext:gt(a,{schema:n.name,schemaPath:r})})]}),t[30]=S,t[31]=i,t[32]=u,t[33]=n,t[34]=r,t[35]=s,t[36]=a,t[37]=I):I=t[37];let L;return t[38]!==F||t[39]!==I?(L=(0,X.jsxs)(X.Fragment,{children:[F,I]}),t[38]=F,t[39]=I,t[40]=L):L=t[40],L},xt=e=>{let t=(0,J.c)(31),{tables:n,sqlTableContext:r,searchValue:i,tablesResolved:a,tableIndentRem:o,columnIndentRem:s}=e,c=a===void 0||a,{addTableList:l}=ee(),[u,d]=Y.useState(!1),f;t[0]!==l||t[1]!==r||t[2]!==c?(f=async()=>{if(!c&&r){d(!0);let{engine:e,database:t,schema:n,schemaPath:i}=r,a=await k.request({engine:e,database:t,schema:n,schemaPath:i??[]});if(!a?.tables)throw d(!1),Error(`No tables available`);l({tables:a.tables,sqlTableContext:r}),d(!1)}},t[0]=l,t[1]=r,t[2]=c,t[3]=f):f=t[3];let p;t[4]!==r||t[5]!==c?(p=[c,r],t[4]=r,t[5]=c,t[6]=p):p=t[6];let{isPending:m,error:h}=Pe(f,p),g=o??Z.tableLoading,_;t[7]===g?_=t[8]:(_=Q(g),t[7]=g,t[8]=_);let v=_;if(m||u){let e;return t[9]===v?e=t[10]:(e=(0,X.jsx)(fe,{message:`Loading tables...`,style:v}),t[9]=v,t[10]=e),e}if(h){let e;return t[11]!==h||t[12]!==v?(e=(0,X.jsx)(pe,{error:h,style:v}),t[11]=h,t[12]=v,t[13]=e):e=t[13],e}if(n.length===0){let e;return t[14]===v?e=t[15]:(e=(0,X.jsx)(me,{content:`No tables found`,style:v}),t[14]=v,t[15]=e),e}let y;if(t[16]!==s||t[17]!==i||t[18]!==r||t[19]!==o||t[20]!==n){let e;t[22]===i?e=t[23]:(e=e=>!i||e.name.toLowerCase().includes(i.toLowerCase()),t[22]=i,t[23]=e);let a=n.filter(e),c;t[24]!==s||t[25]!==i||t[26]!==r||t[27]!==o?(c=e=>(0,X.jsx)(St,{table:e,sqlTableContext:r,isSearching:!!i,tableIndentRem:o,columnIndentRem:s},e.name),t[24]=s,t[25]=i,t[26]=r,t[27]=o,t[28]=c):c=t[28],y=a.map(c),t[16]=s,t[17]=i,t[18]=r,t[19]=o,t[20]=n,t[21]=y}else y=t[21];let b;return t[29]===y?b=t[30]:(b=(0,X.jsx)(X.Fragment,{children:y}),t[29]=y,t[30]=b),b},St=e=>{let t=(0,J.c)(69),{table:n,sqlTableContext:i,isSearching:a,tableIndentRem:o,columnIndentRem:s}=e,{addTable:u}=ee(),[d,f]=Y.useState(!1),p=n.columns.length>0,m;t[0]!==u||t[1]!==d||t[2]!==i||t[3]!==n.name||t[4]!==p?(m=async()=>{if(d&&!p&&i){let{engine:e,database:t,schema:r,schemaPath:a}=i,o=await E.request({engine:e,database:t,schema:r,tableName:n.name,schemaPath:a??[]});if(!o?.table)throw Error(`No table details available`);u({table:o.table,sqlTableContext:i})}},t[0]=u,t[1]=d,t[2]=i,t[3]=n.name,t[4]=p,t[5]=m):m=t[5];let g;t[6]!==d||t[7]!==p?(g=[d,p],t[6]=d,t[7]=p,t[8]=g):g=t[8];let{isFetching:v,isPending:b,error:x}=Pe(m,g),S=r(ae),C=h(),{createNewCell:w}=c(),D=We(),k;t[9]!==D||t[10]!==S||t[11]!==w||t[12]!==C||t[13]!==i||t[14]!==n?(k=()=>{T({autoInstantiate:S,createNewCell:w,fromCellId:C}),D((()=>{if(n.source_type===`catalog`){let e=i?.database?[i.database,...i.schemaPath??[],n.name].join(`.`):n.name;return`${n.engine}.load_table("${e}")`}if(i)return l({table:n,columnName:`*`,sqlTableContext:i});switch(n.source_type){case`local`:return`mo.ui.table(${n.name})`;case`duckdb`:case`connection`:return l({table:n,columnName:`*`,sqlTableContext:i});default:return Ce(n.source_type),``}})())},t[9]=D,t[10]=S,t[11]=w,t[12]=C,t[13]=i,t[14]=n,t[15]=k):k=t[15];let A=k,j;t[16]!==n.num_columns||t[17]!==n.num_rows?(j=()=>{let e=[];return n.num_rows!=null&&e.push(`${n.num_rows} rows`),n.num_columns!=null&&e.push(`${n.num_columns} columns`),e.length===0?null:(0,X.jsx)(`div`,{className:`flex flex-row gap-2 items-center pl-6 group-hover:hidden`,children:(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.join(`, `)})})},t[16]=n.num_columns,t[17]=n.num_rows,t[18]=j):j=t[18];let M=j,N;t[19]!==s||t[20]!==x||t[21]!==v||t[22]!==b||t[23]!==i||t[24]!==n?(N=()=>{let e=Q(s??Z.tableLoading);if(b||v)return(0,X.jsx)(fe,{message:`Loading columns...`,style:e});if(x)return(0,X.jsx)(pe,{error:x,style:e});let t=n.columns;return t.length===0?(0,X.jsx)(me,{content:`No columns found`,style:e}):t.map(e=>(0,X.jsx)(Ct,{table:n,column:e,sqlTableContext:i,columnIndentRem:s},e.name))},t[19]=s,t[20]=x,t[21]=v,t[22]=b,t[23]=i,t[24]=n,t[25]=N):N=t[25];let P=N,F;t[26]!==d||t[27]!==a||t[28]!==n.source_type||t[29]!==n.type?(F=()=>{if(n.source_type===`local`)return;let e=n.type===`table`?_:O;return(0,X.jsx)(e,{className:`h-3 w-3`,strokeWidth:d||a?2.5:void 0})},t[26]=d,t[27]=a,t[28]=n.source_type,t[29]=n.type,t[30]=F):F=t[30];let I=F,L;t[31]!==i||t[32]!==n.name?(L=y(i,n.name),t[31]=i,t[32]=n.name,t[33]=L):L=t[33];let R=L,z=o??(i?Z.tableSchemaless:0),te=(d||a)&&`font-semibold`,ne;t[34]===te?ne=t[35]:(ne=se(`rounded-none group h-8 cursor-pointer`,te),t[34]=te,t[35]=ne);let B;t[36]===z?B=t[37]:(B=Q(z),t[36]=z,t[37]=B);let V;t[38]===d?V=t[39]:(V=()=>f(!d),t[38]=d,t[39]=V);let re;t[40]===I?re=t[41]:(re=I(),t[40]=I,t[41]=re);let H;t[42]===n.name?H=t[43]:(H=(0,X.jsx)(`span`,{className:`text-sm`,children:n.name}),t[42]=n.name,t[43]=H);let U;t[44]!==re||t[45]!==H?(U=(0,X.jsxs)(`div`,{className:`flex gap-2 items-center flex-1 pl-1`,children:[re,H]}),t[44]=re,t[45]=H,t[46]=U):U=t[46];let W;t[47]===M?W=t[48]:(W=M(),t[47]=M,t[48]=W);let oe;t[49]===A?oe=t[50]:(oe=be.stopPropagation(()=>A()),t[49]=A,t[50]=oe);let ce;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(ce=(0,X.jsx)(je,{className:`h-3 w-3`}),t[51]=ce):ce=t[51];let G;t[52]===oe?G=t[53]:(G=(0,X.jsx)(ye,{content:`Add table to notebook`,delayDuration:400,children:(0,X.jsx)(xe,{className:`group-hover:inline-flex hidden`,variant:`text`,size:`icon`,onClick:oe,children:ce})}),t[52]=oe,t[53]=G);let K;t[54]!==d||t[55]!==B||t[56]!==V||t[57]!==U||t[58]!==W||t[59]!==G||t[60]!==ne||t[61]!==R?(K=(0,X.jsxs)(ie,{className:ne,style:B,value:R,"aria-selected":d,forceMount:!0,onSelect:V,children:[U,W,G]}),t[54]=d,t[55]=B,t[56]=V,t[57]=U,t[58]=W,t[59]=G,t[60]=ne,t[61]=R,t[62]=K):K=t[62];let q;t[63]!==d||t[64]!==P?(q=d&&P(),t[63]=d,t[64]=P,t[65]=q):q=t[65];let le;return t[66]!==K||t[67]!==q?(le=(0,X.jsxs)(X.Fragment,{children:[K,q]}),t[66]=K,t[67]=q,t[68]=le):le=t[68],le},Ct=e=>{let t=(0,J.c)(51),{table:n,column:a,sqlTableContext:o,columnIndentRem:s}=e,[c,l]=Y.useState(!1),u=r(L),d=i(A);u&&c&&l(!1),d(c?e=>new Set([...e,`${n.name}:${a.name}`]):e=>(e.delete(`${n.name}:${a.name}`),new Set(e)));let f=We(),{columnsPreviews:p}=V(),m;t[0]!==a.name||t[1]!==n.primary_keys?(m=n.primary_keys?.includes(a.name)||!1,t[0]=a.name,t[1]=n.primary_keys,t[2]=m):m=t[2];let h=m,g;t[3]!==a.name||t[4]!==n.indexes?(g=n.indexes?.includes(a.name)||!1,t[3]=a.name,t[4]=n.indexes,t[5]=g):g=t[5];let _=g,v;t[6]===f?v=t[7]:(v=e=>{f(e)},t[6]=f,t[7]=v);let y=v,b=wt,x=c?`font-semibold`:``,S;t[8]!==a.name||t[9]!==x?(S=(0,X.jsx)(`span`,{className:x,children:a.name}),t[8]=a.name,t[9]=x,t[10]=S):S=t[10];let C=S,w=`${n.name}.${a.name}`,T=`${n.name}.${a.name}`,E;t[11]===c?E=t[12]:(E=()=>l(!c),t[11]=c,t[12]=E);let D;t[13]!==s||t[14]!==o?(D=s??(o?st(0):Z.columnLocal),t[13]=s,t[14]=o,t[15]=D):D=t[15];let O;t[16]===D?O=t[17]:(O=Q(D),t[16]=D,t[17]=O);let k;t[18]!==a.type||t[19]!==C?(k=(0,X.jsx)(ue,{columnName:C,dataType:a.type}),t[18]=a.type,t[19]=C,t[20]=k):k=t[20];let j;t[21]===h?j=t[22]:(j=h&&b({tooltipContent:`Primary key`,content:`PK`}),t[21]=h,t[22]=j);let M;t[23]===_?M=t[24]:(M=_&&b({tooltipContent:`Indexed`,content:`IDX`}),t[23]=_,t[24]=M);let N;t[25]!==O||t[26]!==k||t[27]!==j||t[28]!==M?(N=(0,X.jsxs)(`div`,{className:`flex flex-row gap-2 items-center flex-1`,style:O,children:[k,j,M]}),t[25]=O,t[26]=k,t[27]=j,t[28]=M,t[29]=N):N=t[29];let P;t[30]===a.name?P=t[31]:(P=(0,X.jsx)(ye,{content:`Copy column name`,delayDuration:400,children:(0,X.jsx)(xe,{variant:`text`,size:`icon`,className:`group-hover:opacity-100 opacity-0 hover:bg-muted text-muted-foreground hover:text-foreground`,children:(0,X.jsx)(Fe,{tooltip:!1,value:a.name,className:`h-3 w-3`})})}),t[30]=a.name,t[31]=P);let F;t[32]===a.external_type?F=t[33]:(F=(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:a.external_type}),t[32]=a.external_type,t[33]=F);let I;t[34]!==N||t[35]!==P||t[36]!==F||t[37]!==w||t[38]!==T||t[39]!==E?(I=(0,X.jsxs)(ie,{className:`rounded-none py-1 group cursor-pointer`,value:T,onSelect:E,children:[N,P,F]},w),t[34]=N,t[35]=P,t[36]=F,t[37]=w,t[38]=T,t[39]=E,t[40]=I):I=t[40];let R;t[41]!==a||t[42]!==p||t[43]!==y||t[44]!==c||t[45]!==o||t[46]!==n?(R=c&&(0,X.jsx)(`div`,{className:`pr-2 py-2 bg-(--slate-1) shadow-inner border-b`,style:Q(Z.columnPreview),children:(0,X.jsx)(oe,{children:(0,X.jsx)(Ae,{table:n,column:a,onAddColumnChart:y,preview:p.get(o?`${o.database}.${o.schema}.${n.name}:${a.name}`:`${n.name}:${a.name}`),sqlTableContext:o})})}),t[41]=a,t[42]=p,t[43]=y,t[44]=c,t[45]=o,t[46]=n,t[47]=R):R=t[47];let z;return t[48]!==I||t[49]!==R?(z=(0,X.jsxs)(X.Fragment,{children:[I,R]}),t[48]=I,t[49]=R,t[50]=z):z=t[50],z};function wt(e){let{tooltipContent:t,content:n}=e;return(0,X.jsx)(ye,{content:t,delayDuration:100,children:(0,X.jsx)(`span`,{className:`text-xs text-black bg-gray-100 dark:invert rounded px-1`,children:n})})}function Tt(e){return e}var $={name:`name`,type:`type-value`,defs:`defs-refs`},Et=[Tt({id:$.name,accessorFn:e=>[e.name,e.declaredBy],enableSorting:!0,sortingFn:`alphanumeric`,header:({column:e})=>(0,X.jsx)(q,{header:`Name`,column:e}),cell:({getValue:e})=>{let[t,n]=e();return(0,X.jsx)(Je,{name:t,declaredBy:n})}}),Tt({id:$.type,accessorFn:e=>[e.dataType,e.value],enableSorting:!0,sortingFn:`alphanumeric`,header:({column:e})=>(0,X.jsx)(q,{header:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)(`span`,{children:`Type`}),(0,X.jsx)(`span`,{children:`Value`})]}),column:e}),cell:({getValue:e})=>{let[t,n]=e();return(0,X.jsxs)(`div`,{className:`max-w-[150px]`,children:[(0,X.jsx)(`div`,{className:`text-ellipsis overflow-hidden whitespace-nowrap text-muted-foreground font-mono text-xs`,children:t}),(0,X.jsx)(`div`,{className:`text-ellipsis overflow-hidden whitespace-nowrap`,title:n??``,children:n})]})}}),Tt({id:$.defs,accessorFn:e=>[e.declaredBy,e.usedBy,e.name,e.declaredByNames,e.usedByNames],enableSorting:!0,sortingFn:`basic`,header:({column:e})=>(0,X.jsx)(q,{header:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)(`span`,{children:`Declared By`}),(0,X.jsx)(`span`,{children:`Used By`})]}),column:e}),cell:({getValue:e})=>{let[t,n,r]=e(),i=e=>{let t=P(e);t&&o(t,r)};return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1 py-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-row overflow-auto gap-2 items-center`,children:[(0,X.jsx)(`span`,{title:`Declared by`,children:(0,X.jsx)(rt,{className:`w-3.5 h-3.5 text-muted-foreground`})}),t.length===1?(0,X.jsx)(Ie,{variant:`focus`,cellId:t[0],skipScroll:!0,onClick:()=>i(t[0])}):(0,X.jsx)(`div`,{className:`text-destructive flex flex-row gap-2`,children:t.slice(0,3).map((e,n)=>(0,X.jsxs)(`span`,{className:`flex`,children:[(0,X.jsx)(Ie,{variant:`focus`,cellId:e,skipScroll:!0,className:`whitespace-nowrap text-destructive`,onClick:()=>i(e)},e),n<t.length-1&&`, `]},e))})]}),(0,X.jsxs)(`div`,{className:`flex flex-row overflow-auto gap-2 items-baseline`,children:[(0,X.jsx)(`span`,{title:`Used by`,children:(0,X.jsx)(Me,{className:`w-3.5 h-3.5 text-muted-foreground`})}),(0,X.jsx)(qe,{maxCount:3,cellIds:n,skipScroll:!0,onClick:i})]})]})}})];function Dt({variables:e,sort:t,cellIdToIndex:n}){t||={id:$.defs,desc:!1};let r=[];switch(t.id){case $.name:r=Se(e,e=>e.name);break;case $.type:r=Se(e,e=>e.dataType);break;case $.defs:r=Se(e,e=>n.get(e.declaredBy[0]))}return t.desc?r.toReversed():r}var Ot=(0,Y.memo)(({className:e,cellIds:t,variables:n})=>{let[r,i]=Y.useState([]),[a,o]=Y.useState(``),s=b(),{locale:c}=Ne(),l=(0,Y.useMemo)(()=>{let e=e=>{let n=s[e];return m(n)?`cell-${t.indexOf(e)}`:n??`cell-${t.indexOf(e)}`};return Object.values(n).map(t=>({...t,declaredByNames:t.declaredBy.map(e),usedByNames:t.usedBy.map(e)}))},[n,s,t]),u=(0,Y.useMemo)(()=>{let e=new Map;return t.forEach((t,n)=>e.set(t,n)),Dt({variables:l,sort:r[0],cellIdToIndex:e})},[l,r,t]),d=de({data:u,columns:Et,getCoreRowModel:ve(),onGlobalFilterChange:o,getFilteredRowModel:he(),enableFilters:!0,enableGlobalFilter:!0,enableColumnPinning:!1,getColumnCanGlobalFilter(e){return e.columnDef.enableGlobalFilter??!0},globalFilterFn:`auto`,manualSorting:!0,locale:c,onSortingChange:i,getSortedRowModel:_e(),state:{sorting:r,globalFilter:a}});return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ke,{className:`w-full`,placeholder:`Search`,value:a,onChange:e=>o(e.target.value)}),(0,X.jsxs)(He,{className:se(`w-full text-sm flex-1 border-separate border-spacing-0`,e),children:[(0,X.jsx)(Le,{children:(0,X.jsx)(Be,{className:`whitespace-nowrap text-xs`,children:d.getFlatHeaders().map(e=>(0,X.jsx)(Re,{className:`sticky top-0 bg-background border-b`,children:K(e.column.columnDef.header,e.getContext())},e.id))})}),(0,X.jsx)(ze,{children:d.getRowModel().rows.map(e=>(0,X.jsx)(Be,{className:`hover:bg-accent`,children:e.getVisibleCells().map(e=>(0,X.jsx)(Ve,{className:`border-b`,children:K(e.column.columnDef.cell,e.getContext())},e.id))},e.id))})]})]})});Ot.displayName=`VariableTable`;var kt=()=>{let e=(0,J.c)(30),n=ne(),i=v(),a=r(F),o=r(B),c=s(`database`),[l,u]=t(nt),d=a.length+o.length,p;e[0]!==d||e[1]!==l.hasUserInteracted||e[2]!==l.openSections?(p=!l.hasUserInteracted&&d>0?[...new Set([...l.openSections,`datasources`])]:l.openSections,e[0]=d,e[1]=l.hasUserInteracted,e[2]=l.openSections,e[3]=p):p=e[3];let m=p,h;e[4]===u?h=e[5]:(h=e=>{u({openSections:e,hasUserInteracted:!0})},e[4]=u,e[5]=h);let g=h,_;e[6]===m?_=e[7]:(_=m.includes(`datasources`),e[6]=m,e[7]=_);let y=!_&&d>0,b=c.length>0,x;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,X.jsx)(S,{className:`w-4 h-4`}),e[8]=x):x=e[8];let C;e[9]!==d||e[10]!==y?(C=y&&(0,X.jsx)(Ye,{children:d}),e[9]=d,e[10]=y,e[11]=C):C=e[11];let w;e[12]!==c.length||e[13]!==b?(w=b&&(0,X.jsx)(tt,{count:c.length,type:`database`}),e[12]=c.length,e[13]=b,e[14]=w):w=e[14];let T;e[15]!==C||e[16]!==w?(T=(0,X.jsxs)(Xe,{children:[x,`Data sources`,C,w]}),e[15]=C,e[16]=w,e[17]=T):T=e[17];let E;e[18]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,X.jsx)(Ze,{children:(0,X.jsx)(ft,{})}),e[18]=E):E=e[18];let D;e[19]===T?D=e[20]:(D=(0,X.jsxs)($e,{value:`datasources`,children:[T,E]}),e[19]=T,e[20]=D);let O;e[21]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,X.jsxs)(Xe,{children:[(0,X.jsx)(f,{className:`w-4 h-4`}),`Variables`]}),e[21]=O):O=e[21];let k;e[22]!==i||e[23]!==n?(k=(0,X.jsxs)($e,{value:`variables`,lastItem:!0,children:[O,(0,X.jsx)(Ze,{children:Object.keys(n).length===0?(0,X.jsx)(`div`,{className:`px-3 py-4 text-sm text-muted-foreground`,children:`No variables defined`}):(0,X.jsx)(Ot,{cellIds:i.inOrderIds,variables:n})})]}),e[22]=i,e[23]=n,e[24]=k):k=e[24];let A;return e[25]!==g||e[26]!==m||e[27]!==k||e[28]!==D?(A=(0,X.jsxs)(G,{type:`multiple`,value:m,onValueChange:g,className:`flex flex-col h-full overflow-auto`,children:[D,k]}),e[25]=g,e[26]=m,e[27]=k,e[28]=D,e[29]=A):A=e[29],A};export{kt as default};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{c as t,f as n,l as r,u as i}from"./useEvent-xfs0Sn4r.js";import{t as a}from"./react-CBDbhulC.js";import{Cr as o,Ct as s,D as c,Da as l,Dn as u,Ea as d,Fi as f,Fn as p,Hn as m,Ht as h,Ji as g,Li as _,M as v,Oa as y,P as b,Pi as x,Qi as S,Sa as C,Ta as w,Wt as T,Xn as E,Yn as D,Zi as O,Zn as k,_a as A,ai as j,ba as M,bn as N,c as P,ga as F,gn as I,ha as L,i as R,ka as z,ma as ee,ni as te,ri as ne,ua as B,va as V,wa as re,xa as H,xn as ie,xo as U}from"./cells-CD9Jbpoa.js";import{t as W}from"./compiler-runtime-CYIjoINj.js";import{c as ae}from"./utils-CUZQNAWJ.js";import{t as oe}from"./ErrorBoundary-npvnLp9x.js";import{t as se}from"./cn-ldLVeaqm.js";import{t as ce}from"./jsx-runtime-B74pBk57.js";import{r as G}from"./config-Cl3eMWxb.js";import{$ as K,Q as q,_ as le,d as ue,et as de,g as fe,h as pe,m as me,nt as he,p as ge,rt as _e,tt as ve}from"./JsonOutput-DFd7q8lz.js";import{t as ye}from"./tooltip-D7dq6bnc.js";import{r as be,t as xe}from"./button-Btj6GXNy.js";import{l as Se}from"./arrays-BqUx5USx.js";import{i as Ce}from"./strings-CpYReX2Q.js";import{r as we}from"./requests-C6_IaFh7.js";import{t as Te}from"./createLucideIcon-B7HeEoG2.js";import{r as Ee}from"./useNumberFormatter-DHJ9s6Vk.js";import{a as De,r as Oe}from"./tree-actions-Bjyy0vFK.js";import{a as ke}from"./input-Daz6sk8l.js";import{n as Ae,o as je}from"./column-preview-_GkpGxG-.js";import{t as Me}from"./workflow-SJ9KZapt.js";import{t as Ne}from"./context-Do8M9TDF.js";import{n as Pe}from"./useAsyncData-Buhk-UgR.js";import{t as Fe}from"./copy-icon-CRxVZTJ9.js";import{t as Ie}from"./cell-link-Z8JrraTv.js";import{a as Le,i as Re,n as ze,o as Be,r as Ve,t as He}from"./table-DmqOOjfe.js";import{n as Ue}from"./icons-CjLa9BiH.js";import{t as We}from"./useAddCell-h4OWLK5y.js";import{t as Ge}from"./useDeepCompareMemoize-CLytDdMl.js";import{t as Ke}from"./empty-state-kWyb5dCS.js";import{n as qe,t as Je}from"./common-Bb2s_Imb.js";import{a as Ye,i as Xe,n as Ze,o as Qe,r as $e,s as et,t as tt}from"./components-D5125bx8.js";import{r as nt}from"./panel-accordion-state-COnGLerF.js";var rt=Te(`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`}]]),J=W(),Y=e(a(),1),X=ce(),it=1;function at(e){return 1.75+e*it}function ot(e){return 3+e*it}function st(e){return 3.25+e*it}var Z={engineEmpty:.75,engine:.75,database:1,tableLoading:2.75,tableSchemaless:2,columnLocal:1.25,columnPreview:2.5};function Q(e){return{paddingLeft:`${e}rem`}}var ct=n(e=>{let t=e(F),n=e(j),r=e(R);return Se(t,e=>{if(!e.variable_name)return-1;let t=Object.values(n).find(t=>t.name===e.variable_name);if(!t)return 0;let i=r.inOrderIds.indexOf(t.declaredBy[0]);return i===-1?0:i})}),lt=U(`marimo:datasources:hideEmpty`,!1,te,{getOnInit:!0});function ut(e){let t=!1,n=[];for(let r of e){if(!C(r)||!M(r)){n.push(r);continue}let e=r.child_schemas??[],i=ut(e);if(r.tables.length===0&&i.length===0){t=!0;continue}if(i===e){n.push(r);continue}t=!0,n.push({...r,child_schemas:i})}return t?n:e}function dt(e){let t=!1,n=[];for(let r of e){if(H(r)&&r.schemas.length===0){t=!0;continue}if(r.schemas.length===0){n.push(r);continue}let e=ut(r.schemas);if(e.length===0){t=!0;continue}if(e===r.schemas){n.push(r);continue}t=!0,n.push({...r,schemas:e})}return t?n:e}var ft=()=>{let e=(0,J.c)(42),[n,a]=Y.useState(``),[o,s]=t(lt),c=i(L),l=r(ct),d=r(B),f;bb0:{if(!o){f=d;break bb0}let t,n;e[0]===d?(t=e[1],n=e[2]):(t=!1,n=d.map(e=>{let n=dt(e.databases);return n===e.databases?e:(t=!0,{...e,databases:n})}),e[0]=d,e[1]=t,e[2]=n),f=t?n:d}let p=f;if(l.length===0&&p.length===0){let t;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,X.jsx)(Ke,{title:`No tables found`,description:`Any datasets/dataframes in the global scope will be shown here.`,action:(0,X.jsx)(Qe,{group:`database`,label:`Add database or catalog`,variant:`outline`,size:`sm`}),icon:(0,X.jsx)(S,{})}),e[3]=t):t=e[3],t}let m;e[4]===n?m=e[5]:(m=n.trim(),e[4]=n,e[5]=m);let h=!!m,g;e[6]===c?g=e[7]:(g=e=>{c(e.length>0),a(e)},e[6]=c,e[7]=g);let _;e[8]!==n||e[9]!==g?(_=(0,X.jsx)(N,{placeholder:`Search tables...`,className:`h-6 m-1`,value:n,onValueChange:g,rootClassName:`flex-1 border-r border-b-0`}),e[8]=n,e[9]=g,e[10]=_):_=e[10];let v;e[11]===h?v=e[12]:(v=h&&(0,X.jsx)(`button`,{type:`button`,className:`float-right border-b px-2 m-0 h-full hover:bg-accent hover:text-accent-foreground`,onClick:()=>a(``),children:(0,X.jsx)(Ee,{className:`h-4 w-4`})}),e[11]=h,e[12]=v);let y=!o,b;e[13]!==o||e[14]!==s?(b=()=>s(!o),e[13]=o,e[14]=s,e[15]=b):b=e[15];let x;e[16]!==y||e[17]!==b?(x=(0,X.jsx)(De,{"data-testid":`datasources-hide-empty-button`,isVisible:y,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`}),e[16]=y,e[17]=b,e[18]=x):x=e[18];let C;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,X.jsx)(Qe,{group:`database`,label:`Add database or catalog`,compact:!0,variant:`ghost`,size:`sm`,className:`px-2 rounded-none focus-visible:outline-hidden`}),e[19]=C):C=e[19];let w;e[20]!==_||e[21]!==v||e[22]!==x?(w=(0,X.jsxs)(`div`,{className:`flex items-center w-full border-b`,children:[_,v,x,C]}),e[20]=_,e[21]=v,e[22]=x,e[23]=w):w=e[23];let T;if(e[24]!==p||e[25]!==n){let t;e[27]===n?t=e[28]:(t=e=>(0,X.jsx)(pt,{connection:e,hasChildren:e.databases.length>0,children:e.databases.map(t=>(0,X.jsx)(_t,{connection:e,database:t,searchValue:n},t.name))},e.name),e[27]=n,e[28]=t),T=p.map(t),e[24]=p,e[25]=n,e[26]=T}else T=e[26];let E;e[29]!==p.length||e[30]!==l.length?(E=p.length>0&&l.length>0&&(0,X.jsxs)(ge,{className:`pr-2`,style:Q(Z.engine),children:[(0,X.jsx)(Ue,{className:`h-4 w-4 text-muted-foreground`}),(0,X.jsx)(`span`,{className:`text-xs`,children:`Python`})]}),e[29]=p.length,e[30]=l.length,e[31]=E):E=e[31];let D;e[32]!==n||e[33]!==l?(D=l.length>0&&(0,X.jsx)(xt,{tables:l,searchValue:n}),e[32]=n,e[33]=l,e[34]=D):D=e[34];let O;e[35]!==T||e[36]!==E||e[37]!==D?(O=(0,X.jsxs)(u,{className:`flex flex-col`,children:[T,E,D]}),e[35]=T,e[36]=E,e[37]=D,e[38]=O):O=e[38];let k;return e[39]!==O||e[40]!==w?(k=(0,X.jsxs)(I,{className:`border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden`,shouldFilter:!1,children:[w,O]}),e[39]=O,e[40]=w,e[41]=k):k=e[41],k},pt=e=>{let t=(0,J.c)(26),{connection:n,children:r,hasChildren:i}=e,a=n.name===z,o=a?`In-Memory`:n.name,{previewDataSourceConnection:s}=we(),c;t[0]!==n.name||t[1]!==s?(c=async()=>{await s({engine:n.name})},t[0]=n.name,t[1]=s,t[2]=c):c=t[2];let l=c,u;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=Q(Z.engine),t[3]=u):u=t[3];let d;t[4]===n.dialect?d=t[5]:(d=(0,X.jsx)(p,{className:`h-4 w-4 text-muted-foreground`,name:n.dialect}),t[4]=n.dialect,t[5]=d);let f;t[6]===n.dialect?f=t[7]:(f=x(n.dialect),t[6]=n.dialect,t[7]=f);let m;t[8]===f?m=t[9]:(m=(0,X.jsx)(`span`,{className:`text-xs`,children:f}),t[8]=f,t[9]=m);let h=o,g;t[10]===h?g=t[11]:(g=(0,X.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,(0,X.jsx)(et,{variableName:h}),`)`]}),t[10]=h,t[11]=g);let _;t[12]!==l||t[13]!==a?(_=!a&&(0,X.jsx)(Oe,{onClick:l,tooltip:`Refresh connection`,className:`ml-auto h-4 p-0`,iconClassName:`h-3.5 w-3.5`}),t[12]=l,t[13]=a,t[14]=_):_=t[14];let v;t[15]!==d||t[16]!==m||t[17]!==g||t[18]!==_?(v=(0,X.jsxs)(ge,{className:`pr-2`,style:u,children:[d,m,g,_]}),t[15]=d,t[16]=m,t[17]=g,t[18]=_,t[19]=v):v=t[19];let y;t[20]!==r||t[21]!==i?(y=i?r:(0,X.jsx)(me,{content:`No databases available`,style:Q(Z.engineEmpty)}),t[20]=r,t[21]=i,t[22]=y):y=t[22];let b;return t[23]!==y||t[24]!==v?(b=(0,X.jsxs)(X.Fragment,{children:[v,y]}),t[23]=y,t[24]=v,t[25]=b):b=t[25],b},mt=Y.createContext(null);function ht(){let e=Y.useContext(mt);if(e==null)throw Error(`useDataSourceTree must be used within a DataSourceTreeContext.Provider`);return e}function gt(e,{schema:t,schemaPath:n}){return{engine:e.engineName,database:e.databaseName,schema:t,schemaPath:n,defaultSchema:e.defaultSchema,defaultDatabase:e.defaultDatabase,dialect:e.dialect}}var _t=e=>{let t=(0,J.c)(21),{connection:n,database:r,searchValue:i}=e,a;t[0]!==n.default_database||t[1]!==n.default_schema||t[2]!==n.dialect||t[3]!==n.name||t[4]!==r.name||t[5]!==i?(a={engineName:n.name,databaseName:r.name,dialect:n.dialect,defaultSchema:n.default_schema,defaultDatabase:n.default_database,searchValue:i},t[0]=n.default_database,t[1]=n.default_schema,t[2]=n.dialect,t[3]=n.name,t[4]=r.name,t[5]=i,t[6]=a):a=t[6];let o=a,s=n.name,c=r.schemas,l;t[7]===r?l=t[8]:(l=H(r),t[7]=r,t[8]=l);let u;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(u=[],t[9]=u):u=t[9];let d;t[10]!==r.schemas||t[11]!==l?(d=(0,X.jsx)(yt,{schemas:c,schemasResolved:l,schemaPath:u,depth:0}),t[10]=r.schemas,t[11]=l,t[12]=d):d=t[12];let f;t[13]!==d||t[14]!==o?(f=(0,X.jsx)(mt.Provider,{value:o,children:d}),t[13]=d,t[14]=o,t[15]=f):f=t[15];let p;return t[16]!==n.name||t[17]!==r||t[18]!==i||t[19]!==f?(p=(0,X.jsx)(vt,{engineName:s,database:r,searchValue:i,children:f}),t[16]=n.name,t[17]=r,t[18]=i,t[19]=f,t[20]=p):p=t[20],p},vt=e=>{let t=(0,J.c)(29),{searchValue:n,engineName:r,database:i,children:a}=e,o;t[0]!==i||t[1]!==n?(o=d(i,n),t[0]=i,t[1]=n,t[2]=o):o=t[2];let s=o,[c,l]=Y.useState(s),[u,f]=Y.useState(!1),[p,m]=Y.useState(n),[h,g]=Y.useState(s);(p!==n||h!==s)&&(m(n),g(s),l(s));let _;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(_=Q(Z.database),t[3]=_):_=t[3];let v;t[4]!==c||t[5]!==u?(v=()=>{l(!c),f(!u)},t[4]=c,t[5]=u,t[6]=v):v=t[6];let y=`${r}:${i.name}`,b;t[7]===c?b=t[8]:(b=(0,X.jsx)(le,{isExpanded:c}),t[7]=c,t[8]=b);let x=u&&c?`text-foreground`:`text-muted-foreground`,C;t[9]===x?C=t[10]:(C=se(`h-4 w-4`,x),t[9]=x,t[10]=C);let w;t[11]===C?w=t[12]:(w=(0,X.jsx)(S,{className:C}),t[11]=C,t[12]=w);let T=u&&c&&`font-semibold`,E;t[13]===T?E=t[14]:(E=se(T),t[13]=T,t[14]=E);let D;t[15]===i.name?D=t[16]:(D=i.name===``?(0,X.jsx)(`i`,{children:`Not connected`}):i.name,t[15]=i.name,t[16]=D);let O;t[17]!==E||t[18]!==D?(O=(0,X.jsx)(`span`,{className:E,children:D}),t[17]=E,t[18]=D,t[19]=O):O=t[19];let k;t[20]!==O||t[21]!==v||t[22]!==y||t[23]!==b||t[24]!==w?(k=(0,X.jsxs)(ie,{className:`text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none`,style:_,onSelect:v,value:y,children:[b,w,O]}),t[20]=O,t[21]=v,t[22]=y,t[23]=b,t[24]=w,t[25]=k):k=t[25];let A=c&&a,j;return t[26]!==k||t[27]!==A?(j=(0,X.jsxs)(X.Fragment,{children:[k,A]}),t[26]=k,t[27]=A,t[28]=j):j=t[28],j},yt=e=>{let{schemas:t,schemasResolved:n,depth:r}=e,i=ht(),{engineName:a,databaseName:o,searchValue:s}=i,{addSchemaList:c}=ee(),l=Ge(e.schemaPath),[u,d]=Y.useState(!1),{isPending:f,error:p}=Pe(async()=>{if(!n&&a){d(!0);try{let e=await D.request({engine:a,database:o,schemaPath:l});c({schemas:e.schemas??[],sqlSchemaContext:{engine:a,database:o,schemaPath:l}})}finally{d(!1)}}},[n,a,o,l]),m=Q(at(r));return f||u?(0,X.jsx)(fe,{message:`Loading schemas...`,style:m}):p?(0,X.jsx)(pe,{error:p,style:m}):t.length===0?(0,X.jsx)(me,{content:`No schemas available`,style:m}):(0,X.jsx)(X.Fragment,{children:t.map(e=>re(e.name)?(0,X.jsx)(xt,{tables:e.tables,tablesResolved:C(e),searchValue:s,sqlTableContext:gt(i,{schema:e.name,schemaPath:l})},e.name):(0,X.jsx)(bt,{schema:e,schemaPath:[...l,e.name],depth:r},e.name))})},bt=e=>{let t=(0,J.c)(41),{schema:n,schemaPath:r,depth:i}=e,a=ht(),{databaseName:o,searchValue:s}=a,c;t[0]!==n||t[1]!==s?(c=w(n,s),t[0]=n,t[1]=s,t[2]=c):c=t[2];let l=c,[u,d]=Y.useState(l),[f,p]=Y.useState(!1),[m,h]=Y.useState(s),[_,v]=Y.useState(l),y;t[3]===r?y=t[4]:(y=r.join(`.`),t[3]=r,t[4]=y);let b=`${o}:${y}`,x;t[5]===n.child_schemas?x=t[6]:(x=n.child_schemas??[],t[5]=n.child_schemas,t[6]=x);let S=x;(m!==s||_!==l)&&(h(s),v(l),d(l));let T;t[7]===i?T=t[8]:(T=Q(at(i)),t[7]=i,t[8]=T);let E;t[9]!==u||t[10]!==f?(E=()=>{d(!u),p(!f)},t[9]=u,t[10]=f,t[11]=E):E=t[11];let D;t[12]===u?D=t[13]:(D=(0,X.jsx)(le,{isExpanded:u}),t[12]=u,t[13]=D);let O=f&&u&&`text-foreground`,k;t[14]===O?k=t[15]:(k=se(`h-4 w-4 text-muted-foreground`,O),t[14]=O,t[15]=k);let A;t[16]===k?A=t[17]:(A=(0,X.jsx)(g,{className:k}),t[16]=k,t[17]=A);let j=f&&u&&`font-semibold`,N;t[18]===j?N=t[19]:(N=se(j),t[18]=j,t[19]=N);let P;t[20]!==n.name||t[21]!==N?(P=(0,X.jsx)(`span`,{className:N,children:n.name}),t[20]=n.name,t[21]=N,t[22]=P):P=t[22];let F;t[23]!==P||t[24]!==T||t[25]!==E||t[26]!==D||t[27]!==A||t[28]!==b?(F=(0,X.jsxs)(ie,{className:`text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none`,style:T,onSelect:E,value:b,children:[D,A,P]}),t[23]=P,t[24]=T,t[25]=E,t[26]=D,t[27]=A,t[28]=b,t[29]=F):F=t[29];let I;t[30]!==S||t[31]!==i||t[32]!==u||t[33]!==n||t[34]!==r||t[35]!==s||t[36]!==a?(I=u&&(0,X.jsxs)(X.Fragment,{children:[(S.length>0||!M(n))&&(0,X.jsx)(yt,{schemas:S,schemasResolved:M(n),schemaPath:r,depth:i+1}),(0,X.jsx)(xt,{tables:n.tables,tablesResolved:C(n),searchValue:s,tableIndentRem:ot(i),columnIndentRem:st(i),sqlTableContext:gt(a,{schema:n.name,schemaPath:r})})]}),t[30]=S,t[31]=i,t[32]=u,t[33]=n,t[34]=r,t[35]=s,t[36]=a,t[37]=I):I=t[37];let L;return t[38]!==F||t[39]!==I?(L=(0,X.jsxs)(X.Fragment,{children:[F,I]}),t[38]=F,t[39]=I,t[40]=L):L=t[40],L},xt=e=>{let t=(0,J.c)(31),{tables:n,sqlTableContext:r,searchValue:i,tablesResolved:a,tableIndentRem:o,columnIndentRem:s}=e,c=a===void 0||a,{addTableList:l}=ee(),[u,d]=Y.useState(!1),f;t[0]!==l||t[1]!==r||t[2]!==c?(f=async()=>{if(!c&&r){d(!0);let{engine:e,database:t,schema:n,schemaPath:i}=r,a=await k.request({engine:e,database:t,schema:n,schemaPath:i??[]});if(!a?.tables)throw d(!1),Error(`No tables available`);l({tables:a.tables,sqlTableContext:r}),d(!1)}},t[0]=l,t[1]=r,t[2]=c,t[3]=f):f=t[3];let p;t[4]!==r||t[5]!==c?(p=[c,r],t[4]=r,t[5]=c,t[6]=p):p=t[6];let{isPending:m,error:h}=Pe(f,p),g=o??Z.tableLoading,_;t[7]===g?_=t[8]:(_=Q(g),t[7]=g,t[8]=_);let v=_;if(m||u){let e;return t[9]===v?e=t[10]:(e=(0,X.jsx)(fe,{message:`Loading tables...`,style:v}),t[9]=v,t[10]=e),e}if(h){let e;return t[11]!==h||t[12]!==v?(e=(0,X.jsx)(pe,{error:h,style:v}),t[11]=h,t[12]=v,t[13]=e):e=t[13],e}if(n.length===0){let e;return t[14]===v?e=t[15]:(e=(0,X.jsx)(me,{content:`No tables found`,style:v}),t[14]=v,t[15]=e),e}let y;if(t[16]!==s||t[17]!==i||t[18]!==r||t[19]!==o||t[20]!==n){let e;t[22]===i?e=t[23]:(e=e=>!i||e.name.toLowerCase().includes(i.toLowerCase()),t[22]=i,t[23]=e);let a=n.filter(e),c;t[24]!==s||t[25]!==i||t[26]!==r||t[27]!==o?(c=e=>(0,X.jsx)(St,{table:e,sqlTableContext:r,isSearching:!!i,tableIndentRem:o,columnIndentRem:s},e.name),t[24]=s,t[25]=i,t[26]=r,t[27]=o,t[28]=c):c=t[28],y=a.map(c),t[16]=s,t[17]=i,t[18]=r,t[19]=o,t[20]=n,t[21]=y}else y=t[21];let b;return t[29]===y?b=t[30]:(b=(0,X.jsx)(X.Fragment,{children:y}),t[29]=y,t[30]=b),b},St=e=>{let t=(0,J.c)(69),{table:n,sqlTableContext:i,isSearching:a,tableIndentRem:o,columnIndentRem:s}=e,{addTable:u}=ee(),[d,f]=Y.useState(!1),p=n.columns.length>0,m;t[0]!==u||t[1]!==d||t[2]!==i||t[3]!==n.name||t[4]!==p?(m=async()=>{if(d&&!p&&i){let{engine:e,database:t,schema:r,schemaPath:a}=i,o=await E.request({engine:e,database:t,schema:r,tableName:n.name,schemaPath:a??[]});if(!o?.table)throw Error(`No table details available`);u({table:o.table,sqlTableContext:i})}},t[0]=u,t[1]=d,t[2]=i,t[3]=n.name,t[4]=p,t[5]=m):m=t[5];let g;t[6]!==d||t[7]!==p?(g=[d,p],t[6]=d,t[7]=p,t[8]=g):g=t[8];let{isFetching:v,isPending:b,error:x}=Pe(m,g),S=r(ae),C=h(),{createNewCell:w}=c(),D=We(),k;t[9]!==D||t[10]!==S||t[11]!==w||t[12]!==C||t[13]!==i||t[14]!==n?(k=()=>{T({autoInstantiate:S,createNewCell:w,fromCellId:C}),D((()=>{if(n.source_type===`catalog`){let e=i?.database?[i.database,...i.schemaPath??[],n.name].join(`.`):n.name;return`${n.engine}.load_table("${e}")`}if(i)return l({table:n,columnName:`*`,sqlTableContext:i});switch(n.source_type){case`local`:return`mo.ui.table(${n.name})`;case`duckdb`:case`connection`:return l({table:n,columnName:`*`,sqlTableContext:i});default:return Ce(n.source_type),``}})())},t[9]=D,t[10]=S,t[11]=w,t[12]=C,t[13]=i,t[14]=n,t[15]=k):k=t[15];let A=k,j;t[16]!==n.num_columns||t[17]!==n.num_rows?(j=()=>{let e=[];return n.num_rows!=null&&e.push(`${n.num_rows} rows`),n.num_columns!=null&&e.push(`${n.num_columns} columns`),e.length===0?null:(0,X.jsx)(`div`,{className:`flex flex-row gap-2 items-center pl-6 group-hover:hidden`,children:(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.join(`, `)})})},t[16]=n.num_columns,t[17]=n.num_rows,t[18]=j):j=t[18];let M=j,N;t[19]!==s||t[20]!==x||t[21]!==v||t[22]!==b||t[23]!==i||t[24]!==n?(N=()=>{let e=Q(s??Z.tableLoading);if(b||v)return(0,X.jsx)(fe,{message:`Loading columns...`,style:e});if(x)return(0,X.jsx)(pe,{error:x,style:e});let t=n.columns;return t.length===0?(0,X.jsx)(me,{content:`No columns found`,style:e}):t.map(e=>(0,X.jsx)(Ct,{table:n,column:e,sqlTableContext:i,columnIndentRem:s},e.name))},t[19]=s,t[20]=x,t[21]=v,t[22]=b,t[23]=i,t[24]=n,t[25]=N):N=t[25];let P=N,F;t[26]!==d||t[27]!==a||t[28]!==n.source_type||t[29]!==n.type?(F=()=>{if(n.source_type===`local`)return;let e=n.type===`table`?_:O;return(0,X.jsx)(e,{className:`h-3 w-3`,strokeWidth:d||a?2.5:void 0})},t[26]=d,t[27]=a,t[28]=n.source_type,t[29]=n.type,t[30]=F):F=t[30];let I=F,L;t[31]!==i||t[32]!==n.name?(L=y(i,n.name),t[31]=i,t[32]=n.name,t[33]=L):L=t[33];let R=L,z=o??(i?Z.tableSchemaless:0),te=(d||a)&&`font-semibold`,ne;t[34]===te?ne=t[35]:(ne=se(`rounded-none group h-8 cursor-pointer`,te),t[34]=te,t[35]=ne);let B;t[36]===z?B=t[37]:(B=Q(z),t[36]=z,t[37]=B);let V;t[38]===d?V=t[39]:(V=()=>f(!d),t[38]=d,t[39]=V);let re;t[40]===I?re=t[41]:(re=I(),t[40]=I,t[41]=re);let H;t[42]===n.name?H=t[43]:(H=(0,X.jsx)(`span`,{className:`text-sm`,children:n.name}),t[42]=n.name,t[43]=H);let U;t[44]!==re||t[45]!==H?(U=(0,X.jsxs)(`div`,{className:`flex gap-2 items-center flex-1 pl-1`,children:[re,H]}),t[44]=re,t[45]=H,t[46]=U):U=t[46];let W;t[47]===M?W=t[48]:(W=M(),t[47]=M,t[48]=W);let oe;t[49]===A?oe=t[50]:(oe=be.stopPropagation(()=>A()),t[49]=A,t[50]=oe);let ce;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(ce=(0,X.jsx)(je,{className:`h-3 w-3`}),t[51]=ce):ce=t[51];let G;t[52]===oe?G=t[53]:(G=(0,X.jsx)(ye,{content:`Add table to notebook`,delayDuration:400,children:(0,X.jsx)(xe,{className:`group-hover:inline-flex hidden`,variant:`text`,size:`icon`,onClick:oe,children:ce})}),t[52]=oe,t[53]=G);let K;t[54]!==d||t[55]!==B||t[56]!==V||t[57]!==U||t[58]!==W||t[59]!==G||t[60]!==ne||t[61]!==R?(K=(0,X.jsxs)(ie,{className:ne,style:B,value:R,"aria-selected":d,forceMount:!0,onSelect:V,children:[U,W,G]}),t[54]=d,t[55]=B,t[56]=V,t[57]=U,t[58]=W,t[59]=G,t[60]=ne,t[61]=R,t[62]=K):K=t[62];let q;t[63]!==d||t[64]!==P?(q=d&&P(),t[63]=d,t[64]=P,t[65]=q):q=t[65];let le;return t[66]!==K||t[67]!==q?(le=(0,X.jsxs)(X.Fragment,{children:[K,q]}),t[66]=K,t[67]=q,t[68]=le):le=t[68],le},Ct=e=>{let t=(0,J.c)(51),{table:n,column:a,sqlTableContext:o,columnIndentRem:s}=e,[c,l]=Y.useState(!1),u=r(L),d=i(A);u&&c&&l(!1),d(c?e=>new Set([...e,`${n.name}:${a.name}`]):e=>(e.delete(`${n.name}:${a.name}`),new Set(e)));let f=We(),{columnsPreviews:p}=V(),m;t[0]!==a.name||t[1]!==n.primary_keys?(m=n.primary_keys?.includes(a.name)||!1,t[0]=a.name,t[1]=n.primary_keys,t[2]=m):m=t[2];let h=m,g;t[3]!==a.name||t[4]!==n.indexes?(g=n.indexes?.includes(a.name)||!1,t[3]=a.name,t[4]=n.indexes,t[5]=g):g=t[5];let _=g,v;t[6]===f?v=t[7]:(v=e=>{f(e)},t[6]=f,t[7]=v);let y=v,b=wt,x=c?`font-semibold`:``,S;t[8]!==a.name||t[9]!==x?(S=(0,X.jsx)(`span`,{className:x,children:a.name}),t[8]=a.name,t[9]=x,t[10]=S):S=t[10];let C=S,w=`${n.name}.${a.name}`,T=`${n.name}.${a.name}`,E;t[11]===c?E=t[12]:(E=()=>l(!c),t[11]=c,t[12]=E);let D;t[13]!==s||t[14]!==o?(D=s??(o?st(0):Z.columnLocal),t[13]=s,t[14]=o,t[15]=D):D=t[15];let O;t[16]===D?O=t[17]:(O=Q(D),t[16]=D,t[17]=O);let k;t[18]!==a.type||t[19]!==C?(k=(0,X.jsx)(ue,{columnName:C,dataType:a.type}),t[18]=a.type,t[19]=C,t[20]=k):k=t[20];let j;t[21]===h?j=t[22]:(j=h&&b({tooltipContent:`Primary key`,content:`PK`}),t[21]=h,t[22]=j);let M;t[23]===_?M=t[24]:(M=_&&b({tooltipContent:`Indexed`,content:`IDX`}),t[23]=_,t[24]=M);let N;t[25]!==O||t[26]!==k||t[27]!==j||t[28]!==M?(N=(0,X.jsxs)(`div`,{className:`flex flex-row gap-2 items-center flex-1`,style:O,children:[k,j,M]}),t[25]=O,t[26]=k,t[27]=j,t[28]=M,t[29]=N):N=t[29];let P;t[30]===a.name?P=t[31]:(P=(0,X.jsx)(ye,{content:`Copy column name`,delayDuration:400,children:(0,X.jsx)(xe,{variant:`text`,size:`icon`,className:`group-hover:opacity-100 opacity-0 hover:bg-muted text-muted-foreground hover:text-foreground`,children:(0,X.jsx)(Fe,{tooltip:!1,value:a.name,className:`h-3 w-3`})})}),t[30]=a.name,t[31]=P);let F;t[32]===a.external_type?F=t[33]:(F=(0,X.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:a.external_type}),t[32]=a.external_type,t[33]=F);let I;t[34]!==N||t[35]!==P||t[36]!==F||t[37]!==w||t[38]!==T||t[39]!==E?(I=(0,X.jsxs)(ie,{className:`rounded-none py-1 group cursor-pointer`,value:T,onSelect:E,children:[N,P,F]},w),t[34]=N,t[35]=P,t[36]=F,t[37]=w,t[38]=T,t[39]=E,t[40]=I):I=t[40];let R;t[41]!==a||t[42]!==p||t[43]!==y||t[44]!==c||t[45]!==o||t[46]!==n?(R=c&&(0,X.jsx)(`div`,{className:`pr-2 py-2 bg-(--slate-1) shadow-inner border-b`,style:Q(Z.columnPreview),children:(0,X.jsx)(oe,{children:(0,X.jsx)(Ae,{table:n,column:a,onAddColumnChart:y,preview:p.get(o?`${o.database}.${o.schema}.${n.name}:${a.name}`:`${n.name}:${a.name}`),sqlTableContext:o})})}),t[41]=a,t[42]=p,t[43]=y,t[44]=c,t[45]=o,t[46]=n,t[47]=R):R=t[47];let z;return t[48]!==I||t[49]!==R?(z=(0,X.jsxs)(X.Fragment,{children:[I,R]}),t[48]=I,t[49]=R,t[50]=z):z=t[50],z};function wt(e){let{tooltipContent:t,content:n}=e;return(0,X.jsx)(ye,{content:t,delayDuration:100,children:(0,X.jsx)(`span`,{className:`text-xs text-black bg-gray-100 dark:invert rounded px-1`,children:n})})}function Tt(e){return e}var $={name:`name`,type:`type-value`,defs:`defs-refs`},Et=[Tt({id:$.name,accessorFn:e=>[e.name,e.declaredBy],enableSorting:!0,sortingFn:`alphanumeric`,header:({column:e})=>(0,X.jsx)(q,{header:`Name`,column:e}),cell:({getValue:e})=>{let[t,n]=e();return(0,X.jsx)(Je,{name:t,declaredBy:n})}}),Tt({id:$.type,accessorFn:e=>[e.dataType,e.value],enableSorting:!0,sortingFn:`alphanumeric`,header:({column:e})=>(0,X.jsx)(q,{header:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)(`span`,{children:`Type`}),(0,X.jsx)(`span`,{children:`Value`})]}),column:e}),cell:({getValue:e})=>{let[t,n]=e();return(0,X.jsxs)(`div`,{className:`max-w-[150px]`,children:[(0,X.jsx)(`div`,{className:`text-ellipsis overflow-hidden whitespace-nowrap text-muted-foreground font-mono text-xs`,children:t}),(0,X.jsx)(`div`,{className:`text-ellipsis overflow-hidden whitespace-nowrap`,title:n??``,children:n})]})}}),Tt({id:$.defs,accessorFn:e=>[e.declaredBy,e.usedBy,e.name,e.declaredByNames,e.usedByNames],enableSorting:!0,sortingFn:`basic`,header:({column:e})=>(0,X.jsx)(q,{header:(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,X.jsx)(`span`,{children:`Declared By`}),(0,X.jsx)(`span`,{children:`Used By`})]}),column:e}),cell:({getValue:e})=>{let[t,n,r]=e(),i=e=>{let t=P(e);t&&o(t,r)};return(0,X.jsxs)(`div`,{className:`flex flex-col gap-1 py-1`,children:[(0,X.jsxs)(`div`,{className:`flex flex-row overflow-auto gap-2 items-center`,children:[(0,X.jsx)(`span`,{title:`Declared by`,children:(0,X.jsx)(rt,{className:`w-3.5 h-3.5 text-muted-foreground`})}),t.length===1?(0,X.jsx)(Ie,{variant:`focus`,cellId:t[0],skipScroll:!0,onClick:()=>i(t[0])}):(0,X.jsx)(`div`,{className:`text-destructive flex flex-row gap-2`,children:t.slice(0,3).map((e,n)=>(0,X.jsxs)(`span`,{className:`flex`,children:[(0,X.jsx)(Ie,{variant:`focus`,cellId:e,skipScroll:!0,className:`whitespace-nowrap text-destructive`,onClick:()=>i(e)},e),n<t.length-1&&`, `]},e))})]}),(0,X.jsxs)(`div`,{className:`flex flex-row overflow-auto gap-2 items-baseline`,children:[(0,X.jsx)(`span`,{title:`Used by`,children:(0,X.jsx)(Me,{className:`w-3.5 h-3.5 text-muted-foreground`})}),(0,X.jsx)(qe,{maxCount:3,cellIds:n,skipScroll:!0,onClick:i})]})]})}})];function Dt({variables:e,sort:t,cellIdToIndex:n}){t||={id:$.defs,desc:!1};let r=[];switch(t.id){case $.name:r=Se(e,e=>e.name);break;case $.type:r=Se(e,e=>e.dataType);break;case $.defs:r=Se(e,e=>n.get(e.declaredBy[0]))}return t.desc?r.toReversed():r}var Ot=(0,Y.memo)(({className:e,cellIds:t,variables:n})=>{let[r,i]=Y.useState([]),[a,o]=Y.useState(``),s=b(),{locale:c}=Ne(),l=(0,Y.useMemo)(()=>{let e=e=>{let n=s[e];return m(n)?`cell-${t.indexOf(e)}`:n??`cell-${t.indexOf(e)}`};return Object.values(n).map(t=>({...t,declaredByNames:t.declaredBy.map(e),usedByNames:t.usedBy.map(e)}))},[n,s,t]),u=(0,Y.useMemo)(()=>{let e=new Map;return t.forEach((t,n)=>e.set(t,n)),Dt({variables:l,sort:r[0],cellIdToIndex:e})},[l,r,t]),d=de({data:u,columns:Et,getCoreRowModel:ve(),onGlobalFilterChange:o,getFilteredRowModel:he(),enableFilters:!0,enableGlobalFilter:!0,enableColumnPinning:!1,getColumnCanGlobalFilter(e){return e.columnDef.enableGlobalFilter??!0},globalFilterFn:`auto`,manualSorting:!0,locale:c,onSortingChange:i,getSortedRowModel:_e(),state:{sorting:r,globalFilter:a}});return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(ke,{className:`w-full`,placeholder:`Search`,value:a,onChange:e=>o(e.target.value)}),(0,X.jsxs)(He,{className:se(`w-full text-sm flex-1 border-separate border-spacing-0`,e),children:[(0,X.jsx)(Le,{children:(0,X.jsx)(Be,{className:`whitespace-nowrap text-xs`,children:d.getFlatHeaders().map(e=>(0,X.jsx)(Re,{className:`sticky top-0 bg-background border-b`,children:K(e.column.columnDef.header,e.getContext())},e.id))})}),(0,X.jsx)(ze,{children:d.getRowModel().rows.map(e=>(0,X.jsx)(Be,{className:`hover:bg-accent`,children:e.getVisibleCells().map(e=>(0,X.jsx)(Ve,{className:`border-b`,children:K(e.column.columnDef.cell,e.getContext())},e.id))},e.id))})]})]})});Ot.displayName=`VariableTable`;var kt=()=>{let e=(0,J.c)(30),n=ne(),i=v(),a=r(F),o=r(B),c=s(`database`),[l,u]=t(nt),d=a.length+o.length,p;e[0]!==d||e[1]!==l.hasUserInteracted||e[2]!==l.openSections?(p=!l.hasUserInteracted&&d>0?[...new Set([...l.openSections,`datasources`])]:l.openSections,e[0]=d,e[1]=l.hasUserInteracted,e[2]=l.openSections,e[3]=p):p=e[3];let m=p,h;e[4]===u?h=e[5]:(h=e=>{u({openSections:e,hasUserInteracted:!0})},e[4]=u,e[5]=h);let g=h,_;e[6]===m?_=e[7]:(_=m.includes(`datasources`),e[6]=m,e[7]=_);let y=!_&&d>0,b=c.length>0,x;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,X.jsx)(S,{className:`w-4 h-4`}),e[8]=x):x=e[8];let C;e[9]!==d||e[10]!==y?(C=y&&(0,X.jsx)(Ye,{children:d}),e[9]=d,e[10]=y,e[11]=C):C=e[11];let w;e[12]!==c.length||e[13]!==b?(w=b&&(0,X.jsx)(tt,{count:c.length,type:`database`}),e[12]=c.length,e[13]=b,e[14]=w):w=e[14];let T;e[15]!==C||e[16]!==w?(T=(0,X.jsxs)(Xe,{children:[x,`Data sources`,C,w]}),e[15]=C,e[16]=w,e[17]=T):T=e[17];let E;e[18]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,X.jsx)(Ze,{children:(0,X.jsx)(ft,{})}),e[18]=E):E=e[18];let D;e[19]===T?D=e[20]:(D=(0,X.jsxs)($e,{value:`datasources`,children:[T,E]}),e[19]=T,e[20]=D);let O;e[21]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,X.jsxs)(Xe,{children:[(0,X.jsx)(f,{className:`w-4 h-4`}),`Variables`]}),e[21]=O):O=e[21];let k;e[22]!==i||e[23]!==n?(k=(0,X.jsxs)($e,{value:`variables`,lastItem:!0,children:[O,(0,X.jsx)(Ze,{children:Object.keys(n).length===0?(0,X.jsx)(`div`,{className:`px-3 py-4 text-sm text-muted-foreground`,children:`No variables defined`}):(0,X.jsx)(Ot,{cellIds:i.inOrderIds,variables:n})})]}),e[22]=i,e[23]=n,e[24]=k):k=e[24];let A;return e[25]!==g||e[26]!==m||e[27]!==k||e[28]!==D?(A=(0,X.jsxs)(G,{type:`multiple`,value:m,onValueChange:g,className:`flex flex-col h-full overflow-auto`,children:[D,k]}),e[25]=g,e[26]=m,e[27]=k,e[28]=D,e[29]=A):A=e[29],A};export{kt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"./useEvent-xfs0Sn4r.js";import{a as t}from"./cells-CD9Jbpoa.js";import{t as n}from"./compiler-runtime-CYIjoINj.js";import{o as r}from"./utils-CUZQNAWJ.js";import{g as i}from"./useEventListener-D27Dii_l.js";import{t as a}from"./objects-snlMn4yk.js";import{T as o,v as s}from"./config-DaNyNpZL.js";import{t as c}from"./cn-ldLVeaqm.js";import{t as l}from"./jsx-runtime-B74pBk57.js";import{s as u,u as d}from"./download-BKMVrvLm.js";import{r as f}from"./requests-C6_IaFh7.js";import{P as p}from"./layout-
|
|
1
|
+
import{l as e}from"./useEvent-xfs0Sn4r.js";import{a as t}from"./cells-CD9Jbpoa.js";import{t as n}from"./compiler-runtime-CYIjoINj.js";import{o as r}from"./utils-CUZQNAWJ.js";import{g as i}from"./useEventListener-D27Dii_l.js";import{t as a}from"./objects-snlMn4yk.js";import{T as o,v as s}from"./config-DaNyNpZL.js";import{t as c}from"./cn-ldLVeaqm.js";import{t as l}from"./jsx-runtime-B74pBk57.js";import{s as u,u as d}from"./download-BKMVrvLm.js";import{r as f}from"./requests-C6_IaFh7.js";import{P as p}from"./layout-RSFs10mJ.js";import{t as m}from"./Deferred-CrTnjj37.js";import{t as h}from"./use-toast-DpWHUGuF.js";import{t as g}from"./useInterval-B1_J4wdT.js";var _=n(),v=class{capturedInputs=new Map;inFlight=new Map;cancelEntry(e){e.controller.abort(),e.deferred.status===`pending`&&e.deferred.resolve(void 0)}needsCapture(e,t){if(this.capturedInputs.get(e)===t)return!1;let n=this.inFlight.get(e);return!(n&&n.inputValue===t)}waitForInFlight(e,t){let n=this.inFlight.get(e);return n&&n.inputValue===t?n.deferred.promise:null}startCapture(e,t){let n=this.inFlight.get(e);n&&this.cancelEntry(n);let r=new AbortController,i=new m,a={controller:r,inputValue:t,deferred:i};return this.inFlight.set(e,a),{signal:r.signal,markCaptured:n=>{this.inFlight.get(e)===a&&(i.resolve(n),this.capturedInputs.set(e,t),this.inFlight.delete(e))},markFailed:()=>{this.inFlight.get(e)===a&&(i.resolve(void 0),this.inFlight.delete(e))}}}prune(e){for(let t of this.capturedInputs.keys())e.has(t)||this.capturedInputs.delete(t);for(let[t,n]of this.inFlight)e.has(t)||(this.cancelEntry(n),this.inFlight.delete(t))}get isCapturing(){return this.inFlight.size>0}abort(){for(let e of this.inFlight.values())this.cancelEntry(e);this.inFlight.clear()}reset(){this.abort(),this.capturedInputs.clear()}},y=5e3;function b(){let t=(0,_.c)(20),n=e(r),{state:i}=e(s),a;t[0]===n.auto_download?a=t[1]:(a=n.auto_download.includes(`markdown`),t[0]=n.auto_download,t[1]=a);let c=a,l;t[2]===n.auto_download?l=t[3]:(l=n.auto_download.includes(`html`),t[2]=n.auto_download,t[3]=l);let u=l,m;t[4]===n.auto_download?m=t[5]:(m=n.auto_download.includes(`ipynb`),t[4]=n.auto_download,t[5]=m);let h=m,v=i===o.OPEN,b=!c||!v,x=!u||!v,S=!h||!v,{autoExportAsHTML:T,autoExportAsIPYNB:E,autoExportAsMarkdown:D,updateCellOutputs:O}=f(),k=C(),A;t[6]===D?A=t[7]:(A=async()=>{await D({download:!1})},t[6]=D,t[7]=A);let j;t[8]===b?j=t[9]:(j={delayMs:y,whenVisible:!0,disabled:b},t[8]=b,t[9]=j),g(A,j);let M;t[10]===T?M=t[11]:(M=async()=>{await T({download:!1,includeCode:!0,files:p.INSTANCE.filenames()})},t[10]=T,t[11]=M);let N;t[12]===x?N=t[13]:(N={delayMs:y,whenVisible:!0,disabled:x},t[12]=x,t[13]=N),g(M,N);let P;t[14]!==E||t[15]!==k||t[16]!==O?(P=async()=>{await w({takeScreenshots:()=>k({progress:d.indeterminate()}),updateCellOutputs:O}),await E({download:!1})},t[14]=E,t[15]=k,t[16]=O,t[17]=P):P=t[17];let F;t[18]===S?F=t[19]:(F={delayMs:y,whenVisible:!0,disabled:S,skipIfRunning:!0},t[18]=S,t[19]=F),g(P,F)}var x=new Set([`text/html`,`application/vnd.vegalite.v5+json`,`application/vnd.vega.v5+json`,`application/vnd.vegalite.v6+json`,`application/vnd.vega.v6+json`]),S=new v;function C(){let n=e(t);return async e=>{let{progress:t}=e,r=new Set(a.keys(n));S.prune(r);let o=[],s=[];for(let[e,t]of a.entries(n)){let n=t.output?.data;if(t.output?.mimetype&&x.has(t.output.mimetype)&&n){if(S.needsCapture(e,n))o.push([e,n]);else{let t=S.waitForInFlight(e,n);t&&s.push({cellId:e,promise:t})}}}if(o.length===0&&s.length===0)return{};o.length>0&&t.addTotal(o.length);let c={};for(let[e,n]of o){let r=S.startCapture(e,n);try{let t=await u(e);if(r.signal.aborted)continue;if(!t){i.error(`Failed to capture screenshot for cell ${e}`),r.markFailed();continue}let n=[`image/png`,t];c[e]=n,r.markCaptured(n)}catch(t){i.error(`Error screenshotting cell ${e}:`,t),r.markFailed()}finally{t.increment(1)}}let l=await Promise.allSettled(s.map(({promise:e})=>e));for(let[e,{cellId:t}]of s.entries()){let n=l[e];n.status===`fulfilled`&&n.value&&(c[t]=n.value)}return c}}async function w(e){let{takeScreenshots:t,updateCellOutputs:n}=e;try{let e=await t();a.size(e)>0&&await n({cellIdsToOutput:e})}catch(e){i.error(`Error updating cell outputs with screenshots:`,e),h({title:`Failed to capture cell outputs`,description:`Some outputs may be missing from the export. Continuing.`,variant:`danger`})}}var T=l(),E=e=>{let t=(0,_.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=c(`animate-pulse rounded-md bg-muted`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,T.jsx)(`div`,{className:i,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a};export{C as i,w as n,b as r,E as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{f as t}from"./useEvent-xfs0Sn4r.js";import{t as n}from"./react-CBDbhulC.js";import{g as r}from"./useEventListener-D27Dii_l.js";import{t as i}from"./jsx-runtime-B74pBk57.js";import{r as a}from"./requests-C6_IaFh7.js";import{t as o}from"./use-toast-DpWHUGuF.js";import{t as s}from"./kbd-Cwh96ZBE.js";var c=t(null),l=`packages-install-input`,u=()=>{requestAnimationFrame(()=>{let e=document.getElementById(l);e&&e.focus()})},d=e=>{e.openApplication(`packages`),u()},f=e(n(),1),p=i(),m=(e,t)=>{let n=Array.isArray(e)?e:[e];o(t?{title:n.length>1?`Failed to add packages`:`Failed to add package`,description:t,variant:`danger`}:{title:n.length>1?`Packages added`:`Package added`,description:(0,p.jsxs)(`div`,{children:[(0,p.jsxs)(`div`,{children:[n.length>1?`The packages `:`The package `,n.map((e,t)=>(0,p.jsxs)(`span`,{children:[t>0&&`, `,(0,p.jsx)(s,{className:`inline`,children:e})]},e)),` `,`and `,n.length>1?`their`:`its`,` dependencies have been added to your environment.`]}),(0,p.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:`Some Python packages may require a kernel restart to see changes.`})]})})},h=(e,t)=>{o(t?{title:`Failed to upgrade package`,description:t,variant:`danger`}:{title:`Package upgraded`,description:(0,p.jsxs)(`div`,{children:[(0,p.jsxs)(`div`,{children:[`The package `,(0,p.jsx)(s,{className:`inline`,children:e}),` has been upgraded.`]}),(0,p.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:`Some Python packages may require a kernel restart to see changes.`})]})})},g=(e,t)=>{o(t?{title:`Failed to remove package`,description:t,variant:`danger`}:{title:`Package removed`,description:(0,p.jsxs)(`div`,{children:[(0,p.jsxs)(`div`,{children:[`The package `,(0,p.jsx)(s,{className:`inline`,children:e}),` has been removed from your environment.`]}),(0,p.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:`Some Python packages may require a kernel restart to see changes.`})]})})};function _(){let[e,t]=(0,f.useState)(!1),{addPackage:n}=a();return{loading:e,handleInstallPackages:async(e,i)=>{t(!0);try{let t=await n({package:e.join(` `)});t.success?m(e):m(e,t.error),i?.()}catch(e){r.error(e)}finally{t(!1)}}}}export{u as a,l as i,g as n,d as o,h as r,c as s,_ as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{c as t,f as n,l as r,r as i,u as a}from"./useEvent-xfs0Sn4r.js";import{t as o}from"./react-CBDbhulC.js";import{Bi as s,Ct as c,D as l,E as u,Fa as d,It as f,Kr as p,Mo as m,Qi as h,Qr as g,Wn as _,Xi as v,Xr as y,Zi as b,Zr as x,_ as ee,_o as S,b as te,cn as C,ei as w,fo as T,h as E,ir as D,li as O,ln as k,ra as A,sa as j,t as M,ta as N,ti as P,xo as F,zi as I}from"./cells-CD9Jbpoa.js";import{Cn as L,kt as R,vt as z}from"./schemas-aTUejmFi.js";import{t as B}from"./compiler-runtime-CYIjoINj.js";import{r as ne,w as V}from"./utils-CUZQNAWJ.js";import{C as H,n as U,r as re}from"./ai-model-dropdown-D7nJTvh4.js";import{g as W,n as ie}from"./useEventListener-D27Dii_l.js";import{t as ae}from"./objects-snlMn4yk.js";import{n as G,t as K}from"./constants-BDbGiS7O.js";import{A as oe,M as se,N as q,O as ce,T as le,j as ue,k as de,v as fe}from"./config-DaNyNpZL.js";import{t as pe}from"./switch-Gl6cozkm.js";import{c as me}from"./readonly-python-code-GMl_IocT.js";import{t as J}from"./cn-ldLVeaqm.js";import{t as he}from"./jsx-runtime-B74pBk57.js";import{o as ge}from"./alert-dialog-BVi_GyOB.js";import{i as _e,n as ve,r as ye,t as be}from"./tabs-c6mpccpH.js";import{a as xe,c as Se,i as Ce,n as we,r as Te,s as Ee,t as De}from"./select-czJLm6jf.js";import{Pt as Oe,X as ke}from"./JsonOutput-
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{c as t,f as n,l as r,r as i,u as a}from"./useEvent-xfs0Sn4r.js";import{t as o}from"./react-CBDbhulC.js";import{Bi as s,Ct as c,D as l,E as u,Fa as d,It as f,Kr as p,Mo as m,Qi as h,Qr as g,Wn as _,Xi as v,Xr as y,Zi as b,Zr as x,_ as ee,_o as S,b as te,cn as C,ei as w,fo as T,h as E,ir as D,li as O,ln as k,ra as A,sa as j,t as M,ta as N,ti as P,xo as F,zi as I}from"./cells-CD9Jbpoa.js";import{Cn as L,kt as R,vt as z}from"./schemas-aTUejmFi.js";import{t as B}from"./compiler-runtime-CYIjoINj.js";import{r as ne,w as V}from"./utils-CUZQNAWJ.js";import{C as H,n as U,r as re}from"./ai-model-dropdown-D7nJTvh4.js";import{g as W,n as ie}from"./useEventListener-D27Dii_l.js";import{t as ae}from"./objects-snlMn4yk.js";import{n as G,t as K}from"./constants-BDbGiS7O.js";import{A as oe,M as se,N as q,O as ce,T as le,j as ue,k as de,v as fe}from"./config-DaNyNpZL.js";import{t as pe}from"./switch-Gl6cozkm.js";import{c as me}from"./readonly-python-code-GMl_IocT.js";import{t as J}from"./cn-ldLVeaqm.js";import{t as he}from"./jsx-runtime-B74pBk57.js";import{o as ge}from"./alert-dialog-BVi_GyOB.js";import{i as _e,n as ve,r as ye,t as be}from"./tabs-c6mpccpH.js";import{a as xe,c as Se,i as Ce,n as we,r as Te,s as Ee,t as De}from"./select-czJLm6jf.js";import{Pt as Oe,X as ke}from"./JsonOutput-DFd7q8lz.js";import{a as Ae,c as Y,o as je,p as Me,t as Ne}from"./download-BKMVrvLm.js";import{t as Pe}from"./tooltip-D7dq6bnc.js";import{n as Fe,r as Ie,t as Le}from"./button-Btj6GXNy.js";import{i as Re,r as ze,t as Be}from"./strings-CpYReX2Q.js";import{r as Ve}from"./requests-C6_IaFh7.js";import{t as X}from"./createLucideIcon-B7HeEoG2.js";import{F as He,I as Ue,L as We,P as Ge,a as Ke,i as qe,u as Je}from"./layout-RSFs10mJ.js";import{t as Ye}from"./check-BoA6XBpj.js";import{r as Xe}from"./useCellActionButton-BvuYvLCr.js";import{t as Ze}from"./code-CF0HKE9K.js";import{t as Qe}from"./copy-BMXKNElG.js";import{t as $e}from"./eye-off-CFuPxa9F.js";import{t as et}from"./external-link-Bp3BxyRA.js";import{t as tt}from"./file-DF8n85RA.js";import{t as nt}from"./globe-BQf75qV_.js";import{n as rt,r as it,t as at}from"./youtube-DCJ-ihUU.js";import{n as ot}from"./components-ib4asSo7.js";import{i as st,n as ct,r as lt}from"./markdown-export-0rLbaq8b.js";import{t as ut}from"./image-ab13yGv4.js";import{D as dt,E as ft,O as pt,T as mt,b as ht,j as gt}from"./write-secret-modal-lNU_7c2x.js";import{t as _t}from"./link-Cap-MZiw.js";import{t as vt}from"./spinner-Ck-Hgfvj.js";import{r as yt}from"./input-Daz6sk8l.js";import{t as bt}from"./settings-C-cYas75.js";import{t as xt}from"./square-B58Ib8Ir.js";import{t as St}from"./triangle-alert-MihykDYG.js";import{t as Ct}from"./use-toast-DpWHUGuF.js";import{n as wt,t as Tt}from"./paths-zcL04qUW.js";import{o as Et}from"./session-CEdta5_Q.js";import{n as Dt}from"./useAsyncData-Buhk-UgR.js";import{n as Ot}from"./copy-Cg05mM3C.js";import{t as kt}from"./copy-icon-CRxVZTJ9.js";import{r as At}from"./useRunCells-C6416Qeo.js";import{r as jt,t as Mt}from"./share-C2MPy_VX.js";import{n as Nt,t as Pt}from"./alert-dmKwNsrp.js";import{a as Ft}from"./cell-link-Z8JrraTv.js";import{t as It}from"./icons-CjLa9BiH.js";import{i as Lt,n as Rt}from"./error-entries-DI864MPn.js";import{n as zt,t as Bt}from"./pair-with-agent-modal-Gg8MZHWW.js";import{n as Vt}from"./add-connection-dialog-Bce8iA2c.js";import{t as Ht}from"./github-YRgb6LMu.js";import{n as Ut}from"./marimo-icons-C3KxMV9A.js";import{t as Wt}from"./links-DPh7yoP-.js";import{i as Gt,n as Kt,t as qt}from"./skeleton-D71npu63.js";import{t as Jt}from"./types-CoHi_MQq.js";var Yt=X(`circle-chevron-down`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 10-4 4-4-4`,key:`894hmk`}]]),Xt=X(`circle-chevron-right`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m10 8 4 4-4 4`,key:`1wy4r4`}]]),Zt=X(`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`}]]),Qt=X(`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`}]]),$t=X(`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`}]]),en=X(`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`}]]),tn=X(`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`}]]),nn=X(`files`,[[`path`,{d:`M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8`,key:`14sh0y`}],[`path`,{d:`M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z`,key:`1970lx`}],[`path`,{d:`M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1`,key:`l4dndm`}]]),rn=X(`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`}]]),an=X(`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`}]]),on=X(`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`}]]),sn=X(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),cn=X(`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`}]]),ln=X(`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`}]]),un=X(`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`}]]),dn=X(`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`}]]),Z=he(),Q=B(),$=e(o(),1);function fn(e,t){let n=(0,Q.c)(11),r;n[0]===t?r=n[1]:(r=new T(t),n[0]=t,n[1]=r);let i=r,a;n[2]!==e||n[3]!==i?(a=()=>i.get(e),n[2]=e,n[3]=i,n[4]=a):a=n[4];let[o,s]=(0,$.useState)(a),c;n[5]!==e||n[6]!==i?(c=t=>{s(t),i.set(e,t)},n[5]=e,n[6]=i,n[7]=c):c=n[7];let l=c,u;return n[8]!==l||n[9]!==o?(u=[o,l],n[8]=l,n[9]=o,n[10]=u):u=n[10],u}function pn(e,t){return{...e,Binaries:{...e.Binaries,Browser:t}}}function mn(e,t,n,r){return{marimo:e,Locale:n||void 0,Binaries:{Browser:t},"Environment Collection Error":r}}function hn(e,t){let n=Math.max(2,...Array.from(t.matchAll(/`+/g),e=>e[0].length)),r="`".repeat(n+1);return`${r}${e}\n${t}\n${r}`}function gn(e,t){let n=e.includes(`?`)?`&`:`?`,r=[],i=e,a=0;for(let[e,o]of Object.entries(t)){if(o.length===0)continue;let t=`${e}=${encodeURIComponent(o)}`,s=`${i}${a===0?n:`&`}${t}`;if(s.length>6e3){r.push(e);continue}i=s,a+=1}return{url:i,omitted:r}}function _n(e,t){return[`<details>`,`<summary>${Be.htmlEscape(e)??``}</summary>`,``,t,``,`</details>`].join(`
|
|
2
2
|
`)}function vn(e){return _n(`Environment`,hn(`json`,JSON.stringify(e,null,2)))}function yn(e){return _n(`Errors`,hn(`text`,e.map(Rt).join(`
|
|
3
3
|
|
|
4
4
|
---
|
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-BmNpxjzV.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-B0Z9INg1.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/react-CBDbhulC.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/compiler-runtime-CYIjoINj.js">
|
|
@@ -183,10 +183,10 @@
|
|
|
183
183
|
<link rel="modulepreload" crossorigin href="./assets/datasource-DTtEQWz7.js">
|
|
184
184
|
<link rel="modulepreload" crossorigin href="./assets/kbd-Cwh96ZBE.js">
|
|
185
185
|
<link rel="modulepreload" crossorigin href="./assets/alert-dmKwNsrp.js">
|
|
186
|
-
<link rel="modulepreload" crossorigin href="./assets/useInstallPackage-
|
|
186
|
+
<link rel="modulepreload" crossorigin href="./assets/useInstallPackage-u7d0wo79.js">
|
|
187
187
|
<link rel="modulepreload" crossorigin href="./assets/state-mneM4Ao8.js">
|
|
188
188
|
<link rel="modulepreload" crossorigin href="./assets/cell-link-Z8JrraTv.js">
|
|
189
|
-
<link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-
|
|
189
|
+
<link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-DfRv7_jc.js">
|
|
190
190
|
<link rel="modulepreload" crossorigin href="./assets/VisuallyHidden-SChAyKIQ.js">
|
|
191
191
|
<link rel="modulepreload" crossorigin href="./assets/useDateFormatter-BiqAQ-zI.js">
|
|
192
192
|
<link rel="modulepreload" crossorigin href="./assets/en-US-yTIMUO13.js">
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
<link rel="modulepreload" crossorigin href="./assets/formats-DSzGCKeO.js">
|
|
206
206
|
<link rel="modulepreload" crossorigin href="./assets/table-DmqOOjfe.js">
|
|
207
207
|
<link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-BSRAHC4P.js">
|
|
208
|
-
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-
|
|
208
|
+
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-DFd7q8lz.js">
|
|
209
209
|
<link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-ChZdjJhj.js">
|
|
210
210
|
<link rel="modulepreload" crossorigin href="./assets/square-function-DkZweMAs.js">
|
|
211
211
|
<link rel="modulepreload" crossorigin href="./assets/spec-CUFquO6R.js">
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
<link rel="modulepreload" crossorigin href="./assets/globe-BQf75qV_.js">
|
|
221
221
|
<link rel="modulepreload" crossorigin href="./assets/markdown-export-0rLbaq8b.js">
|
|
222
222
|
<link rel="modulepreload" crossorigin href="./assets/types-BflGgckY.js">
|
|
223
|
-
<link rel="modulepreload" crossorigin href="./assets/column-preview-
|
|
223
|
+
<link rel="modulepreload" crossorigin href="./assets/column-preview-_GkpGxG-.js">
|
|
224
224
|
<link rel="modulepreload" crossorigin href="./assets/square-B58Ib8Ir.js">
|
|
225
225
|
<link rel="modulepreload" crossorigin href="./assets/triangle-alert-MihykDYG.js">
|
|
226
226
|
<link rel="modulepreload" crossorigin href="./assets/prop-types-Djf4O40e.js">
|
package/package.json
CHANGED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
import { act, renderHook } from "@testing-library/react";
|
|
3
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { useInstallPackages } from "../useInstallPackage";
|
|
5
|
+
|
|
6
|
+
const toast = vi.fn();
|
|
7
|
+
const addPackage = vi.fn();
|
|
8
|
+
|
|
9
|
+
vi.mock("@/components/ui/use-toast", () => ({
|
|
10
|
+
toast: (...args: unknown[]) => toast(...args),
|
|
11
|
+
}));
|
|
12
|
+
|
|
13
|
+
vi.mock("../../network/requests", () => ({
|
|
14
|
+
useRequestClient: () => ({
|
|
15
|
+
addPackage: (...args: unknown[]) => addPackage(...args),
|
|
16
|
+
}),
|
|
17
|
+
}));
|
|
18
|
+
|
|
19
|
+
describe("useInstallPackages", () => {
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
toast.mockClear();
|
|
22
|
+
addPackage.mockClear();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("batches all packages into a single install call", async () => {
|
|
26
|
+
addPackage.mockResolvedValue({ success: true, error: null });
|
|
27
|
+
const { result } = renderHook(() => useInstallPackages());
|
|
28
|
+
|
|
29
|
+
await act(async () => {
|
|
30
|
+
await result.current.handleInstallPackages(["numpy", "pandas", "scipy"]);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// A single batched install call, not one per package.
|
|
34
|
+
expect(addPackage).toHaveBeenCalledTimes(1);
|
|
35
|
+
expect(addPackage).toHaveBeenCalledWith({ package: "numpy pandas scipy" });
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("shows a single aggregate success toast for multiple packages", async () => {
|
|
39
|
+
addPackage.mockResolvedValue({ success: true, error: null });
|
|
40
|
+
const { result } = renderHook(() => useInstallPackages());
|
|
41
|
+
|
|
42
|
+
await act(async () => {
|
|
43
|
+
await result.current.handleInstallPackages(["numpy", "pandas", "scipy"]);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Only one toast, regardless of package count — no false per-package status.
|
|
47
|
+
expect(toast).toHaveBeenCalledTimes(1);
|
|
48
|
+
expect(toast).toHaveBeenCalledWith(
|
|
49
|
+
expect.objectContaining({ title: "Packages added" }),
|
|
50
|
+
);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("shows a single aggregate error toast when the batch fails", async () => {
|
|
54
|
+
addPackage.mockResolvedValue({ success: false, error: "boom" });
|
|
55
|
+
const { result } = renderHook(() => useInstallPackages());
|
|
56
|
+
|
|
57
|
+
await act(async () => {
|
|
58
|
+
await result.current.handleInstallPackages(["numpy", "pandas"]);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
expect(toast).toHaveBeenCalledTimes(1);
|
|
62
|
+
expect(toast).toHaveBeenCalledWith(
|
|
63
|
+
expect.objectContaining({
|
|
64
|
+
title: "Failed to add packages",
|
|
65
|
+
description: "boom",
|
|
66
|
+
variant: "danger",
|
|
67
|
+
}),
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("collapses a partial (mixed) failure into one aggregate error toast", async () => {
|
|
72
|
+
// The backend resolves the batch as a single transaction and reports an
|
|
73
|
+
// aggregate outcome, so even when only some packages fail we surface a
|
|
74
|
+
// single error toast covering the whole batch — never a per-package
|
|
75
|
+
// success/failure split the response can't actually represent.
|
|
76
|
+
addPackage.mockResolvedValue({
|
|
77
|
+
success: false,
|
|
78
|
+
error: "pandas failed to install",
|
|
79
|
+
});
|
|
80
|
+
const { result } = renderHook(() => useInstallPackages());
|
|
81
|
+
|
|
82
|
+
await act(async () => {
|
|
83
|
+
await result.current.handleInstallPackages(["numpy", "pandas"]);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
expect(addPackage).toHaveBeenCalledTimes(1);
|
|
87
|
+
expect(addPackage).toHaveBeenCalledWith({ package: "numpy pandas" });
|
|
88
|
+
expect(toast).toHaveBeenCalledTimes(1);
|
|
89
|
+
expect(toast).toHaveBeenCalledWith(
|
|
90
|
+
expect.objectContaining({
|
|
91
|
+
title: "Failed to add packages",
|
|
92
|
+
description: "pandas failed to install",
|
|
93
|
+
variant: "danger",
|
|
94
|
+
}),
|
|
95
|
+
);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it("uses singular wording for a single package", async () => {
|
|
99
|
+
addPackage.mockResolvedValue({ success: true, error: null });
|
|
100
|
+
const { result } = renderHook(() => useInstallPackages());
|
|
101
|
+
|
|
102
|
+
await act(async () => {
|
|
103
|
+
await result.current.handleInstallPackages(["numpy"]);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
expect(toast).toHaveBeenCalledTimes(1);
|
|
107
|
+
expect(toast).toHaveBeenCalledWith(
|
|
108
|
+
expect.objectContaining({ title: "Package added" }),
|
|
109
|
+
);
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it("calls onSuccess after a successful install", async () => {
|
|
113
|
+
addPackage.mockResolvedValue({ success: true, error: null });
|
|
114
|
+
const onSuccess = vi.fn();
|
|
115
|
+
const { result } = renderHook(() => useInstallPackages());
|
|
116
|
+
|
|
117
|
+
await act(async () => {
|
|
118
|
+
await result.current.handleInstallPackages(["numpy"], onSuccess);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
expect(onSuccess).toHaveBeenCalledTimes(1);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
@@ -4,23 +4,34 @@ import { Kbd } from "@/components/ui/kbd";
|
|
|
4
4
|
import { toast } from "@/components/ui/use-toast";
|
|
5
5
|
|
|
6
6
|
export const showAddPackageToast = (
|
|
7
|
-
packageName: string,
|
|
7
|
+
packageName: string | string[],
|
|
8
8
|
error?: string | null,
|
|
9
9
|
) => {
|
|
10
|
+
const packageNames = Array.isArray(packageName) ? packageName : [packageName];
|
|
10
11
|
if (error) {
|
|
11
12
|
toast({
|
|
12
|
-
title:
|
|
13
|
+
title:
|
|
14
|
+
packageNames.length > 1
|
|
15
|
+
? "Failed to add packages"
|
|
16
|
+
: "Failed to add package",
|
|
13
17
|
description: error,
|
|
14
18
|
variant: "danger",
|
|
15
19
|
});
|
|
16
20
|
} else {
|
|
17
21
|
toast({
|
|
18
|
-
title: "Package added",
|
|
22
|
+
title: packageNames.length > 1 ? "Packages added" : "Package added",
|
|
19
23
|
description: (
|
|
20
24
|
<div>
|
|
21
25
|
<div>
|
|
22
|
-
The
|
|
23
|
-
|
|
26
|
+
{packageNames.length > 1 ? "The packages " : "The package "}
|
|
27
|
+
{packageNames.map((name, index) => (
|
|
28
|
+
<span key={name}>
|
|
29
|
+
{index > 0 && ", "}
|
|
30
|
+
<Kbd className="inline">{name}</Kbd>
|
|
31
|
+
</span>
|
|
32
|
+
))}{" "}
|
|
33
|
+
and {packageNames.length > 1 ? "their" : "its"} dependencies have
|
|
34
|
+
been added to your environment.
|
|
24
35
|
</div>
|
|
25
36
|
<div className="text-xs text-muted-foreground mt-1">
|
|
26
37
|
Some Python packages may require a kernel restart to see changes.
|
|
@@ -22,17 +22,18 @@ export function useInstallPackages(): {
|
|
|
22
22
|
setLoading(true);
|
|
23
23
|
|
|
24
24
|
try {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
// Batch all packages into a single install call.
|
|
26
|
+
// The worker splits by space and passes the full list to micropip,
|
|
27
|
+
// which resolves and downloads in parallel internally.
|
|
28
|
+
const response = await addPackage({ package: packages.join(" ") });
|
|
29
|
+
// The backend resolves the whole list as a single transaction, so the
|
|
30
|
+
// response only carries an aggregate success/error. Report a single
|
|
31
|
+
// toast covering all requested packages rather than implying a
|
|
32
|
+
// per-package outcome we don't actually have.
|
|
33
|
+
if (response.success) {
|
|
34
|
+
showAddPackageToast(packages);
|
|
35
|
+
} else {
|
|
36
|
+
showAddPackageToast(packages, response.error);
|
|
36
37
|
}
|
|
37
38
|
onSuccess?.();
|
|
38
39
|
} catch (error) {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{f as t}from"./useEvent-xfs0Sn4r.js";import{t as n}from"./react-CBDbhulC.js";import{g as r}from"./useEventListener-D27Dii_l.js";import{t as i}from"./jsx-runtime-B74pBk57.js";import{r as a}from"./requests-C6_IaFh7.js";import{t as o}from"./use-toast-DpWHUGuF.js";import{t as s}from"./kbd-Cwh96ZBE.js";var c=t(null),l=`packages-install-input`,u=()=>{requestAnimationFrame(()=>{let e=document.getElementById(l);e&&e.focus()})},d=e=>{e.openApplication(`packages`),u()},f=e(n(),1),p=i(),m=(e,t)=>{o(t?{title:`Failed to add package`,description:t,variant:`danger`}:{title:`Package added`,description:(0,p.jsxs)(`div`,{children:[(0,p.jsxs)(`div`,{children:[`The package `,(0,p.jsx)(s,{className:`inline`,children:e}),` and its dependencies has been added to your environment.`]}),(0,p.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:`Some Python packages may require a kernel restart to see changes.`})]})})},h=(e,t)=>{o(t?{title:`Failed to upgrade package`,description:t,variant:`danger`}:{title:`Package upgraded`,description:(0,p.jsxs)(`div`,{children:[(0,p.jsxs)(`div`,{children:[`The package `,(0,p.jsx)(s,{className:`inline`,children:e}),` has been upgraded.`]}),(0,p.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:`Some Python packages may require a kernel restart to see changes.`})]})})},g=(e,t)=>{o(t?{title:`Failed to remove package`,description:t,variant:`danger`}:{title:`Package removed`,description:(0,p.jsxs)(`div`,{children:[(0,p.jsxs)(`div`,{children:[`The package `,(0,p.jsx)(s,{className:`inline`,children:e}),` has been removed from your environment.`]}),(0,p.jsx)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:`Some Python packages may require a kernel restart to see changes.`})]})})};function _(){let[e,t]=(0,f.useState)(!1),{addPackage:n}=a();return{loading:e,handleInstallPackages:async(e,i)=>{t(!0);try{for(let[t,r]of e.entries()){let i=await n({package:r});i.success?m(r):m(r,i.error),t<e.length-1&&await new Promise(e=>setTimeout(e,1e3))}i?.()}catch(e){r.error(e)}finally{t(!1)}}}}export{u as a,l as i,g as n,d as o,h as r,c as s,_ as t};
|