@marimo-team/frontend 0.23.17-dev7 → 0.23.17-dev9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/assets/{add-connection-dialog-BZaJAQCM.js → add-connection-dialog-CAgdRfMX.js} +32 -32
  2. package/dist/assets/{cell-editor-OC7h_nZ3.js → cell-editor-D9Cta8Cu.js} +1 -1
  3. package/dist/assets/{command-palette-Gv6eCNJQ.js → command-palette-Bs9rYo1j.js} +1 -1
  4. package/dist/assets/components-Cfpwf2kg.js +1 -0
  5. package/dist/assets/{edit-page-D3D1nnC5.js → edit-page-dDKqRh-H.js} +4 -4
  6. package/dist/assets/file-explorer-panel-C7dEqvWb.js +37 -0
  7. package/dist/assets/{index-BTVjfrRP.js → index-DkWLOXih.js} +2 -2
  8. package/dist/assets/{layout-yfmf2ZBx.js → layout-CKtzwJnB.js} +2 -2
  9. package/dist/assets/{panels-B0w23XJS.js → panels-CHPhDL1t.js} +1 -1
  10. package/dist/assets/{reveal-component-BjgfnO81.js → reveal-component-BIAAv5AD.js} +1 -1
  11. package/dist/assets/{run-page-DDty5GvQ.js → run-page-DryC_HLt.js} +1 -1
  12. package/dist/assets/{scratchpad-panel-DJkO5OrI.js → scratchpad-panel-DrMScXy1.js} +1 -1
  13. package/dist/assets/{session-panel-aMoQPTCB.js → session-panel-CrKpK6L8.js} +1 -1
  14. package/dist/assets/{skeleton-CPuDx7yn.js → skeleton-BF2YAlLu.js} +1 -1
  15. package/dist/assets/{useNotebookActions-D0VcNpNG.js → useNotebookActions-0mLeYUwn.js} +1 -1
  16. package/dist/index.html +1 -1
  17. package/package.json +1 -1
  18. package/src/components/databases/icons/huggingface.svg +8 -0
  19. package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +14 -0
  20. package/src/components/editor/connections/storage/__tests__/as-code.test.ts +20 -0
  21. package/src/components/editor/connections/storage/add-storage-form.tsx +10 -0
  22. package/src/components/editor/connections/storage/as-code.ts +19 -1
  23. package/src/components/editor/connections/storage/schemas.ts +19 -0
  24. package/src/components/storage/__tests__/storage-snippets.test.ts +88 -0
  25. package/src/components/storage/components.tsx +2 -0
  26. package/src/components/storage/storage-snippets.ts +58 -0
  27. package/src/core/storage/types.ts +1 -0
  28. package/dist/assets/components-K_Mi0vdC.js +0 -1
  29. package/dist/assets/file-explorer-panel-4h-BKKaM.js +0 -26
