@malloy-publisher/sdk 0.0.149 → 0.0.150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js
CHANGED
|
@@ -225,7 +225,7 @@ import {${t.sourceName}}" from '${t.modelPath}'"
|
|
|
225
225
|
}
|
|
226
226
|
`}function rU(e,t){const n=new Map;for(const c of t)n.set(c.dimensionName,[]);const r=JSON.parse(e),o=r.schema.fields,a=new Map;o.forEach((c,d)=>{a.set(c.name,d)});const s=c=>{if(!c)return null;switch(c.kind){case"string_cell":return c.string_value??null;case"number_cell":return c.number_value??null;case"boolean_cell":return c.boolean_value??null;case"null_cell":return null;default:return console.log("Unknown cell kind: "+c.kind),null}},l=(r.data?.array_value||[]).map(c=>{const d={};return c.kind==="record_cell"&&c.record_value&&c.record_value.forEach((m,f)=>{const h=o[f]?.name;if(h){const b=s(m);h==="fieldName"&&typeof b=="string"?d.fieldName=b:h==="fieldPath"&&typeof b=="string"?d.fieldPath=b:h==="fieldType"&&typeof b=="string"?d.fieldType=b:h==="fieldValue"&&typeof b=="string"?d.fieldValue=b:h==="weight"&&typeof b=="number"&&(d.weight=b)}}),d}),u=l.length===0||l.every(c=>!c.fieldName);for(const c of t){if(c.filterType==="NONE"||c.filterType==="Retrieval")continue;const d=l.filter(m=>{const f=m.fieldName||"",h=m.fieldPath||"";if(f===c.dimensionName||h===c.dimensionName||f.toLowerCase()===c.dimensionName.toLowerCase()||h.toLowerCase()===c.dimensionName.toLowerCase())return!0;const b=h.split(".").pop()||"";return b===c.dimensionName||b.toLowerCase()===c.dimensionName.toLowerCase()});if(d.length!==0){if(c.filterType==="Star"){const m=d.filter(f=>f.fieldType==="string").map(f=>({value:f.fieldValue??"",count:f.weight})).sort((f,h)=>(h.count??0)-(f.count??0));n.set(c.dimensionName,m)}else if(c.filterType==="MinMax"){console.log("MinMax dimensionEntries: "+JSON.stringify(d,null,2)),console.log("All MinMax dimension entries fieldTypes:",d.map(f=>f.fieldType));const m=d.find(f=>f.fieldType==="number");if(console.log("numericEntry: "+JSON.stringify(m,null,2)),m?.fieldValue){const f=m.fieldValue,h=f.split(" to ");if(console.log("rangeParts: "+h),h.length===2){const b=[{value:parseFloat(h[0])},{value:parseFloat(h[1])}];n.set(c.dimensionName,b)}else console.warn(`Could not parse numeric range for ${c.dimensionName}: ${f}`)}else console.warn(`No numeric entry found for ${c.dimensionName}. Available entries:`,d)}else if(c.filterType==="DateMinMax"){const m=d.find(f=>f.fieldType==="date"||f.fieldType==="timestamp"||f.fieldType==="string");if(console.log("dateEntry: "+JSON.stringify(m,null,2)),console.log("All date dimension entries fieldTypes:",d.map(f=>f.fieldType)),m?.fieldValue){const f=m.fieldValue,h=f.split(" to ");if(console.log("date rangeParts: "+h),h.length===2){const b=[{value:new Date(h[0].trim())},{value:new Date(h[1].trim())}];n.set(c.dimensionName,b)}else console.warn(`Could not parse date range for ${c.dimensionName}: ${f}`)}else console.warn(`No date entry found for ${c.dimensionName}. Available entries:`,d)}}}return{values:n,noRowsMatchedFilter:u}}function lf(e){const{project:t,package:n,dimensionSpecs:r,versionId:o,enabled:a=!0,indexLimit:s=1e4,activeFilters:i=[]}=e,l=W.useMemo(()=>tU(r),[r]),u=W.useMemo(()=>{const b=[];for(const[g,x]of l){const[E,C]=g.split("|"),T=nU(E,x,s,i);T?b.push({key:g,source:E,model:C,query:T,specs:x}):console.log("No query for source: ",E,"model: ",C)}return b},[l,s,i]),c=W.useMemo(()=>a&&u.length>0&&r.some(b=>b.filterType==="Star"||b.filterType==="MinMax"||b.filterType==="DateMinMax"),[a,u,r]),{apiClients:d}=it.useServer(),m=Jt({queryKey:["dimensionalFilter",t,n,r,o,i],queryFn:async()=>{if(!c){const E=new Map;for(const C of r)E.set(C.dimensionName,[]);return{values:E,noRowsMatchedFilter:!1}}const b=await Promise.all(u.map(async E=>{const C=await d.models.executeQueryModel(t,n,E.model,{query:E.query,versionId:o});return{config:E,result:rU(C.data.result,E.specs)}})),g=new Map;let x=!1;for(const{result:E}of b){for(const[C,T]of E.values)g.set(C,T);E.noRowsMatchedFilter&&(x=!0)}return{values:g,noRowsMatchedFilter:x}},enabled:c,staleTime:300*1e3,placeholderData:b=>b}),f=m.data?.values;return{data:W.useMemo(()=>{const b=new Map;for(const g of r)g.values?b.set(g.dimensionName,g.values.map(x=>({value:x}))):b.set(g.dimensionName,[]);if(f)for(const[g,x]of f)x.length>0&&b.set(g,x);return b},[r,f]),noRowsMatchedFilter:m.data?.noRowsMatchedFilter??!1,isLoading:c?m.isPending:!1,isError:c?m.isError:!1,error:c?m.error:null,refetch:m.refetch}}function l2(e){return e.replace(/'/g,"\\'").replace(/\\/g,"\\\\")}function ir(e,t=!1){return e==null?"null":t?e instanceof Date?`@${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`:`@${e}`:typeof e=="string"?`'${l2(e)}'`:typeof e=="number"?String(e):typeof e=="boolean"?e?"true":"false":String(e)}function oU(e){const{dimensionName:t,matchType:n,value:r,value2:o}=e,a=`\`${t}\``,s=r instanceof Date;switch(n){case"Equals":case"Semantic Search":return Array.isArray(r)&&r.length>0?`(${r.map(l=>`${a} = ${ir(l,s)}`).join(" or ")})`:Array.isArray(r)?"":`${a} = ${ir(r,s)}`;case"Contains":return typeof r=="string"?`${a} ~ f'%${l2(r)}%'`:Array.isArray(r)?"":`${a} = ${ir(r)}`;case"After":return Array.isArray(r)?"":`${a} > ${ir(r,s)}`;case"Before":return Array.isArray(r)?"":`${a} < ${ir(r,s)}`;case"Greater Than":return Array.isArray(r)?"":`${a} > ${ir(r)}`;case"Less Than":return Array.isArray(r)?"":`${a} < ${ir(r)}`;case"Between":return Array.isArray(r)?"":o!==void 0?`${a} >= ${ir(r,s)} and ${a} <= ${ir(o,s)}`:`${a} >= ${ir(r,s)}`;default:return""}}function uf(e){const{dimensionSpecs:t}=e,[n,r]=W.useState(()=>{const u=new Map;return t.forEach(c=>{u.set(c.dimensionName,{spec:c,selection:null})}),u});W.useEffect(()=>{r(u=>{const c=new Map;return t.forEach(d=>{const m=u.get(d.dimensionName);c.set(d.dimensionName,{spec:d,selection:m?.selection??null})}),c})},[t]);const o=W.useCallback((u,c)=>{r(d=>{const m=new Map(d),f=m.get(u);return f&&m.set(u,{...f,selection:c}),m})},[]),a=W.useCallback(u=>{o(u,null)},[o]),s=W.useCallback(()=>{r(u=>{const c=new Map(u);return c.forEach((d,m)=>{c.set(m,{...d,selection:null})}),c})},[]),i=W.useCallback(()=>{const u=[];return n.forEach(c=>{c.selection&&u.push(c.selection)}),u},[n]),l=W.useCallback(()=>{const u=i();if(u.length===0)return"";const c=u.map(d=>oU(d)).filter(d=>d.length>0);return c.length===0?"":`where ${c.join(" and ")}`},[i]);return{filterStates:n,updateFilter:o,clearFilter:a,clearAllFilters:s,getActiveFilters:i,generateWhereClause:l}}const aU=rt(p.jsx("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"})),sU=W.lazy(()=>Promise.resolve().then(()=>F2));function cf(e){const{projectName:t,packageName:n}=Ct(e.resourceUri);if(!t||!n)throw new Error("Project and Package name must be provided for query embedding.");return JSON.stringify({...e})}function iU({embeddedQueryResult:e}){const{query:t,sourceName:n,queryName:r,resourceUri:o}=JSON.parse(e),{modelPath:a}=Ct(o);if(!a||!t&&(!r||!n)||typeof a!="string")throw new Error("Invalid embedded query result: "+e);return p.jsx(u2,{query:t,sourceName:n,queryName:r,resourceUri:o})}function u2({query:e,sourceName:t,queryName:n,resourceUri:r}){const{modelPath:o,projectName:a,packageName:s,versionId:i}=Ct(r),{apiClients:l}=it.useServer();if(!a||!s)throw new Error("No project or package name provided. A resource URI must be provided.");const{data:u,isSuccess:c,isError:d,error:m}=Jt({queryKey:[r,e,t,n],queryFn:()=>l.models.executeQueryModel(a,s,o,{query:e,sourceName:t,queryName:n,versionId:i})});return p.jsxs(p.Fragment,{children:[!c&&!d&&p.jsx(on,{text:"Fetching Query Results..."}),c&&p.jsx(W.Suspense,{fallback:p.jsx("div",{children:"Loading..."}),children:p.jsx(sU,{result:u.data.result})}),d&&p.jsx(Zt,{context:`${a} > ${s} > ${o}`,error:m})]})}function lU({cell:e,hideCodeCellIcon:t,hideEmbeddingIcon:n,resourceUri:r,index:o,maxResultSize:a,isExecuting:s}){const[i,l]=W.useState(!1),[u,c]=W.useState(!1),[d,m]=W.useState(!1),[f,h]=W.useState(),[b,g]=W.useState(),[x,E]=W.useState(!1),[C,T]=W.useState(""),w=/import\s*\{([^}]+)\}\s*from\s*['"`][^'"`]+['"`]/,S=/import\s*(?:\{[^}]*\}\s*from\s*)?['"`]([^'"`]+)['"`]/,O=M=>M.split(`
|
|
227
227
|
`).filter(A=>!A.trimStart().startsWith("##")).join(`
|
|
228
|
-
`),F=!!e.text&&(w.test(e.text)||S.test(e.text)),B=()=>{if(!e.newSources||e.newSources.length===0)return 0;let M=[],A="";if(e.text){const D=e.text.match(w);D&&(M=D[1].split(",").map(z=>z.trim()));const R=e.text.match(S);R&&(A=R[1].trim())}for(let D=0;D<e.newSources.length;D++)try{const R=JSON.parse(e.newSources[D]);if(M.length>0&&M.includes(R.name)||A&&A===R.path)return D}catch{continue}return 0},P=e.newSources&&e.newSources.length>0?{sourceInfos:e.newSources,resource:r}:void 0,N=cf({query:e.text,resourceUri:r});W.useEffect(()=>{e.type==="code"&&Ll(O(e.text),"malloy").then(M=>{h(M)})},[e]),W.useEffect(()=>{Ll(N,"typescript").then(M=>{g(M)})},[N]);const v=()=>{const M=window.location.href;navigator.clipboard.writeText(M).then(()=>T("URL copied to clipboard!")).catch(()=>T("Failed to copy URL"))};return e.type==="markdown"&&p.jsx(qc,{children:p.jsxs(I.Box,{sx:{"& h1, & h2, & h3, & h4, & h5, & h6":{fontWeight:"600",color:"#1a1a1a",marginBottom:"8px",marginTop:"16px"},"& h1":{fontSize:"28px"},"& h2":{fontSize:"24px"},"& h3":{fontSize:"20px"},"& p":{color:"#333333",lineHeight:"1.7",marginBottom:"8px",fontSize:"16px"},"& ul, & ol":{color:"#333333",lineHeight:"1.7",marginBottom:"8px",fontSize:"16px"},"& li":{marginBottom:"4px"}},children:[o===0?p.jsxs(I.Stack,{direction:"row",alignItems:"flex-start",justifyContent:"space-between",children:[p.jsx(dl,{children:e.text}),p.jsx(I.Tooltip,{title:"Click to copy link",children:p.jsx(Wd,{sx:{fontSize:"24px",color:"#666666",cursor:"pointer",marginTop:"26px"},onClick:v})})]}):p.jsx(dl,{children:e.text}),p.jsx(I.Snackbar,{open:C!=="",autoHideDuration:6e3,onClose:()=>T(""),message:C})]})})||e.type==="code"&&p.jsxs(qc,{children:[(!t||!n&&e.result||e.newSources&&e.newSources.length>0)&&p.jsx(I.Stack,{sx:{flexDirection:"column",gap:"8px",marginBottom:"2px"},children:e.newSources&&e.newSources.length>0&&p.jsx(Vi,{sx:{position:"relative",padding:"0"},children:p.jsxs(I.Box,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingLeft:"24px",paddingRight:"8px"},children:[f&&p.jsx("span",{dangerouslySetInnerHTML:{__html:f},style:{fontFamily:"monospace",fontSize:"14px",flex:1,marginRight:"8px"}}),F&&p.jsx(I.IconButton,{sx:{backgroundColor:"rgba(255, 255, 255, 0.9)","&:hover":{backgroundColor:"rgba(255, 255, 255, 1)"},width:"32px",height:"32px",flexShrink:0},onClick:()=>E(!0),children:p.jsx(Ia,{sx:{fontSize:"18px",color:"#666666"}})})]})})}),p.jsx(sf,{open:x,onClose:()=>E(!1),title:"Data Sources",hasValidImport:F,resourceUri:r,data:P,initialSelectedSourceIndex:B()}),p.jsxs(I.Dialog,{open:i,onClose:()=>l(!1),maxWidth:"lg",fullWidth:!0,children:[p.jsxs(I.DialogTitle,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:["Malloy Code",p.jsx(I.IconButton,{onClick:()=>l(!1),sx:{color:"#666666"},children:p.jsx(to,{})})]}),p.jsx(I.DialogContent,{children:p.jsx(I.Box,{sx:{border:"1px solid #e0e0e0",borderRadius:"8px",padding:"16px",fontFamily:"monospace",fontSize:"14px",lineHeight:"1.5",overflow:"auto",maxHeight:"70vh",backgroundColor:"#ffffff"},children:p.jsx("pre",{className:"code-display",style:{margin:0},dangerouslySetInnerHTML:{__html:f}})})})]}),p.jsxs(I.Dialog,{open:u,onClose:()=>c(!1),maxWidth:"lg",fullWidth:!0,children:[p.jsxs(I.DialogTitle,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:["Embeddable Code",p.jsx(I.IconButton,{onClick:()=>c(!1),sx:{color:"#666666"},children:p.jsx(to,{})})]}),p.jsx(I.DialogContent,{children:p.jsxs(I.Stack,{sx:{flexDirection:"row",justifyContent:"space-between",alignItems:"flex-start"},children:[p.jsx(I.Typography,{component:"div",sx:{fontSize:"12px",fontFamily:"monospace","& .line":{textWrap:"wrap"},flex:1},dangerouslySetInnerHTML:{__html:b}}),p.jsx(I.Tooltip,{title:"Copy Embeddable Code",children:p.jsx(I.IconButton,{sx:{width:"24px",height:"24px",marginLeft:"8px",color:"#666666"},onClick:()=>{navigator.clipboard.writeText(N)},children:p.jsx(aU,{})})})]})})]}),p.jsx(s2,{open:d,onClose:()=>m(!1),result:e.result||"",title:"Results"}),s&&!e.result&&!F&&!(e.newSources&&e.newSources.length>0)&&p.jsx(Vi,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:200},children:p.jsx(I.CircularProgress,{size:32})}),e.result&&p.jsxs(Vi,{sx:{position:"relative"},children:[p.jsx(I.Box,{sx:{paddingTop:"24px"},children:p.jsx(fi,{result:e.result,maxHeight:700,maxResultSize:a})}),p.jsxs(I.Stack,{sx:{position:"absolute",top:"8px",right:"8px",flexDirection:"row",gap:"8px",alignItems:"center",zIndex:2},children:[!t&&p.jsx(I.IconButton,{sx:{backgroundColor:"rgba(255, 255, 255, 0.9)","&:hover":{backgroundColor:"rgba(255, 255, 255, 1)"},width:"32px",height:"32px"},onClick:M=>{M.stopPropagation(),l(!0)},children:p.jsx(D0,{sx:{fontSize:"18px",color:"#666666"}})}),p.jsx(I.IconButton,{sx:{backgroundColor:"rgba(255, 255, 255, 0.9)","&:hover":{backgroundColor:"rgba(255, 255, 255, 1)"},width:"32px",height:"32px"},onClick:()=>m(!0),children:p.jsx(Ia,{sx:{fontSize:"18px",color:"#666666"}})})]})]})]})}function c2({resourceUri:e,maxResultSize:t=0,retrievalFn:n}){const{apiClients:r}=it.useServer(),{projectName:o,packageName:a,versionId:s,modelPath:i}=Ct(e),{data:l,isSuccess:u,isError:c,error:d}=Jt({queryKey:[e],queryFn:async()=>(await r.notebooks.getNotebook(o,a,i,s)).data}),[m,f]=W.useState([]),[h,b]=W.useState(!1),[g,x]=W.useState(null),E=W.useMemo(()=>l?Xx(l.annotations):null,[l]),C=W.useMemo(()=>l?.notebookCells?Jx(l.notebookCells):null,[l]),T=W.useMemo(()=>C?.sourceInfoMap??new Map,[C]),w=C?.modelPath??null,S=W.useMemo(()=>!E||T.size===0||!w?[]:e2(T,E.filters,w),[E,T,w]),{filterStates:O,updateFilter:F,getActiveFilters:B}=uf({dimensionSpecs:S}),P=W.useMemo(()=>B(),[O,B]),N=W.useMemo(()=>{const z=new Map;for(const U of S)z.set(U.dimensionName,U.source);return z},[S]),v=W.useMemo(()=>{const z=new Map;for(const[U,j]of T)z.set(U,Qx(j));return z},[T]),{data:M}=lf({project:o,package:a,dimensionSpecs:S,versionId:s,enabled:S.length>0,activeFilters:P}),A=W.useCallback(async(z=[])=>{if(!(!u||!l?.notebookCells)){f(U=>U.length===0?l.notebookCells.map(j=>({...j})):U.map(j=>({...j,result:void 0}))),b(!0),x(null);try{for(let U=0;U<l.notebookCells.length;U++){const j=l.notebookCells[U];if(j.type==="markdown")continue;const _=j.text||"",K=_.includes("run:")||_.includes("->")||/^\s*(run|query)\s*:/m.test(_);try{let ne,L;if(K&&w&&z.length>0){let fe=_;if(z.length>0){const q=n2(_),te=q&&v.get(q)||new Set,Z=q?z.filter(re=>{const Q=N.get(re.dimensionName);return Q?Q===q||te.has(Q):!1}):[];if(Z.length>0){const re=t2(Z,N,q);re&&(fe=r2(_,re))}}ne=(await r.models.executeQueryModel(o,a,w,{query:fe,versionId:s})).data.result}else{const X=(await r.notebooks.executeNotebookCell(o,a,i,U,s)).data;ne=X.result,L=j.newSources||X.newSources}f(fe=>{const X=[...fe];return X[U]||(X[U]={...j}),X[U]={...X[U],result:ne,newSources:L},X})}catch(ne){console.error(`Error executing cell ${U}:`,ne)}}}catch(U){console.error("Error executing notebook cells:",U),x(U)}finally{b(!1)}}},[u,l,w,N,v,o,a,i,s,r.models,r.notebooks]);W.useEffect(()=>{!u||!l?.notebookCells||A([])},[u,l,A]);const D=W.useRef("");W.useEffect(()=>{const z=JSON.stringify(P.map(U=>({dim:U.dimensionName,type:U.matchType,val:U.value,val2:U.value2})));if(z!==D.current){if(D.current===""&&P.length===0){D.current=z;return}D.current=z,h||A(P)}},[P,h,A]);const R=W.useCallback(z=>U=>{F(z,U)},[F]);return S.some(z=>z.filterType==="Retrieval"),p.jsx(Tv,{children:p.jsx(Sv,{children:p.jsxs(I.Stack,{spacing:3,component:"section",children:[S.length>0&&M&&p.jsxs(I.Paper,{elevation:0,sx:{p:3,backgroundColor:"#ffffff",border:"1px solid #e0e0e0",borderRadius:2},children:[p.jsx(I.Typography,{variant:"subtitle2",sx:{fontWeight:600,mb:2,color:"#333"},children:"Filters"}),p.jsx(I.Box,{sx:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(250px, 1fr))",gap:3},children:S.map(z=>{const U=M.get(z.dimensionName)||[],j=O.get(z.dimensionName);return z.filterType==="Retrieval"&&!n?null:p.jsx(I.Box,{children:p.jsx(Kx,{spec:z,values:U,selection:j?.selection,onChange:R(z.dimensionName),retrievalFn:n})},z.dimensionName)})})]}),!u&&!c&&p.jsx(on,{text:"Fetching Notebook..."}),u&&(m.length>0?m:l?.notebookCells||[]).map((z,U)=>p.jsx(lU,{cell:z,index:U,resourceUri:e,maxResultSize:t,isExecuting:h},U)),c&&d.status===404&&p.jsxs(I.Typography,{variant:"body2",sx:{color:"#666666"},children:[p.jsx("code",{children:`${o} > ${a} > ${i}`})," ","not found."]}),c&&d.status!==404&&p.jsx(Zt,{error:d,context:`${o} > ${a} > ${i}`}),g&&p.jsx(Zt,{error:{message:g.message,status:500,name:"ExecutionError"},context:"Notebook Execution"})]})})})}const d2=rt(p.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}));function uU({resourceUri:e}){const{apiClients:t}=it.useServer(),{projectName:n,packageName:r,versionId:o}=Ct(e),{data:a,isSuccess:s,isError:i,error:l}=Jt({queryKey:["package",n,r,o],queryFn:()=>t.packages.getPackage(n,r,o,!1)});return p.jsx(ro,{children:p.jsxs(oo,{children:[p.jsx(Fo,{children:"Package Config"}),p.jsx(I.Box,{sx:{maxHeight:"200px",overflowY:"auto"},children:p.jsxs(I.List,{dense:!0,disablePadding:!0,children:[p.jsx(I.ListItem,{dense:!0,disablePadding:!0,children:p.jsx(I.ListItemText,{primary:"Name",primaryTypographyProps:{fontWeight:"500"},secondary:r})}),!s&&!i&&p.jsx(I.ListItem,{children:p.jsx(on,{text:"Fetching Package Metadata..."})}),s&&(a.data&&p.jsx(I.ListItem,{dense:!0,disablePadding:!0,children:p.jsx(I.ListItemText,{primary:"Description",primaryTypographyProps:{fontWeight:"500"},secondary:a.data.description})})||p.jsxs(I.ListItem,{disablePadding:!0,dense:!0,sx:{mt:"20px"},children:[p.jsx(d2,{sx:{color:"grey.600",mr:"10px"}}),p.jsx(I.ListItemText,{primary:"No package manifest"})]})),i&&p.jsx(Zt,{error:l,context:`${n} > ${r} > ${o}`})]})})]})})}const Wl={postgres:[{label:"Host",name:"host",type:"text"},{label:"Port",name:"port",type:"number"},{label:"Database Name",name:"databaseName",type:"text"},{label:"User Name",name:"userName",type:"text"},{label:"Password",name:"password",type:"password"},{label:"Connection String",name:"connectionString",type:"text"}],bigquery:[{label:"Project ID",name:"defaultProjectId",type:"text"},{label:"Billing Project ID",name:"billingProjectId",type:"text"},{label:"Location",name:"location",type:"text"},{label:"Service Account Key JSON",name:"serviceAccountKeyJson",type:"text"},{label:"Maximum Bytes Billed",name:"maximumBytesBilled",type:"text"},{label:"Query Timeout Milliseconds",name:"queryTimeoutMilliseconds",type:"text"}],snowflake:[{label:"Account",name:"account",type:"text"},{label:"Username",name:"username",type:"text"},{label:"Password",name:"password",type:"password"},{label:"Role",name:"role",type:"text"},{label:"Warehouse",name:"warehouse",type:"text"},{label:"Database",name:"database",type:"text"},{label:"Schema",name:"schema",type:"text"},{label:"Response Timeout Milliseconds",name:"responseTimeoutMilliseconds",type:"text"},{label:"Private Key",name:"privateKey",type:"password"},{label:"Private Key Passphrase",name:"privateKeyPass",type:"password"}],trino:[{label:"Server",name:"server",type:"text"},{label:"Port",name:"port",type:"number"},{label:"Catalog",name:"catalog",type:"text"},{label:"Schema",name:"schema",type:"text"},{label:"User",name:"user",type:"text"},{label:"Password",name:"password",type:"password"},{label:"Peaka Key",name:"peakaKey",type:"password"}],mysql:[{label:"Host",name:"host",type:"text"},{label:"Port",name:"port",type:"number"},{label:"User",name:"user",type:"text"},{label:"Password",name:"password",type:"password"},{label:"Database",name:"database",type:"text"}],duckdb:[],motherduck:[{label:"Access Token",name:"accessToken",type:"text"},{label:"Database",name:"database",type:"text"}]},Lc={postgres:"postgresConnection",bigquery:"bigqueryConnection",snowflake:"snowflakeConnection",trino:"trinoConnection",mysql:"mysqlConnection",duckdb:"duckdbConnection",motherduck:"motherduckConnection"};function cU({onSubmit:e,isSubmitting:t}){const[n,r]=W.useState(!1),[o,a]=W.useState("postgres"),s=()=>{r(!0)},i=()=>{r(!1)},l=async u=>{u.preventDefault();const c=new FormData(u.currentTarget),d=c.get("name")?.toString(),m=c.get("type")?.toString(),f=Wl[m];if(!d)throw new Error("Name is required");if(!m)throw new Error("Type is required");const b={name:d,type:m,[{postgres:"postgresConnection",bigquery:"bigqueryConnection",snowflake:"snowflakeConnection",trino:"trinoConnection",mysql:"mysqlConnection",motherduck:"motherduckConnection"}[m]]:f.reduce((g,x)=>(g[x.name]=c.get(x.name)?.toString(),g),{})};await e(b),i()};return p.jsxs(W.Fragment,{children:[p.jsx(Dt,{variant:"outlined",onClick:s,children:"Add Connection"}),p.jsxs(kr,{open:n,onClose:i,children:[p.jsx(Ur,{children:"Create New Connection"}),p.jsxs(Sr,{children:[p.jsx(Ua,{children:"Add a new connection to query your data database using Malloy."}),p.jsxs("form",{onSubmit:l,id:"connection-form",children:[p.jsx(Rt,{autoFocus:!0,required:!0,margin:"dense",id:"name",name:"name",label:"Connection Name",type:"text",fullWidth:!0,variant:"standard"}),p.jsx(Rt,{margin:"dense",id:"type",name:"type",label:"Connection Type",fullWidth:!0,variant:"standard",value:o,select:!0,onChange:u=>a(u.target.value),children:Object.values(it.ConnectionTypeEnum).map(u=>p.jsx(aa,{value:u,children:u},u))}),Wl[o].map(u=>p.jsx(Rt,{margin:"dense",id:u.name,name:u.name,label:u.label,type:u.type,fullWidth:!0,variant:"standard"},u.name))]})]}),p.jsxs(Tr,{children:[p.jsx(Dt,{disabled:t,onClick:i,children:"Cancel"}),p.jsx(Dt,{type:"submit",form:"connection-form",loading:t,children:"Create Connection"})]})]})]})}function dU({connection:e,onCloseDialog:t,isMutating:n,onDelete:r}){const[o,a]=W.useState(!1),[s,i]=W.useState(""),l=()=>{a(!0)},u=()=>{a(!1),t()};return p.jsxs(W.Fragment,{children:[p.jsx(yr,{onClick:c=>{c.stopPropagation(),l()},children:p.jsx(An.Delete,{})}),p.jsxs(kr,{onClose:u,"aria-labelledby":"customized-dialog-title",open:o,children:[p.jsx(Ur,{sx:{m:0,p:2},id:"customized-dialog-title",children:"Delete Connection"}),p.jsx(yr,{"aria-label":"close",onClick:u,sx:c=>({position:"absolute",right:8,top:8,color:c.palette.grey[500]}),children:p.jsx(to,{})}),p.jsx(Sr,{dividers:!0,children:p.jsxs(Cn,{gutterBottom:!0,children:['Are you sure you want to delete "',e.name,'"? This action cannot be undone.']})}),p.jsx(Tr,{children:p.jsx(Dt,{loading:n,variant:"contained",autoFocus:!0,onClick:()=>r(),color:"error",children:"Delete"})}),p.jsx(I.Snackbar,{open:s!=="",autoHideDuration:6e3,onClose:()=>i(""),message:s})]})]})}function pU({connection:e,onSubmit:t,isSubmitting:n}){const[r,o]=W.useState(!1),[a,s]=W.useState(e.type),i=()=>{o(!0)},l=()=>{o(!1)},u=async c=>{c.preventDefault();const d=new FormData(c.currentTarget),m=d.get("name")?.toString(),f=d.get("type")?.toString(),h=Wl[f];if(!m)throw new Error("Name is required");if(!f)throw new Error("Type is required");const b={name:m,type:f,[Lc[f]]:h.reduce((g,x)=>(g[x.name]=d.get(x.name)?.toString()??e[Lc[f]][x.name],g),{})};await t(b),l()};return p.jsxs(W.Fragment,{children:[p.jsx(I.IconButton,{onClick:c=>{c.preventDefault(),c.stopPropagation(),i()},children:p.jsx(An.Edit,{})}),p.jsxs(kr,{open:r,onClose:l,children:[p.jsx(Ur,{onClick:c=>{c.stopPropagation()},children:"Edit Connection"}),p.jsxs(Sr,{onClick:c=>{c.stopPropagation()},children:[p.jsx(Ua,{children:"Edit a connection to query your data database using Malloy."}),p.jsxs("form",{onSubmit:u,id:"connection-form",children:[p.jsx(Rt,{autoFocus:!0,required:!0,margin:"dense",id:"name",name:"name",label:"Connection Name",type:"text",fullWidth:!0,variant:"standard",value:e.name,defaultValue:e.name}),p.jsx(Rt,{margin:"dense",id:"type",name:"type",label:"Connection Type",fullWidth:!0,variant:"standard",value:a,select:!0,onChange:c=>s(c.target.value),children:Object.values(it.ConnectionTypeEnum).map(c=>p.jsx(aa,{value:c,children:c},c))}),Wl[a].map(c=>p.jsx(Rt,{margin:"dense",id:c.name,name:c.name,label:c.label,type:c.type,fullWidth:!0,variant:"standard",defaultValue:e?.[Lc[a]??""]?.[c.name??""]??""},c.name))]})]}),p.jsxs(Tr,{onClick:c=>{c.stopPropagation()},children:[p.jsx(Dt,{disabled:n,onClick:l,children:"Cancel"}),p.jsx(Dt,{type:"submit",form:"connection-form",loading:n,children:"Edit Connection"})]})]})]})}function p2({connectionName:e,resourceUri:t,schema:n}){const{apiClients:r}=it.useServer(),{projectName:o}=Ct(t),[a,s]=W.useState(void 0),[i,l]=W.useState(n||null),[u,c]=W.useState(!1),{data:d,isError:m,isLoading:f,error:h}=Jt({queryKey:["schemas",o,e],queryFn:()=>r.connections.listSchemas(o,e)}),b=d?.data||[];return p.jsxs(I.Grid,{container:!0,spacing:1,children:[!n&&p.jsx(I.Grid,{size:{xs:12,md:4},children:p.jsxs(I.Paper,{sx:{p:1,m:0},children:[p.jsxs(I.Box,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:0},children:[p.jsx(I.Typography,{variant:"overline",fontWeight:"bold",children:"Table Paths"}),p.jsx(I.FormControlLabel,{control:p.jsx(I.Switch,{checked:u,onChange:g=>c(g.target.checked)}),label:"Hidden Schemas"})]}),p.jsx(I.Divider,{sx:{mt:"2px"}}),p.jsxs(I.Box,{sx:{mt:"2px",maxHeight:"600px",overflowY:"auto"},children:[f&&p.jsx(on,{text:"Loading schemas..."}),m&&p.jsx(Zt,{error:h,context:`${o} > ${e} > Schemas`}),!f&&!m&&b.length===0&&p.jsx(I.Typography,{variant:"body2",children:"No Schemas"}),!f&&!m&&b.length>0&&p.jsx(I.List,{dense:!0,disablePadding:!0,children:b.map(g=>{const x=g.name;if(g.isHidden&&!u)return null;const C=i===x;return p.jsx(I.ListItemButton,{selected:C,onClick:()=>{l(x),s(void 0)},children:p.jsx(I.ListItemText,{primary:x})},x)})})]})]})}),p.jsx(I.Grid,{size:{xs:12,md:n?6:4},children:i&&p.jsx(I.Paper,{sx:{p:1,m:0},children:p.jsx(mU,{connectionName:e,schemaName:i,onTableClick:g=>{s(g)},resourceUri:t})})}),p.jsx(I.Grid,{size:{xs:12,md:n?6:4},children:a&&p.jsx(I.Paper,{sx:{p:1,m:0},children:p.jsx(fU,{table:a})})})]})}function fU({table:e}){return p.jsxs(p.Fragment,{children:[p.jsxs(I.Typography,{variant:"overline",fontWeight:"bold",children:["Schema: ",e.resource]}),p.jsx(I.Divider,{}),p.jsx(I.Box,{sx:{mt:"10px",maxHeight:"600px",overflowY:"auto"},children:p.jsx(I.TableContainer,{children:p.jsxs(I.Table,{size:"small",sx:{"& .MuiTableCell-root":{padding:"10px"}},children:[p.jsx(I.TableHead,{children:p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{children:"NAME"}),p.jsx(I.TableCell,{children:"TYPE"})]})}),p.jsx(I.TableBody,{children:e.columns?.sort((t,n)=>t.name.localeCompare(n.name))?.map(t=>p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{children:t.name}),p.jsx(I.TableCell,{children:t.type})]},t.name))})]})})})]})}function mU({connectionName:e,schemaName:t,onTableClick:n,resourceUri:r}){const{projectName:o}=Ct(r),{apiClients:a}=it.useServer(),[s,i]=W.useState(""),{data:l,isSuccess:u,isError:c,error:d,isLoading:m}=Jt({queryKey:["tablesInSchema",o,e,t],queryFn:()=>a.connections.listTables(o,e,t)}),f=u&&l?.data?l.data.filter(h=>(h.resource.split(".").pop()?.toLowerCase()||"").includes(s.toLowerCase())).sort((h,b)=>{const g=h.resource.split(".").pop()||h.resource,x=b.resource.split(".").pop()||b.resource;return g.localeCompare(x)}):[];return p.jsxs(p.Fragment,{children:[p.jsxs(I.Typography,{variant:"overline",fontWeight:"bold",children:["Tables in ",t]}),p.jsx(I.Divider,{}),p.jsx(I.Box,{sx:{mt:1,mb:1},children:p.jsx(I.TextField,{size:"small",fullWidth:!0,placeholder:"Search tables...",value:s,onChange:h=>i(h.target.value),variant:"outlined"})}),p.jsx(I.Divider,{}),p.jsxs(I.Box,{sx:{mt:"2px",maxHeight:"600px",overflowY:"auto"},children:[m&&p.jsx(on,{text:"Fetching Tables..."}),c&&p.jsx(Zt,{error:d,context:`${o} > ${e} > ${t}`}),u&&f.length===0&&p.jsx(I.Typography,{variant:"body2",children:"No Tables"}),u&&l?.data&&l.data.length>0&&p.jsx(I.List,{dense:!0,disablePadding:!0,children:f.map(h=>{const b=h.resource.split(".").pop()||h.resource;return p.jsx(I.ListItemButton,{onClick:()=>n(h),children:p.jsx(I.ListItemText,{primary:b,secondary:`${h.columns.length} columns`})},h.resource)})})]})]})}function hU({connection:e,onClick:t,onEdit:n,onDelete:r,isMutating:o,mutable:a}){return p.jsxs(I.TableRow,{sx:{"&:hover":{backgroundColor:"action.hover"}},children:[p.jsx(I.TableCell,{sx:{cursor:"pointer",flexGrow:1},onClick:t,children:p.jsxs(I.Box,{sx:{display:"flex",alignItems:"center",gap:1},children:[p.jsx(I.Typography,{variant:"body2",children:e.name}),p.jsx(Ia,{sx:{fontSize:"1rem",color:"action.active",opacity:.7}})]})}),p.jsx(I.TableCell,{sx:{minWidth:"120px"},children:p.jsx(I.Typography,{variant:"body2",children:e.type})}),a&&p.jsxs(I.TableCell,{sx:{minWidth:"120px"},children:[p.jsx(pU,{connection:e,onSubmit:n,isSubmitting:o}),p.jsx(dU,{connection:e,onCloseDialog:()=>{},isMutating:o,onDelete:()=>r(e)})]})]},e.name)}function gU({resourceUri:e}){const{apiClients:t,mutable:n}=it.useServer(),r=$r.useQueryClient(),{projectName:o}=Ct(e),[a,s]=W.useState(""),[i,l]=W.useState(null),u=pi({projectName:o,connectionName:i}),{data:c,isSuccess:d,isError:m,error:f}=Jt({queryKey:["connections",o],queryFn:()=>t.connections.listConnections(o)}),h=C=>{l(C)},b=()=>{l(null)},g=hr({mutationFn:C=>t.projects.updateProject(o,{name:o,connections:[...c.data,C]}),onSuccess(){s("Connection added successfully"),r.invalidateQueries({queryKey:["connections",o]})},onError(C){s(C.message)}}),x=hr({mutationFn:C=>t.projects.updateProject(o,{name:o,connections:c.data.map(T=>T.name===C.name?C:T)}),onSuccess(C,T){s(`Connection ${T.name} updated successfully`),r.invalidateQueries({queryKey:["connections",o]})},onError(C){s(C.message)}}),E=hr({mutationFn:C=>t.projects.updateProject(o,{name:o,connections:c.data.filter(T=>T.name!==C.name)}),onSuccess(C,T){s(`Connection ${T.name} deleted successfully`),r.invalidateQueries({queryKey:["connections",o]})},onError(C){s(C.message)}});return p.jsxs(p.Fragment,{children:[p.jsx(ro,{children:p.jsxs(oo,{children:[p.jsx(Fo,{children:"Database Connections"}),p.jsxs(I.Box,{sx:{mb:1,maxHeight:"200px",overflowY:"auto"},children:[!d&&!m&&p.jsx(I.Typography,{variant:"body2",sx:{m:"auto"},children:"Fetching Connections..."}),d&&c.data.length>0&&p.jsx(I.Table,{size:"small",sx:{borderCollapse:"collapse","& .MuiTableRow-root":{display:"flex",width:"100%"},"& .MuiTableCell-root":{borderBottom:"1px solid #e0e0e0",display:"flex",alignItems:"center"},"& .MuiTableRow-root:last-child .MuiTableCell-root":{borderBottom:"none"}},children:p.jsxs(I.TableBody,{children:[p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{sx:{flexGrow:1},children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",children:"Connection Name"})}),p.jsx(I.TableCell,{sx:{minWidth:"120px"},children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",children:"Type"})}),n&&p.jsx(I.TableCell,{sx:{minWidth:"120px"},children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",sx:{mx:"auto"},children:"Actions"})})]}),c.data.map(C=>p.jsx(hU,{connection:C,onClick:()=>h(C.name),onEdit:T=>x.mutateAsync(T),onDelete:T=>{C.resource?s("Cannot delete this connection"):E.mutateAsync(T)},isMutating:x.isPending||E.isPending,mutable:n},C.name))]})}),d&&c.data.length===0&&p.jsx(I.Typography,{variant:"body2",children:"No Connections"}),m&&p.jsx(Zt,{error:f,context:`${o} > Connections`})]}),n&&p.jsx(I.Box,{sx:{display:"flex",justifyContent:"flex-end"},children:p.jsx(cU,{onSubmit:C=>g.mutateAsync(C),isSubmitting:g.isPending})})]})}),p.jsx(I.Snackbar,{open:a!=="",autoHideDuration:6e3,onClose:()=>s(""),message:a}),p.jsxs(I.Dialog,{open:i!==null,onClose:b,maxWidth:"lg",fullWidth:!0,children:[p.jsxs(I.DialogTitle,{children:["Connection Explorer: ",i,p.jsx(I.IconButton,{"aria-label":"close",onClick:b,sx:{position:"absolute",right:8,top:8},children:p.jsx(I.Box,{sx:{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center"},children:"X"})})]}),p.jsx(I.DialogContent,{children:i&&p.jsx(p2,{resourceUri:u,connectionName:i})})]})]})}function bU({resourceUri:e}){const{apiClients:t}=it.useServer(),{projectName:n,packageName:r,versionId:o}=Ct(e),[a,s]=W.useState(!1),[i,l]=W.useState(null),u=g=>{l(g),s(!0)},c=()=>{s(!1),l(null)},{data:d,isError:m,error:f,isSuccess:h}=Jt({queryKey:["databases",n,r,o],queryFn:()=>t.databases.listDatabases(n,r,o)}),b=g=>g>=1024*1024*1024*1024?`${(g/(1024*1024*1024)).toFixed(2)} T`:g>=1024*1024*1024?`${(g/(1024*1024*1024)).toFixed(2)} G`:g>=1024*1024?`${(g/(1024*1024)).toFixed(2)} M`:`${(g/1024).toFixed(2)} K`;return p.jsxs(p.Fragment,{children:[p.jsx(ro,{children:p.jsxs(oo,{children:[p.jsx(Fo,{children:"Embedded Databases"}),p.jsxs(I.Box,{sx:{maxHeight:"200px",overflowY:"auto"},children:[!h&&!m&&p.jsx(on,{text:"Fetching Databases..."}),m&&p.jsx(Zt,{error:f,context:`${n} > ${r} > Databases`}),h&&d.data.length>0&&p.jsx(I.Table,{size:"small",sx:{borderCollapse:"collapse","& .MuiTableCell-root":{borderBottom:"1px solid #e0e0e0"},"& .MuiTableRow-root:last-child .MuiTableCell-root":{borderBottom:"none"}},children:p.jsxs(I.TableBody,{children:[p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",children:"Name"})}),p.jsx(I.TableCell,{align:"right",children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",children:"Rows"})})]}),d.data.map(g=>p.jsxs(I.TableRow,{onClick:()=>u(g),sx:{cursor:"pointer","&:hover":{backgroundColor:"action.hover"}},children:[p.jsx(I.TableCell,{component:"th",scope:"row",children:p.jsxs(I.Box,{sx:{display:"flex",alignItems:"center",gap:1},children:[p.jsx(I.Typography,{variant:"body2",children:g.path}),p.jsx(Ia,{sx:{fontSize:"1rem",color:"action.active",opacity:.7}})]})}),p.jsx(I.TableCell,{align:"right",children:p.jsx(I.Typography,{variant:"body2",children:b(g.info.rowCount)})})]},g.path))]})}),h&&d.data.length===0&&p.jsx(I.Typography,{variant:"body2",sx:{m:"auto"},children:"No databases found"})]})]})}),p.jsxs(I.Dialog,{open:a,onClose:c,maxWidth:"sm",fullWidth:!0,children:[p.jsxs(I.DialogTitle,{children:[i?.path,p.jsx(I.IconButton,{"aria-label":"close",onClick:c,sx:{position:"absolute",right:8,top:8},children:p.jsx(I.Box,{sx:{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center"},children:"X"})})]}),p.jsx(I.DialogContent,{children:i?.info?.columns&&p.jsx(I.TableContainer,{children:p.jsxs(I.Table,{size:"small",children:[p.jsx(I.TableHead,{children:p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{children:"Column"}),p.jsx(I.TableCell,{children:"Type"})]})}),p.jsx(I.TableBody,{children:i.info.columns.map(g=>p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{component:"th",scope:"row",children:g.name}),p.jsx(I.TableCell,{children:g.type})]},g.name))})]})})})]})]})}function yU(e){return Fe("MuiCollapse",e)}Re("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);const xU=e=>{const{orientation:t,classes:n}=e,r={root:["root",`${t}`],entered:["entered"],hidden:["hidden"],wrapper:["wrapper",`${t}`],wrapperInner:["wrapperInner",`${t}`]};return Le(r,yU,n)},CU=ae("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.orientation],n.state==="entered"&&t.entered,n.state==="exited"&&!n.in&&n.collapsedSize==="0px"&&t.hidden]}})(Je(({theme:e})=>({height:0,overflow:"hidden",transition:e.transitions.create("height"),variants:[{props:{orientation:"horizontal"},style:{height:"auto",width:0,transition:e.transitions.create("width")}},{props:{state:"entered"},style:{height:"auto",overflow:"visible"}},{props:{state:"entered",orientation:"horizontal"},style:{width:"auto"}},{props:({ownerState:t})=>t.state==="exited"&&!t.in&&t.collapsedSize==="0px",style:{visibility:"hidden"}}]}))),EU=ae("div",{name:"MuiCollapse",slot:"Wrapper"})({display:"flex",width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),vU=ae("div",{name:"MuiCollapse",slot:"WrapperInner"})({width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),Qs=k.forwardRef(function(t,n){const r=Qe({props:t,name:"MuiCollapse"}),{addEndListener:o,children:a,className:s,collapsedSize:i="0px",component:l,easing:u,in:c,onEnter:d,onEntered:m,onEntering:f,onExit:h,onExited:b,onExiting:g,orientation:x="vertical",style:E,timeout:C=x0.standard,TransitionComponent:T=Kn,...w}=r,S={...r,orientation:x,collapsedSize:i},O=xU(S),F=no(),B=Eu(),P=k.useRef(null),N=k.useRef(),v=typeof i=="number"?`${i}px`:i,M=x==="horizontal",A=M?"width":"height",D=k.useRef(null),R=nt(n,D),z=q=>te=>{if(q){const Z=D.current;te===void 0?q(Z):q(Z,te)}},U=()=>P.current?P.current[M?"clientWidth":"clientHeight"]:0,j=z((q,te)=>{P.current&&M&&(P.current.style.position="absolute"),q.style[A]=v,d&&d(q,te)}),_=z((q,te)=>{const Z=U();P.current&&M&&(P.current.style.position="");const{duration:re,easing:Q}=_a({style:E,timeout:C,easing:u},{mode:"enter"});if(C==="auto"){const G=F.transitions.getAutoHeightDuration(Z);q.style.transitionDuration=`${G}ms`,N.current=G}else q.style.transitionDuration=typeof re=="string"?re:`${re}ms`;q.style[A]=`${Z}px`,q.style.transitionTimingFunction=Q,f&&f(q,te)}),K=z((q,te)=>{q.style[A]="auto",m&&m(q,te)}),ne=z(q=>{q.style[A]=`${U()}px`,h&&h(q)}),L=z(b),fe=z(q=>{const te=U(),{duration:Z,easing:re}=_a({style:E,timeout:C,easing:u},{mode:"exit"});if(C==="auto"){const Q=F.transitions.getAutoHeightDuration(te);q.style.transitionDuration=`${Q}ms`,N.current=Q}else q.style.transitionDuration=typeof Z=="string"?Z:`${Z}ms`;q.style[A]=v,q.style.transitionTimingFunction=re,g&&g(q)}),X=q=>{C==="auto"&&B.start(N.current||0,q),o&&o(D.current,q)};return p.jsx(T,{in:c,onEnter:j,onEntered:K,onEntering:_,onExit:ne,onExited:L,onExiting:fe,addEndListener:X,nodeRef:D,timeout:C==="auto"?null:C,...w,children:(q,{ownerState:te,...Z})=>p.jsx(CU,{as:l,className:De(O.root,s,{entered:O.entered,exited:!c&&v==="0px"&&O.hidden}[q]),style:{[M?"minWidth":"minHeight"]:v,...E},ref:R,ownerState:{...S,state:q},...Z,children:p.jsx(EU,{ownerState:{...S,state:q},className:O.wrapper,ref:P,children:p.jsx(vU,{ownerState:{...S,state:q},className:O.wrapperInner,children:a})})})})});Qs&&(Qs.muiSupportAuto=!0);function TU(e){return Fe("PrivateSwitchBase",e)}Re("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const SU=e=>{const{classes:t,checked:n,disabled:r,edge:o}=e,a={root:["root",n&&"checked",r&&"disabled",o&&`edge${ke(o)}`],input:["input"]};return Le(a,TU,t)},kU=ae(No,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:e,ownerState:t})=>e==="start"&&t.size!=="small",style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:e,ownerState:t})=>e==="end"&&t.size!=="small",style:{marginRight:-12}}]}),wU=ae("input",{name:"MuiSwitchBase",shouldForwardProp:fn})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),_U=k.forwardRef(function(t,n){const{autoFocus:r,checked:o,checkedIcon:a,defaultChecked:s,disabled:i,disableFocusRipple:l=!1,edge:u=!1,icon:c,id:d,inputProps:m,inputRef:f,name:h,onBlur:b,onChange:g,onFocus:x,readOnly:E,required:C=!1,tabIndex:T,type:w,value:S,slots:O={},slotProps:F={},...B}=t,[P,N]=_n({controlled:o,default:!!s,name:"SwitchBase",state:"checked"}),v=Qn(),M=X=>{x&&x(X),v&&v.onFocus&&v.onFocus(X)},A=X=>{b&&b(X),v&&v.onBlur&&v.onBlur(X)},D=X=>{if(X.nativeEvent.defaultPrevented)return;const q=X.target.checked;N(q),g&&g(X,q)};let R=i;v&&typeof R>"u"&&(R=v.disabled);const z=w==="checkbox"||w==="radio",U={...t,checked:P,disabled:R,disableFocusRipple:l,edge:u},j=SU(U),_={slots:O,slotProps:{input:m,...F}},[K,ne]=ct("root",{ref:n,elementType:kU,className:j.root,shouldForwardComponentProp:!0,externalForwardedProps:{..._,component:"span",...B},getSlotProps:X=>({...X,onFocus:q=>{X.onFocus?.(q),M(q)},onBlur:q=>{X.onBlur?.(q),A(q)}}),ownerState:U,additionalProps:{centerRipple:!0,focusRipple:!l,disabled:R,role:void 0,tabIndex:null}}),[L,fe]=ct("input",{ref:f,elementType:wU,className:j.input,externalForwardedProps:_,getSlotProps:X=>({...X,onChange:q=>{X.onChange?.(q),D(q)}}),ownerState:U,additionalProps:{autoFocus:r,checked:o,defaultChecked:s,disabled:R,id:z?d:void 0,name:h,readOnly:E,required:C,tabIndex:T,type:w,...w==="checkbox"&&S===void 0?{}:{value:S}}});return p.jsxs(K,{...ne,children:[p.jsx(L,{...fe}),P?a:c]})}),IU=rt(p.jsx("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"})),AU=rt(p.jsx("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})),DU=rt(p.jsx("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}));function PU(e){return Fe("MuiCheckbox",e)}const Fc=Re("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]),RU=e=>{const{classes:t,indeterminate:n,color:r,size:o}=e,a={root:["root",n&&"indeterminate",`color${ke(r)}`,`size${ke(o)}`]},s=Le(a,PU,t);return{...t,...s}},MU=ae(_U,{shouldForwardProp:e=>fn(e)||e==="classes",name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${ke(n.size)}`],n.color!=="default"&&t[`color${ke(n.color)}`]]}})(Je(({theme:e})=>({color:(e.vars||e).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter(dn()).map(([t])=>({props:{color:t,disableRipple:!1},style:{"&:hover":{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}}})),...Object.entries(e.palette).filter(dn()).map(([t])=>({props:{color:t},style:{[`&.${Fc.checked}, &.${Fc.indeterminate}`]:{color:(e.vars||e).palette[t].main},[`&.${Fc.disabled}`]:{color:(e.vars||e).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),NU=p.jsx(AU,{}),OU=p.jsx(IU,{}),LU=p.jsx(DU,{}),f2=k.forwardRef(function(t,n){const r=Qe({props:t,name:"MuiCheckbox"}),{checkedIcon:o=NU,color:a="primary",icon:s=OU,indeterminate:i=!1,indeterminateIcon:l=LU,inputProps:u,size:c="medium",disableRipple:d=!1,className:m,slots:f={},slotProps:h={},...b}=r,g=i?l:s,x=i?l:o,E={...r,disableRipple:d,color:a,indeterminate:i,size:c},C=RU(E),T=h.input??u,[w,S]=ct("root",{ref:n,elementType:MU,className:De(C.root,m),shouldForwardComponentProp:!0,externalForwardedProps:{slots:f,slotProps:h,...b},ownerState:E,additionalProps:{type:"checkbox",icon:k.cloneElement(g,{fontSize:g.props.fontSize??c}),checkedIcon:k.cloneElement(x,{fontSize:x.props.fontSize??c}),disableRipple:d,slots:f,slotProps:{input:_0(typeof T=="function"?T(E):T,{"data-indeterminate":i})}}});return p.jsx(w,{...S,classes:C})});function m2(e){return St}const h2=k.createContext(null);function FU(e){const{value:t,children:n}=e;return p.jsx(h2.Provider,{value:t,children:t.wrapRoot({children:n,instance:t.instance})})}const zo=()=>{const e=k.useContext(h2);if(e==null)throw new Error(["MUI X: Could not find the Tree View context.","It looks like you rendered your component outside of a SimpleTreeView or RichTreeView parent component.","This can also happen if you are bundling multiple versions of the Tree View."].join(`
|
|
228
|
+
`),F=!!e.text&&(w.test(e.text)||S.test(e.text)),B=()=>{if(!e.newSources||e.newSources.length===0)return 0;let M=[],A="";if(e.text){const D=e.text.match(w);D&&(M=D[1].split(",").map(z=>z.trim()));const R=e.text.match(S);R&&(A=R[1].trim())}for(let D=0;D<e.newSources.length;D++)try{const R=JSON.parse(e.newSources[D]);if(M.length>0&&M.includes(R.name)||A&&A===R.path)return D}catch{continue}return 0},P=e.newSources&&e.newSources.length>0?{sourceInfos:e.newSources,resource:r}:void 0,N=cf({query:e.text,resourceUri:r});W.useEffect(()=>{e.type==="code"&&Ll(O(e.text),"malloy").then(M=>{h(M)})},[e]),W.useEffect(()=>{Ll(N,"typescript").then(M=>{g(M)})},[N]);const v=()=>{const M=window.location.href;navigator.clipboard.writeText(M).then(()=>T("URL copied to clipboard!")).catch(()=>T("Failed to copy URL"))};return e.type==="markdown"&&p.jsx(qc,{children:p.jsxs(I.Box,{sx:{"& h1, & h2, & h3, & h4, & h5, & h6":{fontWeight:"600",color:"#1a1a1a",marginBottom:"8px",marginTop:"16px"},"& h1":{fontSize:"28px"},"& h2":{fontSize:"24px"},"& h3":{fontSize:"20px"},"& p":{color:"#333333",lineHeight:"1.7",marginBottom:"8px",fontSize:"16px"},"& ul, & ol":{color:"#333333",lineHeight:"1.7",marginBottom:"8px",fontSize:"16px"},"& li":{marginBottom:"4px"}},children:[o===0?p.jsxs(I.Stack,{direction:"row",alignItems:"flex-start",justifyContent:"space-between",children:[p.jsx(dl,{children:e.text}),p.jsx(I.Tooltip,{title:"Click to copy link",children:p.jsx(Wd,{sx:{fontSize:"24px",color:"#666666",cursor:"pointer",marginTop:"26px"},onClick:v})})]}):p.jsx(dl,{children:e.text}),p.jsx(I.Snackbar,{open:C!=="",autoHideDuration:6e3,onClose:()=>T(""),message:C})]})})||e.type==="code"&&p.jsxs(qc,{children:[(!t||!n&&e.result||e.newSources&&e.newSources.length>0)&&p.jsx(I.Stack,{sx:{flexDirection:"column",gap:"8px",marginBottom:"2px"},children:e.newSources&&e.newSources.length>0&&p.jsx(Vi,{sx:{position:"relative",padding:"0"},children:p.jsxs(I.Box,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingLeft:"24px",paddingRight:"8px"},children:[f&&p.jsx("span",{dangerouslySetInnerHTML:{__html:f},style:{fontFamily:"monospace",fontSize:"14px",flex:1,marginRight:"8px"}}),F&&p.jsx(I.IconButton,{sx:{backgroundColor:"rgba(255, 255, 255, 0.9)","&:hover":{backgroundColor:"rgba(255, 255, 255, 1)"},width:"32px",height:"32px",flexShrink:0},onClick:()=>E(!0),children:p.jsx(Ia,{sx:{fontSize:"18px",color:"#666666"}})})]})})}),p.jsx(sf,{open:x,onClose:()=>E(!1),title:"Data Sources",hasValidImport:F,resourceUri:r,data:P,initialSelectedSourceIndex:B()}),p.jsxs(I.Dialog,{open:i,onClose:()=>l(!1),maxWidth:"lg",fullWidth:!0,children:[p.jsxs(I.DialogTitle,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:["Malloy Code",p.jsx(I.IconButton,{onClick:()=>l(!1),sx:{color:"#666666"},children:p.jsx(to,{})})]}),p.jsx(I.DialogContent,{children:p.jsx(I.Box,{sx:{border:"1px solid #e0e0e0",borderRadius:"8px",padding:"16px",fontFamily:"monospace",fontSize:"14px",lineHeight:"1.5",overflow:"auto",maxHeight:"70vh",backgroundColor:"#ffffff"},children:p.jsx("pre",{className:"code-display",style:{margin:0},dangerouslySetInnerHTML:{__html:f}})})})]}),p.jsxs(I.Dialog,{open:u,onClose:()=>c(!1),maxWidth:"lg",fullWidth:!0,children:[p.jsxs(I.DialogTitle,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:["Embeddable Code",p.jsx(I.IconButton,{onClick:()=>c(!1),sx:{color:"#666666"},children:p.jsx(to,{})})]}),p.jsx(I.DialogContent,{children:p.jsxs(I.Stack,{sx:{flexDirection:"row",justifyContent:"space-between",alignItems:"flex-start"},children:[p.jsx(I.Typography,{component:"div",sx:{fontSize:"12px",fontFamily:"monospace","& .line":{textWrap:"wrap"},flex:1},dangerouslySetInnerHTML:{__html:b}}),p.jsx(I.Tooltip,{title:"Copy Embeddable Code",children:p.jsx(I.IconButton,{sx:{width:"24px",height:"24px",marginLeft:"8px",color:"#666666"},onClick:()=>{navigator.clipboard.writeText(N)},children:p.jsx(aU,{})})})]})})]}),p.jsx(s2,{open:d,onClose:()=>m(!1),result:e.result||"",title:"Results"}),s&&!e.result&&!F&&!(e.newSources&&e.newSources.length>0)&&p.jsx(Vi,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:200},children:p.jsx(I.CircularProgress,{size:32})}),e.result&&p.jsxs(Vi,{sx:{position:"relative"},children:[p.jsx(I.Box,{sx:{paddingTop:"24px"},children:p.jsx(fi,{result:e.result,maxHeight:700,maxResultSize:a})}),p.jsxs(I.Stack,{sx:{position:"absolute",top:"8px",right:"8px",flexDirection:"row",gap:"8px",alignItems:"center",zIndex:2},children:[!t&&p.jsx(I.IconButton,{sx:{backgroundColor:"rgba(255, 255, 255, 0.9)","&:hover":{backgroundColor:"rgba(255, 255, 255, 1)"},width:"32px",height:"32px"},onClick:M=>{M.stopPropagation(),l(!0)},children:p.jsx(D0,{sx:{fontSize:"18px",color:"#666666"}})}),p.jsx(I.IconButton,{sx:{backgroundColor:"rgba(255, 255, 255, 0.9)","&:hover":{backgroundColor:"rgba(255, 255, 255, 1)"},width:"32px",height:"32px"},onClick:()=>m(!0),children:p.jsx(Ia,{sx:{fontSize:"18px",color:"#666666"}})})]})]})]})}function c2({resourceUri:e,maxResultSize:t=0,retrievalFn:n}){const{apiClients:r}=it.useServer(),{projectName:o,packageName:a,versionId:s,modelPath:i}=Ct(e),{data:l,isSuccess:u,isError:c,error:d}=Jt({queryKey:[e],queryFn:async()=>(await r.notebooks.getNotebook(o,a,i,s)).data}),[m,f]=W.useState([]),[h,b]=W.useState(!1),[g,x]=W.useState(null),E=W.useMemo(()=>l?Xx(l.annotations):null,[l]),C=W.useMemo(()=>l?.notebookCells?Jx(l.notebookCells):null,[l]),T=W.useMemo(()=>C?.sourceInfoMap??new Map,[C]),w=C?.modelPath??null,S=W.useMemo(()=>!E||T.size===0||!w?[]:e2(T,E.filters,w),[E,T,w]),{filterStates:O,updateFilter:F,getActiveFilters:B}=uf({dimensionSpecs:S}),P=W.useMemo(()=>B(),[O,B]),N=W.useMemo(()=>{const z=new Map;for(const U of S)z.set(U.dimensionName,U.source);return z},[S]),v=W.useMemo(()=>{const z=new Map;for(const[U,j]of T)z.set(U,Qx(j));return z},[T]),{data:M}=lf({project:o,package:a,dimensionSpecs:S,versionId:s,enabled:S.length>0,activeFilters:P}),A=W.useCallback(async(z=[])=>{if(!(!u||!l?.notebookCells)){f(U=>U.length===0?l.notebookCells.map(j=>({...j})):U.map(j=>({...j,result:void 0}))),b(!0),x(null);try{for(let U=0;U<l.notebookCells.length;U++){const j=l.notebookCells[U];if(j.type==="markdown")continue;const _=j.text||"",K=_.includes("run:")||_.includes("->")||/^\s*(run|query)\s*:/m.test(_);try{let ne,L;if(K&&w&&z.length>0){let fe=_;if(z.length>0){const q=n2(_),te=q&&v.get(q)||new Set,Z=q?z.filter(re=>{const Q=N.get(re.dimensionName);return Q?Q===q||te.has(Q):!1}):[];if(Z.length>0){const re=t2(Z,N,q);re&&(fe=r2(_,re))}}ne=(await r.models.executeQueryModel(o,a,w,{query:fe,versionId:s})).data.result}else{const X=(await r.notebooks.executeNotebookCell(o,a,i,U,s)).data;ne=X.result,L=j.newSources||X.newSources}f(fe=>{const X=[...fe];return X[U]||(X[U]={...j}),X[U]={...X[U],result:ne,newSources:L},X})}catch(ne){console.error(`Error executing cell ${U}:`,ne)}}}catch(U){console.error("Error executing notebook cells:",U),x(U)}finally{b(!1)}}},[u,l,w,N,v,o,a,i,s,r.models,r.notebooks]);W.useEffect(()=>{!u||!l?.notebookCells||A([])},[u,l,A]);const D=W.useRef("");W.useEffect(()=>{const z=JSON.stringify(P.map(U=>({dim:U.dimensionName,type:U.matchType,val:U.value,val2:U.value2})));if(z!==D.current){if(D.current===""&&P.length===0){D.current=z;return}D.current=z,h||A(P)}},[P,h,A]);const R=W.useCallback(z=>U=>{F(z,U)},[F]);return S.some(z=>z.filterType==="Retrieval"),p.jsx(Tv,{children:p.jsx(Sv,{children:p.jsxs(I.Stack,{spacing:3,component:"section",children:[S.length>0&&M&&p.jsxs(I.Paper,{elevation:0,sx:{p:3,backgroundColor:"#ffffff",border:"1px solid #f0f0f0",borderRadius:2,boxShadow:"0 1px 3px rgba(0, 0, 0, 0.04)",transition:"box-shadow 0.2s ease-in-out","&:hover":{boxShadow:"0 2px 6px rgba(0, 0, 0, 0.08)"}},children:[p.jsx(I.Typography,{variant:"subtitle2",sx:{fontWeight:600,mb:2,color:"#333"},children:"Filters"}),p.jsx(I.Box,{sx:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(250px, 1fr))",gap:3},children:S.map(z=>{const U=M.get(z.dimensionName)||[],j=O.get(z.dimensionName);return z.filterType==="Retrieval"&&!n?null:p.jsx(I.Box,{children:p.jsx(Kx,{spec:z,values:U,selection:j?.selection,onChange:R(z.dimensionName),retrievalFn:n})},z.dimensionName)})})]}),!u&&!c&&p.jsx(on,{text:"Fetching Notebook..."}),u&&(m.length>0?m:l?.notebookCells||[]).map((z,U)=>p.jsx(lU,{cell:z,index:U,resourceUri:e,maxResultSize:t,isExecuting:h},U)),c&&d.status===404&&p.jsxs(I.Typography,{variant:"body2",sx:{color:"#666666"},children:[p.jsx("code",{children:`${o} > ${a} > ${i}`})," ","not found."]}),c&&d.status!==404&&p.jsx(Zt,{error:d,context:`${o} > ${a} > ${i}`}),g&&p.jsx(Zt,{error:{message:g.message,status:500,name:"ExecutionError"},context:"Notebook Execution"})]})})})}const d2=rt(p.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}));function uU({resourceUri:e}){const{apiClients:t}=it.useServer(),{projectName:n,packageName:r,versionId:o}=Ct(e),{data:a,isSuccess:s,isError:i,error:l}=Jt({queryKey:["package",n,r,o],queryFn:()=>t.packages.getPackage(n,r,o,!1)});return p.jsx(ro,{children:p.jsxs(oo,{children:[p.jsx(Fo,{children:"Package Config"}),p.jsx(I.Box,{sx:{maxHeight:"200px",overflowY:"auto"},children:p.jsxs(I.List,{dense:!0,disablePadding:!0,children:[p.jsx(I.ListItem,{dense:!0,disablePadding:!0,children:p.jsx(I.ListItemText,{primary:"Name",primaryTypographyProps:{fontWeight:"500"},secondary:r})}),!s&&!i&&p.jsx(I.ListItem,{children:p.jsx(on,{text:"Fetching Package Metadata..."})}),s&&(a.data&&p.jsx(I.ListItem,{dense:!0,disablePadding:!0,children:p.jsx(I.ListItemText,{primary:"Description",primaryTypographyProps:{fontWeight:"500"},secondary:a.data.description})})||p.jsxs(I.ListItem,{disablePadding:!0,dense:!0,sx:{mt:"20px"},children:[p.jsx(d2,{sx:{color:"grey.600",mr:"10px"}}),p.jsx(I.ListItemText,{primary:"No package manifest"})]})),i&&p.jsx(Zt,{error:l,context:`${n} > ${r} > ${o}`})]})})]})})}const Wl={postgres:[{label:"Host",name:"host",type:"text"},{label:"Port",name:"port",type:"number"},{label:"Database Name",name:"databaseName",type:"text"},{label:"User Name",name:"userName",type:"text"},{label:"Password",name:"password",type:"password"},{label:"Connection String",name:"connectionString",type:"text"}],bigquery:[{label:"Project ID",name:"defaultProjectId",type:"text"},{label:"Billing Project ID",name:"billingProjectId",type:"text"},{label:"Location",name:"location",type:"text"},{label:"Service Account Key JSON",name:"serviceAccountKeyJson",type:"text"},{label:"Maximum Bytes Billed",name:"maximumBytesBilled",type:"text"},{label:"Query Timeout Milliseconds",name:"queryTimeoutMilliseconds",type:"text"}],snowflake:[{label:"Account",name:"account",type:"text"},{label:"Username",name:"username",type:"text"},{label:"Password",name:"password",type:"password"},{label:"Role",name:"role",type:"text"},{label:"Warehouse",name:"warehouse",type:"text"},{label:"Database",name:"database",type:"text"},{label:"Schema",name:"schema",type:"text"},{label:"Response Timeout Milliseconds",name:"responseTimeoutMilliseconds",type:"text"},{label:"Private Key",name:"privateKey",type:"password"},{label:"Private Key Passphrase",name:"privateKeyPass",type:"password"}],trino:[{label:"Server",name:"server",type:"text"},{label:"Port",name:"port",type:"number"},{label:"Catalog",name:"catalog",type:"text"},{label:"Schema",name:"schema",type:"text"},{label:"User",name:"user",type:"text"},{label:"Password",name:"password",type:"password"},{label:"Peaka Key",name:"peakaKey",type:"password"}],mysql:[{label:"Host",name:"host",type:"text"},{label:"Port",name:"port",type:"number"},{label:"User",name:"user",type:"text"},{label:"Password",name:"password",type:"password"},{label:"Database",name:"database",type:"text"}],duckdb:[],motherduck:[{label:"Access Token",name:"accessToken",type:"text"},{label:"Database",name:"database",type:"text"}]},Lc={postgres:"postgresConnection",bigquery:"bigqueryConnection",snowflake:"snowflakeConnection",trino:"trinoConnection",mysql:"mysqlConnection",duckdb:"duckdbConnection",motherduck:"motherduckConnection"};function cU({onSubmit:e,isSubmitting:t}){const[n,r]=W.useState(!1),[o,a]=W.useState("postgres"),s=()=>{r(!0)},i=()=>{r(!1)},l=async u=>{u.preventDefault();const c=new FormData(u.currentTarget),d=c.get("name")?.toString(),m=c.get("type")?.toString(),f=Wl[m];if(!d)throw new Error("Name is required");if(!m)throw new Error("Type is required");const b={name:d,type:m,[{postgres:"postgresConnection",bigquery:"bigqueryConnection",snowflake:"snowflakeConnection",trino:"trinoConnection",mysql:"mysqlConnection",motherduck:"motherduckConnection"}[m]]:f.reduce((g,x)=>(g[x.name]=c.get(x.name)?.toString(),g),{})};await e(b),i()};return p.jsxs(W.Fragment,{children:[p.jsx(Dt,{variant:"outlined",onClick:s,children:"Add Connection"}),p.jsxs(kr,{open:n,onClose:i,children:[p.jsx(Ur,{children:"Create New Connection"}),p.jsxs(Sr,{children:[p.jsx(Ua,{children:"Add a new connection to query your data database using Malloy."}),p.jsxs("form",{onSubmit:l,id:"connection-form",children:[p.jsx(Rt,{autoFocus:!0,required:!0,margin:"dense",id:"name",name:"name",label:"Connection Name",type:"text",fullWidth:!0,variant:"standard"}),p.jsx(Rt,{margin:"dense",id:"type",name:"type",label:"Connection Type",fullWidth:!0,variant:"standard",value:o,select:!0,onChange:u=>a(u.target.value),children:Object.values(it.ConnectionTypeEnum).map(u=>p.jsx(aa,{value:u,children:u},u))}),Wl[o].map(u=>p.jsx(Rt,{margin:"dense",id:u.name,name:u.name,label:u.label,type:u.type,fullWidth:!0,variant:"standard"},u.name))]})]}),p.jsxs(Tr,{children:[p.jsx(Dt,{disabled:t,onClick:i,children:"Cancel"}),p.jsx(Dt,{type:"submit",form:"connection-form",loading:t,children:"Create Connection"})]})]})]})}function dU({connection:e,onCloseDialog:t,isMutating:n,onDelete:r}){const[o,a]=W.useState(!1),[s,i]=W.useState(""),l=()=>{a(!0)},u=()=>{a(!1),t()};return p.jsxs(W.Fragment,{children:[p.jsx(yr,{onClick:c=>{c.stopPropagation(),l()},children:p.jsx(An.Delete,{})}),p.jsxs(kr,{onClose:u,"aria-labelledby":"customized-dialog-title",open:o,children:[p.jsx(Ur,{sx:{m:0,p:2},id:"customized-dialog-title",children:"Delete Connection"}),p.jsx(yr,{"aria-label":"close",onClick:u,sx:c=>({position:"absolute",right:8,top:8,color:c.palette.grey[500]}),children:p.jsx(to,{})}),p.jsx(Sr,{dividers:!0,children:p.jsxs(Cn,{gutterBottom:!0,children:['Are you sure you want to delete "',e.name,'"? This action cannot be undone.']})}),p.jsx(Tr,{children:p.jsx(Dt,{loading:n,variant:"contained",autoFocus:!0,onClick:()=>r(),color:"error",children:"Delete"})}),p.jsx(I.Snackbar,{open:s!=="",autoHideDuration:6e3,onClose:()=>i(""),message:s})]})]})}function pU({connection:e,onSubmit:t,isSubmitting:n}){const[r,o]=W.useState(!1),[a,s]=W.useState(e.type),i=()=>{o(!0)},l=()=>{o(!1)},u=async c=>{c.preventDefault();const d=new FormData(c.currentTarget),m=d.get("name")?.toString(),f=d.get("type")?.toString(),h=Wl[f];if(!m)throw new Error("Name is required");if(!f)throw new Error("Type is required");const b={name:m,type:f,[Lc[f]]:h.reduce((g,x)=>(g[x.name]=d.get(x.name)?.toString()??e[Lc[f]][x.name],g),{})};await t(b),l()};return p.jsxs(W.Fragment,{children:[p.jsx(I.IconButton,{onClick:c=>{c.preventDefault(),c.stopPropagation(),i()},children:p.jsx(An.Edit,{})}),p.jsxs(kr,{open:r,onClose:l,children:[p.jsx(Ur,{onClick:c=>{c.stopPropagation()},children:"Edit Connection"}),p.jsxs(Sr,{onClick:c=>{c.stopPropagation()},children:[p.jsx(Ua,{children:"Edit a connection to query your data database using Malloy."}),p.jsxs("form",{onSubmit:u,id:"connection-form",children:[p.jsx(Rt,{autoFocus:!0,required:!0,margin:"dense",id:"name",name:"name",label:"Connection Name",type:"text",fullWidth:!0,variant:"standard",value:e.name,defaultValue:e.name}),p.jsx(Rt,{margin:"dense",id:"type",name:"type",label:"Connection Type",fullWidth:!0,variant:"standard",value:a,select:!0,onChange:c=>s(c.target.value),children:Object.values(it.ConnectionTypeEnum).map(c=>p.jsx(aa,{value:c,children:c},c))}),Wl[a].map(c=>p.jsx(Rt,{margin:"dense",id:c.name,name:c.name,label:c.label,type:c.type,fullWidth:!0,variant:"standard",defaultValue:e?.[Lc[a]??""]?.[c.name??""]??""},c.name))]})]}),p.jsxs(Tr,{onClick:c=>{c.stopPropagation()},children:[p.jsx(Dt,{disabled:n,onClick:l,children:"Cancel"}),p.jsx(Dt,{type:"submit",form:"connection-form",loading:n,children:"Edit Connection"})]})]})]})}function p2({connectionName:e,resourceUri:t,schema:n}){const{apiClients:r}=it.useServer(),{projectName:o}=Ct(t),[a,s]=W.useState(void 0),[i,l]=W.useState(n||null),[u,c]=W.useState(!1),{data:d,isError:m,isLoading:f,error:h}=Jt({queryKey:["schemas",o,e],queryFn:()=>r.connections.listSchemas(o,e)}),b=d?.data||[];return p.jsxs(I.Grid,{container:!0,spacing:1,children:[!n&&p.jsx(I.Grid,{size:{xs:12,md:4},children:p.jsxs(I.Paper,{sx:{p:1,m:0},children:[p.jsxs(I.Box,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:0},children:[p.jsx(I.Typography,{variant:"overline",fontWeight:"bold",children:"Table Paths"}),p.jsx(I.FormControlLabel,{control:p.jsx(I.Switch,{checked:u,onChange:g=>c(g.target.checked)}),label:"Hidden Schemas"})]}),p.jsx(I.Divider,{sx:{mt:"2px"}}),p.jsxs(I.Box,{sx:{mt:"2px",maxHeight:"600px",overflowY:"auto"},children:[f&&p.jsx(on,{text:"Loading schemas..."}),m&&p.jsx(Zt,{error:h,context:`${o} > ${e} > Schemas`}),!f&&!m&&b.length===0&&p.jsx(I.Typography,{variant:"body2",children:"No Schemas"}),!f&&!m&&b.length>0&&p.jsx(I.List,{dense:!0,disablePadding:!0,children:b.map(g=>{const x=g.name;if(g.isHidden&&!u)return null;const C=i===x;return p.jsx(I.ListItemButton,{selected:C,onClick:()=>{l(x),s(void 0)},children:p.jsx(I.ListItemText,{primary:x})},x)})})]})]})}),p.jsx(I.Grid,{size:{xs:12,md:n?6:4},children:i&&p.jsx(I.Paper,{sx:{p:1,m:0},children:p.jsx(mU,{connectionName:e,schemaName:i,onTableClick:g=>{s(g)},resourceUri:t})})}),p.jsx(I.Grid,{size:{xs:12,md:n?6:4},children:a&&p.jsx(I.Paper,{sx:{p:1,m:0},children:p.jsx(fU,{table:a})})})]})}function fU({table:e}){return p.jsxs(p.Fragment,{children:[p.jsxs(I.Typography,{variant:"overline",fontWeight:"bold",children:["Schema: ",e.resource]}),p.jsx(I.Divider,{}),p.jsx(I.Box,{sx:{mt:"10px",maxHeight:"600px",overflowY:"auto"},children:p.jsx(I.TableContainer,{children:p.jsxs(I.Table,{size:"small",sx:{"& .MuiTableCell-root":{padding:"10px"}},children:[p.jsx(I.TableHead,{children:p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{children:"NAME"}),p.jsx(I.TableCell,{children:"TYPE"})]})}),p.jsx(I.TableBody,{children:e.columns?.sort((t,n)=>t.name.localeCompare(n.name))?.map(t=>p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{children:t.name}),p.jsx(I.TableCell,{children:t.type})]},t.name))})]})})})]})}function mU({connectionName:e,schemaName:t,onTableClick:n,resourceUri:r}){const{projectName:o}=Ct(r),{apiClients:a}=it.useServer(),[s,i]=W.useState(""),{data:l,isSuccess:u,isError:c,error:d,isLoading:m}=Jt({queryKey:["tablesInSchema",o,e,t],queryFn:()=>a.connections.listTables(o,e,t)}),f=u&&l?.data?l.data.filter(h=>(h.resource.split(".").pop()?.toLowerCase()||"").includes(s.toLowerCase())).sort((h,b)=>{const g=h.resource.split(".").pop()||h.resource,x=b.resource.split(".").pop()||b.resource;return g.localeCompare(x)}):[];return p.jsxs(p.Fragment,{children:[p.jsxs(I.Typography,{variant:"overline",fontWeight:"bold",children:["Tables in ",t]}),p.jsx(I.Divider,{}),p.jsx(I.Box,{sx:{mt:1,mb:1},children:p.jsx(I.TextField,{size:"small",fullWidth:!0,placeholder:"Search tables...",value:s,onChange:h=>i(h.target.value),variant:"outlined"})}),p.jsx(I.Divider,{}),p.jsxs(I.Box,{sx:{mt:"2px",maxHeight:"600px",overflowY:"auto"},children:[m&&p.jsx(on,{text:"Fetching Tables..."}),c&&p.jsx(Zt,{error:d,context:`${o} > ${e} > ${t}`}),u&&f.length===0&&p.jsx(I.Typography,{variant:"body2",children:"No Tables"}),u&&l?.data&&l.data.length>0&&p.jsx(I.List,{dense:!0,disablePadding:!0,children:f.map(h=>{const b=h.resource.split(".").pop()||h.resource;return p.jsx(I.ListItemButton,{onClick:()=>n(h),children:p.jsx(I.ListItemText,{primary:b,secondary:`${h.columns.length} columns`})},h.resource)})})]})]})}function hU({connection:e,onClick:t,onEdit:n,onDelete:r,isMutating:o,mutable:a}){return p.jsxs(I.TableRow,{sx:{"&:hover":{backgroundColor:"action.hover"}},children:[p.jsx(I.TableCell,{sx:{cursor:"pointer",flexGrow:1},onClick:t,children:p.jsxs(I.Box,{sx:{display:"flex",alignItems:"center",gap:1},children:[p.jsx(I.Typography,{variant:"body2",children:e.name}),p.jsx(Ia,{sx:{fontSize:"1rem",color:"action.active",opacity:.7}})]})}),p.jsx(I.TableCell,{sx:{minWidth:"120px"},children:p.jsx(I.Typography,{variant:"body2",children:e.type})}),a&&p.jsxs(I.TableCell,{sx:{minWidth:"120px"},children:[p.jsx(pU,{connection:e,onSubmit:n,isSubmitting:o}),p.jsx(dU,{connection:e,onCloseDialog:()=>{},isMutating:o,onDelete:()=>r(e)})]})]},e.name)}function gU({resourceUri:e}){const{apiClients:t,mutable:n}=it.useServer(),r=$r.useQueryClient(),{projectName:o}=Ct(e),[a,s]=W.useState(""),[i,l]=W.useState(null),u=pi({projectName:o,connectionName:i}),{data:c,isSuccess:d,isError:m,error:f}=Jt({queryKey:["connections",o],queryFn:()=>t.connections.listConnections(o)}),h=C=>{l(C)},b=()=>{l(null)},g=hr({mutationFn:C=>t.projects.updateProject(o,{name:o,connections:[...c.data,C]}),onSuccess(){s("Connection added successfully"),r.invalidateQueries({queryKey:["connections",o]})},onError(C){s(C.message)}}),x=hr({mutationFn:C=>t.projects.updateProject(o,{name:o,connections:c.data.map(T=>T.name===C.name?C:T)}),onSuccess(C,T){s(`Connection ${T.name} updated successfully`),r.invalidateQueries({queryKey:["connections",o]})},onError(C){s(C.message)}}),E=hr({mutationFn:C=>t.projects.updateProject(o,{name:o,connections:c.data.filter(T=>T.name!==C.name)}),onSuccess(C,T){s(`Connection ${T.name} deleted successfully`),r.invalidateQueries({queryKey:["connections",o]})},onError(C){s(C.message)}});return p.jsxs(p.Fragment,{children:[p.jsx(ro,{children:p.jsxs(oo,{children:[p.jsx(Fo,{children:"Database Connections"}),p.jsxs(I.Box,{sx:{mb:1,maxHeight:"200px",overflowY:"auto"},children:[!d&&!m&&p.jsx(I.Typography,{variant:"body2",sx:{m:"auto"},children:"Fetching Connections..."}),d&&c.data.length>0&&p.jsx(I.Table,{size:"small",sx:{borderCollapse:"collapse","& .MuiTableRow-root":{display:"flex",width:"100%"},"& .MuiTableCell-root":{borderBottom:"1px solid #e0e0e0",display:"flex",alignItems:"center"},"& .MuiTableRow-root:last-child .MuiTableCell-root":{borderBottom:"none"}},children:p.jsxs(I.TableBody,{children:[p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{sx:{flexGrow:1},children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",children:"Connection Name"})}),p.jsx(I.TableCell,{sx:{minWidth:"120px"},children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",children:"Type"})}),n&&p.jsx(I.TableCell,{sx:{minWidth:"120px"},children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",sx:{mx:"auto"},children:"Actions"})})]}),c.data.map(C=>p.jsx(hU,{connection:C,onClick:()=>h(C.name),onEdit:T=>x.mutateAsync(T),onDelete:T=>{C.resource?s("Cannot delete this connection"):E.mutateAsync(T)},isMutating:x.isPending||E.isPending,mutable:n},C.name))]})}),d&&c.data.length===0&&p.jsx(I.Typography,{variant:"body2",children:"No Connections"}),m&&p.jsx(Zt,{error:f,context:`${o} > Connections`})]}),n&&p.jsx(I.Box,{sx:{display:"flex",justifyContent:"flex-end"},children:p.jsx(cU,{onSubmit:C=>g.mutateAsync(C),isSubmitting:g.isPending})})]})}),p.jsx(I.Snackbar,{open:a!=="",autoHideDuration:6e3,onClose:()=>s(""),message:a}),p.jsxs(I.Dialog,{open:i!==null,onClose:b,maxWidth:"lg",fullWidth:!0,children:[p.jsxs(I.DialogTitle,{children:["Connection Explorer: ",i,p.jsx(I.IconButton,{"aria-label":"close",onClick:b,sx:{position:"absolute",right:8,top:8},children:p.jsx(I.Box,{sx:{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center"},children:"X"})})]}),p.jsx(I.DialogContent,{children:i&&p.jsx(p2,{resourceUri:u,connectionName:i})})]})]})}function bU({resourceUri:e}){const{apiClients:t}=it.useServer(),{projectName:n,packageName:r,versionId:o}=Ct(e),[a,s]=W.useState(!1),[i,l]=W.useState(null),u=g=>{l(g),s(!0)},c=()=>{s(!1),l(null)},{data:d,isError:m,error:f,isSuccess:h}=Jt({queryKey:["databases",n,r,o],queryFn:()=>t.databases.listDatabases(n,r,o)}),b=g=>g>=1024*1024*1024*1024?`${(g/(1024*1024*1024)).toFixed(2)} T`:g>=1024*1024*1024?`${(g/(1024*1024*1024)).toFixed(2)} G`:g>=1024*1024?`${(g/(1024*1024)).toFixed(2)} M`:`${(g/1024).toFixed(2)} K`;return p.jsxs(p.Fragment,{children:[p.jsx(ro,{children:p.jsxs(oo,{children:[p.jsx(Fo,{children:"Embedded Databases"}),p.jsxs(I.Box,{sx:{maxHeight:"200px",overflowY:"auto"},children:[!h&&!m&&p.jsx(on,{text:"Fetching Databases..."}),m&&p.jsx(Zt,{error:f,context:`${n} > ${r} > Databases`}),h&&d.data.length>0&&p.jsx(I.Table,{size:"small",sx:{borderCollapse:"collapse","& .MuiTableCell-root":{borderBottom:"1px solid #e0e0e0"},"& .MuiTableRow-root:last-child .MuiTableCell-root":{borderBottom:"none"}},children:p.jsxs(I.TableBody,{children:[p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",children:"Name"})}),p.jsx(I.TableCell,{align:"right",children:p.jsx(I.Typography,{variant:"body2",fontWeight:"500",color:"text.secondary",children:"Rows"})})]}),d.data.map(g=>p.jsxs(I.TableRow,{onClick:()=>u(g),sx:{cursor:"pointer","&:hover":{backgroundColor:"action.hover"}},children:[p.jsx(I.TableCell,{component:"th",scope:"row",children:p.jsxs(I.Box,{sx:{display:"flex",alignItems:"center",gap:1},children:[p.jsx(I.Typography,{variant:"body2",children:g.path}),p.jsx(Ia,{sx:{fontSize:"1rem",color:"action.active",opacity:.7}})]})}),p.jsx(I.TableCell,{align:"right",children:p.jsx(I.Typography,{variant:"body2",children:b(g.info.rowCount)})})]},g.path))]})}),h&&d.data.length===0&&p.jsx(I.Typography,{variant:"body2",sx:{m:"auto"},children:"No databases found"})]})]})}),p.jsxs(I.Dialog,{open:a,onClose:c,maxWidth:"sm",fullWidth:!0,children:[p.jsxs(I.DialogTitle,{children:[i?.path,p.jsx(I.IconButton,{"aria-label":"close",onClick:c,sx:{position:"absolute",right:8,top:8},children:p.jsx(I.Box,{sx:{width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center"},children:"X"})})]}),p.jsx(I.DialogContent,{children:i?.info?.columns&&p.jsx(I.TableContainer,{children:p.jsxs(I.Table,{size:"small",children:[p.jsx(I.TableHead,{children:p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{children:"Column"}),p.jsx(I.TableCell,{children:"Type"})]})}),p.jsx(I.TableBody,{children:i.info.columns.map(g=>p.jsxs(I.TableRow,{children:[p.jsx(I.TableCell,{component:"th",scope:"row",children:g.name}),p.jsx(I.TableCell,{children:g.type})]},g.name))})]})})})]})]})}function yU(e){return Fe("MuiCollapse",e)}Re("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);const xU=e=>{const{orientation:t,classes:n}=e,r={root:["root",`${t}`],entered:["entered"],hidden:["hidden"],wrapper:["wrapper",`${t}`],wrapperInner:["wrapperInner",`${t}`]};return Le(r,yU,n)},CU=ae("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.orientation],n.state==="entered"&&t.entered,n.state==="exited"&&!n.in&&n.collapsedSize==="0px"&&t.hidden]}})(Je(({theme:e})=>({height:0,overflow:"hidden",transition:e.transitions.create("height"),variants:[{props:{orientation:"horizontal"},style:{height:"auto",width:0,transition:e.transitions.create("width")}},{props:{state:"entered"},style:{height:"auto",overflow:"visible"}},{props:{state:"entered",orientation:"horizontal"},style:{width:"auto"}},{props:({ownerState:t})=>t.state==="exited"&&!t.in&&t.collapsedSize==="0px",style:{visibility:"hidden"}}]}))),EU=ae("div",{name:"MuiCollapse",slot:"Wrapper"})({display:"flex",width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),vU=ae("div",{name:"MuiCollapse",slot:"WrapperInner"})({width:"100%",variants:[{props:{orientation:"horizontal"},style:{width:"auto",height:"100%"}}]}),Qs=k.forwardRef(function(t,n){const r=Qe({props:t,name:"MuiCollapse"}),{addEndListener:o,children:a,className:s,collapsedSize:i="0px",component:l,easing:u,in:c,onEnter:d,onEntered:m,onEntering:f,onExit:h,onExited:b,onExiting:g,orientation:x="vertical",style:E,timeout:C=x0.standard,TransitionComponent:T=Kn,...w}=r,S={...r,orientation:x,collapsedSize:i},O=xU(S),F=no(),B=Eu(),P=k.useRef(null),N=k.useRef(),v=typeof i=="number"?`${i}px`:i,M=x==="horizontal",A=M?"width":"height",D=k.useRef(null),R=nt(n,D),z=q=>te=>{if(q){const Z=D.current;te===void 0?q(Z):q(Z,te)}},U=()=>P.current?P.current[M?"clientWidth":"clientHeight"]:0,j=z((q,te)=>{P.current&&M&&(P.current.style.position="absolute"),q.style[A]=v,d&&d(q,te)}),_=z((q,te)=>{const Z=U();P.current&&M&&(P.current.style.position="");const{duration:re,easing:Q}=_a({style:E,timeout:C,easing:u},{mode:"enter"});if(C==="auto"){const G=F.transitions.getAutoHeightDuration(Z);q.style.transitionDuration=`${G}ms`,N.current=G}else q.style.transitionDuration=typeof re=="string"?re:`${re}ms`;q.style[A]=`${Z}px`,q.style.transitionTimingFunction=Q,f&&f(q,te)}),K=z((q,te)=>{q.style[A]="auto",m&&m(q,te)}),ne=z(q=>{q.style[A]=`${U()}px`,h&&h(q)}),L=z(b),fe=z(q=>{const te=U(),{duration:Z,easing:re}=_a({style:E,timeout:C,easing:u},{mode:"exit"});if(C==="auto"){const Q=F.transitions.getAutoHeightDuration(te);q.style.transitionDuration=`${Q}ms`,N.current=Q}else q.style.transitionDuration=typeof Z=="string"?Z:`${Z}ms`;q.style[A]=v,q.style.transitionTimingFunction=re,g&&g(q)}),X=q=>{C==="auto"&&B.start(N.current||0,q),o&&o(D.current,q)};return p.jsx(T,{in:c,onEnter:j,onEntered:K,onEntering:_,onExit:ne,onExited:L,onExiting:fe,addEndListener:X,nodeRef:D,timeout:C==="auto"?null:C,...w,children:(q,{ownerState:te,...Z})=>p.jsx(CU,{as:l,className:De(O.root,s,{entered:O.entered,exited:!c&&v==="0px"&&O.hidden}[q]),style:{[M?"minWidth":"minHeight"]:v,...E},ref:R,ownerState:{...S,state:q},...Z,children:p.jsx(EU,{ownerState:{...S,state:q},className:O.wrapper,ref:P,children:p.jsx(vU,{ownerState:{...S,state:q},className:O.wrapperInner,children:a})})})})});Qs&&(Qs.muiSupportAuto=!0);function TU(e){return Fe("PrivateSwitchBase",e)}Re("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const SU=e=>{const{classes:t,checked:n,disabled:r,edge:o}=e,a={root:["root",n&&"checked",r&&"disabled",o&&`edge${ke(o)}`],input:["input"]};return Le(a,TU,t)},kU=ae(No,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:e,ownerState:t})=>e==="start"&&t.size!=="small",style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:e,ownerState:t})=>e==="end"&&t.size!=="small",style:{marginRight:-12}}]}),wU=ae("input",{name:"MuiSwitchBase",shouldForwardProp:fn})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),_U=k.forwardRef(function(t,n){const{autoFocus:r,checked:o,checkedIcon:a,defaultChecked:s,disabled:i,disableFocusRipple:l=!1,edge:u=!1,icon:c,id:d,inputProps:m,inputRef:f,name:h,onBlur:b,onChange:g,onFocus:x,readOnly:E,required:C=!1,tabIndex:T,type:w,value:S,slots:O={},slotProps:F={},...B}=t,[P,N]=_n({controlled:o,default:!!s,name:"SwitchBase",state:"checked"}),v=Qn(),M=X=>{x&&x(X),v&&v.onFocus&&v.onFocus(X)},A=X=>{b&&b(X),v&&v.onBlur&&v.onBlur(X)},D=X=>{if(X.nativeEvent.defaultPrevented)return;const q=X.target.checked;N(q),g&&g(X,q)};let R=i;v&&typeof R>"u"&&(R=v.disabled);const z=w==="checkbox"||w==="radio",U={...t,checked:P,disabled:R,disableFocusRipple:l,edge:u},j=SU(U),_={slots:O,slotProps:{input:m,...F}},[K,ne]=ct("root",{ref:n,elementType:kU,className:j.root,shouldForwardComponentProp:!0,externalForwardedProps:{..._,component:"span",...B},getSlotProps:X=>({...X,onFocus:q=>{X.onFocus?.(q),M(q)},onBlur:q=>{X.onBlur?.(q),A(q)}}),ownerState:U,additionalProps:{centerRipple:!0,focusRipple:!l,disabled:R,role:void 0,tabIndex:null}}),[L,fe]=ct("input",{ref:f,elementType:wU,className:j.input,externalForwardedProps:_,getSlotProps:X=>({...X,onChange:q=>{X.onChange?.(q),D(q)}}),ownerState:U,additionalProps:{autoFocus:r,checked:o,defaultChecked:s,disabled:R,id:z?d:void 0,name:h,readOnly:E,required:C,tabIndex:T,type:w,...w==="checkbox"&&S===void 0?{}:{value:S}}});return p.jsxs(K,{...ne,children:[p.jsx(L,{...fe}),P?a:c]})}),IU=rt(p.jsx("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"})),AU=rt(p.jsx("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})),DU=rt(p.jsx("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}));function PU(e){return Fe("MuiCheckbox",e)}const Fc=Re("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]),RU=e=>{const{classes:t,indeterminate:n,color:r,size:o}=e,a={root:["root",n&&"indeterminate",`color${ke(r)}`,`size${ke(o)}`]},s=Le(a,PU,t);return{...t,...s}},MU=ae(_U,{shouldForwardProp:e=>fn(e)||e==="classes",name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${ke(n.size)}`],n.color!=="default"&&t[`color${ke(n.color)}`]]}})(Je(({theme:e})=>({color:(e.vars||e).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity)}}},...Object.entries(e.palette).filter(dn()).map(([t])=>({props:{color:t,disableRipple:!1},style:{"&:hover":{backgroundColor:e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}}})),...Object.entries(e.palette).filter(dn()).map(([t])=>({props:{color:t},style:{[`&.${Fc.checked}, &.${Fc.indeterminate}`]:{color:(e.vars||e).palette[t].main},[`&.${Fc.disabled}`]:{color:(e.vars||e).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),NU=p.jsx(AU,{}),OU=p.jsx(IU,{}),LU=p.jsx(DU,{}),f2=k.forwardRef(function(t,n){const r=Qe({props:t,name:"MuiCheckbox"}),{checkedIcon:o=NU,color:a="primary",icon:s=OU,indeterminate:i=!1,indeterminateIcon:l=LU,inputProps:u,size:c="medium",disableRipple:d=!1,className:m,slots:f={},slotProps:h={},...b}=r,g=i?l:s,x=i?l:o,E={...r,disableRipple:d,color:a,indeterminate:i,size:c},C=RU(E),T=h.input??u,[w,S]=ct("root",{ref:n,elementType:MU,className:De(C.root,m),shouldForwardComponentProp:!0,externalForwardedProps:{slots:f,slotProps:h,...b},ownerState:E,additionalProps:{type:"checkbox",icon:k.cloneElement(g,{fontSize:g.props.fontSize??c}),checkedIcon:k.cloneElement(x,{fontSize:x.props.fontSize??c}),disableRipple:d,slots:f,slotProps:{input:_0(typeof T=="function"?T(E):T,{"data-indeterminate":i})}}});return p.jsx(w,{...S,classes:C})});function m2(e){return St}const h2=k.createContext(null);function FU(e){const{value:t,children:n}=e;return p.jsx(h2.Provider,{value:t,children:t.wrapRoot({children:n,instance:t.instance})})}const zo=()=>{const e=k.useContext(h2);if(e==null)throw new Error(["MUI X: Could not find the Tree View context.","It looks like you rendered your component outside of a SimpleTreeView or RichTreeView parent component.","This can also happen if you are bundling multiple versions of the Tree View."].join(`
|
|
229
229
|
`));return e},$U=({props:e})=>{const{instance:t}=zo(),{label:n,itemId:r}=e,[o,a]=k.useState(n),s=t.isItemBeingEdited(r);return k.useEffect(()=>{s||a(n)},[s,n]),{propsEnhancers:{labelInput:({externalEventHandlers:i,interactions:l})=>t.isItemEditable(r)?{value:o??"","data-element":"labelInput",onChange:f=>{i.onChange?.(f),a(f.target.value)},onKeyDown:f=>{if(i.onKeyDown?.(f),f.defaultMuiPrevented)return;const h=f.target;f.key==="Enter"&&h.value?l.handleSaveItemLabel(f,h.value):f.key==="Escape"&&l.handleCancelItemLabelEditing(f)},onBlur:f=>{i.onBlur?.(f),!f.defaultMuiPrevented&&f.target.value&&l.handleSaveItemLabel(f,f.target.value)},autoFocus:!0,type:"text"}:{}}}},Un=({instance:e,state:t,setState:n,params:r})=>{const o=k.useRef(t.editedItemId),a=d=>o.current===d,s=d=>{n(m=>H({},m,{editedItemId:d})),o.current=d},i=d=>d===t.editedItemId,l=!!r.isItemEditable,u=d=>{if(d==null||!l)return!1;const m=e.getItem(d);return m?typeof r.isItemEditable=="function"?r.isItemEditable(m):!!r.isItemEditable:!1},c=(d,m)=>{if(!m)throw new Error(["MUI X: The Tree View component requires all items to have a `label` property.","The label of an item cannot be empty.",d].join(`
|
|
230
230
|
`));n(f=>{const h=f.items.itemMetaMap[d];return h.label!==m?H({},f,{items:H({},f.items,{itemMetaMap:H({},f.items.itemMetaMap,{[d]:H({},h,{label:m})})})}):f}),r.onItemLabelChange&&r.onItemLabelChange(d,m)};return{instance:{setEditedItemId:s,isItemBeingEdited:i,updateItemLabel:c,isItemEditable:u,isTreeViewEditable:l,isItemBeingEditedRef:a},publicAPI:{updateItemLabel:c}}};Un.itemPlugin=$U;Un.getDefaultizedParams=({params:e,experimentalFeatures:t})=>{const n=t?.labelEditing;return H({},e,{isItemEditable:n?e.isItemEditable??!1:!1})};Un.getInitialState=()=>({editedItemId:null});Un.params={onItemLabelChange:!0,isItemEditable:!0};const Ao=(e,t)=>e.getAvailablePlugins().has(t),g2=e=>Array.isArray(e)?e.length>0&&e.some(g2):!!e,BU=({itemId:e,children:t})=>{const{instance:n,selection:{multiSelect:r},publicAPI:o}=zo(),a={expandable:g2(t),expanded:n.isItemExpanded(e),focused:n.isItemFocused(e),selected:n.isItemSelected(e),disabled:n.isItemDisabled(e),editing:n?.isItemBeingEdited?n?.isItemBeingEdited(e):!1,editable:n.isItemEditable?n.isItemEditable(e):!1},s=f=>{if(a.disabled)return;a.focused||n.focusItem(f,e);const h=r&&(f.shiftKey||f.ctrlKey||f.metaKey);a.expandable&&!(h&&n.isItemExpanded(e))&&n.toggleItemExpansion(f,e)},i=f=>{if(a.disabled)return;!a.focused&&!a.editing&&n.focusItem(f,e),r&&(f.shiftKey||f.ctrlKey||f.metaKey)?f.shiftKey?n.expandSelectionRange(f,e):n.selectItem({event:f,itemId:e,keepExistingSelection:!0}):n.selectItem({event:f,itemId:e,shouldBeSelected:!0})},l=f=>{const h=f.nativeEvent.shiftKey;r&&h?n.expandSelectionRange(f,e):n.selectItem({event:f,itemId:e,keepExistingSelection:r,shouldBeSelected:f.target.checked})},u=()=>{Ao(n,Un)&&n.isItemEditable(e)&&(n.isItemBeingEdited(e)?n.setEditedItemId(null):n.setEditedItemId(e))};return{interactions:{handleExpansion:s,handleSelection:i,handleCheckboxSelection:l,toggleItemEditing:u,handleSaveItemLabel:(f,h)=>{Ao(n,Un)&&n.isItemBeingEditedRef(e)&&(n.updateItemLabel(e,h),u(),n.focusItem(f,e))},handleCancelItemLabelEditing:f=>{Ao(n,Un)&&n.isItemBeingEditedRef(e)&&(u(),n.focusItem(f,e))}},status:a,publicAPI:o}},df=k.createContext(()=>-1),b2=(e,t)=>{let n=t.length-1;for(;n>=0&&!e.isItemNavigable(t[n]);)n-=1;if(n!==-1)return t[n]},y2=(e,t)=>{const n=e.getItemMeta(t),r=e.getItemOrderedChildrenIds(n.parentId),o=e.getItemIndex(t);if(o===0)return n.parentId;let a=o-1;for(;!e.isItemNavigable(r[a])&&a>=0;)a-=1;if(a===-1)return n.parentId==null?null:y2(e,n.parentId);let s=r[a],i=b2(e,e.getItemOrderedChildrenIds(s));for(;e.isItemExpanded(s)&&i!=null;)s=i,i=e.getItemOrderedChildrenIds(s).find(e.isItemNavigable);return s},ul=(e,t)=>{if(e.isItemExpanded(t)){const r=e.getItemOrderedChildrenIds(t).find(e.isItemNavigable);if(r!=null)return r}let n=e.getItemMeta(t);for(;n!=null;){const r=e.getItemOrderedChildrenIds(n.parentId),o=e.getItemIndex(n.id);if(o<r.length-1){let a=o+1;for(;!e.isItemNavigable(r[a])&&a<r.length-1;)a+=1;if(e.isItemNavigable(r[a]))return r[a]}n=e.getItemMeta(n.parentId)}return null},x2=e=>{let t=null;for(;t==null||e.isItemExpanded(t);){const n=e.getItemOrderedChildrenIds(t),r=b2(e,n);if(r==null)return t;t=r}return t},Xs=e=>e.getItemOrderedChildrenIds(null).find(e.isItemNavigable),C2=(e,t,n)=>{if(t===n)return[t,n];const r=e.getItemMeta(t),o=e.getItemMeta(n);if(r.parentId===o.id||o.parentId===r.id)return o.parentId===r.id?[r.id,o.id]:[o.id,r.id];const a=[r.id],s=[o.id];let i=r.parentId,l=o.parentId,u=s.indexOf(i)!==-1,c=a.indexOf(l)!==-1,d=!0,m=!0;for(;!c&&!u;)d&&(a.push(i),u=s.indexOf(i)!==-1,d=i!==null,!u&&d&&(i=e.getItemMeta(i).parentId)),m&&!u&&(s.push(l),c=a.indexOf(l)!==-1,m=l!==null,!c&&m&&(l=e.getItemMeta(l).parentId));const f=u?i:l,h=e.getItemOrderedChildrenIds(f),b=a[a.indexOf(f)-1],g=s[s.indexOf(f)-1];return h.indexOf(b)<h.indexOf(g)?[t,n]:[n,t]},jU=(e,t,n)=>{const r=l=>{if(e.isItemExpandable(l)&&e.isItemExpanded(l))return e.getItemOrderedChildrenIds(l)[0];let u=e.getItemMeta(l);for(;u!=null;){const c=e.getItemOrderedChildrenIds(u.parentId),d=e.getItemIndex(u.id);if(d<c.length-1)return c[d+1];u=e.getItemMeta(u.parentId)}throw new Error("Invalid range")},[o,a]=C2(e,t,n),s=[o];let i=o;for(;i!==a;)i=r(i),e.isItemDisabled(i)||s.push(i);return s},HU=e=>{let t=Xs(e);const n=[];for(;t!=null;)n.push(t),t=ul(e,t);return n},Zs=(e,t)=>t!==e.closest('*[role="treeitem"]');let o0=0;const UU=()=>(o0+=1,`mui-tree-view-${o0}`),pf=({id:e,treeId:t="",itemId:n})=>e??`${t}-${n}`,zU=e=>{const{runItemPlugins:t,items:{onItemClick:n,disabledItemsFocusable:r,indentationAtItemLevel:o},selection:{disableSelection:a,checkboxSelection:s},expansion:{expansionTrigger:i},treeId:l,instance:u,publicAPI:c}=zo(),d=k.useContext(df),{id:m,itemId:f,label:h,children:b,rootRef:g}=e,{rootRef:x,contentRef:E,propsEnhancers:C}=t(e),{interactions:T,status:w}=BU({itemId:f,children:b}),S=k.useRef(null),O=k.useRef(null),F=nt(g,x,S),B=nt(E,O),P=k.useRef(null),N=pf({itemId:f,treeId:l,id:m}),v=u.canItemBeTabbed(f)?0:-1,M={rootRefObject:S,contentRefObject:O,interactions:T},A=Q=>G=>{if(Q.onFocus?.(G),G.defaultMuiPrevented)return;const se=!w.disabled||r;!w.focused&&se&&G.currentTarget===G.target&&u.focusItem(G,f)},D=Q=>G=>{if(Q.onBlur?.(G),G.defaultMuiPrevented)return;const se=u.getItemDOMElement(f);w.editing||G.relatedTarget&&Zs(G.relatedTarget,se)&&(G.target&&G.target?.dataset?.element==="labelInput"&&Zs(G.target,se)||G.relatedTarget?.dataset?.element==="labelInput")||u.removeFocusedItem()},R=Q=>G=>{Q.onKeyDown?.(G),!(G.defaultMuiPrevented||G.target?.dataset?.element==="labelInput")&&u.handleItemKeyDown(G,f)},z=Q=>G=>{Q.onDoubleClick?.(G),!G.defaultMuiPrevented&&T.toggleItemEditing()},U=Q=>G=>{Q.onClick?.(G),n?.(G,f),!(G.defaultMuiPrevented||P.current?.contains(G.target))&&(i==="content"&&T.handleExpansion(G),s||T.handleSelection(G))},j=Q=>G=>{Q.onMouseDown?.(G),!G.defaultMuiPrevented&&(G.shiftKey||G.ctrlKey||G.metaKey||w.disabled)&&G.preventDefault()},_=Q=>G=>{Q.onChange?.(G),!G.defaultMuiPrevented&&(a||w.disabled||T.handleCheckboxSelection(G))},K=Q=>G=>{Q.onClick?.(G),!G.defaultMuiPrevented&&i==="iconContainer"&&T.handleExpansion(G)};return{getRootProps:(Q={})=>{const G=H({},ln(e),ln(Q));let se;w.selected?se=!0:a||w.disabled?se=void 0:se=!1;const J=H({},G,{ref:F,role:"treeitem",tabIndex:v,id:N,"aria-expanded":w.expandable?w.expanded:void 0,"aria-selected":se,"aria-disabled":w.disabled||void 0},Q,{onFocus:A(G),onBlur:D(G),onKeyDown:R(G)});o&&(J.style={"--TreeView-itemDepth":typeof d=="function"?d(f):d});const ee=C.root?.(H({},M,{externalEventHandlers:G}))??{};return H({},J,ee)},getContentProps:(Q={})=>{const G=ln(Q),se=H({},G,Q,{ref:B,onClick:U(G),onMouseDown:j(G),status:w});o&&(se.indentationAtItemLevel=!0);const J=C.content?.(H({},M,{externalEventHandlers:G}))??{};return H({},se,J)},getGroupTransitionProps:(Q={})=>{const G=ln(Q),se=H({},G,{unmountOnExit:!0,component:"ul",role:"group",in:w.expanded,children:b},Q);return o&&(se.indentationAtItemLevel=!0),se},getIconContainerProps:(Q={})=>{const G=ln(Q);return H({},G,Q,{onClick:K(G)})},getCheckboxProps:(Q={})=>{const G=ln(Q);return H({},G,{visible:s,ref:P,checked:w.selected,disabled:a||w.disabled,tabIndex:-1},Q,{onChange:_(G)})},getLabelProps:(Q={})=>{const G=H({},ln(Q)),se=H({},G,{children:h},Q,{onDoubleClick:z(G)});return u.isTreeViewEditable&&(se.editable=w.editable),se},getLabelInputProps:(Q={})=>{const G=ln(Q),se=C.labelInput?.({rootRefObject:S,contentRefObject:O,externalEventHandlers:G,interactions:T})??{};return H({},Q,se)},getDragAndDropOverlayProps:(Q={})=>{const G=ln(Q),se=C.dragAndDropOverlay?.(H({},M,{externalEventHandlers:G}))??{};return H({},Q,se)},rootRef:F,status:w,publicAPI:c}},VU=zU;function E2(e){const{instance:t,items:{onItemClick:n},selection:{multiSelect:r,checkboxSelection:o,disableSelection:a},expansion:{expansionTrigger:s}}=zo(),i=t.isItemExpandable(e),l=t.isItemExpanded(e),u=t.isItemFocused(e),c=t.isItemSelected(e),d=t.isItemDisabled(e),m=t?.isItemBeingEdited?t?.isItemBeingEdited(e):!1,f=t.isItemEditable?t.isItemEditable(e):!1,h=w=>{if(!d){u||t.focusItem(w,e);const S=r&&(w.shiftKey||w.ctrlKey||w.metaKey);i&&!(S&&t.isItemExpanded(e))&&t.toggleItemExpansion(w,e)}},b=w=>{d||(!u&&!m&&t.focusItem(w,e),r&&(w.shiftKey||w.ctrlKey||w.metaKey)?w.shiftKey?t.expandSelectionRange(w,e):t.selectItem({event:w,itemId:e,keepExistingSelection:!0}):t.selectItem({event:w,itemId:e,shouldBeSelected:!0}))},g=w=>{if(a||d)return;const S=w.nativeEvent.shiftKey;r&&S?t.expandSelectionRange(w,e):t.selectItem({event:w,itemId:e,keepExistingSelection:r,shouldBeSelected:w.target.checked})},x=w=>{(w.shiftKey||w.ctrlKey||w.metaKey||d)&&w.preventDefault()},E=()=>{Ao(t,Un)&&t.isItemEditable(e)&&(t.isItemBeingEdited(e)?t.setEditedItemId(null):t.setEditedItemId(e))};return{disabled:d,expanded:l,selected:c,focused:u,editable:f,editing:m,disableSelection:a,checkboxSelection:o,handleExpansion:h,handleSelection:b,handleCheckboxSelection:g,handleContentClick:n,preventSelection:x,expansionTrigger:s,toggleItemEditing:E,handleSaveItemLabel:(w,S)=>{Ao(t,Un)&&t.isItemBeingEditedRef(e)&&(t.updateItemLabel(e,S),E(),t.focusItem(w,e))},handleCancelItemLabelEditing:w=>{Ao(t,Un)&&t.isItemBeingEditedRef(e)&&(E(),t.focusItem(w,e))}}}const WU=ae("div",{name:"MuiTreeItem2DragAndDropOverlay",slot:"Root",overridesResolver:(e,t)=>t.root,shouldForwardProp:e=>ut.shouldForwardProp(e)&&e!=="action"})(({theme:e})=>({position:"absolute",left:0,display:"flex",top:0,bottom:0,right:0,pointerEvents:"none",variants:[{props:{action:"make-child"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))",borderRadius:e.shape.borderRadius,backgroundColor:e.vars?`rgba(${e.vars.palette.primary.darkChannel} / ${e.vars.palette.action.focusOpacity})`:ut.alpha(e.palette.primary.dark,e.palette.action.focusOpacity)}},{props:{action:"reorder-above"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))",borderTop:`1px solid ${(e.vars||e).palette.action.active}`}},{props:{action:"reorder-below"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))",borderBottom:`1px solid ${(e.vars||e).palette.action.active}`}},{props:{action:"move-to-parent"},style:{marginLeft:"calc(var(--TreeView-indentMultiplier) * calc(var(--TreeView-itemDepth) - 1))",borderBottom:`1px solid ${(e.vars||e).palette.action.active}`}}]}));function qU(e){return e.action==null?null:p.jsx(WU,H({},e))}const YU=ae("input",{name:"MuiTreeItem2",slot:"LabelInput",overridesResolver:(e,t)=>t.labelInput})(({theme:e})=>H({},e.typography.body1,{width:"100%",backgroundColor:e.palette.background.paper,borderRadius:e.shape.borderRadius,border:"none",padding:"0 2px",boxSizing:"border-box","&:focus":{outline:`1px solid ${e.palette.primary.main}`}})),GU=["classes","className","displayIcon","expansionIcon","icon","label","itemId","onClick","onMouseDown","dragAndDropOverlayProps","labelInputProps"],v2=k.forwardRef(function(t,n){const{classes:r,className:o,displayIcon:a,expansionIcon:s,icon:i,label:l,itemId:u,onClick:c,onMouseDown:d,dragAndDropOverlayProps:m,labelInputProps:f}=t,h=je(t,GU),{disabled:b,expanded:g,selected:x,focused:E,editing:C,editable:T,disableSelection:w,checkboxSelection:S,handleExpansion:O,handleSelection:F,handleCheckboxSelection:B,handleContentClick:P,preventSelection:N,expansionTrigger:v,toggleItemEditing:M}=E2(u),A=i||s||a,D=k.useRef(null),R=j=>{N(j),d&&d(j)},z=j=>{P?.(j,u),!D.current?.contains(j.target)&&(v==="content"&&O(j),S||F(j),c&&c(j))},U=j=>{j.defaultMuiPrevented||M()};return p.jsxs("div",H({},h,{className:De(r.root,o,g&&r.expanded,x&&r.selected,E&&r.focused,b&&r.disabled,C&&r.editing,T&&r.editable),onClick:z,onMouseDown:R,ref:n,children:[p.jsx("div",{className:r.iconContainer,children:A}),S&&p.jsx(f2,{className:r.checkbox,checked:x,onChange:B,disabled:b||w,ref:D,tabIndex:-1}),C?p.jsx(YU,H({},f,{className:r.labelInput})):p.jsx("div",H({className:r.label},T&&{onDoubleClick:U},{children:l})),m&&p.jsx(qU,H({},m))]}))});function KU(e){return Fe("MuiTreeItem",e)}const Pr=Re("MuiTreeItem",["root","groupTransition","content","expanded","selected","focused","disabled","iconContainer","label","checkbox","labelInput","editable","editing","dragAndDropOverlay"]),T2=rt(p.jsx("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})),S2=rt(p.jsx("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}));function ff(e){const{children:t,itemId:n}=e,{wrapItem:r,instance:o}=zo();return r({children:t,itemId:n,instance:o})}ff.propTypes={children:ce.node,itemId:ce.string.isRequired};const QU=["children","className","slots","slotProps","ContentComponent","ContentProps","itemId","id","label","onClick","onMouseDown","onFocus","onBlur","onKeyDown"],XU=["ownerState"],ZU=["ownerState"],JU=["ownerState"],ez=m2(),tz=e=>{const{classes:t}=e;return Le({root:["root"],content:["content"],expanded:["expanded"],selected:["selected"],focused:["focused"],disabled:["disabled"],iconContainer:["iconContainer"],checkbox:["checkbox"],label:["label"],labelInput:["labelInput"],editing:["editing"],editable:["editable"],groupTransition:["groupTransition"]},KU,t)},nz=ae("li",{name:"MuiTreeItem",slot:"Root",overridesResolver:(e,t)=>t.root})({listStyle:"none",margin:0,padding:0,outline:0}),rz=ae(v2,{name:"MuiTreeItem",slot:"Content",overridesResolver:(e,t)=>[t.content,t.iconContainer&&{[`& .${Pr.iconContainer}`]:t.iconContainer},t.label&&{[`& .${Pr.label}`]:t.label}],shouldForwardProp:e=>Jr(e)&&e!=="indentationAtItemLevel"})(({theme:e})=>({padding:e.spacing(.5,1),borderRadius:e.shape.borderRadius,width:"100%",boxSizing:"border-box",position:"relative",display:"flex",alignItems:"center",gap:e.spacing(1),cursor:"pointer",WebkitTapHighlightColor:"transparent","&:hover":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${Pr.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity,backgroundColor:"transparent"},[`&.${Pr.focused}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${Pr.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:ut.alpha(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:ut.alpha(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:ut.alpha(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${Pr.focused}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:ut.alpha(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`& .${Pr.iconContainer}`]:{width:16,display:"flex",flexShrink:0,justifyContent:"center","& svg":{fontSize:18}},[`& .${Pr.label}`]:H({width:"100%",boxSizing:"border-box",minWidth:0,position:"relative"},e.typography.body1),[`& .${Pr.checkbox}`]:{padding:0},variants:[{props:{indentationAtItemLevel:!0},style:{paddingLeft:`calc(${e.spacing(1)} + var(--TreeView-itemChildrenIndentation) * var(--TreeView-itemDepth))`}}]})),oz=ae(Qs,{name:"MuiTreeItem",slot:"GroupTransition",overridesResolver:(e,t)=>t.groupTransition,shouldForwardProp:e=>Jr(e)&&e!=="indentationAtItemLevel"})({margin:0,padding:0,paddingLeft:"var(--TreeView-itemChildrenIndentation)",variants:[{props:{indentationAtItemLevel:!0},style:{paddingLeft:0}}]}),az=k.forwardRef(function(t,n){const{icons:r,runItemPlugins:o,items:{disabledItemsFocusable:a,indentationAtItemLevel:s},selection:{disableSelection:i},expansion:{expansionTrigger:l},treeId:u,instance:c}=zo(),d=k.useContext(df),m=ez({props:t,name:"MuiTreeItem"}),{children:f,className:h,slots:b,slotProps:g,ContentComponent:x=v2,ContentProps:E,itemId:C,id:T,label:w,onClick:S,onMouseDown:O,onBlur:F,onKeyDown:B}=m,P=je(m,QU),{expanded:N,focused:v,selected:M,disabled:A,editing:D,handleExpansion:R,handleCancelItemLabelEditing:z,handleSaveItemLabel:U}=E2(C),{contentRef:j,rootRef:_,propsEnhancers:K}=o(m),ne=k.useRef(null),L=k.useRef(null),fe=nt(n,_,ne),X=nt(E?.ref,j,L),q={expandIcon:b?.expandIcon??r.slots.expandIcon??T2,collapseIcon:b?.collapseIcon??r.slots.collapseIcon??S2,endIcon:b?.endIcon??r.slots.endIcon,icon:b?.icon,groupTransition:b?.groupTransition},te=ve=>Array.isArray(ve)?ve.length>0&&ve.some(te):!!ve,Z=te(f),re=H({},m,{expanded:N,focused:v,selected:M,disabled:A,indentationAtItemLevel:s}),Q=tz(re),G=q.groupTransition??void 0,se=tt({elementType:G,ownerState:{},externalSlotProps:g?.groupTransition,additionalProps:H({unmountOnExit:!0,in:N,component:"ul",role:"group"},s?{indentationAtItemLevel:!0}:{}),className:Q.groupTransition}),J=ve=>{l==="iconContainer"&&R(ve)},ee=N?q.collapseIcon:q.expandIcon,xe=tt({elementType:ee,ownerState:{},externalSlotProps:ve=>N?H({},jn(r.slotProps.collapseIcon,ve),jn(g?.collapseIcon,ve)):H({},jn(r.slotProps.expandIcon,ve),jn(g?.expandIcon,ve)),additionalProps:{onClick:J}}),de=je(xe,XU),be=Z&&ee?p.jsx(ee,H({},de)):null,le=Z?void 0:q.endIcon,Pe=tt({elementType:le,ownerState:{},externalSlotProps:ve=>Z?{}:H({},jn(r.slotProps.endIcon,ve),jn(g?.endIcon,ve))}),Te=je(Pe,ZU),ze=le?p.jsx(le,H({},Te)):null,we=q.icon,Et=tt({elementType:we,ownerState:{},externalSlotProps:g?.icon}),st=je(Et,JU),qe=we?p.jsx(we,H({},st)):null;let ue;M?ue=!0:i||A?ue=void 0:ue=!1;function Ee(ve){!v&&(!A||a)&&ve.currentTarget===ve.target&&c.focusItem(ve,C)}function Me(ve){F?.(ve),!(D||ve.relatedTarget&&Zs(ve.relatedTarget,ne.current)&&(ve.target&&ve.target?.dataset?.element==="labelInput"&&Zs(ve.target,ne.current)||ve.relatedTarget?.dataset?.element==="labelInput"))&&c.removeFocusedItem()}const He=ve=>{B?.(ve),ve.target?.dataset?.element!=="labelInput"&&c.handleItemKeyDown(ve,C)},Be=pf({itemId:C,treeId:u,id:T}),Ne=c.canItemBeTabbed(C)?0:-1,Ze={rootRefObject:ne,contentRefObject:L,interactions:{handleSaveItemLabel:U,handleCancelItemLabelEditing:z}},ht=K.root?.(H({},Ze,{externalEventHandlers:ln(P)}))??{},pt=K.content?.(H({},Ze,{externalEventHandlers:ln(E)}))??{},ie=K.dragAndDropOverlay?.(H({},Ze,{externalEventHandlers:{}}))??{},ye=K.labelInput?.(H({},Ze,{externalEventHandlers:{}}))??{};return p.jsx(ff,{itemId:C,children:p.jsxs(nz,H({className:De(Q.root,h),role:"treeitem","aria-expanded":Z?N:void 0,"aria-selected":ue,"aria-disabled":A||void 0,id:Be,tabIndex:Ne},P,{ownerState:re,onFocus:Ee,onBlur:Me,onKeyDown:He,ref:fe,style:s?H({},P.style,{"--TreeView-itemDepth":typeof d=="function"?d(C):d}):P.style},ht,{children:[p.jsx(rz,H({as:x,classes:{root:Q.content,expanded:Q.expanded,selected:Q.selected,focused:Q.focused,disabled:Q.disabled,editable:Q.editable,editing:Q.editing,iconContainer:Q.iconContainer,label:Q.label,labelInput:Q.labelInput,checkbox:Q.checkbox},label:w,itemId:C,onClick:S,onMouseDown:O,icon:qe,expansionIcon:be,displayIcon:ze,ownerState:re},E,pt,ie.action==null?{}:{dragAndDropOverlayProps:ie},ye.value==null?{}:{labelInputProps:ye},{ref:X})),f&&p.jsx(oz,H({as:G},se,{children:f}))]}))})});function sz(e){const{slots:t,slotProps:n,status:r}=e,o=zo(),a=H({},o.icons.slots,{expandIcon:o.icons.slots.expandIcon??T2,collapseIcon:o.icons.slots.collapseIcon??S2}),s=o.icons.slotProps;let i;t?.icon?i="icon":r.expandable?r.expanded?i="collapseIcon":i="expandIcon":i="endIcon";const l=t?.[i]??a[i],u=tt({elementType:l,externalSlotProps:c=>H({},jn(s[i],c),jn(n?.[i],c)),ownerState:{}});return l?p.jsx(l,H({},u)):null}const iz=["visible"],lz=ae("li",{name:"MuiTreeItem2",slot:"Root",overridesResolver:(e,t)=>t.root})({listStyle:"none",margin:0,padding:0,outline:0}),uz=ae("div",{name:"MuiTreeItem2",slot:"Content",overridesResolver:(e,t)=>t.content,shouldForwardProp:e=>Jr(e)&&e!=="status"&&e!=="indentationAtItemLevel"})(({theme:e})=>({padding:e.spacing(.5,1),borderRadius:e.shape.borderRadius,width:"100%",boxSizing:"border-box",position:"relative",display:"flex",alignItems:"center",gap:e.spacing(1),cursor:"pointer",WebkitTapHighlightColor:"transparent","&:hover":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},variants:[{props:{indentationAtItemLevel:!0},style:{paddingLeft:`calc(${e.spacing(1)} + var(--TreeView-itemChildrenIndentation) * var(--TreeView-itemDepth))`}},{props:({status:t})=>t.disabled,style:{opacity:(e.vars||e).palette.action.disabledOpacity,backgroundColor:"transparent"}},{props:({status:t})=>t.focused,style:{backgroundColor:(e.vars||e).palette.action.focus}},{props:({status:t})=>t.selected,style:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:ut.alpha(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:ut.alpha(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:ut.alpha(e.palette.primary.main,e.palette.action.selectedOpacity)}}}},{props:({status:t})=>t.selected&&t.focused,style:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:ut.alpha(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}}]})),cz=ae("div",{name:"MuiTreeItem2",slot:"Label",overridesResolver:(e,t)=>t.label,shouldForwardProp:e=>Jr(e)&&e!=="editable"})(({theme:e})=>H({width:"100%",boxSizing:"border-box",minWidth:0,position:"relative",overflow:"hidden"},e.typography.body1,{variants:[{props:({editable:t})=>t,style:{paddingLeft:"2px"}}]})),dz=ae("div",{name:"MuiTreeItem2",slot:"IconContainer",overridesResolver:(e,t)=>t.iconContainer})({width:16,display:"flex",flexShrink:0,justifyContent:"center","& svg":{fontSize:18}});ae(Qs,{name:"MuiTreeItem2",slot:"GroupTransition",overridesResolver:(e,t)=>t.groupTransition,shouldForwardProp:e=>Jr(e)&&e!=="indentationAtItemLevel"})({margin:0,padding:0,paddingLeft:"var(--TreeView-itemChildrenIndentation)",variants:[{props:{indentationAtItemLevel:!0},style:{paddingLeft:0}}]});ae(k.forwardRef((e,t)=>{const{visible:n}=e,r=je(e,iz);return n?p.jsx(f2,H({},r,{ref:t})):null}),{name:"MuiTreeItem2",slot:"Checkbox",overridesResolver:(e,t)=>t.checkbox})({padding:0});function pz(e){return Fe("MuiRichTreeView",e)}Re("MuiRichTreeView",["root"]);const fz=(e,t)=>{const n=k.useRef({}),[r,o]=k.useState(()=>{const s={};return e.forEach(i=>{i.models&&Object.entries(i.models).forEach(([l,u])=>{n.current[l]={isControlled:t[l]!==void 0,getDefaultValue:u.getDefaultValue},s[l]=u.getDefaultValue(t)})}),s});return Object.fromEntries(Object.entries(n.current).map(([s,i])=>{const l=t[s]??r[s];return[s,{value:l,setControlledValue:u=>{i.isControlled||o(c=>H({},c,{[s]:u}))}}]}))};class mz{constructor(){this.maxListeners=20,this.warnOnce=!1,this.events={}}on(t,n,r={}){let o=this.events[t];o||(o={highPriority:new Map,regular:new Map},this.events[t]=o),r.isFirst?o.highPriority.set(n,!0):o.regular.set(n,!0)}removeListener(t,n){this.events[t]&&(this.events[t].regular.delete(n),this.events[t].highPriority.delete(n))}removeAllListeners(){this.events={}}emit(t,...n){const r=this.events[t];if(!r)return;const o=Array.from(r.highPriority.keys()),a=Array.from(r.regular.keys());for(let s=o.length-1;s>=0;s-=1){const i=o[s];r.highPriority.has(i)&&i.apply(this,n)}for(let s=0;s<a.length;s+=1){const i=a[s];r.regular.has(i)&&i.apply(this,n)}}once(t,n){const r=this;this.on(t,function o(...a){r.removeListener(t,o),n.apply(r,a)})}}const hz=e=>e.isPropagationStopped!==void 0,k2=()=>{const[e]=k.useState(()=>new mz),t=k.useCallback((...r)=>{const[o,a,s={}]=r;s.defaultMuiPrevented=!1,!(hz(s)&&s.isPropagationStopped())&&e.emit(o,a,s)},[e]),n=k.useCallback((r,o)=>(e.on(r,o),()=>{e.removeListener(r,o)}),[e]);return{instance:{$$publishEvent:t,$$subscribeEvent:n}}};k2.params={};const w2=({plugins:e})=>{const t=new Set(e);return{instance:{getAvailablePlugins:()=>t}}};w2.params={};const mf=({params:e,state:t,setState:n})=>{k.useEffect(()=>{n(o=>o.id.treeId===e.id&&o.id.treeId!==void 0?o:H({},o,{id:H({},o.id,{treeId:e.id??UU()})}))},[n,e.id]);const r=e.id??t.id.treeId;return{getRootProps:()=>({id:r}),contextValue:{treeId:r}}};mf.params={id:!0};mf.getInitialState=({id:e})=>({id:{treeId:e??void 0}});const gz=[k2,w2,mf],bz=["slots","slotProps","apiRef","experimentalFeatures"],yz=e=>{let{props:{slots:t,slotProps:n,apiRef:r,experimentalFeatures:o},plugins:a}=e,s=je(e.props,bz);const i={};a.forEach(m=>{Object.assign(i,m.params)});const l={},u={};Object.keys(s).forEach(m=>{const f=s[m];i[m]?l[m]=f:u[m]=f});const c=o??{},d=a.reduce((m,f)=>f.getDefaultizedParams?f.getDefaultizedParams({params:m,experimentalFeatures:c}):m,l);return{apiRef:r,forwardedProps:u,pluginParams:d,slots:t??{},slotProps:n??{},experimentalFeatures:c}},xz=({plugins:e,instance:t,publicAPI:n,rootRef:r})=>({runItemPlugins:i=>{let l=null,u=null;const c=[],d={};e.forEach(h=>{if(!h.itemPlugin)return;const b=h.itemPlugin({props:i,rootRef:l,contentRef:u});b?.rootRef&&(l=b.rootRef),b?.contentRef&&(u=b.contentRef),b?.propsEnhancers&&(c.push(b.propsEnhancers),Object.keys(b.propsEnhancers).forEach(g=>{d[g]=!0}))});const m=h=>b=>{const g={};return c.forEach(x=>{const E=x[h];E!=null&&Object.assign(g,E(b))}),g},f=Object.fromEntries(Object.keys(d).map(h=>[h,m(h)]));return{contentRef:u,rootRef:l,propsEnhancers:f}},wrapItem:({itemId:i,children:l})=>{let u=l;for(let c=e.length-1;c>=0;c-=1){const d=e[c];d.wrapItem&&(u=d.wrapItem({itemId:i,children:u,instance:t}))}return u},wrapRoot:({children:i})=>{let l=i;for(let u=e.length-1;u>=0;u-=1){const c=e[u];c.wrapRoot&&(l=c.wrapRoot({children:l,instance:t}))}return l},instance:t,rootRef:r,publicAPI:n});function Cz(e){const t=k.useRef({});return e?(e.current==null&&(e.current={}),e.current):t.current}const Ez=({plugins:e,rootRef:t,props:n})=>{const r=[...gz,...e],{pluginParams:o,forwardedProps:a,apiRef:s,experimentalFeatures:i,slots:l,slotProps:u}=yz({plugins:r,props:n}),c=fz(r,o),m=k.useRef({}).current,f=Cz(s),h=k.useRef(null),b=nt(h,t),g=xz({plugins:r,instance:m,publicAPI:f,rootRef:h}),[x,E]=k.useState(()=>{const S={};return r.forEach(O=>{O.getInitialState&&Object.assign(S,O.getInitialState(o))}),S}),C=[],T=S=>{const O=S({instance:m,params:o,slots:l,slotProps:u,experimentalFeatures:i,state:x,setState:E,rootRef:h,models:c,plugins:r});O.getRootProps&&C.push(O.getRootProps),O.publicAPI&&Object.assign(f,O.publicAPI),O.instance&&Object.assign(m,O.instance),O.contextValue&&Object.assign(g,O.contextValue)};return r.forEach(T),{getRootProps:(S={})=>{const O=H({role:"tree"},a,S,{ref:b});return C.forEach(F=>{Object.assign(O,F(S))}),O},rootRef:b,contextValue:g,instance:m}},vz=(e,t,n)=>{e.$$publishEvent(t,n)},ia="__TREE_VIEW_ROOT_PARENT_ID__",Tz=e=>{const t={};return e.forEach((n,r)=>{t[n]=r}),t},Sz=["children"],_2=({items:e,isItemDisabled:t,getItemLabel:n,getItemId:r})=>{const o={},a={},s={[ia]:[]},i=(u,c,d)=>{const m=r?r(u):u.id;if(m==null)throw new Error(["MUI X: The Tree View component requires all items to have a unique `id` property.","Alternatively, you can use the `getItemId` prop to specify a custom id for each item.","An item was provided without id in the `items` prop:",JSON.stringify(u)].join(`
|
|
231
231
|
`));if(o[m]!=null)throw new Error(["MUI X: The Tree View component requires all items to have a unique `id` property.","Alternatively, you can use the `getItemId` prop to specify a custom id for each item.",`Two items were provided with the same id in the \`items\` prop: "${m}"`].join(`
|
package/dist/index.es.js
CHANGED
|
@@ -51597,8 +51597,13 @@ function hV({
|
|
|
51597
51597
|
sx: {
|
|
51598
51598
|
p: 3,
|
|
51599
51599
|
backgroundColor: "#ffffff",
|
|
51600
|
-
border: "1px solid #
|
|
51601
|
-
borderRadius: 2
|
|
51600
|
+
border: "1px solid #f0f0f0",
|
|
51601
|
+
borderRadius: 2,
|
|
51602
|
+
boxShadow: "0 1px 3px rgba(0, 0, 0, 0.04)",
|
|
51603
|
+
transition: "box-shadow 0.2s ease-in-out",
|
|
51604
|
+
"&:hover": {
|
|
51605
|
+
boxShadow: "0 2px 6px rgba(0, 0, 0, 0.08)"
|
|
51606
|
+
}
|
|
51602
51607
|
},
|
|
51603
51608
|
children: [
|
|
51604
51609
|
/* @__PURE__ */ m(
|
package/package.json
CHANGED
|
@@ -364,8 +364,13 @@ export default function Notebook({
|
|
|
364
364
|
sx={{
|
|
365
365
|
p: 3,
|
|
366
366
|
backgroundColor: "#ffffff",
|
|
367
|
-
border: "1px solid #
|
|
367
|
+
border: "1px solid #f0f0f0",
|
|
368
368
|
borderRadius: 2,
|
|
369
|
+
boxShadow: "0 1px 3px rgba(0, 0, 0, 0.04)",
|
|
370
|
+
transition: "box-shadow 0.2s ease-in-out",
|
|
371
|
+
"&:hover": {
|
|
372
|
+
boxShadow: "0 2px 6px rgba(0, 0, 0, 0.08)",
|
|
373
|
+
},
|
|
369
374
|
}}
|
|
370
375
|
>
|
|
371
376
|
<Typography
|