@@ -1,14 +1,14 @@
1
- var ht=Object.defineProperty;var mt=(t,e,s)=>e in t?ht(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var G=(t,e,s)=>mt(t,typeof e!="symbol"?e+"":e,s);import{s as ie}from"./chunk-LvLJmgfZ.js";import{u as ut}from"./useEvent-D91BmmQi.js";import{t as bt}from"./react-Bj1aDYRI.js";import{Ct as ce,E as ft,Lt as gt,Pr as yt,ur as y}from"./cells-DLYs3NiJ.js";import{D as K,P as _,R as f,T as L,_ as le,i as _t,k as x}from"./zod-H_cgTO0M.js";import{t as U}from"./compiler-runtime-B3qBwwSJ.js";import{_ as xt}from"./useEventListener-C0195JsF.js";import{c as St}from"./utils-BWBBpCkT.js";import{t as V}from"./cn-DYvqRARy.js";import{t as kt}from"./jsx-runtime-Blw4afVn.js";import{a as wt,c as de,i as jt,o as pe,r as vt,s as $t,t as Ct}from"./popover-Bcz1Zikb.js";import{c as At,i as Nt,n as Rt,r as Tt,s as Lt,t as Dt}from"./select-BP75_5jJ.js";import{i as It,t as he}from"./tooltip-4bZlU7jl.js";import{t as me}from"./button-DDGiD1NW.js";import{r as W}from"./strings--BknHX9C.js";import{r as Pt,t as qt}from"./x-C-Eq0ag8.js";import{t as Et}from"./circle-plus-BluydVNx.js";import{t as Ft}from"./components-K_Mi0vdC.js";import{n as Z}from"./DeferredRequestRegistry-C8EV1PoE.js";import{t as Ot}from"./plus-AgXtozBz.js";import{t as Bt}from"./sparkles-DUCpRFlS.js";import{a as ue,c as be,i as Ut,n as fe,o as ge,p as Kt,r as ye,s as _e,u as Mt}from"./form-BsW7zr4t.js";import{a as Wt,c as Ht,l as Gt,n as Vt,r as zt,t as Qt}from"./dialog-BCVepWLJ.js";import{n as xe}from"./ImperativeModal-fY-ZfT0b.js";import{t as z}from"./links-wcQA1Np1.js";import{t as Jt}from"./useIframeCapabilities-j6fR_dBA.js";import{r as Yt}from"./html-to-image-D_C-hjtC.js";import{o as Xt}from"./focus-0L1nX7M9.js";import{n as Se}from"./useAsyncData-Bg5iAViP.js";import{a as Zt,c as ke,i as Q,o as J,s as es,t as ts}from"./command-Dqxie4gq.js";import{c as d,o as ss,t as rs}from"./form-oz4Z280Z.js";import{t as ns}from"./request-registry-Dpk9hQrX.js";import{a as ee,c as te,d as os,f as as,i as we,l as je,n as is,o as cs,r as se,s as E,t as ve,u as $e}from"./write-secret-modal-Dtm66yVf.js";var D=ie(bt(),1),o=ie(kt(),1);function ls(t,e){if(!e)return{recommended:[],other:[...t]};let s;try{s=new RegExp(e,"i")}catch{return{recommended:[],other:[...t]}}let n=[],r=[];for(let a of t)s.test(a)?n.push(a):r.push(a);return{recommended:n,other:r}}const Ce=({value:t,onChange:e,placeholder:s,secretsOnly:n=!1,recommendedKeys:r,otherKeys:a,onCreateSecret:c,className:i,searchPlaceholder:l,formatCustomValueLabel:p=g=>`Use "${g}"`,createSecretLabel:h="Create a new secret",allowCustomValue:u,allowCreateSecret:b})=>{let[g,m]=(0,D.useState)(!1),[S,w]=(0,D.useState)(""),k=S.trim(),v=!n&&k.length>0&&k!==t&&((u==null?void 0:u(k))??!0),A=(b==null?void 0:b(k))??!0,C=t?E(t)?cs(t):t:null,N=j=>{e(te(j)),m(!1),w("")},P=j=>{e(j),m(!1),w("")},q=()=>{e(""),w(""),m(!1)};return(0,o.jsxs)("div",{className:V("flex w-full min-w-48 mb-1 items-center gap-1",i),children:[(0,o.jsxs)(Ct,{modal:!0,open:g,onOpenChange:j=>{m(j),j||w("")},children:[(0,o.jsx)(jt,{asChild:!0,children:(0,o.jsxs)("button",{type:"button",className:V("flex h-6 min-w-0 flex-1 shadow-xs-solid items-center justify-between","rounded-sm border border-input bg-background px-1.5 text-sm font-code ring-offset-background placeholder:text-muted-foreground","hover:shadow-sm-solid focus:outline-hidden focus:ring-1 focus:ring-ring focus:border-primary focus:shadow-md-solid",E(t)&&"bg-accent"),"aria-expanded":g,children:[(0,o.jsx)("span",{className:"truncate flex-1 min-w-0 text-left flex items-center gap-1.5",children:C?(0,o.jsxs)(o.Fragment,{children:[E(t)&&(0,o.jsx)(Z,{className:"h-3 w-3 shrink-0 opacity-70"}),(0,o.jsx)("span",{className:"truncate",children:C})]}):(0,o.jsx)("span",{className:"text-muted-foreground",children:s})}),(0,o.jsx)(Pt,{className:"ml-1 h-4 w-4 opacity-50 shrink-0"})]})}),(0,o.jsx)(vt,{className:"w-(--radix-popover-trigger-width) p-0",align:"start",children:(0,o.jsxs)(ts,{children:[(0,o.jsx)(Zt,{placeholder:l??(n?"Search secrets...":"Type a value or search secrets..."),rootClassName:"px-1 h-8",autoFocus:!0,value:S,onValueChange:w}),(0,o.jsxs)(es,{className:"max-h-60 overscroll-contain",children:[v&&(0,o.jsx)(Q,{children:(0,o.jsx)(J,{value:`use custom value ${k}`,onSelect:()=>P(k),children:p(k)})}),A&&(0,o.jsx)(Q,{className:"mt-0",children:(0,o.jsxs)(J,{value:`create new secret ${k}`,onSelect:()=>{let j=k||void 0;m(!1),w(""),c(j)},children:[(0,o.jsx)(Et,{className:"mr-2 h-3.5 w-3.5"}),h]})}),r.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ke,{className:"mt-0"}),(0,o.jsx)(Q,{heading:"Recommended",children:r.map(j=>(0,o.jsxs)(J,{value:j,onSelect:()=>N(j),children:[(0,o.jsx)(Z,{className:"mr-2 h-3 w-3 opacity-70"}),j]},j))})]}),a.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ke,{className:"mt-0"}),(0,o.jsx)(Q,{heading:r.length>0?"Other":void 0,children:a.map(j=>(0,o.jsxs)(J,{value:j,onSelect:()=>N(j),children:[(0,o.jsx)(Z,{className:"mr-2 h-3 w-3 opacity-70"}),j]},j))})]})]})]})})]}),t&&(0,o.jsx)("button",{type:"button","aria-label":"Clear",className:V("flex h-6 w-6 shrink-0 items-center justify-center rounded-sm","text-muted-foreground hover:bg-muted hover:text-foreground","focus:outline-hidden focus:ring-1 focus:ring-ring"),onClick:q,children:(0,o.jsx)(qt,{className:"h-3.5 w-3.5"})})]})};var ds=U(),Ae=(0,D.createContext)({providerNames:[],secretKeys:[],loading:!1,error:void 0,refreshSecrets:xt.NOOP});const Ne=()=>(0,D.use)(Ae),ps=t=>{let e=(0,ds.c)(14),{children:s}=t,n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=[],e[0]=n):n=e[0];let{data:r,isPending:a,error:c,refetch:i}=Se(gs,n);r==null||r.secretKeys,r==null||r.providerNames;let l;e[1]===(r==null?void 0:r.secretKeys)?l=e[2]:(l=(r==null?void 0:r.secretKeys)||[],e[1]=r==null?void 0:r.secretKeys,e[2]=l);let p;e[3]===(r==null?void 0:r.providerNames)?p=e[4]:(p=(r==null?void 0:r.providerNames)||[],e[3]=r==null?void 0:r.providerNames,e[4]=p);let h;e[5]!==c||e[6]!==a||e[7]!==i||e[8]!==l||e[9]!==p?(h={secretKeys:l,providerNames:p,loading:a,error:c,refreshSecrets:i},e[5]=c,e[6]=a,e[7]=i,e[8]=l,e[9]=p,e[10]=h):h=e[10];let u=h,b;return e[11]!==s||e[12]!==u?(b=(0,o.jsx)(Ae,{value:u,children:s}),e[11]=s,e[12]=u,e[13]=b):b=e[13],b},hs={isMatch:t=>{if(t instanceof le){let{optionRegex:e}=d.parse(t.description||"");return!!e}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:n,providerNames:r,refreshSecrets:a}=Ne(),{openModal:c,closeModal:i}=xe(),{label:l,description:p,placeholder:h,optionRegex:u="",inputType:b}=d.parse(t.description||""),g=b==="password",{recommended:m,other:S}=ls(n,u);return(0,o.jsx)(ue,{control:e.control,name:s,render:({field:w})=>(0,o.jsxs)(ge,{children:[(0,o.jsx)(_e,{children:l}),(0,o.jsx)(ye,{children:p}),(0,o.jsx)(fe,{children:(0,o.jsx)(Ce,{value:w.value?String(w.value):"",onChange:w.onChange,placeholder:h,secretsOnly:g,recommendedKeys:m,otherKeys:S,onCreateSecret:k=>{c((0,o.jsx)(ve,{providerNames:r,initialValue:k,onSuccess:v=>{a(),w.onChange(te(v)),i()},onClose:i}))}})}),(0,o.jsx)(be,{})]})})}},ms={isMatch:t=>{if(t instanceof le){let{special:e}=d.parse(t.description||"");return e==="secret_textarea"}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:n,providerNames:r,refreshSecrets:a}=Ne(),{openModal:c,closeModal:i}=xe(),{label:l,description:p,placeholder:h}=d.parse(t.description||"");return(0,o.jsx)(ue,{control:e.control,name:s,render:({field:u})=>{let b=u.value?String(u.value):"",g=$e(b)?as(b):b;return(0,o.jsxs)(ge,{children:[(0,o.jsxs)(_e,{className:"flex items-center gap-1",children:[l,(0,o.jsx)(he,{content:"Enter a path to a file on disk, or create a secret to paste JSON directly.",delayDuration:300,children:(0,o.jsx)("button",{type:"button",className:"inline-flex","aria-label":"Credential input help",children:(0,o.jsx)(yt,{className:"h-3.5 w-3.5"})})})]}),(0,o.jsx)(ye,{children:p}),(0,o.jsx)(fe,{children:(0,o.jsx)(Ce,{value:g,onChange:m=>{u.onChange(!m||E(m)||$e(m)?m:os(m))},placeholder:h,searchPlaceholder:"Type a file path or paste JSON",formatCustomValueLabel:m=>`Use "${m}" as a file path`,createSecretLabel:"Paste JSON credentials",allowCustomValue:m=>!we(m),allowCreateSecret:m=>!m||we(m),recommendedKeys:[],otherKeys:n,onCreateSecret:m=>{c((0,o.jsx)(ve,{providerNames:r,initialValue:m,multiline:!0,onSuccess:S=>{a(),u.onChange(te(S)),i()},onClose:i}))}})}),(0,o.jsx)(be,{})]})}})}};function us(t){return t.provider!=="env"}function bs(t){return t.name}function fs(t){return t.keys}async function gs(){let t=await ns.request({}),e=is(t.secrets).filter(us).map(bs);return{secretKeys:t.secrets.flatMap(fs).toSorted(),providerNames:e}}var H=U(),ys=[hs,ms];const re=t=>{let e=(0,H.c)(2),{children:s}=t,n;return e[0]===s?n=e[1]:(n=(0,o.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:s}),e[0]=s,e[1]=n),n},ne=t=>{let e=(0,H.c)(9),{name:s,color:n,icon:r,onSelect:a}=t,c;e[0]===n?c=e[1]:(c={backgroundColor:n},e[0]=n,e[1]=c);let i;e[2]===s?i=e[3]:(i=(0,o.jsx)("span",{className:"text-white font-medium text-lg",children:s}),e[2]=s,e[3]=i);let l;return e[4]!==r||e[5]!==a||e[6]!==c||e[7]!==i?(l=(0,o.jsxs)("button",{type:"button",className:"py-3 flex flex-col items-center justify-center gap-1 transition-all hover:scale-105 hover:brightness-110 rounded shadow-sm-solid hover:shadow-md-solid",style:c,onClick:a,children:[r,i]}),e[4]=r,e[5]=a,e[6]=c,e[7]=i,e[8]=l):l=e[8],l},_s=t=>{let e=(0,H.c)(25),{onBack:s,isValid:n,libraries:r,preferredLibrary:a,onLibraryChange:c,displayNames:i,libraryLabel:l}=t,p=l===void 0?"Preferred library":l,h;e[0]===s?h=e[1]:(h=(0,o.jsx)(me,{type:"button",variant:"outline",onClick:s,children:"Back"}),e[0]=s,e[1]=h);let u=!n,b;e[2]===u?b=e[3]:(b=(0,o.jsx)(me,{type:"submit",disabled:u,children:"Add"}),e[2]=u,e[3]=b);let g;e[4]!==h||e[5]!==b?(g=(0,o.jsxs)("div",{className:"flex gap-2",children:[h,b]}),e[4]=h,e[5]=b,e[6]=g):g=e[6];let m;e[7]===Symbol.for("react.memo_cache_sentinel")?(m=(0,o.jsx)(Lt,{children:(0,o.jsx)(At,{placeholder:"Select a library"})}),e[7]=m):m=e[7];let S;e[8]===p?S=e[9]:(S=(0,o.jsxs)("div",{className:"flex flex-col gap-1 items-end",children:[m,(0,o.jsx)("span",{className:"text-xs text-muted-foreground",children:p})]}),e[8]=p,e[9]=S);let w;if(e[10]!==i||e[11]!==r){let C;e[13]===i?C=e[14]:(C=N=>(0,o.jsx)(Nt,{value:N,children:i[N]??N},N),e[13]=i,e[14]=C),w=r.map(C),e[10]=i,e[11]=r,e[12]=w}else w=e[12];let k;e[15]===w?k=e[16]:(k=(0,o.jsx)(Rt,{children:(0,o.jsx)(Tt,{children:w})}),e[15]=w,e[16]=k);let v;e[17]!==c||e[18]!==a||e[19]!==S||e[20]!==k?(v=(0,o.jsx)("div",{children:(0,o.jsxs)(Dt,{value:a,onValueChange:c,children:[S,k]})}),e[17]=c,e[18]=a,e[19]=S,e[20]=k,e[21]=v):v=e[21];let A;return e[22]!==v||e[23]!==g?(A=(0,o.jsxs)("div",{className:"flex gap-2 justify-between",children:[g,v]}),e[22]=v,e[23]=g,e[24]=A):A=e[24],A};function Re(){let t=(0,H.c)(4),{createNewCell:e}=ft(),s=Xt(),n=ut(St),r;return t[0]!==n||t[1]!==e||t[2]!==s?(r=a=>{/\bmo\./.test(a)&&Yt({autoInstantiate:n,createNewCell:e,fromCellId:s}),e({code:a,before:!1,cellId:s??"__end__",skipIfCodeExists:!0})},t[0]=n,t[1]=e,t[2]=s,t[3]=r):r=t[3],r}const Te=t=>{let e=(0,H.c)(30),{schema:s,libraries:n,preferredLibrary:r,displayNames:a,libraryLabel:c,generateCode:i,onSubmit:l,onBack:p}=t,h;e[0]===s?h=e[1]:(h=ss(s),e[0]=s,e[1]=h);let u=h,b;e[2]===s?b=e[3]:(b=Mt(s),e[2]=s,e[3]=b);let g;e[4]!==u||e[5]!==b?(g={defaultValues:u,resolver:b,reValidateMode:"onChange"},e[4]=u,e[5]=b,e[6]=g):g=e[6];let m=Kt(g),[S,w]=D.useState(r),k=Re(),v;e[7]!==i||e[8]!==k||e[9]!==l||e[10]!==S?(v=pt=>{k(i(pt,S)),l()},e[7]=i,e[8]=k,e[9]=l,e[10]=S,e[11]=v):v=e[11];let A=v,C;e[12]!==m||e[13]!==A?(C=m.handleSubmit(A),e[12]=m,e[13]=A,e[14]=C):C=e[14];let N;e[15]===Symbol.for("react.memo_cache_sentinel")?(N=(0,o.jsx)(Ut,{}),e[15]=N):N=e[15];let P;e[16]!==m||e[17]!==s?(P=(0,o.jsx)(ps,{children:(0,o.jsx)(rs,{schema:s,form:m,renderers:ys,children:N})}),e[16]=m,e[17]=s,e[18]=P):P=e[18];let q;e[19]!==a||e[20]!==m.formState.isValid||e[21]!==n||e[22]!==c||e[23]!==p||e[24]!==S?(q=(0,o.jsx)(_s,{onBack:p,isValid:m.formState.isValid,libraries:n,preferredLibrary:S,onLibraryChange:w,displayNames:a,libraryLabel:c}),e[19]=a,e[20]=m.formState.isValid,e[21]=n,e[22]=c,e[23]=p,e[24]=S,e[25]=q):q=e[25];let j;return e[26]!==C||e[27]!==P||e[28]!==q?(j=(0,o.jsxs)("form",{onSubmit:C,className:"space-y-4",children:[P,q]}),e[26]=C,e[27]=P,e[28]=q,e[29]=j):j=e[29],j};function F(){return f().optional().describe(d.of({label:"Password",inputType:"password",optionRegex:"(password|passwd|pgpassword|db.?pass(word)?)"}))}function Y(t,e){let s=f();return s=e?s.nonempty():s.optional(),s=s.describe(d.of({label:t||"Token",inputType:"password",optionRegex:"(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))"})),s}function X(){return f().optional().describe(d.of({label:"Warehouse Name",optionRegex:"(warehouse|snowflake.?warehouse)"}))}function oe(t,e){let s=f();return s=e?s.nonempty():s.optional(),s.describe(d.of({label:t||"URI",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"}))}function I(t){return f().nonempty().describe(d.of({label:t||"Host",optionRegex:"^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)"}))}function R(){return f().describe(d.of({label:"Database",optionRegex:"(database|db.?name|pgdatabase|^DB$|^DATABASE$)"}))}function xs(){return f().describe(d.of({label:"Schema",optionRegex:"(^SCHEMA$|db.?schema|postgres.?schema|pg.?schema|_SCHEMA$)"}))}function T(){return f().nonempty().describe(d.of({label:"Username",optionRegex:"(username|pguser|db.?user|^USER$|_USER$)"}))}function O(t){let e=_t().describe(d.of({label:"Port",inputType:"number",placeholder:t==null?void 0:t.toString()})).transform(Number).refine(s=>s>=0&&s<=65535,{message:"Port must be between 0 and 65535"});return t===void 0?e:e.default(t)}function Le(){return L().default(!1).describe(d.of({label:"Read Only"}))}const De=_({type:x("postgres"),host:I(),port:O(5432).optional(),database:R(),username:T(),password:F(),ssl:L().default(!1).describe(d.of({label:"Use SSL"}))}).describe(d.of({direction:"two-columns"})),Ie=_({type:x("mysql"),host:I(),port:O(3306),database:R(),username:T(),password:F(),ssl:L().default(!1).describe(d.of({label:"Use SSL"}))}).describe(d.of({direction:"two-columns"})),Pe=_({type:x("sqlite"),database:R().describe(d.of({label:"Database Path"}))}).describe(d.of({direction:"two-columns"})),qe=_({type:x("duckdb"),database:R().describe(d.of({label:"Database Path"})),read_only:Le()}).describe(d.of({direction:"two-columns"})),Ee=_({type:x("motherduck"),database:R().default("my_db").describe(d.of({label:"Database Name"})),token:Y()}).describe(d.of({direction:"two-columns"})),Fe=_({type:x("snowflake"),account:f().nonempty().describe(d.of({label:"Account",optionRegex:"(snowflake.?account|^SNOWFLAKE_ACCOUNT$|account.?id)"})),warehouse:f().optional().describe(d.of({label:"Warehouse",optionRegex:"(snowflake.?warehouse|warehouse)"})),database:R(),schema:f().optional().describe(d.of({label:"Schema",optionRegex:"(snowflake.?schema|^SCHEMA$|_SCHEMA$)"})),role:f().optional().describe(d.of({label:"Role"})),authType:K("type",[_({type:x("Password"),username:T(),password:F(),enable_mfa:L().default(!1).describe(d.of({label:"Enable MFA (Duo Push)"}))}),_({type:x("SSO (Browser)"),username:T()}),_({type:x("Key Pair"),username:T(),private_key_path:f().nonempty().describe(d.of({label:"Private Key Path",placeholder:"/path/to/rsa_key.p8"})),private_key_passphrase:f().optional().describe(d.of({label:"Private Key Passphrase",inputType:"password",optionRegex:"(passphrase|private.?key.?passphrase|key.?passphrase)"}))}),_({type:x("OAuth / PAT"),token:Y("Token",!0)})]).default({type:"Password",username:"username",enable_mfa:!1}).describe(d.of({special:"tabs"}))}).describe(d.of({direction:"two-columns"})),Oe=_({type:x("bigquery"),project:f().nonempty().describe(d.of({label:"Project ID",optionRegex:"(bigquery.?project|gcp.?project|google.?cloud.?project|project.?id)"})),dataset:f().nonempty().describe(d.of({label:"Dataset",optionRegex:"(bigquery.?dataset|dataset)"})),credentials_json:f().describe(d.of({label:"Credentials JSON",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),Be=_({type:x("clickhouse_connect"),host:I(),port:O(8123).optional(),username:T(),password:F(),secure:L().default(!1).describe(d.of({label:"Use HTTPs"})),proxy_path:f().optional().describe(d.of({label:"Proxy Path",placeholder:"/clickhouse"}))}).describe(d.of({direction:"two-columns"})),Ue=_({type:x("timeplus"),host:I().default("localhost"),port:O(8123).optional(),username:T().default("default"),password:F().default("")}).describe(d.of({direction:"two-columns"})),Ke=_({type:x("chdb"),database:R().describe(d.of({label:"Database Path"})),read_only:Le()}).describe(d.of({direction:"two-columns"})),Me=_({type:x("trino"),host:I(),port:O(8080),database:R(),schema:xs().optional(),username:T(),password:F(),async_support:L().default(!1).describe(d.of({label:"Async Support"}))}).describe(d.of({direction:"two-columns"})),We=_({type:x("iceberg"),name:f().describe(d.of({label:"Catalog Name"})),catalog:K("type",[_({type:x("REST"),warehouse:X(),uri:f().optional().describe(d.of({label:"URI",placeholder:"https://",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"})),token:Y()}),_({type:x("SQL"),warehouse:X(),uri:f().optional().describe(d.of({label:"URI",placeholder:"jdbc:iceberg://host:port/database",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"}))}),_({type:x("Hive"),warehouse:X(),uri:oe()}),_({type:x("Glue"),warehouse:X(),uri:oe()}),_({type:x("DynamoDB"),"dynamodb.profile-name":f().optional().describe(d.of({label:"Profile Name"})),"dynamodb.region":f().optional().describe(d.of({label:"Region"})),"dynamodb.access-key-id":f().optional().describe(d.of({label:"Access Key ID",inputType:"password",optionRegex:"(access.?key.?id|aws.?access.?key)"})),"dynamodb.secret-access-key":f().optional().describe(d.of({label:"Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|aws.?secret)"})),"dynamodb.session-token":f().optional().describe(d.of({label:"Session Token",inputType:"password",optionRegex:"(session.?token|aws.?session)"}))})]).default({type:"REST",token:void 0}).describe(d.of({special:"tabs"}))}),He=_({type:x("datafusion"),sessionContext:L().optional().describe(d.of({label:"Use Session Context"}))}),Ge=_({type:x("pyspark"),host:I().optional(),port:O().optional()}),Ve=_({type:x("redshift"),host:I(),port:O(5439),connectionType:K("type",[_({type:x("IAM credentials"),region:f().describe(d.of({label:"Region"})),aws_access_key_id:f().nonempty().describe(d.of({label:"AWS Access Key ID",inputType:"password",optionRegex:"(access.?key.?id|aws.?access.?key)"})),aws_secret_access_key:f().nonempty().describe(d.of({label:"AWS Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|aws.?secret)"})),aws_session_token:f().optional().describe(d.of({label:"AWS Session Token",inputType:"password",optionRegex:"(session.?token|aws.?session)"}))}),_({type:x("DB credentials"),user:T(),password:F()})]).default({type:"IAM credentials",aws_access_key_id:"",aws_secret_access_key:"",region:""}),database:R()}).describe(d.of({direction:"two-columns"})),ze=_({type:x("databricks"),access_token:Y("Access Token",!0),server_hostname:I("Server Hostname"),http_path:oe("HTTP Path",!0),catalog:f().optional().describe(d.of({label:"Catalog"})),schema:f().optional().describe(d.of({label:"Schema"}))}).describe(d.of({direction:"two-columns"})),Qe=_({type:x("supabase"),host:I(),port:O(5432).optional(),database:R(),username:T(),password:F(),disable_client_pooling:L().default(!1).describe(d.of({label:"Disable Client-Side Pooling"}))}).describe(d.of({direction:"two-columns"})),Ss=K("type",[De,Ie,Pe,qe,Ee,Fe,Oe,Be,Ue,Ke,Me,We,He,Ge,Ve,ze,Qe]),Je={sqlmodel:"SQLModel",sqlalchemy:"SQLAlchemy",duckdb:"DuckDB",clickhouse_connect:"ClickHouse Connect",chdb:"chDB",pyiceberg:"PyIceberg",ibis:"Ibis",motherduck:"MotherDuck",redshift:"Redshift",databricks:"Databricks"};var $=class{constructor(t,e,s){this.connection=t,this.orm=e,this.secrets=s}get imports(){let t=new Set(this.generateImports());switch(this.orm){case"sqlalchemy":t.add("import sqlalchemy");break;case"sqlmodel":t.add("import sqlmodel");break;case"duckdb":t.add("import duckdb");break;case"ibis":t.add("import ibis");break}return t}},ks=t=>`_${t}`,ws=class{constructor(){G(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e,s){if(t=ks(t),E(e)){let n=je(e),r=s?`os.environ.get("${n}", "${s}")`:`os.environ.get("${n}")`;return this.secrets[t]=r,t}if(s!=null){let n=`os.environ.get("${e}", "${s}")`;return this.secrets[t]=n,t}return typeof e=="number"||typeof e=="number"?`${e}`:typeof e=="boolean"?M(e):e?`"${e}"`:""}printInFString(t,e,s){if(e===void 0)return"";if(typeof e=="number")return`${e}`;if(typeof e=="boolean")return M(e);let n=this.print(t,e,s);return n.startsWith('"')&&n.endsWith('"')?n.slice(1,-1):`{${n}}`}printPassword(t,e,s,n){let r=s?this.printInFString.bind(this):this.print.bind(this);return E(t)?r(n||"password",t):r(n||"password",e,t)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
2
- `)}},js=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.connection.ssl?", connect_args={'sslmode': 'require'}":"",e=this.secrets.printPassword(this.connection.password,"POSTGRES_PASSWORD",!0);return y(`
1
+ var ut=Object.defineProperty;var mt=(t,e,s)=>e in t?ut(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var G=(t,e,s)=>mt(t,typeof e!="symbol"?e+"":e,s);import{s as ie}from"./chunk-LvLJmgfZ.js";import{u as bt}from"./useEvent-D91BmmQi.js";import{t as gt}from"./react-Bj1aDYRI.js";import{Ct as ce,E as ft,Lt as yt,Pr as _t,ur as y}from"./cells-DLYs3NiJ.js";import{D as K,P as _,R as g,T as L,_ as le,i as xt,k as x}from"./zod-H_cgTO0M.js";import{t as U}from"./compiler-runtime-B3qBwwSJ.js";import{_ as St}from"./useEventListener-C0195JsF.js";import{c as kt}from"./utils-BWBBpCkT.js";import{t as V}from"./cn-DYvqRARy.js";import{t as wt}from"./jsx-runtime-Blw4afVn.js";import{a as jt,c as de,i as vt,o as pe,r as $t,s as Ct,t as At}from"./popover-Bcz1Zikb.js";import{c as Nt,i as Rt,n as Tt,r as Lt,s as Dt,t as It}from"./select-BP75_5jJ.js";import{i as Pt,t as he}from"./tooltip-4bZlU7jl.js";import{t as ue}from"./button-DDGiD1NW.js";import{r as M}from"./strings--BknHX9C.js";import{r as qt,t as Et}from"./x-C-Eq0ag8.js";import{t as Ft}from"./circle-plus-BluydVNx.js";import{t as Ot}from"./components-Cfpwf2kg.js";import{n as Z}from"./DeferredRequestRegistry-C8EV1PoE.js";import{t as Bt}from"./plus-AgXtozBz.js";import{t as Ut}from"./sparkles-DUCpRFlS.js";import{a as me,c as be,i as Kt,n as ge,o as fe,p as Ht,r as ye,s as _e,u as Mt}from"./form-BsW7zr4t.js";import{a as Wt,c as Gt,l as Vt,n as zt,r as Qt,t as Jt}from"./dialog-BCVepWLJ.js";import{n as xe}from"./ImperativeModal-fY-ZfT0b.js";import{t as z}from"./links-wcQA1Np1.js";import{t as Yt}from"./useIframeCapabilities-j6fR_dBA.js";import{r as Xt}from"./html-to-image-D_C-hjtC.js";import{o as Zt}from"./focus-0L1nX7M9.js";import{n as Se}from"./useAsyncData-Bg5iAViP.js";import{a as es,c as ke,i as Q,o as J,s as ts,t as ss}from"./command-Dqxie4gq.js";import{c as d,o as rs,t as ns}from"./form-oz4Z280Z.js";import{t as os}from"./request-registry-Dpk9hQrX.js";import{a as ee,c as te,d as as,f as is,i as we,l as je,n as cs,o as ls,r as se,s as E,t as ve,u as $e}from"./write-secret-modal-Dtm66yVf.js";var D=ie(gt(),1),o=ie(wt(),1);function ds(t,e){if(!e)return{recommended:[],other:[...t]};let s;try{s=new RegExp(e,"i")}catch{return{recommended:[],other:[...t]}}let n=[],r=[];for(let a of t)s.test(a)?n.push(a):r.push(a);return{recommended:n,other:r}}const Ce=({value:t,onChange:e,placeholder:s,secretsOnly:n=!1,recommendedKeys:r,otherKeys:a,onCreateSecret:c,className:i,searchPlaceholder:l,formatCustomValueLabel:p=f=>`Use "${f}"`,createSecretLabel:h="Create a new secret",allowCustomValue:m,allowCreateSecret:b})=>{let[f,u]=(0,D.useState)(!1),[S,w]=(0,D.useState)(""),k=S.trim(),v=!n&&k.length>0&&k!==t&&((m==null?void 0:m(k))??!0),A=(b==null?void 0:b(k))??!0,C=t?E(t)?ls(t):t:null,N=j=>{e(te(j)),u(!1),w("")},P=j=>{e(j),u(!1),w("")},q=()=>{e(""),w(""),u(!1)};return(0,o.jsxs)("div",{className:V("flex w-full min-w-48 mb-1 items-center gap-1",i),children:[(0,o.jsxs)(At,{modal:!0,open:f,onOpenChange:j=>{u(j),j||w("")},children:[(0,o.jsx)(vt,{asChild:!0,children:(0,o.jsxs)("button",{type:"button",className:V("flex h-6 min-w-0 flex-1 shadow-xs-solid items-center justify-between","rounded-sm border border-input bg-background px-1.5 text-sm font-code ring-offset-background placeholder:text-muted-foreground","hover:shadow-sm-solid focus:outline-hidden focus:ring-1 focus:ring-ring focus:border-primary focus:shadow-md-solid",E(t)&&"bg-accent"),"aria-expanded":f,children:[(0,o.jsx)("span",{className:"truncate flex-1 min-w-0 text-left flex items-center gap-1.5",children:C?(0,o.jsxs)(o.Fragment,{children:[E(t)&&(0,o.jsx)(Z,{className:"h-3 w-3 shrink-0 opacity-70"}),(0,o.jsx)("span",{className:"truncate",children:C})]}):(0,o.jsx)("span",{className:"text-muted-foreground",children:s})}),(0,o.jsx)(qt,{className:"ml-1 h-4 w-4 opacity-50 shrink-0"})]})}),(0,o.jsx)($t,{className:"w-(--radix-popover-trigger-width) p-0",align:"start",children:(0,o.jsxs)(ss,{children:[(0,o.jsx)(es,{placeholder:l??(n?"Search secrets...":"Type a value or search secrets..."),rootClassName:"px-1 h-8",autoFocus:!0,value:S,onValueChange:w}),(0,o.jsxs)(ts,{className:"max-h-60 overscroll-contain",children:[v&&(0,o.jsx)(Q,{children:(0,o.jsx)(J,{value:`use custom value ${k}`,onSelect:()=>P(k),children:p(k)})}),A&&(0,o.jsx)(Q,{className:"mt-0",children:(0,o.jsxs)(J,{value:`create new secret ${k}`,onSelect:()=>{let j=k||void 0;u(!1),w(""),c(j)},children:[(0,o.jsx)(Ft,{className:"mr-2 h-3.5 w-3.5"}),h]})}),r.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ke,{className:"mt-0"}),(0,o.jsx)(Q,{heading:"Recommended",children:r.map(j=>(0,o.jsxs)(J,{value:j,onSelect:()=>N(j),children:[(0,o.jsx)(Z,{className:"mr-2 h-3 w-3 opacity-70"}),j]},j))})]}),a.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ke,{className:"mt-0"}),(0,o.jsx)(Q,{heading:r.length>0?"Other":void 0,children:a.map(j=>(0,o.jsxs)(J,{value:j,onSelect:()=>N(j),children:[(0,o.jsx)(Z,{className:"mr-2 h-3 w-3 opacity-70"}),j]},j))})]})]})]})})]}),t&&(0,o.jsx)("button",{type:"button","aria-label":"Clear",className:V("flex h-6 w-6 shrink-0 items-center justify-center rounded-sm","text-muted-foreground hover:bg-muted hover:text-foreground","focus:outline-hidden focus:ring-1 focus:ring-ring"),onClick:q,children:(0,o.jsx)(Et,{className:"h-3.5 w-3.5"})})]})};var ps=U(),Ae=(0,D.createContext)({providerNames:[],secretKeys:[],loading:!1,error:void 0,refreshSecrets:St.NOOP});const Ne=()=>(0,D.use)(Ae),hs=t=>{let e=(0,ps.c)(14),{children:s}=t,n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=[],e[0]=n):n=e[0];let{data:r,isPending:a,error:c,refetch:i}=Se(ys,n);r==null||r.secretKeys,r==null||r.providerNames;let l;e[1]===(r==null?void 0:r.secretKeys)?l=e[2]:(l=(r==null?void 0:r.secretKeys)||[],e[1]=r==null?void 0:r.secretKeys,e[2]=l);let p;e[3]===(r==null?void 0:r.providerNames)?p=e[4]:(p=(r==null?void 0:r.providerNames)||[],e[3]=r==null?void 0:r.providerNames,e[4]=p);let h;e[5]!==c||e[6]!==a||e[7]!==i||e[8]!==l||e[9]!==p?(h={secretKeys:l,providerNames:p,loading:a,error:c,refreshSecrets:i},e[5]=c,e[6]=a,e[7]=i,e[8]=l,e[9]=p,e[10]=h):h=e[10];let m=h,b;return e[11]!==s||e[12]!==m?(b=(0,o.jsx)(Ae,{value:m,children:s}),e[11]=s,e[12]=m,e[13]=b):b=e[13],b},us={isMatch:t=>{if(t instanceof le){let{optionRegex:e}=d.parse(t.description||"");return!!e}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:n,providerNames:r,refreshSecrets:a}=Ne(),{openModal:c,closeModal:i}=xe(),{label:l,description:p,placeholder:h,optionRegex:m="",inputType:b}=d.parse(t.description||""),f=b==="password",{recommended:u,other:S}=ds(n,m);return(0,o.jsx)(me,{control:e.control,name:s,render:({field:w})=>(0,o.jsxs)(fe,{children:[(0,o.jsx)(_e,{children:l}),(0,o.jsx)(ye,{children:p}),(0,o.jsx)(ge,{children:(0,o.jsx)(Ce,{value:w.value?String(w.value):"",onChange:w.onChange,placeholder:h,secretsOnly:f,recommendedKeys:u,otherKeys:S,onCreateSecret:k=>{c((0,o.jsx)(ve,{providerNames:r,initialValue:k,onSuccess:v=>{a(),w.onChange(te(v)),i()},onClose:i}))}})}),(0,o.jsx)(be,{})]})})}},ms={isMatch:t=>{if(t instanceof le){let{special:e}=d.parse(t.description||"");return e==="secret_textarea"}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:n,providerNames:r,refreshSecrets:a}=Ne(),{openModal:c,closeModal:i}=xe(),{label:l,description:p,placeholder:h}=d.parse(t.description||"");return(0,o.jsx)(me,{control:e.control,name:s,render:({field:m})=>{let b=m.value?String(m.value):"",f=$e(b)?is(b):b;return(0,o.jsxs)(fe,{children:[(0,o.jsxs)(_e,{className:"flex items-center gap-1",children:[l,(0,o.jsx)(he,{content:"Enter a path to a file on disk, or create a secret to paste JSON directly.",delayDuration:300,children:(0,o.jsx)("button",{type:"button",className:"inline-flex","aria-label":"Credential input help",children:(0,o.jsx)(_t,{className:"h-3.5 w-3.5"})})})]}),(0,o.jsx)(ye,{children:p}),(0,o.jsx)(ge,{children:(0,o.jsx)(Ce,{value:f,onChange:u=>{m.onChange(!u||E(u)||$e(u)?u:as(u))},placeholder:h,searchPlaceholder:"Type a file path or paste JSON",formatCustomValueLabel:u=>`Use "${u}" as a file path`,createSecretLabel:"Paste JSON credentials",allowCustomValue:u=>!we(u),allowCreateSecret:u=>!u||we(u),recommendedKeys:[],otherKeys:n,onCreateSecret:u=>{c((0,o.jsx)(ve,{providerNames:r,initialValue:u,multiline:!0,onSuccess:S=>{a(),m.onChange(te(S)),i()},onClose:i}))}})}),(0,o.jsx)(be,{})]})}})}};function bs(t){return t.provider!=="env"}function gs(t){return t.name}function fs(t){return t.keys}async function ys(){let t=await os.request({}),e=cs(t.secrets).filter(bs).map(gs);return{secretKeys:t.secrets.flatMap(fs).toSorted(),providerNames:e}}var W=U(),_s=[us,ms];const re=t=>{let e=(0,W.c)(2),{children:s}=t,n;return e[0]===s?n=e[1]:(n=(0,o.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:s}),e[0]=s,e[1]=n),n},ne=t=>{let e=(0,W.c)(9),{name:s,color:n,icon:r,onSelect:a}=t,c;e[0]===n?c=e[1]:(c={backgroundColor:n},e[0]=n,e[1]=c);let i;e[2]===s?i=e[3]:(i=(0,o.jsx)("span",{className:"text-white font-medium text-lg",children:s}),e[2]=s,e[3]=i);let l;return e[4]!==r||e[5]!==a||e[6]!==c||e[7]!==i?(l=(0,o.jsxs)("button",{type:"button",className:"py-3 flex flex-col items-center justify-center gap-1 transition-all hover:scale-105 hover:brightness-110 rounded shadow-sm-solid hover:shadow-md-solid",style:c,onClick:a,children:[r,i]}),e[4]=r,e[5]=a,e[6]=c,e[7]=i,e[8]=l):l=e[8],l},xs=t=>{let e=(0,W.c)(25),{onBack:s,isValid:n,libraries:r,preferredLibrary:a,onLibraryChange:c,displayNames:i,libraryLabel:l}=t,p=l===void 0?"Preferred library":l,h;e[0]===s?h=e[1]:(h=(0,o.jsx)(ue,{type:"button",variant:"outline",onClick:s,children:"Back"}),e[0]=s,e[1]=h);let m=!n,b;e[2]===m?b=e[3]:(b=(0,o.jsx)(ue,{type:"submit",disabled:m,children:"Add"}),e[2]=m,e[3]=b);let f;e[4]!==h||e[5]!==b?(f=(0,o.jsxs)("div",{className:"flex gap-2",children:[h,b]}),e[4]=h,e[5]=b,e[6]=f):f=e[6];let u;e[7]===Symbol.for("react.memo_cache_sentinel")?(u=(0,o.jsx)(Dt,{children:(0,o.jsx)(Nt,{placeholder:"Select a library"})}),e[7]=u):u=e[7];let S;e[8]===p?S=e[9]:(S=(0,o.jsxs)("div",{className:"flex flex-col gap-1 items-end",children:[u,(0,o.jsx)("span",{className:"text-xs text-muted-foreground",children:p})]}),e[8]=p,e[9]=S);let w;if(e[10]!==i||e[11]!==r){let C;e[13]===i?C=e[14]:(C=N=>(0,o.jsx)(Rt,{value:N,children:i[N]??N},N),e[13]=i,e[14]=C),w=r.map(C),e[10]=i,e[11]=r,e[12]=w}else w=e[12];let k;e[15]===w?k=e[16]:(k=(0,o.jsx)(Tt,{children:(0,o.jsx)(Lt,{children:w})}),e[15]=w,e[16]=k);let v;e[17]!==c||e[18]!==a||e[19]!==S||e[20]!==k?(v=(0,o.jsx)("div",{children:(0,o.jsxs)(It,{value:a,onValueChange:c,children:[S,k]})}),e[17]=c,e[18]=a,e[19]=S,e[20]=k,e[21]=v):v=e[21];let A;return e[22]!==v||e[23]!==f?(A=(0,o.jsxs)("div",{className:"flex gap-2 justify-between",children:[f,v]}),e[22]=v,e[23]=f,e[24]=A):A=e[24],A};function Re(){let t=(0,W.c)(4),{createNewCell:e}=ft(),s=Zt(),n=bt(kt),r;return t[0]!==n||t[1]!==e||t[2]!==s?(r=a=>{/\bmo\./.test(a)&&Xt({autoInstantiate:n,createNewCell:e,fromCellId:s}),e({code:a,before:!1,cellId:s??"__end__",skipIfCodeExists:!0})},t[0]=n,t[1]=e,t[2]=s,t[3]=r):r=t[3],r}const Te=t=>{let e=(0,W.c)(30),{schema:s,libraries:n,preferredLibrary:r,displayNames:a,libraryLabel:c,generateCode:i,onSubmit:l,onBack:p}=t,h;e[0]===s?h=e[1]:(h=rs(s),e[0]=s,e[1]=h);let m=h,b;e[2]===s?b=e[3]:(b=Mt(s),e[2]=s,e[3]=b);let f;e[4]!==m||e[5]!==b?(f={defaultValues:m,resolver:b,reValidateMode:"onChange"},e[4]=m,e[5]=b,e[6]=f):f=e[6];let u=Ht(f),[S,w]=D.useState(r),k=Re(),v;e[7]!==i||e[8]!==k||e[9]!==l||e[10]!==S?(v=ht=>{k(i(ht,S)),l()},e[7]=i,e[8]=k,e[9]=l,e[10]=S,e[11]=v):v=e[11];let A=v,C;e[12]!==u||e[13]!==A?(C=u.handleSubmit(A),e[12]=u,e[13]=A,e[14]=C):C=e[14];let N;e[15]===Symbol.for("react.memo_cache_sentinel")?(N=(0,o.jsx)(Kt,{}),e[15]=N):N=e[15];let P;e[16]!==u||e[17]!==s?(P=(0,o.jsx)(hs,{children:(0,o.jsx)(ns,{schema:s,form:u,renderers:_s,children:N})}),e[16]=u,e[17]=s,e[18]=P):P=e[18];let q;e[19]!==a||e[20]!==u.formState.isValid||e[21]!==n||e[22]!==c||e[23]!==p||e[24]!==S?(q=(0,o.jsx)(xs,{onBack:p,isValid:u.formState.isValid,libraries:n,preferredLibrary:S,onLibraryChange:w,displayNames:a,libraryLabel:c}),e[19]=a,e[20]=u.formState.isValid,e[21]=n,e[22]=c,e[23]=p,e[24]=S,e[25]=q):q=e[25];let j;return e[26]!==C||e[27]!==P||e[28]!==q?(j=(0,o.jsxs)("form",{onSubmit:C,className:"space-y-4",children:[P,q]}),e[26]=C,e[27]=P,e[28]=q,e[29]=j):j=e[29],j};function F(){return g().optional().describe(d.of({label:"Password",inputType:"password",optionRegex:"(password|passwd|pgpassword|db.?pass(word)?)"}))}function Y(t,e){let s=g();return s=e?s.nonempty():s.optional(),s=s.describe(d.of({label:t||"Token",inputType:"password",optionRegex:"(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))"})),s}function X(){return g().optional().describe(d.of({label:"Warehouse Name",optionRegex:"(warehouse|snowflake.?warehouse)"}))}function oe(t,e){let s=g();return s=e?s.nonempty():s.optional(),s.describe(d.of({label:t||"URI",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"}))}function I(t){return g().nonempty().describe(d.of({label:t||"Host",optionRegex:"^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)"}))}function R(){return g().describe(d.of({label:"Database",optionRegex:"(database|db.?name|pgdatabase|^DB$|^DATABASE$)"}))}function Ss(){return g().describe(d.of({label:"Schema",optionRegex:"(^SCHEMA$|db.?schema|postgres.?schema|pg.?schema|_SCHEMA$)"}))}function T(){return g().nonempty().describe(d.of({label:"Username",optionRegex:"(username|pguser|db.?user|^USER$|_USER$)"}))}function O(t){let e=xt().describe(d.of({label:"Port",inputType:"number",placeholder:t==null?void 0:t.toString()})).transform(Number).refine(s=>s>=0&&s<=65535,{message:"Port must be between 0 and 65535"});return t===void 0?e:e.default(t)}function Le(){return L().default(!1).describe(d.of({label:"Read Only"}))}const De=_({type:x("postgres"),host:I(),port:O(5432).optional(),database:R(),username:T(),password:F(),ssl:L().default(!1).describe(d.of({label:"Use SSL"}))}).describe(d.of({direction:"two-columns"})),Ie=_({type:x("mysql"),host:I(),port:O(3306),database:R(),username:T(),password:F(),ssl:L().default(!1).describe(d.of({label:"Use SSL"}))}).describe(d.of({direction:"two-columns"})),Pe=_({type:x("sqlite"),database:R().describe(d.of({label:"Database Path"}))}).describe(d.of({direction:"two-columns"})),qe=_({type:x("duckdb"),database:R().describe(d.of({label:"Database Path"})),read_only:Le()}).describe(d.of({direction:"two-columns"})),Ee=_({type:x("motherduck"),database:R().default("my_db").describe(d.of({label:"Database Name"})),token:Y()}).describe(d.of({direction:"two-columns"})),Fe=_({type:x("snowflake"),account:g().nonempty().describe(d.of({label:"Account",optionRegex:"(snowflake.?account|^SNOWFLAKE_ACCOUNT$|account.?id)"})),warehouse:g().optional().describe(d.of({label:"Warehouse",optionRegex:"(snowflake.?warehouse|warehouse)"})),database:R(),schema:g().optional().describe(d.of({label:"Schema",optionRegex:"(snowflake.?schema|^SCHEMA$|_SCHEMA$)"})),role:g().optional().describe(d.of({label:"Role"})),authType:K("type",[_({type:x("Password"),username:T(),password:F(),enable_mfa:L().default(!1).describe(d.of({label:"Enable MFA (Duo Push)"}))}),_({type:x("SSO (Browser)"),username:T()}),_({type:x("Key Pair"),username:T(),private_key_path:g().nonempty().describe(d.of({label:"Private Key Path",placeholder:"/path/to/rsa_key.p8"})),private_key_passphrase:g().optional().describe(d.of({label:"Private Key Passphrase",inputType:"password",optionRegex:"(passphrase|private.?key.?passphrase|key.?passphrase)"}))}),_({type:x("OAuth / PAT"),token:Y("Token",!0)})]).default({type:"Password",username:"username",enable_mfa:!1}).describe(d.of({special:"tabs"}))}).describe(d.of({direction:"two-columns"})),Oe=_({type:x("bigquery"),project:g().nonempty().describe(d.of({label:"Project ID",optionRegex:"(bigquery.?project|gcp.?project|google.?cloud.?project|project.?id)"})),dataset:g().nonempty().describe(d.of({label:"Dataset",optionRegex:"(bigquery.?dataset|dataset)"})),credentials_json:g().describe(d.of({label:"Credentials JSON",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),Be=_({type:x("clickhouse_connect"),host:I(),port:O(8123).optional(),username:T(),password:F(),secure:L().default(!1).describe(d.of({label:"Use HTTPs"})),proxy_path:g().optional().describe(d.of({label:"Proxy Path",placeholder:"/clickhouse"}))}).describe(d.of({direction:"two-columns"})),Ue=_({type:x("timeplus"),host:I().default("localhost"),port:O(8123).optional(),username:T().default("default"),password:F().default("")}).describe(d.of({direction:"two-columns"})),Ke=_({type:x("chdb"),database:R().describe(d.of({label:"Database Path"})),read_only:Le()}).describe(d.of({direction:"two-columns"})),He=_({type:x("trino"),host:I(),port:O(8080),database:R(),schema:Ss().optional(),username:T(),password:F(),async_support:L().default(!1).describe(d.of({label:"Async Support"}))}).describe(d.of({direction:"two-columns"})),Me=_({type:x("iceberg"),name:g().describe(d.of({label:"Catalog Name"})),catalog:K("type",[_({type:x("REST"),warehouse:X(),uri:g().optional().describe(d.of({label:"URI",placeholder:"https://",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"})),token:Y()}),_({type:x("SQL"),warehouse:X(),uri:g().optional().describe(d.of({label:"URI",placeholder:"jdbc:iceberg://host:port/database",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"}))}),_({type:x("Hive"),warehouse:X(),uri:oe()}),_({type:x("Glue"),warehouse:X(),uri:oe()}),_({type:x("DynamoDB"),"dynamodb.profile-name":g().optional().describe(d.of({label:"Profile Name"})),"dynamodb.region":g().optional().describe(d.of({label:"Region"})),"dynamodb.access-key-id":g().optional().describe(d.of({label:"Access Key ID",inputType:"password",optionRegex:"(access.?key.?id|aws.?access.?key)"})),"dynamodb.secret-access-key":g().optional().describe(d.of({label:"Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|aws.?secret)"})),"dynamodb.session-token":g().optional().describe(d.of({label:"Session Token",inputType:"password",optionRegex:"(session.?token|aws.?session)"}))})]).default({type:"REST",token:void 0}).describe(d.of({special:"tabs"}))}),We=_({type:x("datafusion"),sessionContext:L().optional().describe(d.of({label:"Use Session Context"}))}),Ge=_({type:x("pyspark"),host:I().optional(),port:O().optional()}),Ve=_({type:x("redshift"),host:I(),port:O(5439),connectionType:K("type",[_({type:x("IAM credentials"),region:g().describe(d.of({label:"Region"})),aws_access_key_id:g().nonempty().describe(d.of({label:"AWS Access Key ID",inputType:"password",optionRegex:"(access.?key.?id|aws.?access.?key)"})),aws_secret_access_key:g().nonempty().describe(d.of({label:"AWS Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|aws.?secret)"})),aws_session_token:g().optional().describe(d.of({label:"AWS Session Token",inputType:"password",optionRegex:"(session.?token|aws.?session)"}))}),_({type:x("DB credentials"),user:T(),password:F()})]).default({type:"IAM credentials",aws_access_key_id:"",aws_secret_access_key:"",region:""}),database:R()}).describe(d.of({direction:"two-columns"})),ze=_({type:x("databricks"),access_token:Y("Access Token",!0),server_hostname:I("Server Hostname"),http_path:oe("HTTP Path",!0),catalog:g().optional().describe(d.of({label:"Catalog"})),schema:g().optional().describe(d.of({label:"Schema"}))}).describe(d.of({direction:"two-columns"})),Qe=_({type:x("supabase"),host:I(),port:O(5432).optional(),database:R(),username:T(),password:F(),disable_client_pooling:L().default(!1).describe(d.of({label:"Disable Client-Side Pooling"}))}).describe(d.of({direction:"two-columns"})),ks=K("type",[De,Ie,Pe,qe,Ee,Fe,Oe,Be,Ue,Ke,He,Me,We,Ge,Ve,ze,Qe]),Je={sqlmodel:"SQLModel",sqlalchemy:"SQLAlchemy",duckdb:"DuckDB",clickhouse_connect:"ClickHouse Connect",chdb:"chDB",pyiceberg:"PyIceberg",ibis:"Ibis",motherduck:"MotherDuck",redshift:"Redshift",databricks:"Databricks"};var $=class{constructor(t,e,s){this.connection=t,this.orm=e,this.secrets=s}get imports(){let t=new Set(this.generateImports());switch(this.orm){case"sqlalchemy":t.add("import sqlalchemy");break;case"sqlmodel":t.add("import sqlmodel");break;case"duckdb":t.add("import duckdb");break;case"ibis":t.add("import ibis");break}return t}},ws=t=>`_${t}`,js=class{constructor(){G(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e,s){if(t=ws(t),E(e)){let n=je(e),r=s?`os.environ.get("${n}", "${s}")`:`os.environ.get("${n}")`;return this.secrets[t]=r,t}if(s!=null){let n=`os.environ.get("${e}", "${s}")`;return this.secrets[t]=n,t}return typeof e=="number"||typeof e=="number"?`${e}`:typeof e=="boolean"?H(e):e?`"${e}"`:""}printInFString(t,e,s){if(e===void 0)return"";if(typeof e=="number")return`${e}`;if(typeof e=="boolean")return H(e);let n=this.print(t,e,s);return n.startsWith('"')&&n.endsWith('"')?n.slice(1,-1):`{${n}}`}printPassword(t,e,s,n){let r=s?this.printInFString.bind(this):this.print.bind(this);return E(t)?r(n||"password",t):r(n||"password",e,t)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
2
+ `)}},vs=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.connection.ssl?", connect_args={'sslmode': 'require'}":"",e=this.secrets.printPassword(this.connection.password,"POSTGRES_PASSWORD",!0);return y(`
3
3
  DATABASE_URL = f"postgresql://${this.secrets.printInFString("username",this.connection.username)}:${e}@${this.secrets.printInFString("host",this.connection.host)}:${this.secrets.printInFString("port",this.connection.port)}/${this.secrets.printInFString("database",this.connection.database)}"
4
4
  engine = ${this.orm}.create_engine(DATABASE_URL${t})
5
- `)}},vs=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.connection.ssl?", connect_args={'ssl': {'ssl-mode': 'preferred'}}":"",e=this.secrets.printPassword(this.connection.password,"MYSQL_PASSWORD",!0),s=this.secrets.printInFString("database",this.connection.database);return y(`
5
+ `)}},$s=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.connection.ssl?", connect_args={'ssl': {'ssl-mode': 'preferred'}}":"",e=this.secrets.printPassword(this.connection.password,"MYSQL_PASSWORD",!0),s=this.secrets.printInFString("database",this.connection.database);return y(`
6
6
  DATABASE_URL = f"mysql+pymysql://${this.secrets.printInFString("username",this.connection.username)}:${e}@${this.secrets.printInFString("host",this.connection.host)}:${this.secrets.printInFString("port",this.connection.port)}/${s}"
7
7
  engine = ${this.orm}.create_engine(DATABASE_URL${t})
8
- `)}},$s=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.connection.database?this.secrets.printInFString("database",this.connection.database):"";return y(`
8
+ `)}},Cs=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.connection.database?this.secrets.printInFString("database",this.connection.database):"";return y(`
9
9
  ${t.startsWith("{")&&t.endsWith("}")?`DATABASE_URL = f"sqlite:///${t}"`:`DATABASE_URL = "sqlite:///${t}"`}
10
10
  engine = ${this.orm}.create_engine(DATABASE_URL)
11
- `)}},Cs=class extends ${generateImports(){return["from snowflake.sqlalchemy import URL"]}generateConnectionCode(){let{authType:t,account:e,database:s,warehouse:n,schema:r,role:a}=this.connection,c={account:this.secrets.print("account",e),database:this.secrets.print("database",s),warehouse:n?this.secrets.print("warehouse",n):void 0,schema:r?this.secrets.print("schema",r):void 0,role:a?this.secrets.print("role",a):void 0};switch(t.type){case"Password":{let i=this.secrets.printPassword(t.password,"SNOWFLAKE_PASSWORD",!1),l={...c,user:this.secrets.print("user",t.username),password:i};return t.enable_mfa?y(`
11
+ `)}},As=class extends ${generateImports(){return["from snowflake.sqlalchemy import URL"]}generateConnectionCode(){let{authType:t,account:e,database:s,warehouse:n,schema:r,role:a}=this.connection,c={account:this.secrets.print("account",e),database:this.secrets.print("database",s),warehouse:n?this.secrets.print("warehouse",n):void 0,schema:r?this.secrets.print("schema",r):void 0,role:a?this.secrets.print("role",a):void 0};switch(t.type){case"Password":{let i=this.secrets.printPassword(t.password,"SNOWFLAKE_PASSWORD",!1),l={...c,user:this.secrets.print("user",t.username),password:i};return t.enable_mfa?y(`
12
12
  engine = ${this.orm}.create_engine(
13
13
  URL(
14
14
  ${B(l,p=>` ${p}`)},
@@ -30,7 +30,7 @@ ${B(i,l=>` ${l}`)},
30
30
  `)}case"Key Pair":{let i={...c,user:this.secrets.print("user",t.username)},l=this.secrets.print("private_key_path",t.private_key_path),p=t.private_key_passphrase?this.secrets.printPassword(t.private_key_passphrase,"SNOWFLAKE_PRIVATE_KEY_PASSPHRASE",!1):void 0,h=[' "authenticator": "SNOWFLAKE_JWT"',` "private_key_file": ${l}`];return p&&h.push(` "private_key_file_pwd": ${p}`),y(`
31
31
  engine = ${this.orm}.create_engine(
32
32
  URL(
33
- ${B(i,u=>` ${u}`)},
33
+ ${B(i,m=>` ${m}`)},
34
34
  ),
35
35
  connect_args={
36
36
  ${h.join(`,
@@ -43,30 +43,30 @@ ${h.join(`,
43
43
  ${B(l,p=>` ${p}`)},
44
44
  )
45
45
  )
46
- `)}default:W(t)}}},As=class extends ${get credential(){return ee(this.connection.credentials_json,t=>this.secrets.print("credentials_json",t))}generateImports(){return this.credential.kind==="path"?[]:["import json"]}generateConnectionCode(){let t=this.secrets.printInFString("project",this.connection.project),e=this.secrets.printInFString("dataset",this.connection.dataset),s=this.credential;return s.kind==="path"?y(`
46
+ `)}default:M(t)}}},Ns=class extends ${get credential(){return ee(this.connection.credentials_json,t=>this.secrets.print("credentials_json",t))}generateImports(){return this.credential.kind==="path"?[]:["import json"]}generateConnectionCode(){let t=this.secrets.printInFString("project",this.connection.project),e=this.secrets.printInFString("dataset",this.connection.dataset),s=this.credential;return s.kind==="path"?y(`
47
47
  engine = ${this.orm}.create_engine(f"bigquery://${t}/${e}", credentials_path="${se(s.path)}")
48
48
  `):y(`
49
49
  credentials = ${s.expr}
50
50
  engine = ${this.orm}.create_engine(f"bigquery://${t}/${e}", credentials_info=credentials)
51
- `)}},Ns=class extends ${generateImports(){return[]}generateConnectionCode(){return y(`
51
+ `)}},Rs=class extends ${generateImports(){return[]}generateConnectionCode(){return y(`
52
52
  DATABASE_URL = "${this.secrets.printInFString("database",this.connection.database||":memory:")}"
53
- engine = ${this.orm}.connect(DATABASE_URL, read_only=${M(this.connection.read_only)})
54
- `)}},Rs=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.secrets.printInFString("database",this.connection.database);return this.connection.token?y(`
53
+ engine = ${this.orm}.connect(DATABASE_URL, read_only=${H(this.connection.read_only)})
54
+ `)}},Ts=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.secrets.printInFString("database",this.connection.database);return this.connection.token?y(`
55
55
  conn = duckdb.connect("md:${t}", config={"motherduck_token": ${this.secrets.printPassword(this.connection.token,"MOTHERDUCK_TOKEN",!1)}})
56
56
  `):y(`
57
57
  conn = duckdb.connect("md:${t}")
58
- `)}},Ts=class extends ${generateImports(){return["import clickhouse_connect"]}generateConnectionCode(){let t=this.secrets.printPassword(this.connection.password,"CLICKHOUSE_PASSWORD",!1),e={host:this.secrets.print("host",this.connection.host),user:this.secrets.print("user",this.connection.username),secure:this.secrets.print("secure",this.connection.secure),port:this.connection.port?this.secrets.print("port",this.connection.port):void 0,password:this.connection.password?t:void 0,proxy_path:this.connection.proxy_path?this.secrets.print("proxy_path",this.connection.proxy_path):void 0};return y(`
58
+ `)}},Ls=class extends ${generateImports(){return["import clickhouse_connect"]}generateConnectionCode(){let t=this.secrets.printPassword(this.connection.password,"CLICKHOUSE_PASSWORD",!1),e={host:this.secrets.print("host",this.connection.host),user:this.secrets.print("user",this.connection.username),secure:this.secrets.print("secure",this.connection.secure),port:this.connection.port?this.secrets.print("port",this.connection.port):void 0,password:this.connection.password?t:void 0,proxy_path:this.connection.proxy_path?this.secrets.print("proxy_path",this.connection.proxy_path):void 0};return y(`
59
59
  engine = ${this.orm}.get_client(
60
60
  ${B(e,s=>` ${s}`)},
61
61
  )
62
- `)}},Ls=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.secrets.printPassword(this.connection.password,"TIMEPLUS_PASSWORD",!0);return y(`
62
+ `)}},Ds=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.secrets.printPassword(this.connection.password,"TIMEPLUS_PASSWORD",!0);return y(`
63
63
  DATABASE_URL = f"timeplus://${this.secrets.printInFString("username",this.connection.username)}:${t}@${this.secrets.printInFString("host",this.connection.host)}:${this.secrets.printInFString("port",this.connection.port)}"
64
64
  engine = ${this.orm}.create_engine(DATABASE_URL)
65
- `)}},Ds=class extends ${generateImports(){return["import chdb"]}generateConnectionCode(){let t=this.secrets.print("database",this.connection.database)||'""';return y(`
66
- engine = ${this.orm}.connect(${t}, read_only=${M(this.connection.read_only)})
67
- `)}},Is=class extends ${generateImports(){return this.connection.async_support?["import aiotrino"]:["import trino.sqlalchemy"]}generateConnectionCode(){let t=this.connection.async_support?"aiotrino":"trino",e=this.connection.schema?`/${this.connection.schema}`:"",s=this.secrets.printInFString("username",this.connection.username),n=this.secrets.printInFString("host",this.connection.host),r=this.secrets.printInFString("port",this.connection.port),a=this.secrets.printInFString("database",this.connection.database),c=this.secrets.printPassword(this.connection.password,"TRINO_PASSWORD",!0);return y(`
65
+ `)}},Is=class extends ${generateImports(){return["import chdb"]}generateConnectionCode(){let t=this.secrets.print("database",this.connection.database)||'""';return y(`
66
+ engine = ${this.orm}.connect(${t}, read_only=${H(this.connection.read_only)})
67
+ `)}},Ps=class extends ${generateImports(){return this.connection.async_support?["import aiotrino"]:["import trino.sqlalchemy"]}generateConnectionCode(){let t=this.connection.async_support?"aiotrino":"trino",e=this.connection.schema?`/${this.connection.schema}`:"",s=this.secrets.printInFString("username",this.connection.username),n=this.secrets.printInFString("host",this.connection.host),r=this.secrets.printInFString("port",this.connection.port),a=this.secrets.printInFString("database",this.connection.database),c=this.secrets.printPassword(this.connection.password,"TRINO_PASSWORD",!0);return y(`
68
68
  engine = ${this.orm}.create_engine(f"${t}://${s}:${c}@${n}:${r}/${a}${e}")
69
- `)}},Ps=class extends ${getCatalogOptions(){return Object.fromEntries(Object.entries(this.connection.catalog).filter(([t,e])=>e!=null&&e!==""&&t!=="type"))}generateImports(){if(Object.keys(this.getCatalogOptions()).length===0)return["from pyiceberg.catalog import load_catalog"];switch(this.connection.catalog.type){case"REST":return["from pyiceberg.catalog.rest import RestCatalog"];case"SQL":return["from pyiceberg.catalog.sql import SqlCatalog"];case"Hive":return["from pyiceberg.catalog.hive import HiveCatalog"];case"Glue":return["from pyiceberg.catalog.glue import GlueCatalog"];case"DynamoDB":return["from pyiceberg.catalog.dynamodb import DynamoDBCatalog"];default:W(this.connection.catalog)}}generateConnectionCode(){let t=`"${this.connection.name}"`,e=this.getCatalogOptions();if(Object.keys(e).length===0)return`catalog = load_catalog(${t})`;for(let[n,r]of Object.entries(e))E(r)?e[n]=this.secrets.print(n,r):typeof r=="string"&&(e[n]=`"${r}"`);let s=Ms(e,n=>` ${n}`);switch(this.connection.catalog.type){case"REST":return y(`
69
+ `)}},qs=class extends ${getCatalogOptions(){return Object.fromEntries(Object.entries(this.connection.catalog).filter(([t,e])=>e!=null&&e!==""&&t!=="type"))}generateImports(){if(Object.keys(this.getCatalogOptions()).length===0)return["from pyiceberg.catalog import load_catalog"];switch(this.connection.catalog.type){case"REST":return["from pyiceberg.catalog.rest import RestCatalog"];case"SQL":return["from pyiceberg.catalog.sql import SqlCatalog"];case"Hive":return["from pyiceberg.catalog.hive import HiveCatalog"];case"Glue":return["from pyiceberg.catalog.glue import GlueCatalog"];case"DynamoDB":return["from pyiceberg.catalog.dynamodb import DynamoDBCatalog"];default:M(this.connection.catalog)}}generateConnectionCode(){let t=`"${this.connection.name}"`,e=this.getCatalogOptions();if(Object.keys(e).length===0)return`catalog = load_catalog(${t})`;for(let[n,r]of Object.entries(e))E(r)?e[n]=this.secrets.print(n,r):typeof r=="string"&&(e[n]=`"${r}"`);let s=Ms(e,n=>` ${n}`);switch(this.connection.catalog.type){case"REST":return y(`
70
70
  catalog = RestCatalog(
71
71
  ${t},
72
72
  **{
@@ -101,7 +101,7 @@ ${s}
101
101
  ${s}
102
102
  },
103
103
  )
104
- `);default:W(this.connection.catalog)}}},qs=class extends ${generateImports(){return["from datafusion import SessionContext"]}generateConnectionCode(){return this.connection.sessionContext?y(`
104
+ `);default:M(this.connection.catalog)}}},Es=class extends ${generateImports(){return["from datafusion import SessionContext"]}generateConnectionCode(){return this.connection.sessionContext?y(`
105
105
  ctx = SessionContext()
106
106
  # Sample table
107
107
  _ = ctx.from_pydict({"a": [1, 2, 3]}, "my_table")
@@ -109,12 +109,12 @@ ${s}
109
109
  con = ibis.datafusion.connect(ctx)
110
110
  `):y(`
111
111
  con = ibis.datafusion.connect()
112
- `)}},Es=class extends ${generateImports(){return["from pyspark.sql import SparkSession"]}generateConnectionCode(){return this.connection.host||this.connection.port?y(`
112
+ `)}},Fs=class extends ${generateImports(){return["from pyspark.sql import SparkSession"]}generateConnectionCode(){return this.connection.host||this.connection.port?y(`
113
113
  session = SparkSession.builder.remote(f"sc://${this.secrets.printInFString("host",this.connection.host)}:${this.secrets.printInFString("port",this.connection.port)}").getOrCreate()
114
114
  con = ibis.pyspark.connect(session)
115
115
  `):y(`
116
116
  con = ibis.pyspark.connect()
117
- `)}},Fs=class extends ${generateImports(){return["import redshift_connector"]}generateConnectionCode(){let t=this.secrets.print("host",this.connection.host),e=this.secrets.print("port",this.connection.port),s=this.secrets.print("database",this.connection.database);if(this.connection.connectionType.type==="IAM credentials"){let a=this.secrets.print("aws_access_key_id",this.connection.connectionType.aws_access_key_id),c=this.secrets.print("aws_secret_access_key",this.connection.connectionType.aws_secret_access_key),i=this.connection.connectionType.aws_session_token?this.secrets.print("aws_session_token",this.connection.connectionType.aws_session_token):void 0;return y(`
117
+ `)}},Os=class extends ${generateImports(){return["import redshift_connector"]}generateConnectionCode(){let t=this.secrets.print("host",this.connection.host),e=this.secrets.print("port",this.connection.port),s=this.secrets.print("database",this.connection.database);if(this.connection.connectionType.type==="IAM credentials"){let a=this.secrets.print("aws_access_key_id",this.connection.connectionType.aws_access_key_id),c=this.secrets.print("aws_secret_access_key",this.connection.connectionType.aws_secret_access_key),i=this.connection.connectionType.aws_session_token?this.secrets.print("aws_session_token",this.connection.connectionType.aws_session_token):void 0;return y(`
118
118
  con = redshift_connector.connect(
119
119
  ${B({iam:!0,host:t,port:e,region:`"${this.connection.connectionType.region}"`,database:s,access_key_id:a,secret_access_key:c,...i&&{session_token:i}},l=>` ${l}`)},
120
120
  )
@@ -122,7 +122,7 @@ ${B({iam:!0,host:t,port:e,region:`"${this.connection.connectionType.region}"`,da
122
122
  con = redshift_connector.connect(
123
123
  ${B({host:t,port:e,database:s,...n&&{user:n},...r&&{password:r}},a=>` ${a}`)},
124
124
  )
125
- `)}},Os=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.orm!=="ibis",e=this.secrets.printPassword(this.connection.access_token,"DATABRICKS_ACCESS_TOKEN",t,"access_token"),s=this.secrets.printPassword(this.connection.server_hostname,"DATABRICKS_SERVER_HOSTNAME",t,"server_hostname"),n=this.secrets.printPassword(this.connection.http_path,"DATABRICKS_HTTP_PATH",t,"http_path"),r=this.connection.catalog?this.secrets.printInFString("catalog",this.connection.catalog):void 0,a=this.connection.schema?this.secrets.printInFString("schema",this.connection.schema):void 0,c=`databricks://token:${e}@${s}?http_path=${n}`;return r&&(c+=`&catalog=${r}`),a&&(c+=`&schema=${a}`),this.orm==="ibis"?y(`
125
+ `)}},Bs=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.orm!=="ibis",e=this.secrets.printPassword(this.connection.access_token,"DATABRICKS_ACCESS_TOKEN",t,"access_token"),s=this.secrets.printPassword(this.connection.server_hostname,"DATABRICKS_SERVER_HOSTNAME",t,"server_hostname"),n=this.secrets.printPassword(this.connection.http_path,"DATABRICKS_HTTP_PATH",t,"http_path"),r=this.connection.catalog?this.secrets.printInFString("catalog",this.connection.catalog):void 0,a=this.connection.schema?this.secrets.printInFString("schema",this.connection.schema):void 0,c=`databricks://token:${e}@${s}?http_path=${n}`;return r&&(c+=`&catalog=${r}`),a&&(c+=`&schema=${a}`),this.orm==="ibis"?y(`
126
126
  engine = ibis.databricks.connect(
127
127
  server_hostname=${s},
128
128
  http_path=${n},${r?`
@@ -133,19 +133,19 @@ ${B({host:t,port:e,database:s,...n&&{user:n},...r&&{password:r}},a=>` $
133
133
  `):y(`
134
134
  DATABASE_URL = f"${c}"
135
135
  engine = ${this.orm}.create_engine(DATABASE_URL)
136
- `)}},Bs=class extends ${generateImports(){return this.connection.disable_client_pooling?["from sqlalchemy.pool import NullPool"]:[]}generateConnectionCode(){let t=this.secrets.printPassword(this.connection.password,"SUPABASE_PASSWORD",!0),e=this.secrets.printInFString("username",this.connection.username),s=this.secrets.printInFString("host",this.connection.host),n=this.secrets.printInFString("port",this.connection.port),r=this.secrets.printInFString("database",this.connection.database),a=this.connection.disable_client_pooling?", poolclass=NullPool":"";return y(`
136
+ `)}},Us=class extends ${generateImports(){return this.connection.disable_client_pooling?["from sqlalchemy.pool import NullPool"]:[]}generateConnectionCode(){let t=this.secrets.printPassword(this.connection.password,"SUPABASE_PASSWORD",!0),e=this.secrets.printInFString("username",this.connection.username),s=this.secrets.printInFString("host",this.connection.host),n=this.secrets.printInFString("port",this.connection.port),r=this.secrets.printInFString("database",this.connection.database),a=this.connection.disable_client_pooling?", poolclass=NullPool":"";return y(`
137
137
  DATABASE_URL = f"postgresql+psycopg2://${e}:${t}@${s}:${n}/${r}?sslmode=require"
138
138
  engine = ${this.orm}.create_engine(DATABASE_URL${a})
139
- `)}},Us=class{constructor(){G(this,"secrets",new ws)}createGenerator(t,e){switch(t.type){case"postgres":return new js(t,e,this.secrets);case"mysql":return new vs(t,e,this.secrets);case"sqlite":return new $s(t,e,this.secrets);case"snowflake":return new Cs(t,e,this.secrets);case"bigquery":return new As(t,e,this.secrets);case"duckdb":return new Ns(t,e,this.secrets);case"motherduck":return new Rs(t,e,this.secrets);case"clickhouse_connect":return new Ts(t,e,this.secrets);case"timeplus":return new Ls(t,e,this.secrets);case"chdb":return new Ds(t,e,this.secrets);case"trino":return new Is(t,e,this.secrets);case"iceberg":return new Ps(t,e,this.secrets);case"datafusion":return new qs(t,e,this.secrets);case"pyspark":return new Es(t,e,this.secrets);case"redshift":return new Fs(t,e,this.secrets);case"databricks":return new Os(t,e,this.secrets);case"supabase":return new Bs(t,e,this.secrets);default:W(t)}}};function Ks(t,e){if(!(e in Je))throw Error(`Unsupported library: ${e}`);Ss.parse(t);let s=new Us,n=s.createGenerator(t,e),r=n.generateConnectionCode(),a=s.secrets,c=[...new Set([...a.imports,...n.imports])].toSorted();c.push("");let i=a.formatSecrets();return i&&c.push(i),c.push(r.trim()),c.join(`
140
- `)}function M(t){return t.toString().charAt(0).toUpperCase()+t.toString().slice(1)}function B(t,e){return Object.entries(t).filter(([,s])=>s!=null&&s!=="").map(([s,n])=>e(typeof n=="boolean"?`${s}=${M(n)}`:`${s}=${n}`)).join(`,
141
- `)}function Ms(t,e){return Object.entries(t).filter(([,s])=>s!=null&&s!=="").map(([s,n])=>{let r=`"${s}"`;return e(typeof n=="boolean"?`${r}: ${M(n)}`:`${r}: ${n}`)}).join(`,
142
- `)}var Ye=U(),Xe=[{name:"PostgreSQL",schema:De,color:"#336791",logo:"postgres",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"MySQL",schema:Ie,color:"#00758F",logo:"mysql",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"SQLite",schema:Pe,color:"#003B57",logo:"sqlite",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DuckDB",schema:qe,color:"#FFD700",logo:"duckdb",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"MotherDuck",schema:Ee,color:"#ff9538",logo:"motherduck",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"Snowflake",schema:Fe,color:"#29B5E8",logo:"snowflake",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse",schema:Be,color:"#2C2C1D",logo:"clickhouse",connectionLibraries:{libraries:["clickhouse_connect"],preferred:"clickhouse_connect"}},{name:"Timeplus",schema:Ue,color:"#B83280",logo:"timeplus",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"BigQuery",schema:Oe,color:"#4285F4",logo:"bigquery",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse Embedded",schema:Ke,color:"#f2b611",logo:"clickhouse",connectionLibraries:{libraries:["chdb"],preferred:"chdb"}},{name:"Trino",schema:Me,color:"#d466b6",logo:"trino",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DataFusion",schema:He,color:"#202A37",logo:"datafusion",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"PySpark",schema:Ge,color:"#1C5162",logo:"pyspark",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"Redshift",schema:Ve,color:"#522BAE",logo:"redshift",connectionLibraries:{libraries:["redshift"],preferred:"redshift"}},{name:"Databricks",schema:ze,color:"#c41e0c",logo:"databricks",connectionLibraries:{libraries:["sqlalchemy","sqlmodel","ibis"],preferred:"sqlalchemy"}},{name:"Supabase",schema:Qe,color:"#238F5F",logo:"supabase",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}}],Ze=[{name:"Iceberg",schema:We,color:"#000000",logo:"iceberg",connectionLibraries:{libraries:["pyiceberg"],preferred:"pyiceberg"}}],Ws=[...Xe,...Ze],Hs=t=>{let e=(0,Ye.c)(12),{onSelect:s}=t,n;e[0]===s?n=e[1]:(n=Xe.map(p=>{let{name:h,schema:u,color:b,logo:g}=p;return(0,o.jsx)(ne,{name:h,color:b,icon:(0,o.jsx)(ce,{name:g,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),onSelect:()=>s(u)},h)}),e[0]=s,e[1]=n);let r;e[2]===n?r=e[3]:(r=(0,o.jsx)(re,{children:n}),e[2]=n,e[3]=r);let a;e[4]===Symbol.for("react.memo_cache_sentinel")?(a=(0,o.jsxs)("h4",{className:"font-semibold text-muted-foreground text-lg flex items-center gap-4 my-2",children:["Data Catalogs",(0,o.jsx)("hr",{className:"flex-1"})]}),e[4]=a):a=e[4];let c;e[5]===s?c=e[6]:(c=Ze.map(p=>{let{name:h,schema:u,color:b,logo:g}=p;return(0,o.jsx)(ne,{name:h,color:b,icon:(0,o.jsx)(ce,{name:g,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),onSelect:()=>s(u)},h)}),e[5]=s,e[6]=c);let i;e[7]===c?i=e[8]:(i=(0,o.jsx)(re,{children:c}),e[7]=c,e[8]=i);let l;return e[9]!==r||e[10]!==i?(l=(0,o.jsxs)(o.Fragment,{children:[r,a,i]}),e[9]=r,e[10]=i,e[11]=l):l=e[11],l};const Gs=t=>{let e=(0,Ye.c)(13),{onSubmit:s,header:n}=t,[r,a]=(0,D.useState)(null);if(!r){let b;e[0]===Symbol.for("react.memo_cache_sentinel")?(b=(0,o.jsx)("div",{children:(0,o.jsx)(Hs,{onSelect:a})}),e[0]=b):b=e[0];let g;return e[1]===n?g=e[2]:(g=(0,o.jsxs)(o.Fragment,{children:[n,b]}),e[1]=n,e[2]=g),g}let c;e[3]===r?c=e[4]:(c=Ws.find(b=>b.schema===r),e[3]=r,e[4]=c);let i=c==null?void 0:c.connectionLibraries,l;e[5]===(i==null?void 0:i.libraries)?l=e[6]:(l=(i==null?void 0:i.libraries)??[],e[5]=i==null?void 0:i.libraries,e[6]=l);let p=(i==null?void 0:i.preferred)??"sqlalchemy",h;e[7]===Symbol.for("react.memo_cache_sentinel")?(h=()=>a(null),e[7]=h):h=e[7];let u;return e[8]!==s||e[9]!==r||e[10]!==l||e[11]!==p?(u=(0,o.jsx)(Te,{schema:r,libraries:l,preferredLibrary:p,displayNames:Je,libraryLabel:"Preferred connection library",generateCode:Vs,onSubmit:s,onBack:h}),e[8]=s,e[9]=r,e[10]=l,e[11]=p,e[12]=u):u=e[12],u};function Vs(t,e){return Ks(t,e)}var zs=U();async function Qs(){return(await gt.request({})).sources}function Js(){let t=(0,zs.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],t[0]=e):e=t[0],Se(Qs,e)}var ae=U();const Ys=t=>{let e=(0,ae.c)(13),{className:s,sources:n,onAdd:r}=t;if(n.length===0)return null;let a;e[0]===s?a=e[1]:(a=V("rounded-full bg-[linear-gradient(135deg,var(--blue-2),var(--purple-3))] px-3 py-2",s),e[0]=s,e[1]=a);let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=(0,o.jsxs)("div",{className:"mr-1 flex items-center gap-1.5",children:[(0,o.jsx)(Bt,{className:"h-3.5 w-3.5 text-(--blue-9)"}),(0,o.jsx)("h3",{id:"quick-add-data-sources-title",className:"text-sm",children:"Quick add"})]}),e[2]=c):c=e[2];let i;if(e[3]!==r||e[4]!==n){let h;e[6]===r?h=e[7]:(h=u=>(0,o.jsx)(he,{side:"bottom",content:(0,o.jsx)(Xs,{source:u}),children:(0,o.jsxs)("button",{type:"button","aria-label":`Add ${u.displayName} connection`,className:"inline-flex items-center gap-1 rounded-full border border-border/60 bg-background px-2.5 py-1 text-xs font-medium text-foreground/90 transition-colors hover:border-(--blue-7) focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",onClick:()=>r(u),children:[(0,o.jsx)(Ot,{className:"h-3 w-3 text-muted-foreground"}),u.displayName]})},u.id),e[6]=r,e[7]=h),i=n.map(h),e[3]=r,e[4]=n,e[5]=i}else i=e[5];let l;e[8]===i?l=e[9]:(l=(0,o.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[c,(0,o.jsx)(It,{delayDuration:200,children:i})]}),e[8]=i,e[9]=l);let p;return e[10]!==a||e[11]!==l?(p=(0,o.jsx)("section",{"aria-labelledby":"quick-add-data-sources-title",className:a,children:l}),e[10]=a,e[11]=l,e[12]=p):p=e[12],p};var Xs=t=>{let e=(0,ae.c)(17),{source:s}=t,n;e[0]===s.displayName?n=e[1]:(n=(0,o.jsx)("div",{className:"font-medium",children:s.displayName}),e[0]=s.displayName,e[1]=n);let r;e[2]===s.origins?r=e[3]:(r=s.origins.map(er).join(" and "),e[2]=s.origins,e[3]=r);let a;e[4]===r?a=e[5]:(a=(0,o.jsxs)("div",{className:"text-xs text-muted-foreground",children:["Detected from"," ",r]}),e[4]=r,e[5]=a);let c;e[6]!==n||e[7]!==a?(c=(0,o.jsxs)("div",{children:[n,a]}),e[6]=n,e[7]=a,e[8]=c):c=e[8];let i;e[9]===s.configuration?i=e[10]:(i=s.configuration.map(tr),e[9]=s.configuration,e[10]=i);let l;e[11]===i?l=e[12]:(l=(0,o.jsx)("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs",children:i}),e[11]=i,e[12]=l);let p;e[13]===Symbol.for("react.memo_cache_sentinel")?(p=(0,o.jsx)("div",{className:"text-xs text-muted-foreground",children:"Click to add a configured cell."}),e[13]=p):p=e[13];let h;return e[14]!==c||e[15]!==l?(h=(0,o.jsxs)("div",{className:"min-w-64 space-y-2 py-1",children:[c,l,p]}),e[14]=c,e[15]=l,e[16]=h):h=e[16],h};const Zs=t=>{let e=(0,ae.c)(9),{onSubmit:s,className:n}=t,r=Re(),{data:a}=Js(),c;e[0]===a?c=e[1]:(c=a??[],e[0]=a,e[1]=c);let i;e[2]!==r||e[3]!==s?(i=p=>{r(p.code),s()},e[2]=r,e[3]=s,e[4]=i):i=e[4];let l;return e[5]!==n||e[6]!==c||e[7]!==i?(l=(0,o.jsx)(Ys,{className:n,sources:c,onAdd:i}),e[5]=n,e[6]=c,e[7]=i,e[8]=l):l=e[8],l};function er(t){return t.label}function tr(t){return(0,o.jsxs)("div",{className:"contents",children:[(0,o.jsx)("dt",{className:"text-muted-foreground",children:t.field}),(0,o.jsx)("dd",{children:(0,o.jsx)("code",{children:t.value.kind==="environment-variable"?`os.environ["${t.value.name}"]`:t.value.value})})]},t.value.kind==="environment-variable"?t.value.name:`${t.field}:${t.value.value}`)}var et=()=>K("type",[_({type:x("Access keys"),access_key_id:f().optional().describe(d.of({label:"Access Key ID",description:"Leave empty to use the default credential chain",inputType:"password",optionRegex:"(access.?key.?id|object.?storage.?key|aws.?access.?key)"})),secret_access_key:f().optional().describe(d.of({label:"Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|object.?storage.?secret|aws.?secret)"}))}),_({type:x("Container credentials"),container_credentials_full_uri:f().nonempty().describe(d.of({label:"Credentials URI",description:"Endpoint that vends credentials to the container",placeholder:"http://169.254.170.23/v1/credentials",optionRegex:"container.?credentials"})),container_authorization_token_file:f().nonempty().describe(d.of({label:"Authorization Token File",description:"File holding the token sent to the credentials URI",placeholder:"/var/run/secrets/token",optionRegex:"(container.?authorization.?token.?file|container.?auth.?token)"}))})]).default({type:"Access keys"}).describe(d.of({label:"Credentials",special:"tabs"}));const tt=_({type:x("s3"),bucket:f().nonempty().describe(d.of({label:"Bucket",placeholder:"my-bucket",optionRegex:"(bucket|s3.?bucket)"})),region:f().optional().describe(d.of({label:"Region",placeholder:"us-east-1",optionRegex:"(region|aws.?region)"})),endpoint_url:f().optional().describe(d.of({label:"Endpoint URL",description:"Ignored if the AWS_ENDPOINT_URL_S3 environment variable is set",placeholder:"https://s3.amazonaws.com",optionRegex:"(endpoint|s3.?url|s3.?endpoint)"})),allow_http:L().default(!1).describe(d.of({label:"Allow HTTP",description:"Required for plain-http (non-TLS) endpoints"})),auth:et()}).describe(d.of({direction:"two-columns"})),st=_({type:x("gcs"),bucket:f().nonempty().describe(d.of({label:"Bucket",placeholder:"my-bucket",optionRegex:"(bucket|gcs.?bucket|google.?bucket)"})),service_account_key:f().optional().describe(d.of({label:"Service Account Key (JSON)",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),rt=_({type:x("azure"),container:f().nonempty().describe(d.of({label:"Container",placeholder:"my-container"})),account_name:f().nonempty().describe(d.of({label:"Account Name",placeholder:"storageaccount",optionRegex:"(azure.?account|account.?name|storage.?account)"})),account_key:f().optional().describe(d.of({label:"Account Key",inputType:"password",optionRegex:"(azure.?key|account.?key|storage.?key)"}))}).describe(d.of({direction:"two-columns"})),nt=_({type:x("coreweave"),bucket:f().nonempty().describe(d.of({label:"Bucket",placeholder:"bucket-name"})),region:f().nonempty().describe(d.of({label:"Region",placeholder:"US-EAST-04A"})),auth:et()}).describe(d.of({direction:"two-columns"})),ot=_({type:x("gdrive"),credentials_json:f().optional().describe(d.of({label:"Service Account JSON",description:"Leave empty to use browser-based authentication",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),sr=K("type",[tt,st,rt,nt,ot]),rr={obstore:"obstore",fsspec:"fsspec"};var nr=class{constructor(){G(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e){if(e===void 0||e==="")return"";let s=`_${t}`;if(E(e)){let n=je(e);return this.secrets[s]=`os.environ.get("${n}")`,s}return`"${e}"`}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
143
- `)}};function at(t,e){if((t==null?void 0:t.type)==="Container credentials")return[` container_credentials_full_uri=${e.print("container_credentials_full_uri",t.container_credentials_full_uri)},`,` container_authorization_token_file=${e.print("container_authorization_token_file",t.container_authorization_token_file)},`];let s=[];return t!=null&&t.access_key_id&&s.push(` access_key_id=${e.print("access_key_id",t.access_key_id)},`),t!=null&&t.secret_access_key&&s.push(` secret_access_key=${e.print("secret_access_key",t.secret_access_key)},`),s}function or(t,e){let s=e.print("bucket",t.bucket),n=new Set(["from obstore.store import S3Store"]),r=[];return t.region&&r.push(` region=${e.print("region",t.region)},`),r.push(...at(t.auth,e)),t.endpoint_url&&r.push(` endpoint_url=${e.print("endpoint_url",t.endpoint_url)},`),t.allow_http&&r.push(" allow_http=True,"),{imports:n,code:y(`
139
+ `)}},Ks=class{constructor(){G(this,"secrets",new js)}createGenerator(t,e){switch(t.type){case"postgres":return new vs(t,e,this.secrets);case"mysql":return new $s(t,e,this.secrets);case"sqlite":return new Cs(t,e,this.secrets);case"snowflake":return new As(t,e,this.secrets);case"bigquery":return new Ns(t,e,this.secrets);case"duckdb":return new Rs(t,e,this.secrets);case"motherduck":return new Ts(t,e,this.secrets);case"clickhouse_connect":return new Ls(t,e,this.secrets);case"timeplus":return new Ds(t,e,this.secrets);case"chdb":return new Is(t,e,this.secrets);case"trino":return new Ps(t,e,this.secrets);case"iceberg":return new qs(t,e,this.secrets);case"datafusion":return new Es(t,e,this.secrets);case"pyspark":return new Fs(t,e,this.secrets);case"redshift":return new Os(t,e,this.secrets);case"databricks":return new Bs(t,e,this.secrets);case"supabase":return new Us(t,e,this.secrets);default:M(t)}}};function Hs(t,e){if(!(e in Je))throw Error(`Unsupported library: ${e}`);ks.parse(t);let s=new Ks,n=s.createGenerator(t,e),r=n.generateConnectionCode(),a=s.secrets,c=[...new Set([...a.imports,...n.imports])].toSorted();c.push("");let i=a.formatSecrets();return i&&c.push(i),c.push(r.trim()),c.join(`
140
+ `)}function H(t){return t.toString().charAt(0).toUpperCase()+t.toString().slice(1)}function B(t,e){return Object.entries(t).filter(([,s])=>s!=null&&s!=="").map(([s,n])=>e(typeof n=="boolean"?`${s}=${H(n)}`:`${s}=${n}`)).join(`,
141
+ `)}function Ms(t,e){return Object.entries(t).filter(([,s])=>s!=null&&s!=="").map(([s,n])=>{let r=`"${s}"`;return e(typeof n=="boolean"?`${r}: ${H(n)}`:`${r}: ${n}`)}).join(`,
142
+ `)}var Ye=U(),Xe=[{name:"PostgreSQL",schema:De,color:"#336791",logo:"postgres",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"MySQL",schema:Ie,color:"#00758F",logo:"mysql",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"SQLite",schema:Pe,color:"#003B57",logo:"sqlite",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DuckDB",schema:qe,color:"#FFD700",logo:"duckdb",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"MotherDuck",schema:Ee,color:"#ff9538",logo:"motherduck",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"Snowflake",schema:Fe,color:"#29B5E8",logo:"snowflake",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse",schema:Be,color:"#2C2C1D",logo:"clickhouse",connectionLibraries:{libraries:["clickhouse_connect"],preferred:"clickhouse_connect"}},{name:"Timeplus",schema:Ue,color:"#B83280",logo:"timeplus",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"BigQuery",schema:Oe,color:"#4285F4",logo:"bigquery",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse Embedded",schema:Ke,color:"#f2b611",logo:"clickhouse",connectionLibraries:{libraries:["chdb"],preferred:"chdb"}},{name:"Trino",schema:He,color:"#d466b6",logo:"trino",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DataFusion",schema:We,color:"#202A37",logo:"datafusion",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"PySpark",schema:Ge,color:"#1C5162",logo:"pyspark",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"Redshift",schema:Ve,color:"#522BAE",logo:"redshift",connectionLibraries:{libraries:["redshift"],preferred:"redshift"}},{name:"Databricks",schema:ze,color:"#c41e0c",logo:"databricks",connectionLibraries:{libraries:["sqlalchemy","sqlmodel","ibis"],preferred:"sqlalchemy"}},{name:"Supabase",schema:Qe,color:"#238F5F",logo:"supabase",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}}],Ze=[{name:"Iceberg",schema:Me,color:"#000000",logo:"iceberg",connectionLibraries:{libraries:["pyiceberg"],preferred:"pyiceberg"}}],Ws=[...Xe,...Ze],Gs=t=>{let e=(0,Ye.c)(12),{onSelect:s}=t,n;e[0]===s?n=e[1]:(n=Xe.map(p=>{let{name:h,schema:m,color:b,logo:f}=p;return(0,o.jsx)(ne,{name:h,color:b,icon:(0,o.jsx)(ce,{name:f,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),onSelect:()=>s(m)},h)}),e[0]=s,e[1]=n);let r;e[2]===n?r=e[3]:(r=(0,o.jsx)(re,{children:n}),e[2]=n,e[3]=r);let a;e[4]===Symbol.for("react.memo_cache_sentinel")?(a=(0,o.jsxs)("h4",{className:"font-semibold text-muted-foreground text-lg flex items-center gap-4 my-2",children:["Data Catalogs",(0,o.jsx)("hr",{className:"flex-1"})]}),e[4]=a):a=e[4];let c;e[5]===s?c=e[6]:(c=Ze.map(p=>{let{name:h,schema:m,color:b,logo:f}=p;return(0,o.jsx)(ne,{name:h,color:b,icon:(0,o.jsx)(ce,{name:f,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),onSelect:()=>s(m)},h)}),e[5]=s,e[6]=c);let i;e[7]===c?i=e[8]:(i=(0,o.jsx)(re,{children:c}),e[7]=c,e[8]=i);let l;return e[9]!==r||e[10]!==i?(l=(0,o.jsxs)(o.Fragment,{children:[r,a,i]}),e[9]=r,e[10]=i,e[11]=l):l=e[11],l};const Vs=t=>{let e=(0,Ye.c)(13),{onSubmit:s,header:n}=t,[r,a]=(0,D.useState)(null);if(!r){let b;e[0]===Symbol.for("react.memo_cache_sentinel")?(b=(0,o.jsx)("div",{children:(0,o.jsx)(Gs,{onSelect:a})}),e[0]=b):b=e[0];let f;return e[1]===n?f=e[2]:(f=(0,o.jsxs)(o.Fragment,{children:[n,b]}),e[1]=n,e[2]=f),f}let c;e[3]===r?c=e[4]:(c=Ws.find(b=>b.schema===r),e[3]=r,e[4]=c);let i=c==null?void 0:c.connectionLibraries,l;e[5]===(i==null?void 0:i.libraries)?l=e[6]:(l=(i==null?void 0:i.libraries)??[],e[5]=i==null?void 0:i.libraries,e[6]=l);let p=(i==null?void 0:i.preferred)??"sqlalchemy",h;e[7]===Symbol.for("react.memo_cache_sentinel")?(h=()=>a(null),e[7]=h):h=e[7];let m;return e[8]!==s||e[9]!==r||e[10]!==l||e[11]!==p?(m=(0,o.jsx)(Te,{schema:r,libraries:l,preferredLibrary:p,displayNames:Je,libraryLabel:"Preferred connection library",generateCode:zs,onSubmit:s,onBack:h}),e[8]=s,e[9]=r,e[10]=l,e[11]=p,e[12]=m):m=e[12],m};function zs(t,e){return Hs(t,e)}var Qs=U();async function Js(){return(await yt.request({})).sources}function Ys(){let t=(0,Qs.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],t[0]=e):e=t[0],Se(Js,e)}var ae=U();const Xs=t=>{let e=(0,ae.c)(13),{className:s,sources:n,onAdd:r}=t;if(n.length===0)return null;let a;e[0]===s?a=e[1]:(a=V("rounded-full bg-[linear-gradient(135deg,var(--blue-2),var(--purple-3))] px-3 py-2",s),e[0]=s,e[1]=a);let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=(0,o.jsxs)("div",{className:"mr-1 flex items-center gap-1.5",children:[(0,o.jsx)(Ut,{className:"h-3.5 w-3.5 text-(--blue-9)"}),(0,o.jsx)("h3",{id:"quick-add-data-sources-title",className:"text-sm",children:"Quick add"})]}),e[2]=c):c=e[2];let i;if(e[3]!==r||e[4]!==n){let h;e[6]===r?h=e[7]:(h=m=>(0,o.jsx)(he,{side:"bottom",content:(0,o.jsx)(Zs,{source:m}),children:(0,o.jsxs)("button",{type:"button","aria-label":`Add ${m.displayName} connection`,className:"inline-flex items-center gap-1 rounded-full border border-border/60 bg-background px-2.5 py-1 text-xs font-medium text-foreground/90 transition-colors hover:border-(--blue-7) focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",onClick:()=>r(m),children:[(0,o.jsx)(Bt,{className:"h-3 w-3 text-muted-foreground"}),m.displayName]})},m.id),e[6]=r,e[7]=h),i=n.map(h),e[3]=r,e[4]=n,e[5]=i}else i=e[5];let l;e[8]===i?l=e[9]:(l=(0,o.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[c,(0,o.jsx)(Pt,{delayDuration:200,children:i})]}),e[8]=i,e[9]=l);let p;return e[10]!==a||e[11]!==l?(p=(0,o.jsx)("section",{"aria-labelledby":"quick-add-data-sources-title",className:a,children:l}),e[10]=a,e[11]=l,e[12]=p):p=e[12],p};var Zs=t=>{let e=(0,ae.c)(17),{source:s}=t,n;e[0]===s.displayName?n=e[1]:(n=(0,o.jsx)("div",{className:"font-medium",children:s.displayName}),e[0]=s.displayName,e[1]=n);let r;e[2]===s.origins?r=e[3]:(r=s.origins.map(tr).join(" and "),e[2]=s.origins,e[3]=r);let a;e[4]===r?a=e[5]:(a=(0,o.jsxs)("div",{className:"text-xs text-muted-foreground",children:["Detected from"," ",r]}),e[4]=r,e[5]=a);let c;e[6]!==n||e[7]!==a?(c=(0,o.jsxs)("div",{children:[n,a]}),e[6]=n,e[7]=a,e[8]=c):c=e[8];let i;e[9]===s.configuration?i=e[10]:(i=s.configuration.map(sr),e[9]=s.configuration,e[10]=i);let l;e[11]===i?l=e[12]:(l=(0,o.jsx)("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs",children:i}),e[11]=i,e[12]=l);let p;e[13]===Symbol.for("react.memo_cache_sentinel")?(p=(0,o.jsx)("div",{className:"text-xs text-muted-foreground",children:"Click to add a configured cell."}),e[13]=p):p=e[13];let h;return e[14]!==c||e[15]!==l?(h=(0,o.jsxs)("div",{className:"min-w-64 space-y-2 py-1",children:[c,l,p]}),e[14]=c,e[15]=l,e[16]=h):h=e[16],h};const er=t=>{let e=(0,ae.c)(9),{onSubmit:s,className:n}=t,r=Re(),{data:a}=Ys(),c;e[0]===a?c=e[1]:(c=a??[],e[0]=a,e[1]=c);let i;e[2]!==r||e[3]!==s?(i=p=>{r(p.code),s()},e[2]=r,e[3]=s,e[4]=i):i=e[4];let l;return e[5]!==n||e[6]!==c||e[7]!==i?(l=(0,o.jsx)(Xs,{className:n,sources:c,onAdd:i}),e[5]=n,e[6]=c,e[7]=i,e[8]=l):l=e[8],l};function tr(t){return t.label}function sr(t){return(0,o.jsxs)("div",{className:"contents",children:[(0,o.jsx)("dt",{className:"text-muted-foreground",children:t.field}),(0,o.jsx)("dd",{children:(0,o.jsx)("code",{children:t.value.kind==="environment-variable"?`os.environ["${t.value.name}"]`:t.value.value})})]},t.value.kind==="environment-variable"?t.value.name:`${t.field}:${t.value.value}`)}var et=()=>K("type",[_({type:x("Access keys"),access_key_id:g().optional().describe(d.of({label:"Access Key ID",description:"Leave empty to use the default credential chain",inputType:"password",optionRegex:"(access.?key.?id|object.?storage.?key|aws.?access.?key)"})),secret_access_key:g().optional().describe(d.of({label:"Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|object.?storage.?secret|aws.?secret)"}))}),_({type:x("Container credentials"),container_credentials_full_uri:g().nonempty().describe(d.of({label:"Credentials URI",description:"Endpoint that vends credentials to the container",placeholder:"http://169.254.170.23/v1/credentials",optionRegex:"container.?credentials"})),container_authorization_token_file:g().nonempty().describe(d.of({label:"Authorization Token File",description:"File holding the token sent to the credentials URI",placeholder:"/var/run/secrets/token",optionRegex:"(container.?authorization.?token.?file|container.?auth.?token)"}))})]).default({type:"Access keys"}).describe(d.of({label:"Credentials",special:"tabs"}));const tt=_({type:x("s3"),bucket:g().nonempty().describe(d.of({label:"Bucket",placeholder:"my-bucket",optionRegex:"(bucket|s3.?bucket)"})),region:g().optional().describe(d.of({label:"Region",placeholder:"us-east-1",optionRegex:"(region|aws.?region)"})),endpoint_url:g().optional().describe(d.of({label:"Endpoint URL",description:"Ignored if the AWS_ENDPOINT_URL_S3 environment variable is set",placeholder:"https://s3.amazonaws.com",optionRegex:"(endpoint|s3.?url|s3.?endpoint)"})),allow_http:L().default(!1).describe(d.of({label:"Allow HTTP",description:"Required for plain-http (non-TLS) endpoints"})),auth:et()}).describe(d.of({direction:"two-columns"})),st=_({type:x("gcs"),bucket:g().nonempty().describe(d.of({label:"Bucket",placeholder:"my-bucket",optionRegex:"(bucket|gcs.?bucket|google.?bucket)"})),service_account_key:g().optional().describe(d.of({label:"Service Account Key (JSON)",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),rt=_({type:x("azure"),container:g().nonempty().describe(d.of({label:"Container",placeholder:"my-container"})),account_name:g().nonempty().describe(d.of({label:"Account Name",placeholder:"storageaccount",optionRegex:"(azure.?account|account.?name|storage.?account)"})),account_key:g().optional().describe(d.of({label:"Account Key",inputType:"password",optionRegex:"(azure.?key|account.?key|storage.?key)"}))}).describe(d.of({direction:"two-columns"})),nt=_({type:x("coreweave"),bucket:g().nonempty().describe(d.of({label:"Bucket",placeholder:"bucket-name"})),region:g().nonempty().describe(d.of({label:"Region",placeholder:"US-EAST-04A"})),auth:et()}).describe(d.of({direction:"two-columns"})),ot=_({type:x("gdrive"),credentials_json:g().optional().describe(d.of({label:"Service Account JSON",description:"Leave empty to use browser-based authentication",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),at=_({type:x("huggingface"),token:g().optional().describe(d.of({label:"Access Token",description:"Leave empty to use the HF_TOKEN environment variable or cached login",inputType:"password",optionRegex:"(hf.?token|hugging.?face.?token|hub.?token)"}))}).describe(d.of({direction:"two-columns"})),rr=K("type",[tt,st,rt,nt,ot,at]),nr={obstore:"obstore",fsspec:"fsspec",huggingface_hub:"huggingface_hub"};var or=class{constructor(){G(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e){if(e===void 0||e==="")return"";let s=`_${t}`;if(E(e)){let n=je(e);return this.secrets[s]=`os.environ.get("${n}")`,s}return`"${e}"`}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
143
+ `)}};function it(t,e){if((t==null?void 0:t.type)==="Container credentials")return[` container_credentials_full_uri=${e.print("container_credentials_full_uri",t.container_credentials_full_uri)},`,` container_authorization_token_file=${e.print("container_authorization_token_file",t.container_authorization_token_file)},`];let s=[];return t!=null&&t.access_key_id&&s.push(` access_key_id=${e.print("access_key_id",t.access_key_id)},`),t!=null&&t.secret_access_key&&s.push(` secret_access_key=${e.print("secret_access_key",t.secret_access_key)},`),s}function ar(t,e){let s=e.print("bucket",t.bucket),n=new Set(["from obstore.store import S3Store"]),r=[];return t.region&&r.push(` region=${e.print("region",t.region)},`),r.push(...it(t.auth,e)),t.endpoint_url&&r.push(` endpoint_url=${e.print("endpoint_url",t.endpoint_url)},`),t.allow_http&&r.push(" allow_http=True,"),{imports:n,code:y(`
144
144
  store = S3Store(${s},${r.length>0?`
145
145
  ${r.join(`
146
146
  `)}
147
147
  `:""})
148
- `)}}function ar(t,e){let s=e.print("bucket",t.bucket),n=new Set(["from obstore.store import GCSStore"]);if(!t.service_account_key)return{imports:n,code:y(`
148
+ `)}}function ir(t,e){let s=e.print("bucket",t.bucket),n=new Set(["from obstore.store import GCSStore"]);if(!t.service_account_key)return{imports:n,code:y(`
149
149
  store = GCSStore(${s})
150
150
  `)};let r=ee(t.service_account_key,a=>e.print("service_account_key",a));return r.kind==="path"?{imports:n,code:y(`
151
151
  store = GCSStore(${s},
@@ -156,15 +156,15 @@ ${r.join(`
156
156
  store = GCSStore(${s},
157
157
  service_account_key=_credentials,
158
158
  )
159
- `)})}function ir(t,e){let s=e.print("container",t.container),n=e.print("account_name",t.account_name),r=new Set(["from obstore.store import AzureStore"]),a=[`account_name=${n},`];return t.account_key&&a.push(`account_key=${e.print("account_key",t.account_key)},`),{imports:r,code:`store = AzureStore(${s},
159
+ `)})}function cr(t,e){let s=e.print("container",t.container),n=e.print("account_name",t.account_name),r=new Set(["from obstore.store import AzureStore"]),a=[`account_name=${n},`];return t.account_key&&a.push(`account_key=${e.print("account_key",t.account_key)},`),{imports:r,code:`store = AzureStore(${s},
160
160
  ${a.map(c=>` ${c}`).join(`
161
161
  `)}
162
- )`}}function cr(t,e){let s=e.print("bucket",t.bucket),n=new Set(["from obstore.store import S3Store"]),r=[` region=${e.print("region",t.region)},`];return r.push(...at(t.auth,e)),r.push(` endpoint="https://${t.bucket}.cwobject.com",`," virtual_hosted_style_request=True,"),{imports:n,code:y(`
162
+ )`}}function lr(t,e){let s=e.print("bucket",t.bucket),n=new Set(["from obstore.store import S3Store"]),r=[` region=${e.print("region",t.region)},`];return r.push(...it(t.auth,e)),r.push(` endpoint="https://${t.bucket}.cwobject.com",`," virtual_hosted_style_request=True,"),{imports:n,code:y(`
163
163
  store = S3Store(${s},${`
164
164
  ${r.join(`
165
165
  `)}
166
166
  `})
167
- `)}}function lr(t,e){let{secrets:s,isEmbedded:n=!1}=e,r=new Set(["from gdrive_fsspec import GoogleDriveFileSystem"]);if(t.credentials_json){let a=ee(t.credentials_json,c=>s.print("credentials_json",c));return a.kind==="path"?{imports:r,code:y(`
167
+ `)}}function dr(t,e){let{secrets:s,isEmbedded:n=!1}=e,r=new Set(["from gdrive_fsspec import GoogleDriveFileSystem"]);if(t.credentials_json){let a=ee(t.credentials_json,c=>s.print("credentials_json",c));return a.kind==="path"?{imports:r,code:y(`
168
168
  fs = GoogleDriveFileSystem(creds="${se(a.path)}", token="service_account", use_listings_cache=False, skip_instance_cache=True)
169
169
  `)}:(r.add("import json"),{imports:r,code:y(`
170
170
  _creds = ${a.expr}
@@ -174,5 +174,5 @@ ${r.join(`
174
174
  mo.output.clear_console()
175
175
  `:`
176
176
  fs = GoogleDriveFileSystem(use_listings_cache=False, skip_instance_cache=True)
177
- `)}}function dr(t,e){sr.parse(t);let s=new nr,n;switch(t.type){case"s3":n=or(t,s);break;case"gcs":n=ar(t,s);break;case"azure":n=ir(t,s);break;case"coreweave":n=cr(t,s);break;case"gdrive":n=lr(t,{secrets:s,isEmbedded:e.isEmbedded});break;default:W(t)}let r=[...new Set([...s.imports,...n.imports])].toSorted();r.push("");let a=s.formatSecrets();return a&&r.push(a),r.push(n.code.trim()),r.join(`
178
- `)}var it=U(),pr="#232F3E",ct=[{name:"Amazon S3",schema:tt,protocol:"s3",storageLibraries:{libraries:["obstore"],preferred:"obstore"}},{name:"Google Cloud Storage",schema:st,protocol:"gcs",storageLibraries:{libraries:["obstore"],preferred:"obstore"}},{name:"Azure Blob Storage",schema:rt,protocol:"azure",storageLibraries:{libraries:["obstore"],preferred:"obstore"}},{name:"CoreWeave",schema:nt,protocol:"coreweave",storageLibraries:{libraries:["obstore"],preferred:"obstore"}},{name:"Google Drive",schema:ot,protocol:"gdrive",storageLibraries:{libraries:["fsspec"],preferred:"fsspec"}}],hr=t=>{let e=(0,it.c)(4),{onSelect:s}=t,n;e[0]===s?n=e[1]:(n=ct.map(a=>{let{name:c,schema:i,protocol:l}=a;return(0,o.jsx)(ne,{name:c,color:pr,icon:(0,o.jsx)(Ft,{protocol:l,forceDark:!0,className:"w-7.5 h-7.5"}),onSelect:()=>s(i)},c)}),e[0]=s,e[1]=n);let r;return e[2]===n?r=e[3]:(r=(0,o.jsx)(re,{children:n}),e[2]=n,e[3]=r),r};const mr=t=>{let e=(0,it.c)(16),{onSubmit:s,header:n}=t,{isEmbedded:r}=Jt(),[a,c]=(0,D.useState)(null);if(!a){let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=(0,o.jsx)("div",{children:(0,o.jsx)(hr,{onSelect:c})}),e[0]=m):m=e[0];let S;return e[1]===n?S=e[2]:(S=(0,o.jsxs)(o.Fragment,{children:[n,m]}),e[1]=n,e[2]=S),S}let i;e[3]===a?i=e[4]:(i=ct.find(m=>m.schema===a),e[3]=a,e[4]=i);let l=i==null?void 0:i.storageLibraries,p;e[5]===(l==null?void 0:l.libraries)?p=e[6]:(p=(l==null?void 0:l.libraries)??[],e[5]=l==null?void 0:l.libraries,e[6]=p);let h=(l==null?void 0:l.preferred)??"obstore",u;e[7]===r?u=e[8]:(u=(m,S)=>dr(m,{library:S,isEmbedded:r}),e[7]=r,e[8]=u);let b;e[9]===Symbol.for("react.memo_cache_sentinel")?(b=()=>c(null),e[9]=b):b=e[9];let g;return e[10]!==s||e[11]!==a||e[12]!==p||e[13]!==h||e[14]!==u?(g=(0,o.jsx)(Te,{schema:a,libraries:p,preferredLibrary:h,displayNames:rr,libraryLabel:"Preferred storage library",generateCode:u,onSubmit:s,onBack:b}),e[10]=s,e[11]=a,e[12]=p,e[13]=h,e[14]=u,e[15]=g):g=e[15],g};var lt=U();const ur=t=>{let e=(0,lt.c)(9),{children:s,defaultTab:n}=t,r=n===void 0?"databases":n,[a,c]=(0,D.useState)(!1),i;e[0]===s?i=e[1]:(i=(0,o.jsx)(Gt,{asChild:!0,children:s}),e[0]=s,e[1]=i);let l;e[2]===Symbol.for("react.memo_cache_sentinel")?(l=()=>c(!1),e[2]=l):l=e[2];let p;e[3]===r?p=e[4]:(p=(0,o.jsx)(dt,{defaultTab:r,onClose:l}),e[3]=r,e[4]=p);let h;return e[5]!==a||e[6]!==i||e[7]!==p?(h=(0,o.jsxs)(Qt,{open:a,onOpenChange:c,children:[i,p]}),e[5]=a,e[6]=i,e[7]=p,e[8]=h):h=e[8],h},dt=t=>{let e=(0,lt.c)(23),{defaultTab:s,onClose:n}=t,[r,a]=(0,D.useState)(s===void 0?"databases":s),c;e[0]===Symbol.for("react.memo_cache_sentinel")?(c=(0,o.jsxs)($t,{className:"w-full mb-4",children:[(0,o.jsx)(de,{value:"databases",className:"flex-1",children:"Databases & Catalogs"}),(0,o.jsx)(de,{value:"storage",className:"flex-1",children:"Remote Storages"})]}),e[0]=c):c=e[0];let i=c,l;e[1]===r?l=e[2]:(l=r==="databases"?(0,o.jsxs)(o.Fragment,{children:["Don't see your database or connection method? A"," ",(0,o.jsx)(z,{href:"https://docs.marimo.io/guides/working_with_data/sql/#connecting-to-a-custom-database",children:"code snippet"})," ","is all you need."]}):(0,o.jsxs)(o.Fragment,{children:["Don't see your storage or connection method? A"," ",(0,o.jsx)(z,{href:"https://docs.marimo.io/guides/working_with_data/remote_storage/#creating-a-storage-connection",children:"code snippet"})," ","is all you need."]}),e[1]=r,e[2]=l);let p=l,h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=(0,o.jsx)(Ht,{children:"Add Connection"}),e[3]=h):h=e[3];let u;e[4]===Symbol.for("react.memo_cache_sentinel")?(u=(0,o.jsx)(z,{href:"https://docs.marimo.io/guides/working_with_data/sql/#connecting-to-a-custom-database",children:"database, data catalog"}),e[4]=u):u=e[4];let b;e[5]===Symbol.for("react.memo_cache_sentinel")?(b=(0,o.jsx)(z,{href:"https://docs.marimo.io/guides/working_with_data/remote_storage/",children:"remote storage"}),e[5]=b):b=e[5];let g;e[6]===p?g=e[7]:(g=(0,o.jsxs)(Wt,{children:[h,(0,o.jsxs)(zt,{children:["Connect to a"," ",u," ","or"," ",b," ","directly from your notebook.",(0,o.jsx)("span",{className:"block",children:p})]})]}),e[6]=p,e[7]=g);let m;e[8]===n?m=e[9]:(m=(0,o.jsx)(Zs,{onSubmit:n,className:"-mt-2"}),e[8]=n,e[9]=m);let S;e[10]===Symbol.for("react.memo_cache_sentinel")?(S=C=>a(C),e[10]=S):S=e[10];let w;e[11]===n?w=e[12]:(w=(0,o.jsx)(pe,{value:"databases",className:"mt-0 focus-visible:ring-0 focus-visible:ring-offset-0",children:(0,o.jsx)(Gs,{onSubmit:n,header:i})}),e[11]=n,e[12]=w);let k;e[13]===n?k=e[14]:(k=(0,o.jsx)(pe,{value:"storage",className:"mt-0 focus-visible:ring-0 focus-visible:ring-offset-0",children:(0,o.jsx)(mr,{onSubmit:n,header:i})}),e[13]=n,e[14]=k);let v;e[15]!==r||e[16]!==w||e[17]!==k?(v=(0,o.jsxs)(wt,{value:r,onValueChange:S,children:[w,k]}),e[15]=r,e[16]=w,e[17]=k,e[18]=v):v=e[18];let A;return e[19]!==v||e[20]!==g||e[21]!==m?(A=(0,o.jsxs)(Vt,{className:"max-h-[75vh] overflow-y-auto",children:[g,m,v]}),e[19]=v,e[20]=g,e[21]=m,e[22]=A):A=e[22],A};export{dt as n,ur as t};
177
+ `)}}function pr(t,e){let s=new Set(["from huggingface_hub import HfApi"]);return t.token?{imports:s,code:`hf = HfApi(token=${e.print("token",t.token)})`}:{imports:s,code:"hf = HfApi()"}}function hr(t,e){rr.parse(t);let s=new or,n;switch(t.type){case"s3":n=ar(t,s);break;case"gcs":n=ir(t,s);break;case"azure":n=cr(t,s);break;case"coreweave":n=lr(t,s);break;case"gdrive":n=dr(t,{secrets:s,isEmbedded:e.isEmbedded});break;case"huggingface":n=pr(t,s);break;default:M(t)}let r=[...new Set([...s.imports,...n.imports])].toSorted();r.push("");let a=s.formatSecrets();return a&&r.push(a),r.push(n.code.trim()),r.join(`
178
+ `)}var ct=U(),ur="#232F3E",lt=[{name:"Amazon S3",schema:tt,protocol:"s3",storageLibraries:{libraries:["obstore"],preferred:"obstore"}},{name:"Google Cloud Storage",schema:st,protocol:"gcs",storageLibraries:{libraries:["obstore"],preferred:"obstore"}},{name:"Azure Blob Storage",schema:rt,protocol:"azure",storageLibraries:{libraries:["obstore"],preferred:"obstore"}},{name:"CoreWeave",schema:nt,protocol:"coreweave",storageLibraries:{libraries:["obstore"],preferred:"obstore"}},{name:"Google Drive",schema:ot,protocol:"gdrive",storageLibraries:{libraries:["fsspec"],preferred:"fsspec"}},{name:"Hugging Face Hub",schema:at,protocol:"hf",storageLibraries:{libraries:["huggingface_hub"],preferred:"huggingface_hub"}}],mr=t=>{let e=(0,ct.c)(4),{onSelect:s}=t,n;e[0]===s?n=e[1]:(n=lt.map(a=>{let{name:c,schema:i,protocol:l}=a;return(0,o.jsx)(ne,{name:c,color:ur,icon:(0,o.jsx)(Ot,{protocol:l,forceDark:!0,className:"w-7.5 h-7.5"}),onSelect:()=>s(i)},c)}),e[0]=s,e[1]=n);let r;return e[2]===n?r=e[3]:(r=(0,o.jsx)(re,{children:n}),e[2]=n,e[3]=r),r};const br=t=>{let e=(0,ct.c)(16),{onSubmit:s,header:n}=t,{isEmbedded:r}=Yt(),[a,c]=(0,D.useState)(null);if(!a){let u;e[0]===Symbol.for("react.memo_cache_sentinel")?(u=(0,o.jsx)("div",{children:(0,o.jsx)(mr,{onSelect:c})}),e[0]=u):u=e[0];let S;return e[1]===n?S=e[2]:(S=(0,o.jsxs)(o.Fragment,{children:[n,u]}),e[1]=n,e[2]=S),S}let i;e[3]===a?i=e[4]:(i=lt.find(u=>u.schema===a),e[3]=a,e[4]=i);let l=i==null?void 0:i.storageLibraries,p;e[5]===(l==null?void 0:l.libraries)?p=e[6]:(p=(l==null?void 0:l.libraries)??[],e[5]=l==null?void 0:l.libraries,e[6]=p);let h=(l==null?void 0:l.preferred)??"obstore",m;e[7]===r?m=e[8]:(m=(u,S)=>hr(u,{library:S,isEmbedded:r}),e[7]=r,e[8]=m);let b;e[9]===Symbol.for("react.memo_cache_sentinel")?(b=()=>c(null),e[9]=b):b=e[9];let f;return e[10]!==s||e[11]!==a||e[12]!==p||e[13]!==h||e[14]!==m?(f=(0,o.jsx)(Te,{schema:a,libraries:p,preferredLibrary:h,displayNames:nr,libraryLabel:"Preferred storage library",generateCode:m,onSubmit:s,onBack:b}),e[10]=s,e[11]=a,e[12]=p,e[13]=h,e[14]=m,e[15]=f):f=e[15],f};var dt=U();const gr=t=>{let e=(0,dt.c)(9),{children:s,defaultTab:n}=t,r=n===void 0?"databases":n,[a,c]=(0,D.useState)(!1),i;e[0]===s?i=e[1]:(i=(0,o.jsx)(Vt,{asChild:!0,children:s}),e[0]=s,e[1]=i);let l;e[2]===Symbol.for("react.memo_cache_sentinel")?(l=()=>c(!1),e[2]=l):l=e[2];let p;e[3]===r?p=e[4]:(p=(0,o.jsx)(pt,{defaultTab:r,onClose:l}),e[3]=r,e[4]=p);let h;return e[5]!==a||e[6]!==i||e[7]!==p?(h=(0,o.jsxs)(Jt,{open:a,onOpenChange:c,children:[i,p]}),e[5]=a,e[6]=i,e[7]=p,e[8]=h):h=e[8],h},pt=t=>{let e=(0,dt.c)(23),{defaultTab:s,onClose:n}=t,[r,a]=(0,D.useState)(s===void 0?"databases":s),c;e[0]===Symbol.for("react.memo_cache_sentinel")?(c=(0,o.jsxs)(Ct,{className:"w-full mb-4",children:[(0,o.jsx)(de,{value:"databases",className:"flex-1",children:"Databases & Catalogs"}),(0,o.jsx)(de,{value:"storage",className:"flex-1",children:"Remote Storages"})]}),e[0]=c):c=e[0];let i=c,l;e[1]===r?l=e[2]:(l=r==="databases"?(0,o.jsxs)(o.Fragment,{children:["Don't see your database or connection method? A"," ",(0,o.jsx)(z,{href:"https://docs.marimo.io/guides/working_with_data/sql/#connecting-to-a-custom-database",children:"code snippet"})," ","is all you need."]}):(0,o.jsxs)(o.Fragment,{children:["Don't see your storage or connection method? A"," ",(0,o.jsx)(z,{href:"https://docs.marimo.io/guides/working_with_data/remote_storage/#creating-a-storage-connection",children:"code snippet"})," ","is all you need."]}),e[1]=r,e[2]=l);let p=l,h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=(0,o.jsx)(Gt,{children:"Add Connection"}),e[3]=h):h=e[3];let m;e[4]===Symbol.for("react.memo_cache_sentinel")?(m=(0,o.jsx)(z,{href:"https://docs.marimo.io/guides/working_with_data/sql/#connecting-to-a-custom-database",children:"database, data catalog"}),e[4]=m):m=e[4];let b;e[5]===Symbol.for("react.memo_cache_sentinel")?(b=(0,o.jsx)(z,{href:"https://docs.marimo.io/guides/working_with_data/remote_storage/",children:"remote storage"}),e[5]=b):b=e[5];let f;e[6]===p?f=e[7]:(f=(0,o.jsxs)(Wt,{children:[h,(0,o.jsxs)(Qt,{children:["Connect to a"," ",m," ","or"," ",b," ","directly from your notebook.",(0,o.jsx)("span",{className:"block",children:p})]})]}),e[6]=p,e[7]=f);let u;e[8]===n?u=e[9]:(u=(0,o.jsx)(er,{onSubmit:n,className:"-mt-2"}),e[8]=n,e[9]=u);let S;e[10]===Symbol.for("react.memo_cache_sentinel")?(S=C=>a(C),e[10]=S):S=e[10];let w;e[11]===n?w=e[12]:(w=(0,o.jsx)(pe,{value:"databases",className:"mt-0 focus-visible:ring-0 focus-visible:ring-offset-0",children:(0,o.jsx)(Vs,{onSubmit:n,header:i})}),e[11]=n,e[12]=w);let k;e[13]===n?k=e[14]:(k=(0,o.jsx)(pe,{value:"storage",className:"mt-0 focus-visible:ring-0 focus-visible:ring-offset-0",children:(0,o.jsx)(br,{onSubmit:n,header:i})}),e[13]=n,e[14]=k);let v;e[15]!==r||e[16]!==w||e[17]!==k?(v=(0,o.jsxs)(jt,{value:r,onValueChange:S,children:[w,k]}),e[15]=r,e[16]=w,e[17]=k,e[18]=v):v=e[18];let A;return e[19]!==v||e[20]!==f||e[21]!==u?(A=(0,o.jsxs)(zt,{className:"max-h-[75vh] overflow-y-auto",children:[f,u,v]}),e[19]=v,e[20]=f,e[21]=u,e[22]=A):A=e[22],A};export{pt as n,gr as t};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./loro_wasm_bg-CjrUicyy.js","./loro_wasm_bg-BPjF1TWb.js","./chunk-LvLJmgfZ.js"])))=>i.map(i=>d[i]);
2
- var Af=Object.defineProperty;var pi=te=>{throw TypeError(te)};var Lf=(te,H,be)=>H in te?Af(te,H,{enumerable:!0,configurable:!0,writable:!0,value:be}):te[H]=be;var g=(te,H,be)=>Lf(te,typeof H!="symbol"?H+"":H,be),Of=(te,H,be)=>H.has(te)||pi("Cannot "+be);var hi=(te,H,be)=>(Of(te,H,"read from private field"),be?be.call(te):H.get(te)),gi=(te,H,be)=>H.has(te)?pi("Cannot add the same private member more than once"):H instanceof WeakSet?H.add(te):H.set(te,be);import{s as yi}from"./chunk-LvLJmgfZ.js";import{c as _f,d as bi,f as Pr,i as J,l as Un,n as se,p as ut,s as jn,u as q}from"./useEvent-D91BmmQi.js";import{t as Uf}from"./react-Bj1aDYRI.js";import{$n as Dr,$r as Mr,$t as jf,An as wi,B as vi,Ci as Pf,Dn as Df,E as Pn,F as Mf,H as Ff,Ht as Rf,Ii as Bf,Jr as Fr,K as xi,Li as Ei,Ln as Rr,Lr as Gf,Mi as Jf,Mn as Vf,Nn as Q,Nt as $f,On as Wf,Pn as qf,Pt as Si,Qi as ki,Rn as Br,St as Gt,Tn as Hf,Tt as zf,U as Ci,V as Dn,W as Ni,Wt as Gr,Xn as Yf,Xt as Ii,Yn as Mn,Yt as Jr,Zn as Kf,Zt as Ti,_n as Fn,_r as Ai,_t as Xf,bt as Qf,ct as Li,dr as Zf,en as em,fa as Vr,fn as tm,gr as nm,gt as rm,hi as am,hr as Oi,ht as om,i as _i,ir as im,ji as sm,jn as lm,kn as cm,l as Ui,lt as Rn,m as xt,mi as um,mr as nt,nn as dm,nr as fm,or as mm,pr as $r,rn as pm,rr as hm,sr as gm,ta as ym,tn as bm,tr as ji,u as Pi,ua as Bn,ut as wm,vr as vm,vt as Wr,wi as qr,xn as xm,xt as Em,y as rt,ya as Sm,yt as dt,__tla as km}from"./cells-DLYs3NiJ.js";import{B as Cm,N as Nm,P as Hr,R as Di,S as Im,T as Mi,k as Tm,w as Am}from"./zod-H_cgTO0M.js";import{t as ve}from"./compiler-runtime-B3qBwwSJ.js";import{t as Lm}from"./debounce-OiXznToA.js";import{C as Om,f as _m,m as Um,p as jm,t as Pm,v as Dm,w as Mm}from"./ai-model-dropdown-CLCa-gsg.js";import{_ as Fm,c as Fi,g as $e,m as zr,t as Rm}from"./useEventListener-C0195JsF.js";import{t as Jt}from"./invariant-CkiqGLcK.js";import{E as Yr,_ as Ri,c as Bm,g as Bi,l as Gi,v as Ji}from"./utils-BWBBpCkT.js";import{E as Gm,N as Jm,O as Vm,S as Vi,T as Vt,m as $m,o as Wm,r as $i,v as Et}from"./config-DAL-jiRM.js";import{n as qm,t as Hm}from"./switch-CONP-vq2.js";import{c as zm,n as Ym,r as Km}from"./readonly-python-code-DUjqXwhi.js";import{t as Xm}from"./ErrorBoundary-DzTD8LVq.js";import{t as at}from"./cn-DYvqRARy.js";import{t as Qm}from"./jsx-runtime-Blw4afVn.js";import{l as Zm,r as ep,t as tp}from"./popover-Bcz1Zikb.js";import{Q as np,Z as rp,__tla as ap}from"./JsonOutput-Bk2exFh0.js";import{t as Kr}from"./label-CqjrpwRC.js";import{n as op}from"./download-DenADH0w.js";import{t as Gn}from"./tooltip-4bZlU7jl.js";import{r as Xr,t as ft}from"./button-DDGiD1NW.js";import{At as ip,Bt as Jn,Ct as sp,Dt as lp,E as cp,Et as Wi,Ft as up,Gt as $t,H as Vn,Ht as dp,I as fp,P as mp,Pt as pp,Qt as We,Rt as Qr,St as hp,Tt as He,Ut as St,V as gp,Wt as Zr,Yt as yp,Zt as ce,_ as bp,at as V,dt as Wt,en as qt,gt as wp,ht as vp,lt as xp,m as Ep,ot as Sp,qt as mt,rn as $n,st as R,ut as Ke,w as kp,xt as Cp}from"./dist-12S8I4CH.js";import{C as Np,E as Ip,I as Tp,O as Ap,S as Lp,a as Op,c as _p,n as ea,r as Up,w as jp}from"./dist-CiVShZKM.js";import{o as qi}from"./arrays-DbOq36rN.js";import{n as Pp}from"./once-CGKw_kwj.js";import{t as ta}from"./createReducer-DGx5Af-C.js";import{a as Dp,c as Mp,f as Wn,h as Fp,i as Rp,l as Ht,n as Hi,o as Bp,t as Gp}from"./dist-DYEuVkEX.js";import{t as Jp}from"./main-BNL5rxQw.js";import{r as zi}from"./strings--BknHX9C.js";import{r as qn,t as Yi}from"./requests-9-v2bhoi.js";import{t as Vp}from"./createLucideIcon-w-Qo9n0R.js";import{r as Ki,t as $p,__tla as Wp}from"./layout-yfmf2ZBx.js";import{t as qp}from"./x-C-Eq0ag8.js";import{t as Hp}from"./circle-check-C32B6Qa1.js";import{B as zp,F as Yp,L as Kp,N as Xp,O as Qp,V as Zp,a as Xi,d as eh,k as Qi,n as th,o as nh,r as Zi,s as rh,w as ah}from"./add-cell-with-ai-BU5EDuHt.js";import{t as oh}from"./database-zap-CKO8g4BU.js";import{r as ih,t as sh}from"./file-icons-mgXTzM1c.js";import{t as lh}from"./components-K_Mi0vdC.js";import{n as ch}from"./spinner-D-V4psAa.js";import{n as na,t as es}from"./useDeleteCell-Cy23OP4e.js";import{t as ts}from"./save-DBuEmnnF.js";import{Y as uh,Z as ns}from"./input-JxFwu-3G.js";import{t as dh}from"./sparkles-DUCpRFlS.js";import{t as fh}from"./badge-B92a4ePY.js";import{t as mh}from"./preload-helper-TXkS1QI3.js";import{a as ph}from"./dist-CPjTeT8p.js";import{t as kt}from"./use-toast-BwJoaaDM.js";import{n as Ze}from"./paths-BKO-pHK6.js";import{t as hh}from"./session-BmukRjSi.js";import{r as gh}from"./useTheme-Bxv9B31g.js";import{n as rs}from"./copy-Bxb1_Gtw.js";import{k as yh}from"./usePress-5hBv4sjD.js";import{t as bh}from"./context-BFPaAUK_.js";import{a as wh}from"./useRunCells-kmbsc2R5.js";import{c as as,i as os,n as is,r as vh}from"./dialog-BCVepWLJ.js";import{t as ss}from"./useHotkey-DLZvrRZT.js";import{i as Hn}from"./numbers-rmawRqQP.js";import{n as ls}from"./ImperativeModal-fY-ZfT0b.js";import{a as xh}from"./errors-PgHhDa-M.js";import{t as K}from"./extends-B9D0JO9U.js";import{t as zt}from"./objectWithoutPropertiesLoose-CboCOq4o.js";import{t as Eh}from"./kbd-C5HnBH5U.js";import{a as ra}from"./useInstallPackage-WiYBwhUO.js";import{i as Sh,n as cs}from"./state-Brswj8bD.js";import{a as kh,o as Ch}from"./cell-link-D0aELsL_.js";import{r as us}from"./html-to-image-D_C-hjtC.js";import{a as Nh}from"./focus-0L1nX7M9.js";import{n as Ih}from"./useAsyncData-Bg5iAViP.js";import{a as Th,o as ds,r as Ah,s as fs,t as Lh}from"./command-Dqxie4gq.js";import{a as ms}from"./renderShortcut-Bl8_FVn8.js";import{n as Oh,t as _h}from"./icons-CIPE8AIY.js";import{n as Ct}from"./esm-B30N1GS0.js";import{t as ps}from"./dist-CrKffqgx.js";import{t as Uh}from"./requests-BMphPdzB.js";import{n as jh}from"./formatting-COz4XEaB.js";import{t as Ph}from"./useSplitCell-BK5mnkkL.js";import{t as aa}from"./state-C4kiwedg.js";import{n as Dh,r as Mh,t as hs}from"./panel-accordion-state-D1UP17Lk.js";import{co as Fh,do as oa,fo as Rh,ft as Bh,go as Nt,ho as gs,lo as ia,mo as ys,oo as Gh,po as Jh,so as bs,uo as ws,__tla as Vh}from"./loro_wasm_bg-BPjF1TWb.js";import{t as $h}from"./ws-Dj1iZVFK.js";import{t as vs}from"./Inputs-BmtHnGKp.js";import{r as Wh,t as qh}from"./skeleton-CPuDx7yn.js";let sa,Yt,zn,Yn,Kn,la,xe,xs,Es,Ss,ks,ca,ua,pt,Cs,Ns,Is,Kt,Xn,Ts,Hh=Promise.all([(()=>{try{return km}catch{}})(),(()=>{try{return ap}catch{}})(),(()=>{try{return Wp}catch{}})(),(()=>{try{return Vh}catch{}})()]).then(async()=>{var Ln,ci,Se,ke,Ce,Ne,Ie,Te,Ae,Le,Oe,_e,Ue,je,Pe,De,Me,Fe,Re,Be,Ge;var te=Vp("file-pen",[["path",{d:"M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34",key:"o6klzx"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z",key:"zhnas1"}]]);const H={showInput:"Mod-l",acceptEdit:"Mod-y",rejectEdit:"Mod-u"};var be=300;const Tt=$t.define({combine:t=>$n(t,{onError:console.error,inputDebounceTime:be,keymaps:H},{onError:(e,n)=>e&&n,inputDebounceTime:(e,n)=>e&&n,keymaps:(e,n)=>e&&n})}),ot=ce.define(),it=We.define({create(){return{show:!1,lineFrom:0,lineTo:0}},update(t,e){for(let n of e.effects)if(n.is(ot))return n.value;return t}}),At=ce.define(),Lt=ce.define(),fa=We.define({create(){return{shouldFocus:!1,inputValue:""}},update(t,e){let n=t;for(let r of e.effects)r.is(At)&&(n={...n,inputValue:r.value}),r.is(Lt)&&(n={...n,shouldFocus:r.value});return n}}),Xt=ce.define(),Ot=We.define({create(){return null},update(t,e){for(let n of e.effects)if(n.is(Xt))return n.value;return t}}),ht=ce.define(),ma=We.define({create(){return!1},update(t,e){for(let n of e.effects)if(n.is(ht))return n.value;return t}});var As=1;const pa=t=>{let{state:e}=t,n=e.selection.main;if(n.empty)return!1;let r=e.doc,a=r.lineAt(n.from),o=r.lineAt(n.to);if(e.sliceDoc(a.from,o.to).trim().length<As)return!1;let i=Math.max(1,Math.min(a.number,r.lines)),s=Math.max(1,Math.min(o.number,r.lines));return t.dispatch({effects:[ot.of({show:!0,lineFrom:i,lineTo:s}),Lt.of(!0),At.of("")],selection:St.cursor(a.from)}),!0},ha=t=>t.state.field(Ot)?(t.dispatch({effects:[Xt.of(null),ot.of({show:!1,lineFrom:0,lineTo:0}),Lt.of(!1),At.of(""),ht.of(!1)]}),!0):!1,ga=t=>{let e=t.state.field(Ot);return e?(t.dispatch({changes:{from:e.from,to:e.to,insert:e.oldCode},effects:[Xt.of(null),ot.of({show:!1,lineFrom:0,lineTo:0}),Lt.of(!1),At.of(""),ht.of(!1)]}),!0):!1};var Qn={mac:"\u2318",windows:"\u229E Win",default:"Ctrl"};function Ls(){return navigator.platform.startsWith("Mac")?Qn.mac:navigator.platform.startsWith("Win")?Qn.windows:Qn.default}function Zn(t){return t.replace("Mod",Ls()).replace("-"," ").toUpperCase()}function pe(t,e){let n=document.createElement(t);return n.className=e,n}function Os(t,e,n=void 0){let r=()=>{};return(...a)=>(r(),new Promise((o,i)=>{let s=setTimeout(()=>o(t(...a)),e);r=()=>{clearTimeout(s),n!==void 0&&i(n)}}))}var Qt=We.define({create(){return{suggestion:null}},update(t,e){let n=e.effects.find(r=>r.is(Zt));return!e.docChanged&&!n&&!e.selection?t:n&&e.state.doc===n.value.doc?{suggestion:n.value.text}:{suggestion:null}}}),Zt=ce.define();function _s(t,e){let n=t.state.selection.main.head,r=[],a=V.widget({widget:new Us(e),side:1});return r.push(a.range(n)),V.set(r)}var Us=class extends Wt{constructor(e){super();g(this,"suggestion");this.suggestion=e}toDOM(){let e=document.createElement("span");return e.style.opacity="0.4",e.className="cm-inline-suggestion",e.textContent=this.suggestion,e.setAttribute("role","suggestion"),e.setAttribute("aria-label",`Suggestion: ${this.suggestion}`),e}get lineBreaks(){return this.suggestion.split(`
2
+ var Af=Object.defineProperty;var pi=te=>{throw TypeError(te)};var Lf=(te,H,be)=>H in te?Af(te,H,{enumerable:!0,configurable:!0,writable:!0,value:be}):te[H]=be;var g=(te,H,be)=>Lf(te,typeof H!="symbol"?H+"":H,be),Of=(te,H,be)=>H.has(te)||pi("Cannot "+be);var hi=(te,H,be)=>(Of(te,H,"read from private field"),be?be.call(te):H.get(te)),gi=(te,H,be)=>H.has(te)?pi("Cannot add the same private member more than once"):H instanceof WeakSet?H.add(te):H.set(te,be);import{s as yi}from"./chunk-LvLJmgfZ.js";import{c as _f,d as bi,f as Pr,i as J,l as Un,n as se,p as ut,s as jn,u as q}from"./useEvent-D91BmmQi.js";import{t as Uf}from"./react-Bj1aDYRI.js";import{$n as Dr,$r as Mr,$t as jf,An as wi,B as vi,Ci as Pf,Dn as Df,E as Pn,F as Mf,H as Ff,Ht as Rf,Ii as Bf,Jr as Fr,K as xi,Li as Ei,Ln as Rr,Lr as Gf,Mi as Jf,Mn as Vf,Nn as Q,Nt as $f,On as Wf,Pn as qf,Pt as Si,Qi as ki,Rn as Br,St as Gt,Tn as Hf,Tt as zf,U as Ci,V as Dn,W as Ni,Wt as Gr,Xn as Yf,Xt as Ii,Yn as Mn,Yt as Jr,Zn as Kf,Zt as Ti,_n as Fn,_r as Ai,_t as Xf,bt as Qf,ct as Li,dr as Zf,en as em,fa as Vr,fn as tm,gr as nm,gt as rm,hi as am,hr as Oi,ht as om,i as _i,ir as im,ji as sm,jn as lm,kn as cm,l as Ui,lt as Rn,m as xt,mi as um,mr as nt,nn as dm,nr as fm,or as mm,pr as $r,rn as pm,rr as hm,sr as gm,ta as ym,tn as bm,tr as ji,u as Pi,ua as Bn,ut as wm,vr as vm,vt as Wr,wi as qr,xn as xm,xt as Em,y as rt,ya as Sm,yt as dt,__tla as km}from"./cells-DLYs3NiJ.js";import{B as Cm,N as Nm,P as Hr,R as Di,S as Im,T as Mi,k as Tm,w as Am}from"./zod-H_cgTO0M.js";import{t as ve}from"./compiler-runtime-B3qBwwSJ.js";import{t as Lm}from"./debounce-OiXznToA.js";import{C as Om,f as _m,m as Um,p as jm,t as Pm,v as Dm,w as Mm}from"./ai-model-dropdown-CLCa-gsg.js";import{_ as Fm,c as Fi,g as $e,m as zr,t as Rm}from"./useEventListener-C0195JsF.js";import{t as Jt}from"./invariant-CkiqGLcK.js";import{E as Yr,_ as Ri,c as Bm,g as Bi,l as Gi,v as Ji}from"./utils-BWBBpCkT.js";import{E as Gm,N as Jm,O as Vm,S as Vi,T as Vt,m as $m,o as Wm,r as $i,v as Et}from"./config-DAL-jiRM.js";import{n as qm,t as Hm}from"./switch-CONP-vq2.js";import{c as zm,n as Ym,r as Km}from"./readonly-python-code-DUjqXwhi.js";import{t as Xm}from"./ErrorBoundary-DzTD8LVq.js";import{t as at}from"./cn-DYvqRARy.js";import{t as Qm}from"./jsx-runtime-Blw4afVn.js";import{l as Zm,r as ep,t as tp}from"./popover-Bcz1Zikb.js";import{Q as np,Z as rp,__tla as ap}from"./JsonOutput-Bk2exFh0.js";import{t as Kr}from"./label-CqjrpwRC.js";import{n as op}from"./download-DenADH0w.js";import{t as Gn}from"./tooltip-4bZlU7jl.js";import{r as Xr,t as ft}from"./button-DDGiD1NW.js";import{At as ip,Bt as Jn,Ct as sp,Dt as lp,E as cp,Et as Wi,Ft as up,Gt as $t,H as Vn,Ht as dp,I as fp,P as mp,Pt as pp,Qt as We,Rt as Qr,St as hp,Tt as He,Ut as St,V as gp,Wt as Zr,Yt as yp,Zt as ce,_ as bp,at as V,dt as Wt,en as qt,gt as wp,ht as vp,lt as xp,m as Ep,ot as Sp,qt as mt,rn as $n,st as R,ut as Ke,w as kp,xt as Cp}from"./dist-12S8I4CH.js";import{C as Np,E as Ip,I as Tp,O as Ap,S as Lp,a as Op,c as _p,n as ea,r as Up,w as jp}from"./dist-CiVShZKM.js";import{o as qi}from"./arrays-DbOq36rN.js";import{n as Pp}from"./once-CGKw_kwj.js";import{t as ta}from"./createReducer-DGx5Af-C.js";import{a as Dp,c as Mp,f as Wn,h as Fp,i as Rp,l as Ht,n as Hi,o as Bp,t as Gp}from"./dist-DYEuVkEX.js";import{t as Jp}from"./main-BNL5rxQw.js";import{r as zi}from"./strings--BknHX9C.js";import{r as qn,t as Yi}from"./requests-9-v2bhoi.js";import{t as Vp}from"./createLucideIcon-w-Qo9n0R.js";import{r as Ki,t as $p,__tla as Wp}from"./layout-CKtzwJnB.js";import{t as qp}from"./x-C-Eq0ag8.js";import{t as Hp}from"./circle-check-C32B6Qa1.js";import{B as zp,F as Yp,L as Kp,N as Xp,O as Qp,V as Zp,a as Xi,d as eh,k as Qi,n as th,o as nh,r as Zi,s as rh,w as ah}from"./add-cell-with-ai-BU5EDuHt.js";import{t as oh}from"./database-zap-CKO8g4BU.js";import{r as ih,t as sh}from"./file-icons-mgXTzM1c.js";import{t as lh}from"./components-Cfpwf2kg.js";import{n as ch}from"./spinner-D-V4psAa.js";import{n as na,t as es}from"./useDeleteCell-Cy23OP4e.js";import{t as ts}from"./save-DBuEmnnF.js";import{Y as uh,Z as ns}from"./input-JxFwu-3G.js";import{t as dh}from"./sparkles-DUCpRFlS.js";import{t as fh}from"./badge-B92a4ePY.js";import{t as mh}from"./preload-helper-TXkS1QI3.js";import{a as ph}from"./dist-CPjTeT8p.js";import{t as kt}from"./use-toast-BwJoaaDM.js";import{n as Ze}from"./paths-BKO-pHK6.js";import{t as hh}from"./session-BmukRjSi.js";import{r as gh}from"./useTheme-Bxv9B31g.js";import{n as rs}from"./copy-Bxb1_Gtw.js";import{k as yh}from"./usePress-5hBv4sjD.js";import{t as bh}from"./context-BFPaAUK_.js";import{a as wh}from"./useRunCells-kmbsc2R5.js";import{c as as,i as os,n as is,r as vh}from"./dialog-BCVepWLJ.js";import{t as ss}from"./useHotkey-DLZvrRZT.js";import{i as Hn}from"./numbers-rmawRqQP.js";import{n as ls}from"./ImperativeModal-fY-ZfT0b.js";import{a as xh}from"./errors-PgHhDa-M.js";import{t as K}from"./extends-B9D0JO9U.js";import{t as zt}from"./objectWithoutPropertiesLoose-CboCOq4o.js";import{t as Eh}from"./kbd-C5HnBH5U.js";import{a as ra}from"./useInstallPackage-WiYBwhUO.js";import{i as Sh,n as cs}from"./state-Brswj8bD.js";import{a as kh,o as Ch}from"./cell-link-D0aELsL_.js";import{r as us}from"./html-to-image-D_C-hjtC.js";import{a as Nh}from"./focus-0L1nX7M9.js";import{n as Ih}from"./useAsyncData-Bg5iAViP.js";import{a as Th,o as ds,r as Ah,s as fs,t as Lh}from"./command-Dqxie4gq.js";import{a as ms}from"./renderShortcut-Bl8_FVn8.js";import{n as Oh,t as _h}from"./icons-CIPE8AIY.js";import{n as Ct}from"./esm-B30N1GS0.js";import{t as ps}from"./dist-CrKffqgx.js";import{t as Uh}from"./requests-BMphPdzB.js";import{n as jh}from"./formatting-COz4XEaB.js";import{t as Ph}from"./useSplitCell-BK5mnkkL.js";import{t as aa}from"./state-C4kiwedg.js";import{n as Dh,r as Mh,t as hs}from"./panel-accordion-state-D1UP17Lk.js";import{co as Fh,do as oa,fo as Rh,ft as Bh,go as Nt,ho as gs,lo as ia,mo as ys,oo as Gh,po as Jh,so as bs,uo as ws,__tla as Vh}from"./loro_wasm_bg-BPjF1TWb.js";import{t as $h}from"./ws-Dj1iZVFK.js";import{t as vs}from"./Inputs-BmtHnGKp.js";import{r as Wh,t as qh}from"./skeleton-BF2YAlLu.js";let sa,Yt,zn,Yn,Kn,la,xe,xs,Es,Ss,ks,ca,ua,pt,Cs,Ns,Is,Kt,Xn,Ts,Hh=Promise.all([(()=>{try{return km}catch{}})(),(()=>{try{return ap}catch{}})(),(()=>{try{return Wp}catch{}})(),(()=>{try{return Vh}catch{}})()]).then(async()=>{var Ln,ci,Se,ke,Ce,Ne,Ie,Te,Ae,Le,Oe,_e,Ue,je,Pe,De,Me,Fe,Re,Be,Ge;var te=Vp("file-pen",[["path",{d:"M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34",key:"o6klzx"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z",key:"zhnas1"}]]);const H={showInput:"Mod-l",acceptEdit:"Mod-y",rejectEdit:"Mod-u"};var be=300;const Tt=$t.define({combine:t=>$n(t,{onError:console.error,inputDebounceTime:be,keymaps:H},{onError:(e,n)=>e&&n,inputDebounceTime:(e,n)=>e&&n,keymaps:(e,n)=>e&&n})}),ot=ce.define(),it=We.define({create(){return{show:!1,lineFrom:0,lineTo:0}},update(t,e){for(let n of e.effects)if(n.is(ot))return n.value;return t}}),At=ce.define(),Lt=ce.define(),fa=We.define({create(){return{shouldFocus:!1,inputValue:""}},update(t,e){let n=t;for(let r of e.effects)r.is(At)&&(n={...n,inputValue:r.value}),r.is(Lt)&&(n={...n,shouldFocus:r.value});return n}}),Xt=ce.define(),Ot=We.define({create(){return null},update(t,e){for(let n of e.effects)if(n.is(Xt))return n.value;return t}}),ht=ce.define(),ma=We.define({create(){return!1},update(t,e){for(let n of e.effects)if(n.is(ht))return n.value;return t}});var As=1;const pa=t=>{let{state:e}=t,n=e.selection.main;if(n.empty)return!1;let r=e.doc,a=r.lineAt(n.from),o=r.lineAt(n.to);if(e.sliceDoc(a.from,o.to).trim().length<As)return!1;let i=Math.max(1,Math.min(a.number,r.lines)),s=Math.max(1,Math.min(o.number,r.lines));return t.dispatch({effects:[ot.of({show:!0,lineFrom:i,lineTo:s}),Lt.of(!0),At.of("")],selection:St.cursor(a.from)}),!0},ha=t=>t.state.field(Ot)?(t.dispatch({effects:[Xt.of(null),ot.of({show:!1,lineFrom:0,lineTo:0}),Lt.of(!1),At.of(""),ht.of(!1)]}),!0):!1,ga=t=>{let e=t.state.field(Ot);return e?(t.dispatch({changes:{from:e.from,to:e.to,insert:e.oldCode},effects:[Xt.of(null),ot.of({show:!1,lineFrom:0,lineTo:0}),Lt.of(!1),At.of(""),ht.of(!1)]}),!0):!1};var Qn={mac:"\u2318",windows:"\u229E Win",default:"Ctrl"};function Ls(){return navigator.platform.startsWith("Mac")?Qn.mac:navigator.platform.startsWith("Win")?Qn.windows:Qn.default}function Zn(t){return t.replace("Mod",Ls()).replace("-"," ").toUpperCase()}function pe(t,e){let n=document.createElement(t);return n.className=e,n}function Os(t,e,n=void 0){let r=()=>{};return(...a)=>(r(),new Promise((o,i)=>{let s=setTimeout(()=>o(t(...a)),e);r=()=>{clearTimeout(s),n!==void 0&&i(n)}}))}var Qt=We.define({create(){return{suggestion:null}},update(t,e){let n=e.effects.find(r=>r.is(Zt));return!e.docChanged&&!n&&!e.selection?t:n&&e.state.doc===n.value.doc?{suggestion:n.value.text}:{suggestion:null}}}),Zt=ce.define();function _s(t,e){let n=t.state.selection.main.head,r=[],a=V.widget({widget:new Us(e),side:1});return r.push(a.range(n)),V.set(r)}var Us=class extends Wt{constructor(e){super();g(this,"suggestion");this.suggestion=e}toDOM(){let e=document.createElement("span");return e.style.opacity="0.4",e.className="cm-inline-suggestion",e.textContent=this.suggestion,e.setAttribute("role","suggestion"),e.setAttribute("aria-label",`Suggestion: ${this.suggestion}`),e}get lineBreaks(){return this.suggestion.split(`
3
3
  `).length-1}},js=class{constructor(t){g(this,"cache",new Map);g(this,"timeout");this.timeout=t}get(t){let e=this.cache.get(t);return e?Date.now()-e.timestamp>this.timeout?(this.cache.delete(t),null):e.result:null}set(t,e){this.cache.set(t,{result:e,timestamp:Date.now()})}},Ps=(t,e)=>Ke.fromClass(class{constructor(){g(this,"abortController",null);g(this,"cache");this.cache=new js(e.cacheTimeout??1e3)}async update(n){var i,s,c,l,u;if(!n.docChanged||((s=(i=e.events)==null?void 0:i.beforeSuggestionFetch)==null?void 0:s.call(i,n.view))===!1)return;(c=this.abortController)==null||c.abort(),this.abortController=new AbortController;let r=n.state.doc,a=r.toString(),o=this.cache.get(a);if(o){n.view.dispatch({effects:Zt.of({text:o,doc:r})});return}try{let d=await t(n.state,this.abortController.signal,n.view);if(this.abortController.signal.aborted||((u=(l=e.events)==null?void 0:l.shouldShowSuggestion)==null?void 0:u.call(l,n.view,d))===!1)return;this.cache.set(a,d),n.view.dispatch({effects:Zt.of({text:d,doc:r})})}catch(d){d instanceof Error&&d.name!=="AbortError"&&console.error("Suggestion fetch error:",d)}}destroy(){var n;(n=this.abortController)==null||n.abort()}}),Ds=Ke.fromClass(class{constructor(){g(this,"decorations");this.decorations=V.none}update(t){var n;let e=(n=t.state.field(Qt))==null?void 0:n.suggestion;if(!e){this.decorations=V.none;return}this.decorations=_s(t.view,e)}},{decorations:t=>t.decorations});function Ms(t,e,n,r){return{...t.changeByRange(a=>{if(a===t.selection.main)return{changes:{from:n,to:r,insert:e},range:St.cursor(n+e.length)};let o=r-n;return!a.empty||o&&t.sliceDoc(a.from-o,a.from)!==t.sliceDoc(n,r)?{range:a}:{changes:{from:a.from-o,to:a.from,insert:e},range:St.cursor(a.from-o+e.length)}}),userEvent:"input.complete"}}var Fs=t=>{var r,a,o;let e=(r=t.state.field(Qt))==null?void 0:r.suggestion;if(!e)return!1;let n=t.state.facet(er);return t.dispatch({...Ms(t.state,e,t.state.selection.main.head,t.state.selection.main.head)}),(o=(a=n.events)==null?void 0:a.onSuggestionAccepted)==null||o.call(a,t,e),!0},ya=t=>{var r,a,o;let e=(r=t.state.field(Qt))==null?void 0:r.suggestion;if(!e)return!1;let n=t.state.facet(er);return t.dispatch({effects:Zt.of({text:null,doc:t.state.doc})}),(o=(a=n.events)==null?void 0:a.onSuggestionRejected)==null||o.call(a,t,e),!0},Rs=He.of([{key:"Tab",run:Fs},{key:"Escape",run:ya}]),er=$t.define({combine:t=>t.at(-1)});function ba(t){let{delay:e=500,includeKeymap:n=!0}=t,r=Os(t.fetchFn,e);return[Qt,er.of(t),Ps(r,t),Ds,n?Rs:[]]}const Bs=R.baseTheme({".cm-ai-input-container":{display:"flex",flexDirection:"column",gap:"4px",width:"min(calc(100% + 7px), 500px)",padding:"5px 5px",margin:"0 -6px",backgroundColor:"light-dark(rgb(241, 243, 245), rgb(40, 40, 40))"},".cm-ai-input":{display:"block",width:"100%",padding:"3px 8px",border:"2px solid rgb(51, 154, 240)",borderRadius:"5px",fontSize:"12px"},".cm-ai-help-info-button":{fontSize:"10px",paddingLeft:"10px",height:"18px",color:"light-dark(rgb(109, 117, 125), rgb(170, 170, 170))",display:"block",marginRight:"auto"},".cm-ai-help-info-button:hover":{color:"light-dark(rgb(89, 97, 105), rgb(190, 190, 190))"},".cm-ai-generate-button":{background:"#0E639C",border:"none",padding:"2px 6px",color:"#ffffff",cursor:"pointer",font:"inherit",borderRadius:"4px","&:hover":{backgroundColor:"#1177bb"}},".cm-line.cm-ai-selection, .cm-line.cm-ai-selection.cm-active-line":{backgroundColor:"light-dark(color-mix(in srgb, rgb(223, 227, 232) 50%, transparent), color-mix(in srgb, rgb(50, 50, 50) 50%, transparent)) !important"},".cm-line:has(.cm-new-code-line)":{backgroundColor:"light-dark(color-mix(in srgb, rgb(183, 235, 143) 50%, transparent), color-mix(in srgb, rgb(40, 100, 40) 50%, transparent)) !important"},".cm-old-code-container":{backgroundColor:"light-dark(rgb(255, 205, 205), rgb(100, 40, 40))",position:"relative",display:"flex",paddingTop:"0",width:"100%",alignItems:"center"},".cm-code-button":{position:"absolute",right:"5px",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",fontSize:"16px"},".cm-floating-buttons":{fontFamily:"sans-serif",position:"absolute",top:"-20px",left:"5px",display:"flex"},".cm-floating-button":{fontFamily:"sans-serif",padding:"2px 5px",fontSize:"10px",cursor:"pointer",fontWeight:"700"},".cm-floating-accept":{backgroundColor:"light-dark(rgb(55, 125, 34), rgb(40, 80, 25))",borderTopLeftRadius:"5px",borderBottomLeftRadius:"5px",color:"white",filter:"brightness(90%)","&:hover":{filter:"brightness(100%)"}},".cm-floating-reject":{backgroundColor:"light-dark(rgb(220, 53, 69), rgb(180, 40, 50))",color:"white",borderTopRightRadius:"5px",borderBottomRightRadius:"5px",filter:"brightness(90%)","&:hover":{filter:"brightness(100%)"}},".hotkey":{display:"inline-block",padding:"0 4px",borderRadius:"3px",backgroundColor:"rgba(255, 255, 255, 0.1)",fontSize:"90%"},".cm-ai-loading-indicator":{fontStyle:"italic",fontSize:"10px",paddingLeft:"12px",color:"light-dark(rgb(109, 117, 125), rgb(170, 170, 170))",opacity:"0",transition:"opacity 0.3s ease-in-out","&::after":{content:'""',display:"inline-block",animation:"ellipsis-pulse 1.5s steps(4, end) infinite"},"&:not(:empty)":{opacity:"1"}},".cm-ai-input:disabled":{opacity:"0.5"},"@keyframes ellipsis-pulse":{"0%":{content:"'.'"},"25%":{content:"'..'"},"50%":{content:"'...'"},"75%":{content:"''"}},".cm-ai-loading-container":{display:"flex",alignItems:"center",padding:"0 8px"},".cm-ai-cancel-button":{padding:"2px 8px",fontSize:"10px",borderRadius:"4px",color:"light-dark(rgb(109, 117, 125), rgb(170, 170, 170))",cursor:"pointer","&:hover":{background:"light-dark(rgb(223, 227, 232), rgb(50, 50, 50))"}},".hidden":{display:"none"}});function Gs(t){var s,c;let e=t.state.facet(Tt),n={...H,...e.keymaps},r=t.state.facet(en),a=pe("div","cm-ai-tooltip").appendChild(pe("div","cm-ai-tooltip-button")),o=a.appendChild(document.createElement("span"));o.textContent=`${r.label} `;let i=o.appendChild(document.createElement("span"));return i.className="hotkey",i.textContent=Zn(n.showInput),(s=a.querySelector("span"))==null||s.addEventListener("mousedown",l=>{l.stopPropagation(),l.button===0&&l.preventDefault()}),(c=a.querySelector("span"))==null||c.addEventListener("click",l=>{l.preventDefault(),pa(t)}),a}const en=$t.define({combine(t){return $n(t,{render:Gs,hideOnBlur:!1,label:"Edit with AI"})}}),Js=Ke.fromClass((ci=class{constructor(t){g(this,"view");g(this,"suppress");g(this,"dom");g(this,"mousedown",()=>{this.suppress=!0});g(this,"mouseup",()=>{this.suppress=!1,this.display(this.view)});g(this,"scroll",()=>{this.display(this.view)});g(this,"windowScroll",()=>{this.display(this.view)});gi(this,Ln,t=>{var n;let e=t.state.selection.ranges.find(r=>!r.empty);if(e&&!this.suppress){let r=t.coordsAtPos(e.from),a=t.coordsAtPos(e.to);if(!r||!a)return;let o=t.dom.getBoundingClientRect(),i=(n=t.dom.parentElement)==null?void 0:n.getBoundingClientRect(),s=v=>v.top>=o.top&&v.top<=o.bottom&&v.left>=o.left&&v.left<=o.right,c=v=>!i||v.top>=i.top&&v.top<=i.bottom&&v.left>=i.left&&v.left<=i.right,l=s(r)||s(a),u=c(r)||c(a);if(!l||!u){this.dom.style.display="none",this.dom.setAttribute("aria-hidden","true");return}this.dom.style.display="flex",this.dom.setAttribute("aria-hidden","false");let d=this.dom.getBoundingClientRect(),p=s(r)?r:a,f=o.right-d.width,m=Math.min(p.left,f),y=p.top-d.height,b=i?i.y:-1/0;y<b&&(y=a.bottom),this.dom.style.left=`${m}px`,this.dom.style.top=`${y}px`,requestAnimationFrame(()=>{this.dom&&this.dom.setAttribute("aria-hidden","false")})}else this.dom.style.display="none",this.dom.setAttribute("aria-hidden","true")});this.view=t;let e=t.state.facet(en);this.suppress=!1,document.addEventListener("mousedown",this.mousedown),document.addEventListener("mouseup",this.mouseup),t.scrollDOM.addEventListener("scroll",this.scroll),window.addEventListener("scroll",this.windowScroll,!0);let n=e.render(t);t.dom.appendChild(n),this.dom=n}update(t){this.display(t.view)}docViewUpdate(t){this.display(t)}display(t){if(t.state.field(it).show){this.dom.style.display="none";return}if(t.state.facet(en).hideOnBlur&&!t.hasFocus){this.dom.style.display="none",this.dom.setAttribute("aria-hidden","true");return}t.requestMeasure({read:hi(this,Ln)})}destroy(){document.removeEventListener("mousedown",this.mousedown),document.removeEventListener("mouseup",this.mouseup),this.view.scrollDOM.removeEventListener("scroll",this.scroll),window.removeEventListener("scroll",this.windowScroll,!0),this.dom.remove()}},Ln=new WeakMap,ci));var Vs=R.baseTheme({".cm-ai-tooltip-button":{userSelect:"none",fontFamily:"system-ui, -apple-system, sans-serif",position:"fixed",display:"flex",boxSizing:"border-box",padding:"2px 6px",borderRadius:"4px",fontSize:"12px",backgroundColor:"#0E639C",color:"#ffffff",border:"1px solid transparent",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",zIndex:"999",transition:"opacity 0.5s","&[aria-hidden='true']":{opacity:"0"},"&[aria-hidden='false']":{opacity:"1"},"& > span":{pointerEvents:"auto",cursor:"pointer",display:"inline-block",padding:"2px"},"&:hover":{backgroundColor:"#1177bb"}}});function $s(){return[Js,Vs]}var Ws=class extends Wt{constructor(e){super();g(this,"oldCode");this.oldCode=e}toDOM(e){let n=pe("div","cm-old-code-container");n.setAttribute("role","region"),n.setAttribute("aria-label","Previous code version");let r=pe("div","cm-old-code cm-line");r.textContent=this.oldCode;let a=pe("div","cm-floating-buttons"),o=e.state.facet(Tt),i={...H,...o.keymaps},s=pe("button","cm-floating-button cm-floating-accept");s.innerHTML=`<span class="hotkey">${Zn(i.acceptEdit)}</span> Accept`,s.setAttribute("aria-label","Accept changes"),s.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation(),e.focus(),ha(e)});let c=pe("button","cm-floating-button cm-floating-reject");return c.innerHTML=`<span class="hotkey">${Zn(i.rejectEdit)}</span> Reject`,c.setAttribute("aria-label","Reject changes"),c.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation(),e.focus(),ga(e)}),a.append(s,c),n.append(r,a),n}updateDOM(e,n){return!0}},qs=class extends Wt{constructor(e){super();g(this,"complete");g(this,"abortController",null);g(this,"dom",null);g(this,"input",null);g(this,"loadingContainer",null);g(this,"helpInfo",null);g(this,"inputContainer",null);g(this,"form",null);g(this,"view",null);g(this,"onKeyDown",async e=>{e.key==="Enter"&&!e.shiftKey?(e.preventDefault(),await this.handleSubmit()):e.key==="Escape"&&this.onCancel()});g(this,"onCancel",()=>{this.cleanup();let e=this.view;e&&(e.dispatch({effects:[ot.of({show:!1,lineFrom:0,lineTo:0}),ht.of(!1)]}),e.focus())});g(this,"handleSubmit",async e=>{var m;let n=this.view;if(!n)return;let r=n.state.facet(Tt);e==null||e.stopPropagation();let a=n.state.field(it),{input:o}=this;if(!o)return;let i=o.value.trim();if(!a.show||!i)return;let s=n.state.doc.line(a.lineFrom),c=n.state.doc.line(a.lineTo),l=s.from,u=c.to,d=n.state.sliceDoc(l,u),p=n.state.sliceDoc(0,l),f=n.state.sliceDoc(u);this.abortController=new AbortController,n.dispatch({effects:ht.of(!0)}),this.toggleLoading(!0);try{let y=await this.complete({prompt:i,selection:d,codeBefore:p,codeAfter:f,editorView:n,signal:this.abortController.signal});if(!n.state.field(it).show)return;if(!y||typeof y!="string")throw Error("Invalid completion result");n.dispatch({changes:{from:l,to:u,insert:y},effects:[ot.of({show:!1,lineFrom:0,lineTo:0}),Xt.of({from:l,to:l+y.length,oldCode:d,newCode:y}),ht.of(!1)]})}catch(y){if(y instanceof DOMException&&y.name==="AbortError")return;(m=r.onError)==null||m.call(r,y)}finally{this.cleanup(),this.toggleLoading(!1),n.focus()}});this.complete=e}toDOM(e){if(this.dom)return this.dom;this.view=e;let n=e.state.field(fa),r=e.state.field(ma),a=pe("div","cm-ai-input-container");this.inputContainer=a,this.dom=a;let o=pe("form","cm-ai-input-form");this.form=o,o.setAttribute("role","search"),o.setAttribute("aria-label","AI editing instructions"),o.addEventListener("submit",b=>b.preventDefault());let i=pe("input","cm-ai-input");this.input=i,o.append(i),i.placeholder="Editing instructions...",i.setAttribute("aria-label","AI editing instructions"),i.setAttribute("autocomplete","off"),i.setAttribute("spellcheck","true"),i.value=n.inputValue;let s=pe("div","cm-ai-loading-container");this.loadingContainer=s;let c=pe("div","cm-ai-loading-indicator");c.setAttribute("role","status"),c.setAttribute("aria-live","polite"),c.textContent="Generating";let l=pe("button","cm-ai-cancel-button");l.textContent="Cancel",l.setAttribute("aria-label","Cancel code generation"),l.addEventListener("click",this.onCancel),s.append(l,c);let u=pe("div","cm-ai-help-info");this.helpInfo=u;let d=u.appendChild(document.createElement("button"));d.className="cm-ai-help-info-button",d.textContent="Esc to close",d.addEventListener("click",this.onCancel);let p=pe("button","cm-ai-generate-button");p.textContent="\u23CE Generate",p.setAttribute("aria-label","Generate code"),p.addEventListener("click",this.handleSubmit),this.toggleLoading(r),n.shouldFocus&&requestAnimationFrame(()=>{i.value=n.inputValue,i.focus(),e.dispatch({effects:Lt.of(!1)})}),f(i.value),i.addEventListener("input",y),i.addEventListener("keydown",this.onKeyDown);function f(b){u.replaceChildren(b?p:d)}let m="";function y(){e.dispatch({effects:At.of(i.value)});let b=i.value.trim();b!==m&&(m=b,f(b))}return a}toggleLoading(e){var n;this.inputContainer&&this.form&&this.loadingContainer&&this.helpInfo&&((n=this.inputContainer)==null||n.replaceChildren(this.form,e?this.loadingContainer:this.helpInfo))}updateDOM(e,n){return this.dom=e,this.input=e.querySelector(".cm-ai-input"),!0}cleanup(){var e,n,r;(e=this.abortController)==null||e.abort(),this.abortController=null,(n=this.dom)==null||n.remove(),(r=this.input)==null||r.remove(),this.dom=null,this.input=null}destroy(){this.cleanup()}};function Hs(t){if(!t.prompt)throw Error("prompt function is required");let e={...H,...t.keymaps};return[Tt.of(t),it,fa,Ot,ma,$s(),Bs,He.of([{key:e.showInput,run:pa}]),mt.highest([He.of([{key:e.acceptEdit,run:ha},{key:e.rejectEdit,run:ga}])]),zs,Ys,Ks,Xs]}const zs=R.updateListener.of(t=>{let e=t.state.field(it);if(!e.show||!t.docChanged)return;let{lineFrom:n,lineTo:r}=e,a=!1;t.changes.iterChanges((o,i,s,c)=>{let l=t.state.doc.lineAt(o).number;if(l<n){let u=t.state.doc.lineAt(c).number-t.state.doc.lineAt(s).number;n+=u,r+=u,a=!0}else if(l<=r){let u=t.state.doc.lineAt(c).number-t.state.doc.lineAt(s).number;r+=u,a=!0}}),a&&t.view.dispatch({effects:[ot.of({show:!0,lineFrom:n,lineTo:r})]})}),Ys=R.decorations.of(t=>{let e=t.state.field(Ot);return e?V.set([V.mark({class:"cm-new-code-line"}).range(e.from,e.to)]):V.none}),Ks=R.decorations.compute([it],t=>{let e=t.field(it),n=t.facet(Tt),r=[];if(e.show){let a=e.lineFrom,o=e.lineTo;for(let i=a;i<=o;i++){let s=t.doc.line(i).from;r.push(V.line({class:"cm-ai-selection"}).range(s)),i===a&&r.push(V.widget({widget:new qs(n.prompt),side:-1}).range(s))}}return V.set(r)}),Xs=We.define({create(t){return V.none},update(t,e){let n=e.state.field(Ot);return n?V.set([V.widget({widget:new Ws(n.oldCode),block:!0}).range(n.from)]):V.none},provide:t=>R.decorations.from(t)});var Qs=ve(),I=yi(Uf(),1),tr=()=>({entries:new Map}),{valueAtom:wa,useActions:va}=ta(tr,{submit:(t,e)=>{let{cellIds:n,deleteCell:r,deleteManyCells:a,store:o}=e,i=o.get(rt),s=o.get(Mn),c=new Set(i.cellIds.inOrderIds.filter(d=>i.cellData[d].code.trim()==="")),l=new Map;for(let d of n){if(c.has(d)){l.set(d,{cellId:d,type:"simple"});continue}let p=i.cellRuntime[d],f=new Map;for(let y of Object.values(s)){let b=y.declaredBy.includes(d),v=y.usedBy.some(S=>!c.has(S));b&&v&&f.set(y.name,y.usedBy)}let m;p!=null&&p.runElapsedTimeMs&&p.runElapsedTimeMs>2e3&&(m=p.runElapsedTimeMs),f.size===0&&m===void 0?l.set(d,{cellId:d,type:"simple"}):l.set(d,{cellId:d,type:"expensive",executionDurationMs:m,defs:f})}let u=[...l.values()].every(d=>d.type==="simple");return l.size>0&&u?(l.size===1?r({cellId:[...l.values()][0].cellId}):a({cellIds:[...l.values()].map(d=>d.cellId)}),tr()):{...t,entries:l}},clear:()=>tr()});zn=function(){let t=Pr(),{submit:e,clear:n}=va(),{entries:r}=q(wa),a=es(),o=na();return(0,I.useMemo)(()=>({submit:i=>{e({cellIds:i,deleteCell:a,deleteManyCells:o,store:t})},clear:n,get idle(){return r.size===0},get shouldConfirmDelete(){return r.size>1}}),[t,e,n,r,a,o])},Ts=function(t){let e=(0,Qs.c)(16),n=q(wa),r=va(),a=na(),o;e[0]!==t||e[1]!==n.entries?(o=n.entries.get(t),e[0]=t,e[1]=n.entries,e[2]=o):o=e[2];let i=o;if(!i){let u;return e[3]===Symbol.for("react.memo_cache_sentinel")?(u={isPending:!1},e[3]=u):u=e[3],u}if(n.entries.size!==1){let u;return e[4]===i?u=e[5]:(u={isPending:!0,shouldConfirmDelete:!1,...i},e[4]=i,e[5]=u),u}let s;e[6]!==r||e[7]!==a||e[8]!==n.entries?(s=()=>{a({cellIds:[...n.entries.values()].map(Zs)}),r.clear()},e[6]=r,e[7]=a,e[8]=n.entries,e[9]=s):s=e[9];let c;e[10]===r?c=e[11]:(c=()=>r.clear(),e[10]=r,e[11]=c);let l;return e[12]!==i||e[13]!==s||e[14]!==c?(l={isPending:!0,...i,shouldConfirmDelete:!0,confirm:s,cancel:c},e[12]=i,e[13]=s,e[14]=c,e[15]=l):l=e[15],l};function Zs(t){return t.cellId}var xa=["python","sql","markdown"];function nr(t,e={}){var l;let{streaming:n=!1}=e,r=((l=t.match(/^\s*/))==null?void 0:l[0])??"",a=t.slice(r.length),o=null,i=!1;for(let u of xa)if(a.startsWith(`\`\`\`${u}`)){i=!0,o=a.slice(3+u.length),o.startsWith(`
4
4
  `)&&(o=o.slice(1));break}if(!i&&a.startsWith("```")){let u=a.slice(3);if(n&&el(u))return t;i=!0,o=u,o.startsWith(`
5
5
  `)&&(o=o.slice(1))}if(!i||o===null)return t;if(n)return o;let s=o.trimEnd(),c=o.slice(s.length);return s.endsWith("\n```")?s.slice(0,-4)+c:s.endsWith("```")?s.slice(0,-3)+c:o}function el(t){return t.includes(`
@@ -1 +1 @@
1
- import{s as W}from"./chunk-LvLJmgfZ.js";import{l as X,u as V}from"./useEvent-D91BmmQi.js";import"./react-Bj1aDYRI.js";import"./cells-DLYs3NiJ.js";import"./react-dom-CSu739Rf.js";import{t as U}from"./compiler-runtime-B3qBwwSJ.js";import{S as Y}from"./ai-model-dropdown-CLCa-gsg.js";import{m as Z,t as ee,u as le}from"./useEventListener-C0195JsF.js";import{t as te}from"./objects-BlG0ZrO0.js";import{C as ie,S as ae,g as oe}from"./utils-BWBBpCkT.js";import"./readonly-python-code-DUjqXwhi.js";import{t as re}from"./jsx-runtime-Blw4afVn.js";import"./fullscreen-CTDqNQr6.js";import"./popover-Bcz1Zikb.js";import"./JsonOutput-Bk2exFh0.js";import"./download-DenADH0w.js";import"./dist-12S8I4CH.js";import"./cjs-D5tzp-Y6.js";import"./main-BNL5rxQw.js";import"./useNonce-CbdaHKzX.js";import{r as ne}from"./requests-9-v2bhoi.js";import"./layout-yfmf2ZBx.js";import{t as de}from"./useCellActionButton-uxVyv3JK.js";import"./markdown-renderer-BfLNJGNj.js";import{a as pe,c as se,t as me}from"./useNotebookActions-D0VcNpNG.js";import"./dist-DcwTQG1A.js";import"./dist-DnjsPBRJ.js";import"./dist-BJZAIIze.js";import"./dist-aRc_dRed.js";import"./dist-CPjTeT8p.js";import"./session-BmukRjSi.js";import"./purify.es-CWmnYhGI.js";import"./dates-C2LWzsCZ.js";import{n as he}from"./useHotkey-DLZvrRZT.js";import"./share-852X_cqy.js";import"./tooltip-B7U4xkIN.js";import"./vega-loader.browser-Dun7Qe4B.js";import"./defaultLocale-DOVIEEPN.js";import"./defaultLocale-BUCH2FMc.js";import"./chunk-5FQGJX7Z-CYQpNADu.js";import"./html-to-image-D_C-hjtC.js";import{r as ce}from"./focus-0L1nX7M9.js";import"./react-resizable-panels.browser.esm-Z-MD3n3J.js";import{a as ye,c as fe,i as B,l as z,n as ue,o as J,r as be,s as ge}from"./command-Dqxie4gq.js";import{t as L}from"./renderShortcut-Bl8_FVn8.js";import"./esm-B30N1GS0.js";import"./name-cell-input-COtjRghz.js";import"./multi-icon-DVD1luis.js";import"./dist-CZvbHnyT.js";import"./dist-C-3FVUQA.js";import"./dist-l4RTzHX-.js";import"./dist-fLBYOt9R.js";import"./dist-DJuRuTXr.js";import"./dist-BKgHjzML.js";import"./dist-kLs0VbW_.js";import"./dist-D47O3FBX.js";import"./dist-DQl27SFq.js";import"./esm-BDGraAqp.js";var ke=U(),we=3;function Ce(){let e=(0,ke.c)(7),l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=[],e[0]=l):l=e[0];let[o,d]=se("marimo:commands",l),s;e[1]!==o||e[2]!==d?(s=u=>{d(xe([u,...o]).slice(0,we))},e[1]=o,e[2]=d,e[3]=s):s=e[3];let r;return e[4]!==o||e[5]!==s?(r={recentCommands:o,addRecentCommand:s},e[4]=o,e[5]=s,e[6]=r):r=e[6],r}function xe(e){return[...new Set(e)]}function Q(e){return e.dropdown!==void 0}function T(e,l=""){return e.flatMap(o=>o.label?Q(o)?T(o.dropdown,`${l+o.label} > `):{...o,label:l+o.label,additionalKeywords:o.additionalKeywords}:[])}var je=U();function Se(){let e=(0,je.c)(75),[l,o]=ie(),[d,s]=ae(),{saveAppConfig:r,saveUserConfig:u}=ne(),D;e[0]!==u||e[1]!==o?(D=async p=>{await u({config:p}).then(()=>{o(m=>({...m,...p}))})},e[0]=u,e[1]=o,e[2]=D):D=e[2];let t=D,F;e[3]!==r||e[4]!==s?(F=async p=>{await r({config:p}).then(()=>{s(p)})},e[3]=r,e[4]=s,e[5]=F):F=e[5];let N=F,G;if(e[6]!==d||e[7]!==l.completion||e[8]!==l.display||e[9]!==l.keymap||e[10]!==N||e[11]!==t){let p;e[13]===d?p=e[14]:(p=q=>q!==d.width,e[13]=d,e[14]=p);let m;e[15]!==d||e[16]!==N?(m=q=>({label:`App config > Set width=${q}`,handle:()=>{N({...d,width:q})}}),e[15]=d,e[16]=N,e[17]=m):m=e[17];let j;e[18]!==l.display||e[19]!==t?(j={label:"Config > Set theme: dark",handle:()=>{t({display:{...l.display,theme:"dark"}})}},e[18]=l.display,e[19]=t,e[20]=j):j=e[20];let b;e[21]!==l.display||e[22]!==t?(b={label:"Config > Set theme: light",handle:()=>{t({display:{...l.display,theme:"light"}})}},e[21]=l.display,e[22]=t,e[23]=b):b=e[23];let S;e[24]!==l.display||e[25]!==t?(S={label:"Config > Set theme: system",handle:()=>{t({display:{...l.display,theme:"system"}})}},e[24]=l.display,e[25]=t,e[26]=S):S=e[26];let R=l.keymap.preset==="vim",_;e[27]!==l.keymap||e[28]!==t?(_=()=>{t({keymap:{...l.keymap,preset:"vim"}})},e[27]=l.keymap,e[28]=t,e[29]=_):_=e[29];let v;e[30]!==R||e[31]!==_?(v={label:"Config > Switch keymap to VIM",hidden:R,handle:_},e[30]=R,e[31]=_,e[32]=v):v=e[32];let K=l.keymap.preset==="default",g;e[33]!==l.keymap||e[34]!==t?(g=()=>{t({keymap:{...l.keymap,preset:"default"}})},e[33]=l.keymap,e[34]=t,e[35]=g):g=e[35];let c;e[36]!==K||e[37]!==g?(c={label:"Config > Switch keymap to default (current: VIM)",hidden:K,handle:g},e[36]=K,e[37]=g,e[38]=c):c=e[38];let k;e[39]!==l.completion||e[40]!==t?(k=()=>{t({completion:{...l.completion,copilot:!1}})},e[39]=l.completion,e[40]=t,e[41]=k):k=e[41];let w=l.completion.copilot!=="github",E;e[42]!==k||e[43]!==w?(E={label:"Config > Disable GitHub Copilot",handle:k,hidden:w},e[42]=k,e[43]=w,e[44]=E):E=e[44];let C;e[45]!==l.completion||e[46]!==t?(C=()=>{t({completion:{...l.completion,copilot:"github"}})},e[45]=l.completion,e[46]=t,e[47]=C):C=e[47];let O=l.completion.copilot==="github",I;e[48]!==C||e[49]!==O?(I={label:"Config > Enable GitHub Copilot",handle:C,hidden:O},e[48]=C,e[49]=O,e[50]=I):I=e[50];let $=!l.display.reference_highlighting,x;e[51]!==l.display||e[52]!==t?(x=()=>{t({display:{...l.display,reference_highlighting:!1}})},e[51]=l.display,e[52]=t,e[53]=x):x=e[53];let y;e[54]!==$||e[55]!==x?(y={label:"Config > Disable reference highlighting",hidden:$,handle:x},e[54]=$,e[55]=x,e[56]=y):y=e[56];let h;e[57]!==l.display||e[58]!==t?(h=()=>{t({display:{...l.display,reference_highlighting:!0}})},e[57]=l.display,e[58]=t,e[59]=h):h=e[59];let H;e[60]!==l.display.reference_highlighting||e[61]!==h?(H={label:"Config > Enable reference highlighting",hidden:l.display.reference_highlighting,handle:h},e[60]=l.display.reference_highlighting,e[61]=h,e[62]=H):H=e[62];let i=l.display.cell_output==="above",a;e[63]!==l.display||e[64]!==t?(a=()=>{t({display:{...l.display,cell_output:"above"}})},e[63]=l.display,e[64]=t,e[65]=a):a=e[65];let A;e[66]!==i||e[67]!==a?(A={label:"Config > Set cell output area: above",hidden:i,handle:a},e[66]=i,e[67]=a,e[68]=A):A=e[68];let f=l.display.cell_output==="below",M;e[69]!==l.display||e[70]!==t?(M=()=>{t({display:{...l.display,cell_output:"below"}})},e[69]=l.display,e[70]=t,e[71]=M):M=e[71];let P;e[72]!==f||e[73]!==M?(P={label:"Config > Set cell output area: below",hidden:f,handle:M},e[72]=f,e[73]=M,e[74]=P):P=e[74],G=[...Y().filter(p).map(m),j,b,S,v,c,E,I,y,H,A,P].filter(_e),e[6]=d,e[7]=l.completion,e[8]=l.display,e[9]=l.keymap,e[10]=N,e[11]=t,e[12]=G}else G=e[12];return G}function _e(e){return!e.hidden}var ve=U(),n=W(re(),1),Ke=()=>{let e=(0,ve.c)(37),[l,o]=X(pe),d=he(),s=V(ce),r=V(oe),u;e[0]===s?u=e[1]:(u={cell:s},e[0]=s,e[1]=u);let D=de(u).flat();D=T(D);let t=Se(),F=me();F=[...T(F),...T(t)];let N=F.filter(He),G=te.keyBy(N,Ae),{recentCommands:p,addRecentCommand:m}=Ce(),j;e[2]===p?j=e[3]:(j=new Set(p),e[2]=p,e[3]=j);let b=j,S;e[4]!==r||e[5]!==o?(S=i=>{Z(r.getHotkey("global.commandPalette").key)(i)&&(i.preventDefault(),o(Me))},e[4]=r,e[5]=o,e[6]=S):S=e[6],ee(document,"keydown",S);let R;e[7]!==m||e[8]!==r||e[9]!==d||e[10]!==o?(R=(i,a)=>{let A=d[i];if(!A)return null;let f=r.getHotkey(i);return(0,n.jsxs)(J,{disabled:a.disabled,keywords:f.additionalKeywords,onSelect:()=>{m(i),o(!1),requestAnimationFrame(()=>{A()})},value:f.name,children:[(0,n.jsxs)("span",{children:[f.name,a.tooltip&&(0,n.jsx)("span",{className:"ml-2",children:a.tooltip})]}),(0,n.jsx)(z,{children:(0,n.jsx)(L,{shortcut:f.key})})]},i)},e[7]=m,e[8]=r,e[9]=d,e[10]=o,e[11]=R):R=e[11];let _=R,v;e[12]!==m||e[13]!==r||e[14]!==o?(v=i=>{let{label:a,handle:A,props:f,hotkey:M,additionalKeywords:P}=i,q=f===void 0?{}:f;return(0,n.jsxs)(J,{disabled:q.disabled,keywords:P,onSelect:()=>{m(a),o(!1),requestAnimationFrame(()=>{A()})},value:a,children:[(0,n.jsxs)("span",{children:[a,q.tooltip&&(0,n.jsxs)("span",{className:"ml-2",children:["(",q.tooltip,")"]})]}),M&&(0,n.jsx)(z,{children:(0,n.jsx)(L,{shortcut:r.getHotkey(M).key})})]},a)},e[12]=m,e[13]=r,e[14]=o,e[15]=v):v=e[15];let K=v,g=ue,c;e[16]===Symbol.for("react.memo_cache_sentinel")?(c=(0,n.jsx)(ye,{placeholder:"Type to search..."}),e[16]=c):c=e[16];let k=ge,w;e[17]===Symbol.for("react.memo_cache_sentinel")?(w=(0,n.jsx)(be,{children:"No results found."}),e[17]=w):w=e[17];let E=p.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(B,{heading:"Recently Used",children:p.map(i=>{let a=G[i];return le(i)?_(i,{disabled:a==null?void 0:a.disabled,tooltip:a==null?void 0:a.tooltip}):a&&!Q(a)?K({label:a.label,handle:a.handleHeadless||a.handle,props:{disabled:a.disabled,tooltip:a.tooltip},additionalKeywords:a.additionalKeywords}):null})}),(0,n.jsx)(fe,{})]}),C=B,O=r.iterate().map(i=>{if(b.has(i))return null;let a=G[i];return _(i,{disabled:a==null?void 0:a.disabled,tooltip:a==null?void 0:a.tooltip})}),I=N.map(i=>b.has(i.label)?null:K({label:i.label,handle:i.handleHeadless||i.handle,props:{disabled:i.disabled,tooltip:i.tooltip},additionalKeywords:i.additionalKeywords})),$;e[18]!==b||e[19]!==K?($=i=>b.has(i.label)?null:K({label:`Cell > ${i.label}`,handle:i.handleHeadless||i.handle,props:{disabled:i.disabled,tooltip:i.tooltip},additionalKeywords:i.additionalKeywords}),e[18]=b,e[19]=K,e[20]=$):$=e[20];let x=D.map($),y;e[21]!==C||e[22]!==I||e[23]!==x||e[24]!==O?(y=(0,n.jsxs)(C,{heading:"Commands",children:[O,I,x]}),e[21]=C,e[22]=I,e[23]=x,e[24]=O,e[25]=y):y=e[25];let h;e[26]!==k||e[27]!==y||e[28]!==w||e[29]!==E?(h=(0,n.jsxs)(k,{children:[w,E,y]}),e[26]=k,e[27]=y,e[28]=w,e[29]=E,e[30]=h):h=e[30];let H;return e[31]!==g||e[32]!==l||e[33]!==o||e[34]!==h||e[35]!==c?(H=(0,n.jsxs)(g,{open:l,onOpenChange:o,children:[c,h]}),e[31]=g,e[32]=l,e[33]=o,e[34]=h,e[35]=c,e[36]=H):H=e[36],H};function He(e){return!e.hotkey}function Ae(e){return e.label}function Me(e){return!e}export{Ke as default};
1
+ import{s as W}from"./chunk-LvLJmgfZ.js";import{l as X,u as V}from"./useEvent-D91BmmQi.js";import"./react-Bj1aDYRI.js";import"./cells-DLYs3NiJ.js";import"./react-dom-CSu739Rf.js";import{t as U}from"./compiler-runtime-B3qBwwSJ.js";import{S as Y}from"./ai-model-dropdown-CLCa-gsg.js";import{m as Z,t as ee,u as le}from"./useEventListener-C0195JsF.js";import{t as te}from"./objects-BlG0ZrO0.js";import{C as ie,S as ae,g as oe}from"./utils-BWBBpCkT.js";import"./readonly-python-code-DUjqXwhi.js";import{t as re}from"./jsx-runtime-Blw4afVn.js";import"./fullscreen-CTDqNQr6.js";import"./popover-Bcz1Zikb.js";import"./JsonOutput-Bk2exFh0.js";import"./download-DenADH0w.js";import"./dist-12S8I4CH.js";import"./cjs-D5tzp-Y6.js";import"./main-BNL5rxQw.js";import"./useNonce-CbdaHKzX.js";import{r as ne}from"./requests-9-v2bhoi.js";import"./layout-CKtzwJnB.js";import{t as de}from"./useCellActionButton-uxVyv3JK.js";import"./markdown-renderer-BfLNJGNj.js";import{a as pe,c as se,t as me}from"./useNotebookActions-0mLeYUwn.js";import"./dist-DcwTQG1A.js";import"./dist-DnjsPBRJ.js";import"./dist-BJZAIIze.js";import"./dist-aRc_dRed.js";import"./dist-CPjTeT8p.js";import"./session-BmukRjSi.js";import"./purify.es-CWmnYhGI.js";import"./dates-C2LWzsCZ.js";import{n as he}from"./useHotkey-DLZvrRZT.js";import"./share-852X_cqy.js";import"./tooltip-B7U4xkIN.js";import"./vega-loader.browser-Dun7Qe4B.js";import"./defaultLocale-DOVIEEPN.js";import"./defaultLocale-BUCH2FMc.js";import"./chunk-5FQGJX7Z-CYQpNADu.js";import"./html-to-image-D_C-hjtC.js";import{r as ce}from"./focus-0L1nX7M9.js";import"./react-resizable-panels.browser.esm-Z-MD3n3J.js";import{a as ye,c as fe,i as B,l as z,n as ue,o as J,r as be,s as ge}from"./command-Dqxie4gq.js";import{t as L}from"./renderShortcut-Bl8_FVn8.js";import"./esm-B30N1GS0.js";import"./name-cell-input-COtjRghz.js";import"./multi-icon-DVD1luis.js";import"./dist-CZvbHnyT.js";import"./dist-C-3FVUQA.js";import"./dist-l4RTzHX-.js";import"./dist-fLBYOt9R.js";import"./dist-DJuRuTXr.js";import"./dist-BKgHjzML.js";import"./dist-kLs0VbW_.js";import"./dist-D47O3FBX.js";import"./dist-DQl27SFq.js";import"./esm-BDGraAqp.js";var ke=U(),we=3;function Ce(){let e=(0,ke.c)(7),l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=[],e[0]=l):l=e[0];let[o,d]=se("marimo:commands",l),s;e[1]!==o||e[2]!==d?(s=u=>{d(xe([u,...o]).slice(0,we))},e[1]=o,e[2]=d,e[3]=s):s=e[3];let r;return e[4]!==o||e[5]!==s?(r={recentCommands:o,addRecentCommand:s},e[4]=o,e[5]=s,e[6]=r):r=e[6],r}function xe(e){return[...new Set(e)]}function Q(e){return e.dropdown!==void 0}function T(e,l=""){return e.flatMap(o=>o.label?Q(o)?T(o.dropdown,`${l+o.label} > `):{...o,label:l+o.label,additionalKeywords:o.additionalKeywords}:[])}var je=U();function Se(){let e=(0,je.c)(75),[l,o]=ie(),[d,s]=ae(),{saveAppConfig:r,saveUserConfig:u}=ne(),D;e[0]!==u||e[1]!==o?(D=async p=>{await u({config:p}).then(()=>{o(m=>({...m,...p}))})},e[0]=u,e[1]=o,e[2]=D):D=e[2];let t=D,F;e[3]!==r||e[4]!==s?(F=async p=>{await r({config:p}).then(()=>{s(p)})},e[3]=r,e[4]=s,e[5]=F):F=e[5];let N=F,G;if(e[6]!==d||e[7]!==l.completion||e[8]!==l.display||e[9]!==l.keymap||e[10]!==N||e[11]!==t){let p;e[13]===d?p=e[14]:(p=q=>q!==d.width,e[13]=d,e[14]=p);let m;e[15]!==d||e[16]!==N?(m=q=>({label:`App config > Set width=${q}`,handle:()=>{N({...d,width:q})}}),e[15]=d,e[16]=N,e[17]=m):m=e[17];let j;e[18]!==l.display||e[19]!==t?(j={label:"Config > Set theme: dark",handle:()=>{t({display:{...l.display,theme:"dark"}})}},e[18]=l.display,e[19]=t,e[20]=j):j=e[20];let b;e[21]!==l.display||e[22]!==t?(b={label:"Config > Set theme: light",handle:()=>{t({display:{...l.display,theme:"light"}})}},e[21]=l.display,e[22]=t,e[23]=b):b=e[23];let S;e[24]!==l.display||e[25]!==t?(S={label:"Config > Set theme: system",handle:()=>{t({display:{...l.display,theme:"system"}})}},e[24]=l.display,e[25]=t,e[26]=S):S=e[26];let R=l.keymap.preset==="vim",_;e[27]!==l.keymap||e[28]!==t?(_=()=>{t({keymap:{...l.keymap,preset:"vim"}})},e[27]=l.keymap,e[28]=t,e[29]=_):_=e[29];let v;e[30]!==R||e[31]!==_?(v={label:"Config > Switch keymap to VIM",hidden:R,handle:_},e[30]=R,e[31]=_,e[32]=v):v=e[32];let K=l.keymap.preset==="default",g;e[33]!==l.keymap||e[34]!==t?(g=()=>{t({keymap:{...l.keymap,preset:"default"}})},e[33]=l.keymap,e[34]=t,e[35]=g):g=e[35];let c;e[36]!==K||e[37]!==g?(c={label:"Config > Switch keymap to default (current: VIM)",hidden:K,handle:g},e[36]=K,e[37]=g,e[38]=c):c=e[38];let k;e[39]!==l.completion||e[40]!==t?(k=()=>{t({completion:{...l.completion,copilot:!1}})},e[39]=l.completion,e[40]=t,e[41]=k):k=e[41];let w=l.completion.copilot!=="github",E;e[42]!==k||e[43]!==w?(E={label:"Config > Disable GitHub Copilot",handle:k,hidden:w},e[42]=k,e[43]=w,e[44]=E):E=e[44];let C;e[45]!==l.completion||e[46]!==t?(C=()=>{t({completion:{...l.completion,copilot:"github"}})},e[45]=l.completion,e[46]=t,e[47]=C):C=e[47];let O=l.completion.copilot==="github",I;e[48]!==C||e[49]!==O?(I={label:"Config > Enable GitHub Copilot",handle:C,hidden:O},e[48]=C,e[49]=O,e[50]=I):I=e[50];let $=!l.display.reference_highlighting,x;e[51]!==l.display||e[52]!==t?(x=()=>{t({display:{...l.display,reference_highlighting:!1}})},e[51]=l.display,e[52]=t,e[53]=x):x=e[53];let y;e[54]!==$||e[55]!==x?(y={label:"Config > Disable reference highlighting",hidden:$,handle:x},e[54]=$,e[55]=x,e[56]=y):y=e[56];let h;e[57]!==l.display||e[58]!==t?(h=()=>{t({display:{...l.display,reference_highlighting:!0}})},e[57]=l.display,e[58]=t,e[59]=h):h=e[59];let H;e[60]!==l.display.reference_highlighting||e[61]!==h?(H={label:"Config > Enable reference highlighting",hidden:l.display.reference_highlighting,handle:h},e[60]=l.display.reference_highlighting,e[61]=h,e[62]=H):H=e[62];let i=l.display.cell_output==="above",a;e[63]!==l.display||e[64]!==t?(a=()=>{t({display:{...l.display,cell_output:"above"}})},e[63]=l.display,e[64]=t,e[65]=a):a=e[65];let A;e[66]!==i||e[67]!==a?(A={label:"Config > Set cell output area: above",hidden:i,handle:a},e[66]=i,e[67]=a,e[68]=A):A=e[68];let f=l.display.cell_output==="below",M;e[69]!==l.display||e[70]!==t?(M=()=>{t({display:{...l.display,cell_output:"below"}})},e[69]=l.display,e[70]=t,e[71]=M):M=e[71];let P;e[72]!==f||e[73]!==M?(P={label:"Config > Set cell output area: below",hidden:f,handle:M},e[72]=f,e[73]=M,e[74]=P):P=e[74],G=[...Y().filter(p).map(m),j,b,S,v,c,E,I,y,H,A,P].filter(_e),e[6]=d,e[7]=l.completion,e[8]=l.display,e[9]=l.keymap,e[10]=N,e[11]=t,e[12]=G}else G=e[12];return G}function _e(e){return!e.hidden}var ve=U(),n=W(re(),1),Ke=()=>{let e=(0,ve.c)(37),[l,o]=X(pe),d=he(),s=V(ce),r=V(oe),u;e[0]===s?u=e[1]:(u={cell:s},e[0]=s,e[1]=u);let D=de(u).flat();D=T(D);let t=Se(),F=me();F=[...T(F),...T(t)];let N=F.filter(He),G=te.keyBy(N,Ae),{recentCommands:p,addRecentCommand:m}=Ce(),j;e[2]===p?j=e[3]:(j=new Set(p),e[2]=p,e[3]=j);let b=j,S;e[4]!==r||e[5]!==o?(S=i=>{Z(r.getHotkey("global.commandPalette").key)(i)&&(i.preventDefault(),o(Me))},e[4]=r,e[5]=o,e[6]=S):S=e[6],ee(document,"keydown",S);let R;e[7]!==m||e[8]!==r||e[9]!==d||e[10]!==o?(R=(i,a)=>{let A=d[i];if(!A)return null;let f=r.getHotkey(i);return(0,n.jsxs)(J,{disabled:a.disabled,keywords:f.additionalKeywords,onSelect:()=>{m(i),o(!1),requestAnimationFrame(()=>{A()})},value:f.name,children:[(0,n.jsxs)("span",{children:[f.name,a.tooltip&&(0,n.jsx)("span",{className:"ml-2",children:a.tooltip})]}),(0,n.jsx)(z,{children:(0,n.jsx)(L,{shortcut:f.key})})]},i)},e[7]=m,e[8]=r,e[9]=d,e[10]=o,e[11]=R):R=e[11];let _=R,v;e[12]!==m||e[13]!==r||e[14]!==o?(v=i=>{let{label:a,handle:A,props:f,hotkey:M,additionalKeywords:P}=i,q=f===void 0?{}:f;return(0,n.jsxs)(J,{disabled:q.disabled,keywords:P,onSelect:()=>{m(a),o(!1),requestAnimationFrame(()=>{A()})},value:a,children:[(0,n.jsxs)("span",{children:[a,q.tooltip&&(0,n.jsxs)("span",{className:"ml-2",children:["(",q.tooltip,")"]})]}),M&&(0,n.jsx)(z,{children:(0,n.jsx)(L,{shortcut:r.getHotkey(M).key})})]},a)},e[12]=m,e[13]=r,e[14]=o,e[15]=v):v=e[15];let K=v,g=ue,c;e[16]===Symbol.for("react.memo_cache_sentinel")?(c=(0,n.jsx)(ye,{placeholder:"Type to search..."}),e[16]=c):c=e[16];let k=ge,w;e[17]===Symbol.for("react.memo_cache_sentinel")?(w=(0,n.jsx)(be,{children:"No results found."}),e[17]=w):w=e[17];let E=p.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(B,{heading:"Recently Used",children:p.map(i=>{let a=G[i];return le(i)?_(i,{disabled:a==null?void 0:a.disabled,tooltip:a==null?void 0:a.tooltip}):a&&!Q(a)?K({label:a.label,handle:a.handleHeadless||a.handle,props:{disabled:a.disabled,tooltip:a.tooltip},additionalKeywords:a.additionalKeywords}):null})}),(0,n.jsx)(fe,{})]}),C=B,O=r.iterate().map(i=>{if(b.has(i))return null;let a=G[i];return _(i,{disabled:a==null?void 0:a.disabled,tooltip:a==null?void 0:a.tooltip})}),I=N.map(i=>b.has(i.label)?null:K({label:i.label,handle:i.handleHeadless||i.handle,props:{disabled:i.disabled,tooltip:i.tooltip},additionalKeywords:i.additionalKeywords})),$;e[18]!==b||e[19]!==K?($=i=>b.has(i.label)?null:K({label:`Cell > ${i.label}`,handle:i.handleHeadless||i.handle,props:{disabled:i.disabled,tooltip:i.tooltip},additionalKeywords:i.additionalKeywords}),e[18]=b,e[19]=K,e[20]=$):$=e[20];let x=D.map($),y;e[21]!==C||e[22]!==I||e[23]!==x||e[24]!==O?(y=(0,n.jsxs)(C,{heading:"Commands",children:[O,I,x]}),e[21]=C,e[22]=I,e[23]=x,e[24]=O,e[25]=y):y=e[25];let h;e[26]!==k||e[27]!==y||e[28]!==w||e[29]!==E?(h=(0,n.jsxs)(k,{children:[w,E,y]}),e[26]=k,e[27]=y,e[28]=w,e[29]=E,e[30]=h):h=e[30];let H;return e[31]!==g||e[32]!==l||e[33]!==o||e[34]!==h||e[35]!==c?(H=(0,n.jsxs)(g,{open:l,onOpenChange:o,children:[c,h]}),e[31]=g,e[32]=l,e[33]=o,e[34]=h,e[35]=c,e[36]=H):H=e[36],H};function He(e){return!e.hotkey}function Ae(e){return e.label}function Me(e){return!e}export{Ke as default};