@marimo-team/frontend 0.19.7-dev40 → 0.19.7-dev42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/assets/{JsonOutput-DtidtKaJ.js → JsonOutput-CWwP78bV.js} +1 -1
  2. package/dist/assets/{add-cell-with-ai-noZuPKY2.js → add-cell-with-ai-LP5p0BtF.js} +1 -1
  3. package/dist/assets/{agent-panel-Bv7IrTwR.js → agent-panel-AgX8jQJ5.js} +1 -1
  4. package/dist/assets/{cell-editor-BWyQ1DZv.js → cell-editor-1G6HDPqu.js} +1 -1
  5. package/dist/assets/{chat-display-CO27_lED.js → chat-display-C7-tFQht.js} +1 -1
  6. package/dist/assets/{chat-panel-DLqZeRMe.js → chat-panel-CfvDUHSP.js} +1 -1
  7. package/dist/assets/{column-preview-B-dViv1i.js → column-preview-BICvl-DB.js} +1 -1
  8. package/dist/assets/{command-palette-H-B8cBaS.js → command-palette-BDzRM8e2.js} +1 -1
  9. package/dist/assets/{dependency-graph-panel-BZEIOxVz.js → dependency-graph-panel-CCXzRJF_.js} +1 -1
  10. package/dist/assets/download-jMLcAPOc.js +9 -0
  11. package/dist/assets/{edit-page-BeRvoZb5.js → edit-page-B2tgar36.js} +3 -3
  12. package/dist/assets/{file-explorer-panel-Dn9tKw3E.js → file-explorer-panel-BRQNVIrs.js} +1 -1
  13. package/dist/assets/{hooks-B1nUQK2T.js → hooks-CVU9hHCg.js} +1 -1
  14. package/dist/assets/{html-to-image-Cu1p0tCK.js → html-to-image-BVbOFO17.js} +1 -1
  15. package/dist/assets/{index-DUcuXkRU.js → index-DdLjmZik.js} +3 -3
  16. package/dist/assets/{layout-KY92f2Sm.js → layout-CrzVHOC1.js} +1 -1
  17. package/dist/assets/{markdown-renderer-Dpn5NCvn.js → markdown-renderer-YZb6nuwv.js} +1 -1
  18. package/dist/assets/{panels-B0B71dYl.js → panels-C2rc8NQo.js} +1 -1
  19. package/dist/assets/{readonly-python-code-CCwpyiLX.js → readonly-python-code-Dv4ZvZ6I.js} +1 -1
  20. package/dist/assets/{run-page-Dug0EU2T.js → run-page-tKvoJHTm.js} +1 -1
  21. package/dist/assets/{scratchpad-panel-CAYDDJR8.js → scratchpad-panel-DH1sB0Bt.js} +1 -1
  22. package/dist/assets/{session-panel-CR_CZBSy.js → session-panel-DgCVmf7T.js} +1 -1
  23. package/dist/assets/{useAddCell-DRmuczCx.js → useAddCell-CLnCtSpX.js} +1 -1
  24. package/dist/assets/{useCellActionButton-DwRoApVS.js → useCellActionButton-ZSiDIQBo.js} +1 -1
  25. package/dist/assets/{useDependencyPanelTab-CLgnO1zH.js → useDependencyPanelTab-DQWR1wnN.js} +1 -1
  26. package/dist/assets/{useNotebookActions-CCKN64zx.js → useNotebookActions-zbbfI0Ij.js} +1 -1
  27. package/dist/assets/{utilities.esm-DyYLtC1k.js → utilities.esm-2OA-HSSr.js} +1 -1
  28. package/dist/index.html +11 -11
  29. package/package.json +1 -1
  30. package/src/core/export/hooks.ts +3 -4
  31. package/src/utils/__tests__/download.test.tsx +71 -44
  32. package/src/utils/download.ts +24 -35
  33. package/dist/assets/download-Bwa9P-Pz.js +0 -6
@@ -1 +1 @@
1
- var Te=Object.defineProperty;var Be=(t,e,i)=>e in t?Te(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var R=(t,e,i)=>Be(t,typeof e!="symbol"?e+"":e,i);import{s as ge}from"./chunk-LvLJmgfZ.js";import{i as $e,l as ce,n as A,p as ye,u as ae}from"./useEvent-DO6uJBas.js";import{t as qe}from"./react-BGmjiNul.js";import{Jr as Ve,Rt as he,Xn as Le,Zr as Ue,_n as Ke,w as Ze}from"./cells-BW_4R0Qw.js";import"./react-dom-C9fstfnp.js";import{t as ie}from"./compiler-runtime-DeeZ7FnK.js";import"./tooltip-BGrCWNss.js";import{d as Je,f as Xe}from"./hotkeys-BHHWjLlp.js";import{t as Ye}from"./invariant-CAG_dYON.js";import{p as Ge,u as ve}from"./utils-DXvhzCGS.js";import{j as re}from"./config-CIrPQIbt.js";import{t as Qe}from"./jsx-runtime-ZmTK25f3.js";import{n as et,t as I}from"./button-YC1gW_kJ.js";import{t as me}from"./cn-BKtXLv3a.js";import{St as tt,at}from"./dist-DBwNzi3C.js";import{a as it,c as rt,i as nt,o as st,s as lt}from"./JsonOutput-DtidtKaJ.js";import"./cjs-CH5Rj0g8.js";import"./main-U5Goe76G.js";import"./useNonce-_Aax6sXd.js";import{n as ot,r as pe}from"./requests-BsVD4CdD.js";import{t as K}from"./createLucideIcon-CnW3RofX.js";import{t as dt}from"./arrow-left-Cb_73j1f.js";import{n as ct,t as ht}from"./LazyAnyLanguageCodeMirror-yzHjsVJt.js";import{_ as mt}from"./select-V5IdpNiR.js";import{i as pt,r as be}from"./download-Bwa9P-Pz.js";import{t as ft}from"./chevron-right-DwagBitu.js";import{f as fe}from"./maps-t9yNKYA8.js";import{n as xt}from"./markdown-renderer-Dpn5NCvn.js";import{a as D,c as Z,p as ut,r as jt,t as gt}from"./dropdown-menu-B-6unW-7.js";import{t as we}from"./copy-CQ15EONK.js";import{t as ke}from"./download-B9SUL40m.js";import{t as yt}from"./ellipsis-vertical-C7jYiLCo.js";import{t as vt}from"./eye-off-BhExYOph.js";import{n as Fe,r as bt,t as wt}from"./types-fTSozrNJ.js";import{t as Ce}from"./file-plus-corner-Da9I6dgU.js";import{t as kt}from"./spinner-DaIKav-i.js";import{t as Ft}from"./refresh-ccw-DLEiQDS3.js";import{t as Ct}from"./refresh-cw-CQd-1kjx.js";import{t as Nt}from"./save-PMHbdtqc.js";import{t as Dt}from"./trash-2-CyqGun26.js";import{t as St}from"./triangle-alert-B65rDESJ.js";import{i as _t,n as Pt,t as Ot}from"./es-D8BOePqo.js";import"./dist-Cayq-K1c.js";import"./dist-TiFCI16_.js";import"./dist-BIKFl48f.js";import"./dist-B0VqT_4z.js";import"./dist-BYyu59D8.js";import{t as W}from"./use-toast-rmUWldD_.js";import{r as zt}from"./useTheme-DUdVAZI8.js";import"./Combination-CMPwuAmi.js";import{t as M}from"./tooltip-CEc2ajau.js";import"./dates-Dhn1r-h6.js";import{o as Mt}from"./alert-dialog-DwQffb13.js";import"./popover-Gz-GJzym.js";import{n as Ne}from"./ImperativeModal-CUbWEBci.js";import{r as Rt}from"./errors-2SszdW9t.js";import"./vega-loader.browser-CRZ52CKf.js";import"./defaultLocale-D_rSvXvJ.js";import"./defaultLocale-C92Rrpmf.js";import{t as ne}from"./copy-Bv2DBpIS.js";import"./purify.es-DNVQZNFu.js";import{a as At,i as Wt,n as xe,r as It,t as Et}from"./tree-B1vM35Zj.js";import{n as Ht,t as Tt}from"./alert-BrGyZf9c.js";import{n as De}from"./error-banner-DUzsIXtq.js";import{n as Se}from"./useAsyncData-C4XRy1BE.js";import"./chunk-5FQGJX7Z-CVUXBqX6.js";import"./katex-Dc8yG8NU.js";import"./html-to-image-Cu1p0tCK.js";import{o as Bt}from"./focus-CsiV5LZR.js";import{a as $t}from"./renderShortcut-DEwfrKeS.js";import{n as qt}from"./blob-CuXvdYPX.js";import{t as Vt}from"./bundle.esm-2AjO7UK5.js";import{t as Lt}from"./links-C-GGaW8R.js";import{t as Ut}from"./icon-32x32-ClOCJ7rj.js";import{t as J}from"./Inputs-D2Xn4HON.js";var Kt=K("copy-minus",[["line",{x1:"12",x2:"18",y1:"15",y2:"15",key:"1nscbv"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),_e=K("folder-plus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),Pe=K("list-tree",[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]]),Zt=K("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]),Jt=K("square-play",[["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}],["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}]]),Xt=K("view",[["path",{d:"M21 17v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2",key:"mrq65r"}],["path",{d:"M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2",key:"be3xqs"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0",key:"11ak4c"}]]),Oe=ie(),F=ge(qe(),1),a=ge(Qe(),1),ze=(0,F.createContext)(null);function Yt(){return(0,F.useContext)(ze)??void 0}var Gt=t=>{let e=(0,Oe.c)(3),{children:i}=t,n=Wt(),s;return e[0]!==i||e[1]!==n?(s=(0,a.jsx)(ze.Provider,{value:n,children:i}),e[0]=i,e[1]=n,e[2]=s):s=e[2],s};const Qt=t=>{let e=(0,Oe.c)(5),{children:i}=t,[n,s]=(0,F.useState)(null),r;e[0]!==i||e[1]!==n?(r=n&&(0,a.jsx)(At,{backend:It,options:{rootElement:n},children:(0,a.jsx)(Gt,{children:i})}),e[0]=i,e[1]=n,e[2]=r):r=e[2];let d;return e[3]===r?d=e[4]:(d=(0,a.jsx)("div",{ref:s,className:"contents",children:r}),e[3]=r,e[4]=d),d};var ue=new Map;const ea=({file:t,onOpenNotebook:e})=>{let{theme:i}=zt(),{sendFileDetails:n,sendUpdateFile:s}=pe(),r=ae(Ge),d=ae(ve),f=ae(Ve),[h,m]=(0,F.useState)(""),{data:l,isPending:u,error:v,setData:g,refetch:c}=Se(async()=>{let o=await n({path:t.path}),j=o.contents||"";return m(ue.get(t.path)||j),o},[t.path]),y=async()=>{h!==(l==null?void 0:l.contents)&&await s({path:t.path,contents:h}).then(o=>{o.success&&(g(j=>({...j,contents:h})),m(h))})},C=(0,F.useRef)(h);if(C.current=h,(0,F.useEffect)(()=>()=>{if(!(l!=null&&l.contents))return;let o=C.current;o===l.contents?ue.delete(t.path):ue.set(t.path,o)},[t.path,l==null?void 0:l.contents]),v)return(0,a.jsx)(De,{error:v});if(u||!l)return null;let x=l.mimeType||"text/plain",S=x in je,k=f&&l.file.isMarimoFile&&(t.path===f||t.path.endsWith(`/${f}`));if(!l.contents&&!S)return(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-2 p-6",children:[(0,a.jsx)("div",{className:"font-bold text-muted-foreground",children:"Name"}),(0,a.jsx)("div",{children:l.file.name}),(0,a.jsx)("div",{className:"font-bold text-muted-foreground",children:"Type"}),(0,a.jsx)("div",{children:x})]});let b=(0,a.jsxs)("div",{className:"text-xs text-muted-foreground p-1 flex justify-end gap-2 border-b",children:[(0,a.jsx)(M,{content:"Refresh",children:(0,a.jsx)(J,{size:"small",onClick:c,children:(0,a.jsx)(Ct,{})})}),t.isMarimoFile&&!re()&&(0,a.jsx)(M,{content:"Open notebook",children:(0,a.jsx)(J,{size:"small",onClick:o=>e(o),children:(0,a.jsx)(fe,{})})}),!d&&(0,a.jsx)(M,{content:"Download",children:(0,a.jsx)(J,{size:"small",onClick:()=>{if(Me(x)){pt(xt(l.contents,x),l.file.name);return}be(new Blob([l.contents||h],{type:x}),l.file.name)},children:(0,a.jsx)(ke,{})})}),!Me(x)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(M,{content:"Copy contents to clipboard",children:(0,a.jsx)(J,{size:"small",onClick:async()=>{await ne(h)},children:(0,a.jsx)(we,{})})}),(0,a.jsx)(M,{content:$t("global.save"),children:(0,a.jsx)(J,{size:"small",color:h===l.contents?void 0:"green",onClick:y,disabled:h===l.contents,children:(0,a.jsx)(Nt,{})})})]})]});return x.startsWith("image/")?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(st,{base64:l.contents,mime:x})})]}):x==="text/csv"&&l.contents?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(it,{contents:l.contents})})]}):x.startsWith("audio/")?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(nt,{base64:l.contents,mime:x})})]}):x.startsWith("video/")?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(rt,{base64:l.contents,mime:x})})]}):x.startsWith("application/pdf")?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(lt,{base64:l.contents,mime:x})})]}):(0,a.jsxs)(a.Fragment,{children:[b,k&&(0,a.jsxs)(Tt,{variant:"warning",className:"rounded-none",children:[(0,a.jsx)(St,{className:"h-4 w-4"}),(0,a.jsx)(Ht,{children:"Editing the notebook file directly while running in marimo's editor may cause unintended changes. Please use with caution."})]}),(0,a.jsx)("div",{className:"flex-1 overflow-auto",children:(0,a.jsx)(F.Suspense,{children:(0,a.jsx)(ht,{theme:i==="dark"?"dark":"light",language:je[x]||je.default,className:"border-b",extensions:[at.lineWrapping,tt.of([{key:r.getHotkey("global.save").key,stopPropagation:!0,run:()=>h===l.contents?!1:(y(),!0)}])],value:h,onChange:m})})})]})};var Me=t=>t?t.startsWith("image/")||t.startsWith("audio/")||t.startsWith("video/")||t.startsWith("application/pdf"):!1,je={"application/javascript":"javascript","text/markdown":"markdown","text/html":"html","text/css":"css","text/x-python":"python","application/json":"json","application/xml":"xml","text/x-yaml":"yaml","text/csv":"markdown","text/plain":"markdown",default:"markdown"},ta=class{constructor(t){R(this,"delegate",new xe([]));R(this,"rootPath","");R(this,"onChange",Xe.NOOP);R(this,"path",new he("/"));R(this,"initialize",async t=>{if(this.onChange=t,this.delegate.data.length===0)try{let e=await this.callbacks.listFiles({path:this.rootPath});this.delegate=new xe(e.files),this.rootPath=e.root,this.path=he.guessDeliminator(e.root)}catch(e){W({title:"Failed",description:Rt(e)})}this.onChange(this.delegate.data)});R(this,"refreshAll",async t=>{let e=[this.rootPath,...t.map(n=>{var s;return(s=this.delegate.find(n))==null?void 0:s.data.path})].filter(Boolean),i=await Promise.all(e.map(n=>this.callbacks.listFiles({path:n}).catch(()=>({files:[]}))));for(let[n,s]of e.entries()){let r=i[n];s===this.rootPath?this.delegate=new xe(r.files):this.delegate.update({id:s,changes:{children:r.files}})}this.onChange(this.delegate.data)});R(this,"relativeFromRoot",t=>{let e=this.rootPath.endsWith(this.path.deliminator)?this.rootPath:`${this.rootPath}${this.path.deliminator}`;return t.startsWith(e)?t.slice(e.length):t});R(this,"handleResponse",t=>t.success?t:(W({title:"Failed",description:t.message}),null));this.callbacks=t}async expand(t){let e=this.delegate.find(t);if(!e||!e.data.isDirectory)return!1;if(e.children&&e.children.length>0)return!0;let i=await this.callbacks.listFiles({path:e.data.path});return this.delegate.update({id:t,changes:{children:i.files}}),this.onChange(this.delegate.data),!0}async rename(t,e){let i=this.delegate.find(t);if(!i)return;let n=i.data.path,s=this.path.join(this.path.dirname(n),e);await this.callbacks.renameFileOrFolder({path:n,newPath:s}).then(this.handleResponse),this.delegate.update({id:t,changes:{name:e,path:s}}),this.onChange(this.delegate.data),await this.refreshAll([s])}async move(t,e){var n;let i=e?((n=this.delegate.find(e))==null?void 0:n.data.path)??e:this.rootPath;await Promise.all(t.map(s=>{this.delegate.move({id:s,parentId:e,index:0});let r=this.delegate.find(s);if(!r)return Promise.resolve();let d=this.path.join(i,this.path.basename(r.data.path));return this.delegate.update({id:s,changes:{path:d}}),this.callbacks.renameFileOrFolder({path:r.data.path,newPath:d}).then(this.handleResponse)})),this.onChange(this.delegate.data),await this.refreshAll([i])}async createFile(t,e){var s;let i=e?((s=this.delegate.find(e))==null?void 0:s.data.path)??e:this.rootPath,n=await this.callbacks.createFileOrFolder({path:i,type:"file",name:t}).then(this.handleResponse);n!=null&&n.info&&(this.delegate.create({parentId:e,index:0,data:n.info}),this.onChange(this.delegate.data),await this.refreshAll([i]))}async createFolder(t,e){var s;let i=e?((s=this.delegate.find(e))==null?void 0:s.data.path)??e:this.rootPath,n=await this.callbacks.createFileOrFolder({path:i,type:"directory",name:t}).then(this.handleResponse);n!=null&&n.info&&(this.delegate.create({parentId:e,index:0,data:n.info}),this.onChange(this.delegate.data),await this.refreshAll([i]))}async delete(t){let e=this.delegate.find(t);e&&(await this.callbacks.deleteFileOrFolder({path:e.data.path}).then(this.handleResponse),this.delegate.drop({id:t}),this.onChange(this.delegate.data))}};const Re=ye(t=>{let e=t(ot);return Ye(e,"no requestClientAtom set"),new ta({listFiles:e.sendListFiles,createFileOrFolder:e.sendCreateFileOrFolder,deleteFileOrFolder:e.sendDeleteFileOrFolder,renameFileOrFolder:e.sendRenameFileOrFolder})}),aa=ye({});async function ia(){await $e.get(Re).refreshAll([])}var ra=ie(),na=1024*1024*100;function Ae(t){let e=(0,ra.c)(7),i;e[0]===t?i=e[1]:(i=t===void 0?{}:t,e[0]=t,e[1]=i);let n=i,{sendCreateFileOrFolder:s}=pe(),r;e[2]===s?r=e[3]:(r=async f=>{for(let h of f){let m=ha(ca(h)),l="";m&&(l=he.guessDeliminator(m).dirname(m));let u=(await qt(h)).split(",")[1];await s({path:l,type:"file",name:h.name,contents:u})}await ia()},e[2]=s,e[3]=r);let d;return e[4]!==n||e[5]!==r?(d={multiple:!0,maxSize:na,onError:da,onDropRejected:sa,onDrop:r,...n},e[4]=n,e[5]=r,e[6]=d):d=e[6],Ot(d)}function sa(t){W({title:"File upload failed",description:(0,a.jsx)("div",{className:"flex flex-col gap-1",children:t.map(la)}),variant:"danger"})}function la(t){return(0,a.jsxs)("div",{children:[t.file.name," (",t.errors.map(oa).join(", "),")"]},t.file.name)}function oa(t){return t.message}function da(t){Je.error(t),W({title:"File upload failed",description:t.message,variant:"danger"})}function ca(t){if(t.webkitRelativePath)return t.webkitRelativePath;if("path"in t&&typeof t.path=="string")return t.path;if("relativePath"in t&&typeof t.relativePath=="string")return t.relativePath}function ha(t){if(t)return t.replace(/^\/+/,"")}var X=ie(),ma=Ue("marimo:showHiddenFiles",!0,Ke,{getOnInit:!0}),We=F.createContext(null);const pa=t=>{let e=(0,X.c)(68),{height:i}=t,n=(0,F.useRef)(null),s=Yt(),[r]=ce(Re),d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=[],e[0]=d):d=e[0];let[f,h]=(0,F.useState)(d),[m,l]=(0,F.useState)(null),[u,v]=ce(ma),{openPrompt:g}=Ne(),[c,y]=ce(aa),C;e[1]===r?C=e[2]:(C=()=>r.initialize(h),e[1]=r,e[2]=C);let x;e[3]===Symbol.for("react.memo_cache_sentinel")?(x=[],e[3]=x):x=e[3];let{isPending:S,error:k}=Se(C,x),b;e[4]!==c||e[5]!==r?(b=()=>{r.refreshAll(Object.keys(c).filter(p=>c[p]))},e[4]=c,e[5]=r,e[6]=b):b=e[6];let o=A(b),j;e[7]!==v||e[8]!==u?(j=()=>{v(!u)},e[7]=v,e[8]=u,e[9]=j):j=e[9];let _=A(j),P;e[10]!==g||e[11]!==r?(P=async()=>{g({title:"Folder name",onConfirm:async p=>{r.createFolder(p,null)}})},e[10]=g,e[11]=r,e[12]=P):P=e[12];let N=A(P),O;e[13]!==g||e[14]!==r?(O=async()=>{g({title:"File name",onConfirm:async p=>{r.createFile(p,null)}})},e[13]=g,e[14]=r,e[15]=O):O=e[15];let se=A(O),Y;e[16]===y?Y=e[17]:(Y=()=>{var p;(p=n.current)==null||p.closeAll(),y({})},e[16]=y,e[17]=Y);let le=A(Y),G;e[18]!==f||e[19]!==u?(G=Ee(f,u),e[18]=f,e[19]=u,e[20]=G):G=e[20];let oe=G;if(S){let p;return e[21]===Symbol.for("react.memo_cache_sentinel")?(p=(0,a.jsx)(kt,{size:"medium",centered:!0}),e[21]=p):p=e[21],p}if(k){let p;return e[22]===k?p=e[23]:(p=(0,a.jsx)(De,{error:k}),e[22]=k,e[23]=p),p}if(m){let p;e[24]===Symbol.for("react.memo_cache_sentinel")?(p=()=>l(null),e[24]=p):p=e[24];let w;e[25]===Symbol.for("react.memo_cache_sentinel")?(w=(0,a.jsx)(I,{onClick:p,"data-testid":"file-explorer-back-button",variant:"text",size:"xs",className:"mb-0",children:(0,a.jsx)(dt,{size:16})}),e[25]=w):w=e[25];let z;e[26]===m.name?z=e[27]:(z=(0,a.jsxs)("div",{className:"flex items-center pl-1 pr-3 shrink-0 border-b justify-between",children:[w,(0,a.jsx)("span",{className:"font-bold",children:m.name})]}),e[26]=m.name,e[27]=z);let L;e[28]!==m.path||e[29]!==r?(L=He=>Ie(He,r.relativeFromRoot(m.path)),e[28]=m.path,e[29]=r,e[30]=L):L=e[30];let U;e[31]!==m||e[32]!==L?(U=(0,a.jsx)(F.Suspense,{children:(0,a.jsx)(ea,{onOpenNotebook:L,file:m})}),e[31]=m,e[32]=L,e[33]=U):U=e[33];let te;return e[34]!==z||e[35]!==U?(te=(0,a.jsxs)(a.Fragment,{children:[z,U]}),e[34]=z,e[35]=U,e[36]=te):te=e[36],te}let E;e[37]!==le||e[38]!==se||e[39]!==N||e[40]!==_||e[41]!==o||e[42]!==r?(E=(0,a.jsx)(xa,{onRefresh:o,onHidden:_,onCreateFile:se,onCreateFolder:N,onCollapseAll:le,tree:r}),e[37]=le,e[38]=se,e[39]=N,e[40]=_,e[41]=o,e[42]=r,e[43]=E):E=e[43];let de=i-33,H,T,B;e[44]===r?(H=e[45],T=e[46],B=e[47]):(H=async p=>{let{ids:w}=p;for(let z of w)await r.delete(z)},T=async p=>{let{id:w,name:z}=p;await r.rename(w,z)},B=async p=>{let{dragIds:w,parentId:z}=p;await r.move(w,z)},e[44]=r,e[45]=H,e[46]=T,e[47]=B);let Q;e[48]===Symbol.for("react.memo_cache_sentinel")?(Q=p=>{let w=p[0];w&&(w.data.isDirectory||l(w.data))},e[48]=Q):Q=e[48];let $;e[49]!==c||e[50]!==y||e[51]!==r?($=async p=>{if(await r.expand(p)){let w=c[p]??!1;y({...c,[p]:!w})}},e[49]=c,e[50]=y,e[51]=r,e[52]=$):$=e[52];let q;e[53]!==s||e[54]!==c||e[55]!==de||e[56]!==H||e[57]!==T||e[58]!==B||e[59]!==$||e[60]!==oe?(q=(0,a.jsx)(Et,{width:"100%",ref:n,height:de,className:"h-full",data:oe,initialOpenState:c,openByDefault:!1,dndManager:s,renderCursor:ba,disableDrop:wa,onDelete:H,onRename:T,onMove:B,onSelect:Q,onToggle:$,padding:15,rowHeight:30,indent:fa,overscanCount:1e3,disableMultiSelection:!0,children:ga}),e[53]=s,e[54]=c,e[55]=de,e[56]=H,e[57]=T,e[58]=B,e[59]=$,e[60]=oe,e[61]=q):q=e[61];let V;e[62]!==q||e[63]!==r?(V=(0,a.jsx)(We,{value:r,children:q}),e[62]=q,e[63]=r,e[64]=V):V=e[64];let ee;return e[65]!==E||e[66]!==V?(ee=(0,a.jsxs)(a.Fragment,{children:[E,V]}),e[65]=E,e[66]=V,e[67]=ee):ee=e[67],ee};var fa=15,xa=t=>{let e=(0,X.c)(34),{onRefresh:i,onHidden:n,onCreateFile:s,onCreateFolder:r,onCollapseAll:d}=t,f;e[0]===Symbol.for("react.memo_cache_sentinel")?(f={noDrag:!0,noDragEventsBubbling:!0},e[0]=f):f=e[0];let{getRootProps:h,getInputProps:m}=Ae(f),l;e[1]===Symbol.for("react.memo_cache_sentinel")?(l=(0,a.jsx)(Ce,{size:16}),e[1]=l):l=e[1];let u;e[2]===s?u=e[3]:(u=(0,a.jsx)(M,{content:"Add file",children:(0,a.jsx)(I,{"data-testid":"file-explorer-add-file-button",onClick:s,variant:"text",size:"xs",children:l})}),e[2]=s,e[3]=u);let v;e[4]===Symbol.for("react.memo_cache_sentinel")?(v=(0,a.jsx)(_e,{size:16}),e[4]=v):v=e[4];let g;e[5]===r?g=e[6]:(g=(0,a.jsx)(M,{content:"Add folder",children:(0,a.jsx)(I,{"data-testid":"file-explorer-add-folder-button",onClick:r,variant:"text",size:"xs",children:v})}),e[5]=r,e[6]=g);let c;e[7]===h?c=e[8]:(c=h({}),e[7]=h,e[8]=c);let y,C;e[9]===Symbol.for("react.memo_cache_sentinel")?(y=et({variant:"text",size:"xs"}),C=(0,a.jsx)(_t,{size:16}),e[9]=y,e[10]=C):(y=e[9],C=e[10]);let x;e[11]===c?x=e[12]:(x=(0,a.jsx)(M,{content:"Upload file",children:(0,a.jsx)("button",{"data-testid":"file-explorer-upload-button",...c,className:y,children:C})}),e[11]=c,e[12]=x);let S;e[13]===m?S=e[14]:(S=m({}),e[13]=m,e[14]=S);let k;e[15]===S?k=e[16]:(k=(0,a.jsx)("input",{...S,type:"file"}),e[15]=S,e[16]=k);let b;e[17]===Symbol.for("react.memo_cache_sentinel")?(b=(0,a.jsx)(Ft,{size:16}),e[17]=b):b=e[17];let o;e[18]===i?o=e[19]:(o=(0,a.jsx)(M,{content:"Refresh",children:(0,a.jsx)(I,{"data-testid":"file-explorer-refresh-button",onClick:i,variant:"text",size:"xs",children:b})}),e[18]=i,e[19]=o);let j;e[20]===Symbol.for("react.memo_cache_sentinel")?(j=(0,a.jsx)(vt,{size:16}),e[20]=j):j=e[20];let _;e[21]===n?_=e[22]:(_=(0,a.jsx)(M,{content:"Toggle hidden files",children:(0,a.jsx)(I,{"data-testid":"file-explorer-hidden-files-button",onClick:n,variant:"text",size:"xs",children:j})}),e[21]=n,e[22]=_);let P;e[23]===Symbol.for("react.memo_cache_sentinel")?(P=(0,a.jsx)(Kt,{size:16}),e[23]=P):P=e[23];let N;e[24]===d?N=e[25]:(N=(0,a.jsx)(M,{content:"Collapse all folders",children:(0,a.jsx)(I,{"data-testid":"file-explorer-collapse-button",onClick:d,variant:"text",size:"xs",children:P})}),e[24]=d,e[25]=N);let O;return e[26]!==k||e[27]!==o||e[28]!==_||e[29]!==N||e[30]!==u||e[31]!==g||e[32]!==x?(O=(0,a.jsxs)("div",{className:"flex items-center justify-end px-2 shrink-0 border-b",children:[u,g,x,k,o,_,N]}),e[26]=k,e[27]=o,e[28]=_,e[29]=N,e[30]=u,e[31]=g,e[32]=x,e[33]=O):O=e[33],O},ua=t=>{let e=(0,X.c)(9),{node:i,onOpenMarimoFile:n}=t,s;e[0]===i?s=e[1]:(s=f=>{i.data.isDirectory||(f.stopPropagation(),i.select())},e[0]=i,e[1]=s);let r;e[2]!==i.data.isMarimoFile||e[3]!==n?(r=i.data.isMarimoFile&&!re()&&(0,a.jsxs)("span",{className:"shrink-0 ml-2 text-sm hidden group-hover:inline hover:underline",onClick:n,children:["open ",(0,a.jsx)(fe,{className:"inline ml-1",size:12})]}),e[2]=i.data.isMarimoFile,e[3]=n,e[4]=r):r=e[4];let d;return e[5]!==i.data.name||e[6]!==s||e[7]!==r?(d=(0,a.jsxs)("span",{className:"flex-1 overflow-hidden text-ellipsis",onClick:s,children:[i.data.name,r]}),e[5]=i.data.name,e[6]=s,e[7]=r,e[8]=d):d=e[8],d},ja=t=>{let e=(0,X.c)(10),{node:i}=t,n=(0,F.useRef)(null),s,r;e[0]===i.data.name?(s=e[1],r=e[2]):(s=()=>{var m,l;(m=n.current)==null||m.focus(),(l=n.current)==null||l.setSelectionRange(0,i.data.name.lastIndexOf("."))},r=[i.data.name],e[0]=i.data.name,e[1]=s,e[2]=r),(0,F.useEffect)(s,r);let d,f;e[3]===i?(d=e[4],f=e[5]):(d=()=>i.reset(),f=m=>{m.key==="Escape"&&i.reset(),m.key==="Enter"&&i.submit(m.currentTarget.value)},e[3]=i,e[4]=d,e[5]=f);let h;return e[6]!==i.data.name||e[7]!==d||e[8]!==f?(h=(0,a.jsx)("input",{ref:n,className:"flex-1 bg-transparent border border-border text-muted-foreground",defaultValue:i.data.name,onClick:ka,onBlur:d,onKeyDown:f}),e[6]=i.data.name,e[7]=d,e[8]=f,e[9]=h):h=e[9],h},ga=({node:t,style:e,dragHandle:i})=>{let{openFile:n,sendCreateFileOrFolder:s,sendFileDetails:r}=pe(),d=ae(ve),f=t.data.isDirectory?"directory":bt(t.data.name),h=wt[f],{openConfirm:m,openPrompt:l}=Ne(),{createNewCell:u}=Ze(),v=Bt(),g=o=>{u({code:o,before:!1,cellId:v??"__end__"})},c=(0,F.use)(We),y=async o=>{Ie(o,c?c.relativeFromRoot(t.data.path):t.data.path)},C=async o=>{o.stopPropagation(),o.preventDefault(),m({title:"Delete file",description:`Are you sure you want to delete ${t.data.name}?`,confirmAction:(0,a.jsx)(Mt,{onClick:async()=>{await t.tree.delete(t.id)},"aria-label":"Confirm",children:"Delete"})})},x=A(async()=>{t.open(),l({title:"Folder name",onConfirm:async o=>{c==null||c.createFolder(o,t.id)}})}),S=A(async()=>{t.open(),l({title:"File name",onConfirm:async o=>{c==null||c.createFile(o,t.id)}})}),k=A(async()=>{var P;if(!c||t.data.isDirectory)return;let[o,j]=Pt(t.data.name),_=`${o}_copy${j}`;try{let N=await r({path:t.data.path}),O=((P=t.parent)==null?void 0:P.data.path)||"";await s({path:O,type:"file",name:_,contents:N.contents?btoa(N.contents):void 0}),await c.refreshAll([O])}catch{W({title:"Failed to duplicate file",description:"Unable to create a duplicate of the file",variant:"danger"})}}),b=()=>{let o={size:14,strokeWidth:1.5,className:"mr-2"};return(0,a.jsxs)(jt,{align:"end",className:"print:hidden w-[220px]",onClick:j=>j.stopPropagation(),onCloseAutoFocus:j=>j.preventDefault(),children:[!t.data.isDirectory&&(0,a.jsxs)(D,{onSelect:()=>t.select(),children:[(0,a.jsx)(Xt,{...o}),"Open file"]}),!t.data.isDirectory&&!re()&&(0,a.jsxs)(D,{onSelect:()=>{n({path:t.data.path})},children:[(0,a.jsx)(fe,{...o}),"Open file in external editor"]}),t.data.isDirectory&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(D,{onSelect:()=>S(),children:[(0,a.jsx)(Ce,{...o}),"Create file"]}),(0,a.jsxs)(D,{onSelect:()=>x(),children:[(0,a.jsx)(_e,{...o}),"Create folder"]}),(0,a.jsx)(Z,{})]}),(0,a.jsxs)(D,{onSelect:()=>t.edit(),children:[(0,a.jsx)(Zt,{...o}),"Rename"]}),!t.data.isDirectory&&(0,a.jsxs)(D,{onSelect:k,children:[(0,a.jsx)(we,{...o}),"Duplicate"]}),(0,a.jsxs)(D,{onSelect:async()=>{await ne(t.data.path),W({title:"Copied to clipboard"})},children:[(0,a.jsx)(Pe,{...o}),"Copy path"]}),c&&(0,a.jsxs)(D,{onSelect:async()=>{await ne(c.relativeFromRoot(t.data.path)),W({title:"Copied to clipboard"})},children:[(0,a.jsx)(Pe,{...o}),"Copy relative path"]}),(0,a.jsx)(Z,{}),(0,a.jsxs)(D,{onSelect:()=>{let{path:j}=t.data;g(Fe[f](j))},children:[(0,a.jsx)(ct,{...o}),"Insert snippet for reading file"]}),(0,a.jsxs)(D,{onSelect:async()=>{W({title:"Copied to clipboard",description:"Code to open the file has been copied to your clipboard. You can also drag and drop this file into the editor"});let{path:j}=t.data;await ne(Fe[f](j))},children:[(0,a.jsx)(Le,{...o}),"Copy snippet for reading file"]}),t.data.isMarimoFile&&!re()&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(Z,{}),(0,a.jsxs)(D,{onSelect:y,children:[(0,a.jsx)(Jt,{...o}),"Open notebook"]})]}),(0,a.jsx)(Z,{}),!t.data.isDirectory&&!d&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(D,{onSelect:async()=>{let j=(await r({path:t.data.path})).contents||"";be(new Blob([j]),t.data.name)},children:[(0,a.jsx)(ke,{...o}),"Download"]}),(0,a.jsx)(Z,{})]}),(0,a.jsxs)(D,{onSelect:C,variant:"danger",children:[(0,a.jsx)(Dt,{...o}),"Delete"]})]})};return(0,a.jsxs)("div",{style:e,ref:i,className:me("flex items-center cursor-pointer ml-1 text-muted-foreground whitespace-nowrap group"),draggable:!0,onClick:o=>{o.stopPropagation(),t.data.isDirectory&&t.toggle()},children:[(0,a.jsx)(ya,{node:t}),(0,a.jsxs)("span",{className:me("flex items-center pl-1 py-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden group",t.willReceiveDrop&&t.data.isDirectory&&"bg-accent/80 hover:bg-accent/80 text-accent-foreground"),children:[t.data.isMarimoFile?(0,a.jsx)("img",{src:Ut,className:"w-5 h-5 shrink-0 mr-2 filter grayscale",alt:"Marimo"}):(0,a.jsx)(h,{className:"w-5 h-5 shrink-0 mr-2",strokeWidth:1.5}),t.isEditing?(0,a.jsx)(ja,{node:t}):(0,a.jsx)(ua,{node:t,onOpenMarimoFile:y}),(0,a.jsxs)(gt,{modal:!1,children:[(0,a.jsx)(ut,{asChild:!0,tabIndex:-1,onClick:o=>o.stopPropagation(),children:(0,a.jsx)(I,{"data-testid":"file-explorer-more-button",variant:"text",tabIndex:-1,size:"xs",className:"mb-0","aria-label":"More options",children:(0,a.jsx)(yt,{strokeWidth:2,className:"w-5 h-5 hidden group-hover:block"})})}),b()]})]})]})},ya=t=>{let e=(0,X.c)(3),{node:i}=t;if(!i.data.isDirectory){let s;return e[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsx)("span",{className:"w-5 h-5 shrink-0"}),e[0]=s):s=e[0],s}let n;return e[1]===i.isOpen?n=e[2]:(n=i.isOpen?(0,a.jsx)(mt,{className:"w-5 h-5 shrink-0"}):(0,a.jsx)(ft,{className:"w-5 h-5 shrink-0"}),e[1]=i.isOpen,e[2]=n),n};function Ie(t,e){t.stopPropagation(),t.preventDefault(),Lt(e)}function Ee(t,e){if(e)return t;let i=[];for(let n of t){if(va(n.name))continue;let s=n;if(n.children){let r=Ee(n.children,e);r!==n.children&&(s={...n,children:r})}i.push(s)}return i}function va(t){return!!t.startsWith(".")}function ba(){return null}function wa(t){let{parentNode:e}=t;return!e.data.isDirectory}function ka(t){return t.stopPropagation()}var Fa=ie(),Ca=()=>{let t=(0,Fa.c)(20),{ref:e,height:i}=Vt(),n=i===void 0?1:i,s;t[0]===Symbol.for("react.memo_cache_sentinel")?(s={noClick:!0,noKeyboard:!0},t[0]=s):s=t[0];let{getRootProps:r,getInputProps:d,isDragActive:f}=Ae(s),h;t[1]===r?h=t[2]:(h=r(),t[1]=r,t[2]=h);let m;t[3]===Symbol.for("react.memo_cache_sentinel")?(m=me("flex flex-col flex-1 overflow-hidden relative"),t[3]=m):m=t[3];let l;t[4]===d?l=t[5]:(l=d(),t[4]=d,t[5]=l);let u;t[6]===l?u=t[7]:(u=(0,a.jsx)("input",{...l}),t[6]=l,t[7]=u);let v;t[8]===f?v=t[9]:(v=f&&(0,a.jsx)("div",{className:"absolute inset-0 flex items-center uppercase justify-center text-xl font-bold text-primary/90 bg-accent/85 z-10 border-2 border-dashed border-primary/90 rounded-lg pointer-events-none",children:"Drop files here"}),t[8]=f,t[9]=v);let g;t[10]===n?g=t[11]:(g=(0,a.jsx)(pa,{height:n}),t[10]=n,t[11]=g);let c;t[12]!==e||t[13]!==g?(c=(0,a.jsx)("div",{ref:e,className:"flex flex-col flex-1 overflow-hidden",children:g}),t[12]=e,t[13]=g,t[14]=c):c=t[14];let y;return t[15]!==h||t[16]!==u||t[17]!==v||t[18]!==c?(y=(0,a.jsx)(Qt,{children:(0,a.jsxs)("div",{...h,className:m,children:[u,v,c]})}),t[15]=h,t[16]=u,t[17]=v,t[18]=c,t[19]=y):y=t[19],y};export{Ca as default};
1
+ var Te=Object.defineProperty;var Be=(t,e,i)=>e in t?Te(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var R=(t,e,i)=>Be(t,typeof e!="symbol"?e+"":e,i);import{s as ge}from"./chunk-LvLJmgfZ.js";import{i as $e,l as ce,n as A,p as ye,u as ae}from"./useEvent-DO6uJBas.js";import{t as qe}from"./react-BGmjiNul.js";import{Jr as Ve,Rt as he,Xn as Le,Zr as Ue,_n as Ke,w as Ze}from"./cells-BW_4R0Qw.js";import"./react-dom-C9fstfnp.js";import{t as ie}from"./compiler-runtime-DeeZ7FnK.js";import"./tooltip-BGrCWNss.js";import{d as Je,f as Xe}from"./hotkeys-BHHWjLlp.js";import{t as Ye}from"./invariant-CAG_dYON.js";import{p as Ge,u as ve}from"./utils-DXvhzCGS.js";import{j as re}from"./config-CIrPQIbt.js";import{t as Qe}from"./jsx-runtime-ZmTK25f3.js";import{n as et,t as I}from"./button-YC1gW_kJ.js";import{t as me}from"./cn-BKtXLv3a.js";import{St as tt,at}from"./dist-DBwNzi3C.js";import{a as it,c as rt,i as nt,o as st,s as lt}from"./JsonOutput-CWwP78bV.js";import"./cjs-CH5Rj0g8.js";import"./main-U5Goe76G.js";import"./useNonce-_Aax6sXd.js";import{n as ot,r as pe}from"./requests-BsVD4CdD.js";import{t as K}from"./createLucideIcon-CnW3RofX.js";import{t as dt}from"./arrow-left-Cb_73j1f.js";import{n as ct,t as ht}from"./LazyAnyLanguageCodeMirror-yzHjsVJt.js";import{_ as mt}from"./select-V5IdpNiR.js";import{i as pt,r as be}from"./download-jMLcAPOc.js";import{t as ft}from"./chevron-right-DwagBitu.js";import{f as fe}from"./maps-t9yNKYA8.js";import{n as xt}from"./markdown-renderer-YZb6nuwv.js";import{a as D,c as Z,p as ut,r as jt,t as gt}from"./dropdown-menu-B-6unW-7.js";import{t as we}from"./copy-CQ15EONK.js";import{t as ke}from"./download-B9SUL40m.js";import{t as yt}from"./ellipsis-vertical-C7jYiLCo.js";import{t as vt}from"./eye-off-BhExYOph.js";import{n as Fe,r as bt,t as wt}from"./types-fTSozrNJ.js";import{t as Ce}from"./file-plus-corner-Da9I6dgU.js";import{t as kt}from"./spinner-DaIKav-i.js";import{t as Ft}from"./refresh-ccw-DLEiQDS3.js";import{t as Ct}from"./refresh-cw-CQd-1kjx.js";import{t as Nt}from"./save-PMHbdtqc.js";import{t as Dt}from"./trash-2-CyqGun26.js";import{t as St}from"./triangle-alert-B65rDESJ.js";import{i as _t,n as Pt,t as Ot}from"./es-D8BOePqo.js";import"./dist-Cayq-K1c.js";import"./dist-TiFCI16_.js";import"./dist-BIKFl48f.js";import"./dist-B0VqT_4z.js";import"./dist-BYyu59D8.js";import{t as W}from"./use-toast-rmUWldD_.js";import{r as zt}from"./useTheme-DUdVAZI8.js";import"./Combination-CMPwuAmi.js";import{t as M}from"./tooltip-CEc2ajau.js";import"./dates-Dhn1r-h6.js";import{o as Mt}from"./alert-dialog-DwQffb13.js";import"./popover-Gz-GJzym.js";import{n as Ne}from"./ImperativeModal-CUbWEBci.js";import{r as Rt}from"./errors-2SszdW9t.js";import"./vega-loader.browser-CRZ52CKf.js";import"./defaultLocale-D_rSvXvJ.js";import"./defaultLocale-C92Rrpmf.js";import{t as ne}from"./copy-Bv2DBpIS.js";import"./purify.es-DNVQZNFu.js";import{a as At,i as Wt,n as xe,r as It,t as Et}from"./tree-B1vM35Zj.js";import{n as Ht,t as Tt}from"./alert-BrGyZf9c.js";import{n as De}from"./error-banner-DUzsIXtq.js";import{n as Se}from"./useAsyncData-C4XRy1BE.js";import"./chunk-5FQGJX7Z-CVUXBqX6.js";import"./katex-Dc8yG8NU.js";import"./html-to-image-BVbOFO17.js";import{o as Bt}from"./focus-CsiV5LZR.js";import{a as $t}from"./renderShortcut-DEwfrKeS.js";import{n as qt}from"./blob-CuXvdYPX.js";import{t as Vt}from"./bundle.esm-2AjO7UK5.js";import{t as Lt}from"./links-C-GGaW8R.js";import{t as Ut}from"./icon-32x32-ClOCJ7rj.js";import{t as J}from"./Inputs-D2Xn4HON.js";var Kt=K("copy-minus",[["line",{x1:"12",x2:"18",y1:"15",y2:"15",key:"1nscbv"}],["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]),_e=K("folder-plus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),Pe=K("list-tree",[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]]),Zt=K("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]),Jt=K("square-play",[["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}],["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}]]),Xt=K("view",[["path",{d:"M21 17v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2",key:"mrq65r"}],["path",{d:"M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2",key:"be3xqs"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0",key:"11ak4c"}]]),Oe=ie(),F=ge(qe(),1),a=ge(Qe(),1),ze=(0,F.createContext)(null);function Yt(){return(0,F.useContext)(ze)??void 0}var Gt=t=>{let e=(0,Oe.c)(3),{children:i}=t,n=Wt(),s;return e[0]!==i||e[1]!==n?(s=(0,a.jsx)(ze.Provider,{value:n,children:i}),e[0]=i,e[1]=n,e[2]=s):s=e[2],s};const Qt=t=>{let e=(0,Oe.c)(5),{children:i}=t,[n,s]=(0,F.useState)(null),r;e[0]!==i||e[1]!==n?(r=n&&(0,a.jsx)(At,{backend:It,options:{rootElement:n},children:(0,a.jsx)(Gt,{children:i})}),e[0]=i,e[1]=n,e[2]=r):r=e[2];let d;return e[3]===r?d=e[4]:(d=(0,a.jsx)("div",{ref:s,className:"contents",children:r}),e[3]=r,e[4]=d),d};var ue=new Map;const ea=({file:t,onOpenNotebook:e})=>{let{theme:i}=zt(),{sendFileDetails:n,sendUpdateFile:s}=pe(),r=ae(Ge),d=ae(ve),f=ae(Ve),[h,m]=(0,F.useState)(""),{data:l,isPending:u,error:v,setData:g,refetch:c}=Se(async()=>{let o=await n({path:t.path}),j=o.contents||"";return m(ue.get(t.path)||j),o},[t.path]),y=async()=>{h!==(l==null?void 0:l.contents)&&await s({path:t.path,contents:h}).then(o=>{o.success&&(g(j=>({...j,contents:h})),m(h))})},C=(0,F.useRef)(h);if(C.current=h,(0,F.useEffect)(()=>()=>{if(!(l!=null&&l.contents))return;let o=C.current;o===l.contents?ue.delete(t.path):ue.set(t.path,o)},[t.path,l==null?void 0:l.contents]),v)return(0,a.jsx)(De,{error:v});if(u||!l)return null;let x=l.mimeType||"text/plain",S=x in je,k=f&&l.file.isMarimoFile&&(t.path===f||t.path.endsWith(`/${f}`));if(!l.contents&&!S)return(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-2 p-6",children:[(0,a.jsx)("div",{className:"font-bold text-muted-foreground",children:"Name"}),(0,a.jsx)("div",{children:l.file.name}),(0,a.jsx)("div",{className:"font-bold text-muted-foreground",children:"Type"}),(0,a.jsx)("div",{children:x})]});let b=(0,a.jsxs)("div",{className:"text-xs text-muted-foreground p-1 flex justify-end gap-2 border-b",children:[(0,a.jsx)(M,{content:"Refresh",children:(0,a.jsx)(J,{size:"small",onClick:c,children:(0,a.jsx)(Ct,{})})}),t.isMarimoFile&&!re()&&(0,a.jsx)(M,{content:"Open notebook",children:(0,a.jsx)(J,{size:"small",onClick:o=>e(o),children:(0,a.jsx)(fe,{})})}),!d&&(0,a.jsx)(M,{content:"Download",children:(0,a.jsx)(J,{size:"small",onClick:()=>{if(Me(x)){pt(xt(l.contents,x),l.file.name);return}be(new Blob([l.contents||h],{type:x}),l.file.name)},children:(0,a.jsx)(ke,{})})}),!Me(x)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(M,{content:"Copy contents to clipboard",children:(0,a.jsx)(J,{size:"small",onClick:async()=>{await ne(h)},children:(0,a.jsx)(we,{})})}),(0,a.jsx)(M,{content:$t("global.save"),children:(0,a.jsx)(J,{size:"small",color:h===l.contents?void 0:"green",onClick:y,disabled:h===l.contents,children:(0,a.jsx)(Nt,{})})})]})]});return x.startsWith("image/")?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(st,{base64:l.contents,mime:x})})]}):x==="text/csv"&&l.contents?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(it,{contents:l.contents})})]}):x.startsWith("audio/")?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(nt,{base64:l.contents,mime:x})})]}):x.startsWith("video/")?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(rt,{base64:l.contents,mime:x})})]}):x.startsWith("application/pdf")?(0,a.jsxs)(a.Fragment,{children:[b,(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:(0,a.jsx)(lt,{base64:l.contents,mime:x})})]}):(0,a.jsxs)(a.Fragment,{children:[b,k&&(0,a.jsxs)(Tt,{variant:"warning",className:"rounded-none",children:[(0,a.jsx)(St,{className:"h-4 w-4"}),(0,a.jsx)(Ht,{children:"Editing the notebook file directly while running in marimo's editor may cause unintended changes. Please use with caution."})]}),(0,a.jsx)("div",{className:"flex-1 overflow-auto",children:(0,a.jsx)(F.Suspense,{children:(0,a.jsx)(ht,{theme:i==="dark"?"dark":"light",language:je[x]||je.default,className:"border-b",extensions:[at.lineWrapping,tt.of([{key:r.getHotkey("global.save").key,stopPropagation:!0,run:()=>h===l.contents?!1:(y(),!0)}])],value:h,onChange:m})})})]})};var Me=t=>t?t.startsWith("image/")||t.startsWith("audio/")||t.startsWith("video/")||t.startsWith("application/pdf"):!1,je={"application/javascript":"javascript","text/markdown":"markdown","text/html":"html","text/css":"css","text/x-python":"python","application/json":"json","application/xml":"xml","text/x-yaml":"yaml","text/csv":"markdown","text/plain":"markdown",default:"markdown"},ta=class{constructor(t){R(this,"delegate",new xe([]));R(this,"rootPath","");R(this,"onChange",Xe.NOOP);R(this,"path",new he("/"));R(this,"initialize",async t=>{if(this.onChange=t,this.delegate.data.length===0)try{let e=await this.callbacks.listFiles({path:this.rootPath});this.delegate=new xe(e.files),this.rootPath=e.root,this.path=he.guessDeliminator(e.root)}catch(e){W({title:"Failed",description:Rt(e)})}this.onChange(this.delegate.data)});R(this,"refreshAll",async t=>{let e=[this.rootPath,...t.map(n=>{var s;return(s=this.delegate.find(n))==null?void 0:s.data.path})].filter(Boolean),i=await Promise.all(e.map(n=>this.callbacks.listFiles({path:n}).catch(()=>({files:[]}))));for(let[n,s]of e.entries()){let r=i[n];s===this.rootPath?this.delegate=new xe(r.files):this.delegate.update({id:s,changes:{children:r.files}})}this.onChange(this.delegate.data)});R(this,"relativeFromRoot",t=>{let e=this.rootPath.endsWith(this.path.deliminator)?this.rootPath:`${this.rootPath}${this.path.deliminator}`;return t.startsWith(e)?t.slice(e.length):t});R(this,"handleResponse",t=>t.success?t:(W({title:"Failed",description:t.message}),null));this.callbacks=t}async expand(t){let e=this.delegate.find(t);if(!e||!e.data.isDirectory)return!1;if(e.children&&e.children.length>0)return!0;let i=await this.callbacks.listFiles({path:e.data.path});return this.delegate.update({id:t,changes:{children:i.files}}),this.onChange(this.delegate.data),!0}async rename(t,e){let i=this.delegate.find(t);if(!i)return;let n=i.data.path,s=this.path.join(this.path.dirname(n),e);await this.callbacks.renameFileOrFolder({path:n,newPath:s}).then(this.handleResponse),this.delegate.update({id:t,changes:{name:e,path:s}}),this.onChange(this.delegate.data),await this.refreshAll([s])}async move(t,e){var n;let i=e?((n=this.delegate.find(e))==null?void 0:n.data.path)??e:this.rootPath;await Promise.all(t.map(s=>{this.delegate.move({id:s,parentId:e,index:0});let r=this.delegate.find(s);if(!r)return Promise.resolve();let d=this.path.join(i,this.path.basename(r.data.path));return this.delegate.update({id:s,changes:{path:d}}),this.callbacks.renameFileOrFolder({path:r.data.path,newPath:d}).then(this.handleResponse)})),this.onChange(this.delegate.data),await this.refreshAll([i])}async createFile(t,e){var s;let i=e?((s=this.delegate.find(e))==null?void 0:s.data.path)??e:this.rootPath,n=await this.callbacks.createFileOrFolder({path:i,type:"file",name:t}).then(this.handleResponse);n!=null&&n.info&&(this.delegate.create({parentId:e,index:0,data:n.info}),this.onChange(this.delegate.data),await this.refreshAll([i]))}async createFolder(t,e){var s;let i=e?((s=this.delegate.find(e))==null?void 0:s.data.path)??e:this.rootPath,n=await this.callbacks.createFileOrFolder({path:i,type:"directory",name:t}).then(this.handleResponse);n!=null&&n.info&&(this.delegate.create({parentId:e,index:0,data:n.info}),this.onChange(this.delegate.data),await this.refreshAll([i]))}async delete(t){let e=this.delegate.find(t);e&&(await this.callbacks.deleteFileOrFolder({path:e.data.path}).then(this.handleResponse),this.delegate.drop({id:t}),this.onChange(this.delegate.data))}};const Re=ye(t=>{let e=t(ot);return Ye(e,"no requestClientAtom set"),new ta({listFiles:e.sendListFiles,createFileOrFolder:e.sendCreateFileOrFolder,deleteFileOrFolder:e.sendDeleteFileOrFolder,renameFileOrFolder:e.sendRenameFileOrFolder})}),aa=ye({});async function ia(){await $e.get(Re).refreshAll([])}var ra=ie(),na=1024*1024*100;function Ae(t){let e=(0,ra.c)(7),i;e[0]===t?i=e[1]:(i=t===void 0?{}:t,e[0]=t,e[1]=i);let n=i,{sendCreateFileOrFolder:s}=pe(),r;e[2]===s?r=e[3]:(r=async f=>{for(let h of f){let m=ha(ca(h)),l="";m&&(l=he.guessDeliminator(m).dirname(m));let u=(await qt(h)).split(",")[1];await s({path:l,type:"file",name:h.name,contents:u})}await ia()},e[2]=s,e[3]=r);let d;return e[4]!==n||e[5]!==r?(d={multiple:!0,maxSize:na,onError:da,onDropRejected:sa,onDrop:r,...n},e[4]=n,e[5]=r,e[6]=d):d=e[6],Ot(d)}function sa(t){W({title:"File upload failed",description:(0,a.jsx)("div",{className:"flex flex-col gap-1",children:t.map(la)}),variant:"danger"})}function la(t){return(0,a.jsxs)("div",{children:[t.file.name," (",t.errors.map(oa).join(", "),")"]},t.file.name)}function oa(t){return t.message}function da(t){Je.error(t),W({title:"File upload failed",description:t.message,variant:"danger"})}function ca(t){if(t.webkitRelativePath)return t.webkitRelativePath;if("path"in t&&typeof t.path=="string")return t.path;if("relativePath"in t&&typeof t.relativePath=="string")return t.relativePath}function ha(t){if(t)return t.replace(/^\/+/,"")}var X=ie(),ma=Ue("marimo:showHiddenFiles",!0,Ke,{getOnInit:!0}),We=F.createContext(null);const pa=t=>{let e=(0,X.c)(68),{height:i}=t,n=(0,F.useRef)(null),s=Yt(),[r]=ce(Re),d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=[],e[0]=d):d=e[0];let[f,h]=(0,F.useState)(d),[m,l]=(0,F.useState)(null),[u,v]=ce(ma),{openPrompt:g}=Ne(),[c,y]=ce(aa),C;e[1]===r?C=e[2]:(C=()=>r.initialize(h),e[1]=r,e[2]=C);let x;e[3]===Symbol.for("react.memo_cache_sentinel")?(x=[],e[3]=x):x=e[3];let{isPending:S,error:k}=Se(C,x),b;e[4]!==c||e[5]!==r?(b=()=>{r.refreshAll(Object.keys(c).filter(p=>c[p]))},e[4]=c,e[5]=r,e[6]=b):b=e[6];let o=A(b),j;e[7]!==v||e[8]!==u?(j=()=>{v(!u)},e[7]=v,e[8]=u,e[9]=j):j=e[9];let _=A(j),P;e[10]!==g||e[11]!==r?(P=async()=>{g({title:"Folder name",onConfirm:async p=>{r.createFolder(p,null)}})},e[10]=g,e[11]=r,e[12]=P):P=e[12];let N=A(P),O;e[13]!==g||e[14]!==r?(O=async()=>{g({title:"File name",onConfirm:async p=>{r.createFile(p,null)}})},e[13]=g,e[14]=r,e[15]=O):O=e[15];let se=A(O),Y;e[16]===y?Y=e[17]:(Y=()=>{var p;(p=n.current)==null||p.closeAll(),y({})},e[16]=y,e[17]=Y);let le=A(Y),G;e[18]!==f||e[19]!==u?(G=Ee(f,u),e[18]=f,e[19]=u,e[20]=G):G=e[20];let oe=G;if(S){let p;return e[21]===Symbol.for("react.memo_cache_sentinel")?(p=(0,a.jsx)(kt,{size:"medium",centered:!0}),e[21]=p):p=e[21],p}if(k){let p;return e[22]===k?p=e[23]:(p=(0,a.jsx)(De,{error:k}),e[22]=k,e[23]=p),p}if(m){let p;e[24]===Symbol.for("react.memo_cache_sentinel")?(p=()=>l(null),e[24]=p):p=e[24];let w;e[25]===Symbol.for("react.memo_cache_sentinel")?(w=(0,a.jsx)(I,{onClick:p,"data-testid":"file-explorer-back-button",variant:"text",size:"xs",className:"mb-0",children:(0,a.jsx)(dt,{size:16})}),e[25]=w):w=e[25];let z;e[26]===m.name?z=e[27]:(z=(0,a.jsxs)("div",{className:"flex items-center pl-1 pr-3 shrink-0 border-b justify-between",children:[w,(0,a.jsx)("span",{className:"font-bold",children:m.name})]}),e[26]=m.name,e[27]=z);let L;e[28]!==m.path||e[29]!==r?(L=He=>Ie(He,r.relativeFromRoot(m.path)),e[28]=m.path,e[29]=r,e[30]=L):L=e[30];let U;e[31]!==m||e[32]!==L?(U=(0,a.jsx)(F.Suspense,{children:(0,a.jsx)(ea,{onOpenNotebook:L,file:m})}),e[31]=m,e[32]=L,e[33]=U):U=e[33];let te;return e[34]!==z||e[35]!==U?(te=(0,a.jsxs)(a.Fragment,{children:[z,U]}),e[34]=z,e[35]=U,e[36]=te):te=e[36],te}let E;e[37]!==le||e[38]!==se||e[39]!==N||e[40]!==_||e[41]!==o||e[42]!==r?(E=(0,a.jsx)(xa,{onRefresh:o,onHidden:_,onCreateFile:se,onCreateFolder:N,onCollapseAll:le,tree:r}),e[37]=le,e[38]=se,e[39]=N,e[40]=_,e[41]=o,e[42]=r,e[43]=E):E=e[43];let de=i-33,H,T,B;e[44]===r?(H=e[45],T=e[46],B=e[47]):(H=async p=>{let{ids:w}=p;for(let z of w)await r.delete(z)},T=async p=>{let{id:w,name:z}=p;await r.rename(w,z)},B=async p=>{let{dragIds:w,parentId:z}=p;await r.move(w,z)},e[44]=r,e[45]=H,e[46]=T,e[47]=B);let Q;e[48]===Symbol.for("react.memo_cache_sentinel")?(Q=p=>{let w=p[0];w&&(w.data.isDirectory||l(w.data))},e[48]=Q):Q=e[48];let $;e[49]!==c||e[50]!==y||e[51]!==r?($=async p=>{if(await r.expand(p)){let w=c[p]??!1;y({...c,[p]:!w})}},e[49]=c,e[50]=y,e[51]=r,e[52]=$):$=e[52];let q;e[53]!==s||e[54]!==c||e[55]!==de||e[56]!==H||e[57]!==T||e[58]!==B||e[59]!==$||e[60]!==oe?(q=(0,a.jsx)(Et,{width:"100%",ref:n,height:de,className:"h-full",data:oe,initialOpenState:c,openByDefault:!1,dndManager:s,renderCursor:ba,disableDrop:wa,onDelete:H,onRename:T,onMove:B,onSelect:Q,onToggle:$,padding:15,rowHeight:30,indent:fa,overscanCount:1e3,disableMultiSelection:!0,children:ga}),e[53]=s,e[54]=c,e[55]=de,e[56]=H,e[57]=T,e[58]=B,e[59]=$,e[60]=oe,e[61]=q):q=e[61];let V;e[62]!==q||e[63]!==r?(V=(0,a.jsx)(We,{value:r,children:q}),e[62]=q,e[63]=r,e[64]=V):V=e[64];let ee;return e[65]!==E||e[66]!==V?(ee=(0,a.jsxs)(a.Fragment,{children:[E,V]}),e[65]=E,e[66]=V,e[67]=ee):ee=e[67],ee};var fa=15,xa=t=>{let e=(0,X.c)(34),{onRefresh:i,onHidden:n,onCreateFile:s,onCreateFolder:r,onCollapseAll:d}=t,f;e[0]===Symbol.for("react.memo_cache_sentinel")?(f={noDrag:!0,noDragEventsBubbling:!0},e[0]=f):f=e[0];let{getRootProps:h,getInputProps:m}=Ae(f),l;e[1]===Symbol.for("react.memo_cache_sentinel")?(l=(0,a.jsx)(Ce,{size:16}),e[1]=l):l=e[1];let u;e[2]===s?u=e[3]:(u=(0,a.jsx)(M,{content:"Add file",children:(0,a.jsx)(I,{"data-testid":"file-explorer-add-file-button",onClick:s,variant:"text",size:"xs",children:l})}),e[2]=s,e[3]=u);let v;e[4]===Symbol.for("react.memo_cache_sentinel")?(v=(0,a.jsx)(_e,{size:16}),e[4]=v):v=e[4];let g;e[5]===r?g=e[6]:(g=(0,a.jsx)(M,{content:"Add folder",children:(0,a.jsx)(I,{"data-testid":"file-explorer-add-folder-button",onClick:r,variant:"text",size:"xs",children:v})}),e[5]=r,e[6]=g);let c;e[7]===h?c=e[8]:(c=h({}),e[7]=h,e[8]=c);let y,C;e[9]===Symbol.for("react.memo_cache_sentinel")?(y=et({variant:"text",size:"xs"}),C=(0,a.jsx)(_t,{size:16}),e[9]=y,e[10]=C):(y=e[9],C=e[10]);let x;e[11]===c?x=e[12]:(x=(0,a.jsx)(M,{content:"Upload file",children:(0,a.jsx)("button",{"data-testid":"file-explorer-upload-button",...c,className:y,children:C})}),e[11]=c,e[12]=x);let S;e[13]===m?S=e[14]:(S=m({}),e[13]=m,e[14]=S);let k;e[15]===S?k=e[16]:(k=(0,a.jsx)("input",{...S,type:"file"}),e[15]=S,e[16]=k);let b;e[17]===Symbol.for("react.memo_cache_sentinel")?(b=(0,a.jsx)(Ft,{size:16}),e[17]=b):b=e[17];let o;e[18]===i?o=e[19]:(o=(0,a.jsx)(M,{content:"Refresh",children:(0,a.jsx)(I,{"data-testid":"file-explorer-refresh-button",onClick:i,variant:"text",size:"xs",children:b})}),e[18]=i,e[19]=o);let j;e[20]===Symbol.for("react.memo_cache_sentinel")?(j=(0,a.jsx)(vt,{size:16}),e[20]=j):j=e[20];let _;e[21]===n?_=e[22]:(_=(0,a.jsx)(M,{content:"Toggle hidden files",children:(0,a.jsx)(I,{"data-testid":"file-explorer-hidden-files-button",onClick:n,variant:"text",size:"xs",children:j})}),e[21]=n,e[22]=_);let P;e[23]===Symbol.for("react.memo_cache_sentinel")?(P=(0,a.jsx)(Kt,{size:16}),e[23]=P):P=e[23];let N;e[24]===d?N=e[25]:(N=(0,a.jsx)(M,{content:"Collapse all folders",children:(0,a.jsx)(I,{"data-testid":"file-explorer-collapse-button",onClick:d,variant:"text",size:"xs",children:P})}),e[24]=d,e[25]=N);let O;return e[26]!==k||e[27]!==o||e[28]!==_||e[29]!==N||e[30]!==u||e[31]!==g||e[32]!==x?(O=(0,a.jsxs)("div",{className:"flex items-center justify-end px-2 shrink-0 border-b",children:[u,g,x,k,o,_,N]}),e[26]=k,e[27]=o,e[28]=_,e[29]=N,e[30]=u,e[31]=g,e[32]=x,e[33]=O):O=e[33],O},ua=t=>{let e=(0,X.c)(9),{node:i,onOpenMarimoFile:n}=t,s;e[0]===i?s=e[1]:(s=f=>{i.data.isDirectory||(f.stopPropagation(),i.select())},e[0]=i,e[1]=s);let r;e[2]!==i.data.isMarimoFile||e[3]!==n?(r=i.data.isMarimoFile&&!re()&&(0,a.jsxs)("span",{className:"shrink-0 ml-2 text-sm hidden group-hover:inline hover:underline",onClick:n,children:["open ",(0,a.jsx)(fe,{className:"inline ml-1",size:12})]}),e[2]=i.data.isMarimoFile,e[3]=n,e[4]=r):r=e[4];let d;return e[5]!==i.data.name||e[6]!==s||e[7]!==r?(d=(0,a.jsxs)("span",{className:"flex-1 overflow-hidden text-ellipsis",onClick:s,children:[i.data.name,r]}),e[5]=i.data.name,e[6]=s,e[7]=r,e[8]=d):d=e[8],d},ja=t=>{let e=(0,X.c)(10),{node:i}=t,n=(0,F.useRef)(null),s,r;e[0]===i.data.name?(s=e[1],r=e[2]):(s=()=>{var m,l;(m=n.current)==null||m.focus(),(l=n.current)==null||l.setSelectionRange(0,i.data.name.lastIndexOf("."))},r=[i.data.name],e[0]=i.data.name,e[1]=s,e[2]=r),(0,F.useEffect)(s,r);let d,f;e[3]===i?(d=e[4],f=e[5]):(d=()=>i.reset(),f=m=>{m.key==="Escape"&&i.reset(),m.key==="Enter"&&i.submit(m.currentTarget.value)},e[3]=i,e[4]=d,e[5]=f);let h;return e[6]!==i.data.name||e[7]!==d||e[8]!==f?(h=(0,a.jsx)("input",{ref:n,className:"flex-1 bg-transparent border border-border text-muted-foreground",defaultValue:i.data.name,onClick:ka,onBlur:d,onKeyDown:f}),e[6]=i.data.name,e[7]=d,e[8]=f,e[9]=h):h=e[9],h},ga=({node:t,style:e,dragHandle:i})=>{let{openFile:n,sendCreateFileOrFolder:s,sendFileDetails:r}=pe(),d=ae(ve),f=t.data.isDirectory?"directory":bt(t.data.name),h=wt[f],{openConfirm:m,openPrompt:l}=Ne(),{createNewCell:u}=Ze(),v=Bt(),g=o=>{u({code:o,before:!1,cellId:v??"__end__"})},c=(0,F.use)(We),y=async o=>{Ie(o,c?c.relativeFromRoot(t.data.path):t.data.path)},C=async o=>{o.stopPropagation(),o.preventDefault(),m({title:"Delete file",description:`Are you sure you want to delete ${t.data.name}?`,confirmAction:(0,a.jsx)(Mt,{onClick:async()=>{await t.tree.delete(t.id)},"aria-label":"Confirm",children:"Delete"})})},x=A(async()=>{t.open(),l({title:"Folder name",onConfirm:async o=>{c==null||c.createFolder(o,t.id)}})}),S=A(async()=>{t.open(),l({title:"File name",onConfirm:async o=>{c==null||c.createFile(o,t.id)}})}),k=A(async()=>{var P;if(!c||t.data.isDirectory)return;let[o,j]=Pt(t.data.name),_=`${o}_copy${j}`;try{let N=await r({path:t.data.path}),O=((P=t.parent)==null?void 0:P.data.path)||"";await s({path:O,type:"file",name:_,contents:N.contents?btoa(N.contents):void 0}),await c.refreshAll([O])}catch{W({title:"Failed to duplicate file",description:"Unable to create a duplicate of the file",variant:"danger"})}}),b=()=>{let o={size:14,strokeWidth:1.5,className:"mr-2"};return(0,a.jsxs)(jt,{align:"end",className:"print:hidden w-[220px]",onClick:j=>j.stopPropagation(),onCloseAutoFocus:j=>j.preventDefault(),children:[!t.data.isDirectory&&(0,a.jsxs)(D,{onSelect:()=>t.select(),children:[(0,a.jsx)(Xt,{...o}),"Open file"]}),!t.data.isDirectory&&!re()&&(0,a.jsxs)(D,{onSelect:()=>{n({path:t.data.path})},children:[(0,a.jsx)(fe,{...o}),"Open file in external editor"]}),t.data.isDirectory&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(D,{onSelect:()=>S(),children:[(0,a.jsx)(Ce,{...o}),"Create file"]}),(0,a.jsxs)(D,{onSelect:()=>x(),children:[(0,a.jsx)(_e,{...o}),"Create folder"]}),(0,a.jsx)(Z,{})]}),(0,a.jsxs)(D,{onSelect:()=>t.edit(),children:[(0,a.jsx)(Zt,{...o}),"Rename"]}),!t.data.isDirectory&&(0,a.jsxs)(D,{onSelect:k,children:[(0,a.jsx)(we,{...o}),"Duplicate"]}),(0,a.jsxs)(D,{onSelect:async()=>{await ne(t.data.path),W({title:"Copied to clipboard"})},children:[(0,a.jsx)(Pe,{...o}),"Copy path"]}),c&&(0,a.jsxs)(D,{onSelect:async()=>{await ne(c.relativeFromRoot(t.data.path)),W({title:"Copied to clipboard"})},children:[(0,a.jsx)(Pe,{...o}),"Copy relative path"]}),(0,a.jsx)(Z,{}),(0,a.jsxs)(D,{onSelect:()=>{let{path:j}=t.data;g(Fe[f](j))},children:[(0,a.jsx)(ct,{...o}),"Insert snippet for reading file"]}),(0,a.jsxs)(D,{onSelect:async()=>{W({title:"Copied to clipboard",description:"Code to open the file has been copied to your clipboard. You can also drag and drop this file into the editor"});let{path:j}=t.data;await ne(Fe[f](j))},children:[(0,a.jsx)(Le,{...o}),"Copy snippet for reading file"]}),t.data.isMarimoFile&&!re()&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(Z,{}),(0,a.jsxs)(D,{onSelect:y,children:[(0,a.jsx)(Jt,{...o}),"Open notebook"]})]}),(0,a.jsx)(Z,{}),!t.data.isDirectory&&!d&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(D,{onSelect:async()=>{let j=(await r({path:t.data.path})).contents||"";be(new Blob([j]),t.data.name)},children:[(0,a.jsx)(ke,{...o}),"Download"]}),(0,a.jsx)(Z,{})]}),(0,a.jsxs)(D,{onSelect:C,variant:"danger",children:[(0,a.jsx)(Dt,{...o}),"Delete"]})]})};return(0,a.jsxs)("div",{style:e,ref:i,className:me("flex items-center cursor-pointer ml-1 text-muted-foreground whitespace-nowrap group"),draggable:!0,onClick:o=>{o.stopPropagation(),t.data.isDirectory&&t.toggle()},children:[(0,a.jsx)(ya,{node:t}),(0,a.jsxs)("span",{className:me("flex items-center pl-1 py-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden group",t.willReceiveDrop&&t.data.isDirectory&&"bg-accent/80 hover:bg-accent/80 text-accent-foreground"),children:[t.data.isMarimoFile?(0,a.jsx)("img",{src:Ut,className:"w-5 h-5 shrink-0 mr-2 filter grayscale",alt:"Marimo"}):(0,a.jsx)(h,{className:"w-5 h-5 shrink-0 mr-2",strokeWidth:1.5}),t.isEditing?(0,a.jsx)(ja,{node:t}):(0,a.jsx)(ua,{node:t,onOpenMarimoFile:y}),(0,a.jsxs)(gt,{modal:!1,children:[(0,a.jsx)(ut,{asChild:!0,tabIndex:-1,onClick:o=>o.stopPropagation(),children:(0,a.jsx)(I,{"data-testid":"file-explorer-more-button",variant:"text",tabIndex:-1,size:"xs",className:"mb-0","aria-label":"More options",children:(0,a.jsx)(yt,{strokeWidth:2,className:"w-5 h-5 hidden group-hover:block"})})}),b()]})]})]})},ya=t=>{let e=(0,X.c)(3),{node:i}=t;if(!i.data.isDirectory){let s;return e[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,a.jsx)("span",{className:"w-5 h-5 shrink-0"}),e[0]=s):s=e[0],s}let n;return e[1]===i.isOpen?n=e[2]:(n=i.isOpen?(0,a.jsx)(mt,{className:"w-5 h-5 shrink-0"}):(0,a.jsx)(ft,{className:"w-5 h-5 shrink-0"}),e[1]=i.isOpen,e[2]=n),n};function Ie(t,e){t.stopPropagation(),t.preventDefault(),Lt(e)}function Ee(t,e){if(e)return t;let i=[];for(let n of t){if(va(n.name))continue;let s=n;if(n.children){let r=Ee(n.children,e);r!==n.children&&(s={...n,children:r})}i.push(s)}return i}function va(t){return!!t.startsWith(".")}function ba(){return null}function wa(t){let{parentNode:e}=t;return!e.data.isDirectory}function ka(t){return t.stopPropagation()}var Fa=ie(),Ca=()=>{let t=(0,Fa.c)(20),{ref:e,height:i}=Vt(),n=i===void 0?1:i,s;t[0]===Symbol.for("react.memo_cache_sentinel")?(s={noClick:!0,noKeyboard:!0},t[0]=s):s=t[0];let{getRootProps:r,getInputProps:d,isDragActive:f}=Ae(s),h;t[1]===r?h=t[2]:(h=r(),t[1]=r,t[2]=h);let m;t[3]===Symbol.for("react.memo_cache_sentinel")?(m=me("flex flex-col flex-1 overflow-hidden relative"),t[3]=m):m=t[3];let l;t[4]===d?l=t[5]:(l=d(),t[4]=d,t[5]=l);let u;t[6]===l?u=t[7]:(u=(0,a.jsx)("input",{...l}),t[6]=l,t[7]=u);let v;t[8]===f?v=t[9]:(v=f&&(0,a.jsx)("div",{className:"absolute inset-0 flex items-center uppercase justify-center text-xl font-bold text-primary/90 bg-accent/85 z-10 border-2 border-dashed border-primary/90 rounded-lg pointer-events-none",children:"Drop files here"}),t[8]=f,t[9]=v);let g;t[10]===n?g=t[11]:(g=(0,a.jsx)(pa,{height:n}),t[10]=n,t[11]=g);let c;t[12]!==e||t[13]!==g?(c=(0,a.jsx)("div",{ref:e,className:"flex flex-col flex-1 overflow-hidden",children:g}),t[12]=e,t[13]=g,t[14]=c):c=t[14];let y;return t[15]!==h||t[16]!==u||t[17]!==v||t[18]!==c?(y=(0,a.jsx)(Qt,{children:(0,a.jsxs)("div",{...h,className:m,children:[u,v,c]})}),t[15]=h,t[16]=u,t[17]=v,t[18]=c,t[19]=y):y=t[19],y};export{Ca as default};
@@ -1 +1 @@
1
- var O=Object.defineProperty;var V=(t,e,i)=>e in t?O(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var b=(t,e,i)=>V(t,typeof e!="symbol"?e+"":e,i);import{u as I}from"./useEvent-DO6uJBas.js";import{o as j}from"./cells-BW_4R0Qw.js";import{t as T}from"./compiler-runtime-DeeZ7FnK.js";import{a as k,d as E}from"./hotkeys-BHHWjLlp.js";import{i as N}from"./utils-DXvhzCGS.js";import{A as P,w as _}from"./config-CIrPQIbt.js";import{r as z}from"./requests-BsVD4CdD.js";import{f as D}from"./layout-KY92f2Sm.js";import{s as $,u as B}from"./download-Bwa9P-Pz.js";import{t as H}from"./Deferred-CrO5-0RA.js";import{t as L}from"./use-toast-rmUWldD_.js";import{t as M}from"./useInterval-Cu9ChZf-.js";var R=class{constructor(){b(this,"capturedInputs",new Map);b(this,"inFlight",new Map)}cancelEntry(t){t.controller.abort(),t.deferred.status==="pending"&&t.deferred.resolve(void 0)}needsCapture(t,e){if(this.capturedInputs.get(t)===e)return!1;let i=this.inFlight.get(t);return!(i&&i.inputValue===e)}waitForInFlight(t,e){let i=this.inFlight.get(t);return i&&i.inputValue===e?i.deferred.promise:null}startCapture(t,e){let i=this.inFlight.get(t);i&&this.cancelEntry(i);let n=new AbortController,l=new H,u={controller:n,inputValue:e,deferred:l};return this.inFlight.set(t,u),{signal:n.signal,markCaptured:p=>{this.inFlight.get(t)===u&&(l.resolve(p),this.capturedInputs.set(t,e),this.inFlight.delete(t))},markFailed:()=>{this.inFlight.get(t)===u&&(l.resolve(void 0),this.inFlight.delete(t))}}}prune(t){for(let e of this.capturedInputs.keys())t.has(e)||this.capturedInputs.delete(e);for(let[e,i]of this.inFlight)t.has(e)||(this.cancelEntry(i),this.inFlight.delete(e))}get isCapturing(){return this.inFlight.size>0}abort(){for(let t of this.inFlight.values())this.cancelEntry(t);this.inFlight.clear()}reset(){this.abort(),this.capturedInputs.clear()}},Y=T(),S=5e3;function q(){let t=(0,Y.c)(14),e=I(N),{state:i}=I(_),n=e.auto_download.includes("markdown"),l=e.auto_download.includes("html"),u=e.auto_download.includes("ipynb"),p=i===P.OPEN,d=!n||!p,h=!l||!p,c=!u||!p,{autoExportAsHTML:a,autoExportAsIPYNB:s,autoExportAsMarkdown:r,updateCellOutputs:o}=z(),m=x(),f;t[0]===r?f=t[1]:(f=async()=>{await r({download:!1})},t[0]=r,t[1]=f);let g;t[2]===d?g=t[3]:(g={delayMs:S,whenVisible:!0,disabled:d},t[2]=d,t[3]=g),M(f,g);let w;t[4]===a?w=t[5]:(w=async()=>{await a({download:!1,includeCode:!0,files:D.INSTANCE.filenames()})},t[4]=a,t[5]=w);let v;t[6]===h?v=t[7]:(v={delayMs:S,whenVisible:!0,disabled:h},t[6]=h,t[7]=v),M(w,v);let F;t[8]!==s||t[9]!==m||t[10]!==o?(F=async()=>{await A({takeScreenshots:()=>m({progress:B.indeterminate()}),updateCellOutputs:o}),await s({download:!1})},t[8]=s,t[9]=m,t[10]=o,t[11]=F):F=t[11];let y;t[12]===c?y=t[13]:(y={delayMs:S,whenVisible:!0,disabled:c,skipIfRunning:!0},t[12]=c,t[13]=y),M(F,y)}var G=new Set(["text/html","application/vnd.vegalite.v5+json","application/vnd.vega.v5+json","application/vnd.vegalite.v6+json","application/vnd.vega.v6+json"]);const C=new R;function x(){let t=I(j);return async e=>{var h,c;let{progress:i}=e,n=new Set(k.keys(t));C.prune(n);let l=[],u=[];for(let[a,s]of k.entries(t)){let r=(h=s.output)==null?void 0:h.data;if((c=s.output)!=null&&c.mimetype&&G.has(s.output.mimetype)&&r)if(C.needsCapture(a,r))l.push([a,r]);else{let o=C.waitForInFlight(a,r);o&&u.push({cellId:a,promise:o})}}if(l.length===0&&u.length===0)return{};l.length>0&&i.addTotal(l.length);let p={};for(let[a,s]of l){let r=C.startCapture(a,s);try{let o=await $(a);if(r.signal.aborted)continue;if(!o){E.error(`Failed to capture screenshot for cell ${a}`),r.markFailed();continue}let m=["image/png",o];p[a]=m,r.markCaptured(m)}catch(o){E.error(`Error screenshotting cell ${a}:`,o),r.markFailed()}finally{i.increment(1)}}let d=await Promise.allSettled(u.map(({promise:a})=>a));for(let[a,{cellId:s}]of u.entries()){let r=d[a].status==="fulfilled"?d[a].value:void 0;r&&(p[s]=r)}return p}}async function A(t){let{takeScreenshots:e,updateCellOutputs:i}=t;try{let n=await e();k.size(n)>0&&await i({cellIdsToOutput:n})}catch(n){E.error("Error updating cell outputs with screenshots:",n),L({title:"Failed to capture cell outputs",description:"Some outputs may not appear in the PDF. Continuing with export.",variant:"danger"})}}export{q as n,x as r,A as t};
1
+ var O=Object.defineProperty;var V=(t,e,i)=>e in t?O(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var b=(t,e,i)=>V(t,typeof e!="symbol"?e+"":e,i);import{u as I}from"./useEvent-DO6uJBas.js";import{o as j}from"./cells-BW_4R0Qw.js";import{t as T}from"./compiler-runtime-DeeZ7FnK.js";import{a as k,d as E}from"./hotkeys-BHHWjLlp.js";import{i as N}from"./utils-DXvhzCGS.js";import{A as P,w as _}from"./config-CIrPQIbt.js";import{r as z}from"./requests-BsVD4CdD.js";import{f as D}from"./layout-CrzVHOC1.js";import{s as $,u as B}from"./download-jMLcAPOc.js";import{t as H}from"./Deferred-CrO5-0RA.js";import{t as L}from"./use-toast-rmUWldD_.js";import{t as M}from"./useInterval-Cu9ChZf-.js";var R=class{constructor(){b(this,"capturedInputs",new Map);b(this,"inFlight",new Map)}cancelEntry(t){t.controller.abort(),t.deferred.status==="pending"&&t.deferred.resolve(void 0)}needsCapture(t,e){if(this.capturedInputs.get(t)===e)return!1;let i=this.inFlight.get(t);return!(i&&i.inputValue===e)}waitForInFlight(t,e){let i=this.inFlight.get(t);return i&&i.inputValue===e?i.deferred.promise:null}startCapture(t,e){let i=this.inFlight.get(t);i&&this.cancelEntry(i);let n=new AbortController,l=new H,u={controller:n,inputValue:e,deferred:l};return this.inFlight.set(t,u),{signal:n.signal,markCaptured:p=>{this.inFlight.get(t)===u&&(l.resolve(p),this.capturedInputs.set(t,e),this.inFlight.delete(t))},markFailed:()=>{this.inFlight.get(t)===u&&(l.resolve(void 0),this.inFlight.delete(t))}}}prune(t){for(let e of this.capturedInputs.keys())t.has(e)||this.capturedInputs.delete(e);for(let[e,i]of this.inFlight)t.has(e)||(this.cancelEntry(i),this.inFlight.delete(e))}get isCapturing(){return this.inFlight.size>0}abort(){for(let t of this.inFlight.values())this.cancelEntry(t);this.inFlight.clear()}reset(){this.abort(),this.capturedInputs.clear()}},Y=T(),S=5e3;function q(){let t=(0,Y.c)(14),e=I(N),{state:i}=I(_),n=e.auto_download.includes("markdown"),l=e.auto_download.includes("html"),u=e.auto_download.includes("ipynb"),p=i===P.OPEN,m=!n||!p,d=!l||!p,h=!u||!p,{autoExportAsHTML:a,autoExportAsIPYNB:s,autoExportAsMarkdown:r,updateCellOutputs:o}=z(),c=x(),f;t[0]===r?f=t[1]:(f=async()=>{await r({download:!1})},t[0]=r,t[1]=f);let g;t[2]===m?g=t[3]:(g={delayMs:S,whenVisible:!0,disabled:m},t[2]=m,t[3]=g),M(f,g);let w;t[4]===a?w=t[5]:(w=async()=>{await a({download:!1,includeCode:!0,files:D.INSTANCE.filenames()})},t[4]=a,t[5]=w);let v;t[6]===d?v=t[7]:(v={delayMs:S,whenVisible:!0,disabled:d},t[6]=d,t[7]=v),M(w,v);let F;t[8]!==s||t[9]!==c||t[10]!==o?(F=async()=>{await A({takeScreenshots:()=>c({progress:B.indeterminate()}),updateCellOutputs:o}),await s({download:!1})},t[8]=s,t[9]=c,t[10]=o,t[11]=F):F=t[11];let y;t[12]===h?y=t[13]:(y={delayMs:S,whenVisible:!0,disabled:h,skipIfRunning:!0},t[12]=h,t[13]=y),M(F,y)}var G=new Set(["text/html","application/vnd.vegalite.v5+json","application/vnd.vega.v5+json","application/vnd.vegalite.v6+json","application/vnd.vega.v6+json"]);const C=new R;function x(){let t=I(j);return async e=>{var d,h;let{progress:i}=e,n=new Set(k.keys(t));C.prune(n);let l=[],u=[];for(let[a,s]of k.entries(t)){let r=(d=s.output)==null?void 0:d.data;if((h=s.output)!=null&&h.mimetype&&G.has(s.output.mimetype)&&r)if(C.needsCapture(a,r))l.push([a,r]);else{let o=C.waitForInFlight(a,r);o&&u.push({cellId:a,promise:o})}}if(l.length===0&&u.length===0)return{};l.length>0&&i.addTotal(l.length);let p={};for(let[a,s]of l){let r=C.startCapture(a,s);try{let o=await $(a);if(r.signal.aborted)continue;if(!o){E.error(`Failed to capture screenshot for cell ${a}`),r.markFailed();continue}let c=["image/png",o];p[a]=c,r.markCaptured(c)}catch(o){E.error(`Error screenshotting cell ${a}:`,o),r.markFailed()}finally{i.increment(1)}}let m=await Promise.allSettled(u.map(({promise:a})=>a));for(let[a,{cellId:s}]of u.entries()){let r=m[a];r.status==="fulfilled"&&r.value&&(p[s]=r.value)}return p}}async function A(t){let{takeScreenshots:e,updateCellOutputs:i}=t;try{let n=await e();k.size(n)>0&&await i({cellIdsToOutput:n})}catch(n){E.error("Error updating cell outputs with screenshots:",n),L({title:"Failed to capture cell outputs",description:"Some outputs may not appear in the PDF. Continuing with export.",variant:"danger"})}}export{q as n,x as r,A as t};
@@ -1,2 +1,2 @@
1
1
  import{i as B}from"./useEvent-DO6uJBas.js";import{bn as G,ri as v,y as Q}from"./cells-BW_4R0Qw.js";import{d as $}from"./hotkeys-BHHWjLlp.js";import{t as R}from"./requests-BsVD4CdD.js";function I({moduleName:e,variableName:t,onAddImport:r,appStore:n=B}){if(t in n.get(G))return!1;let{cellData:i,cellIds:o}=n.get(Q),a=RegExp(`import[ ]+${e}[ ]+as[ ]+${t}`,"g");for(let l of o.inOrderIds)if(a.test(i[l].code))return!1;return r(`import ${e} as ${t}`),!0}function X({autoInstantiate:e,createNewCell:t,fromCellId:r,before:n}){let i=R(),o=null;return I({moduleName:"marimo",variableName:"mo",onAddImport:a=>{o=v.create(),t({cellId:r??"__end__",before:n??!1,code:a,lastCodeRun:e?a:void 0,newCellId:o,skipIfCodeExists:!0,autoFocus:!1}),e&&i.sendRun({cellIds:[o],codes:[a]})}})?o:null}function J({autoInstantiate:e,createNewCell:t,fromCellId:r}){let n=R(),i=null;return I({moduleName:"altair",variableName:"alt",onAddImport:o=>{i=v.create(),t({cellId:r??"__end__",before:!1,code:o,lastCodeRun:e?o:void 0,newCellId:i,skipIfCodeExists:!0,autoFocus:!1}),e&&n.sendRun({cellIds:[i],codes:[o]})}})?i:null}function K(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;let r=document.implementation.createHTMLDocument(),n=r.createElement("base"),i=r.createElement("a");return r.head.appendChild(n),r.body.appendChild(i),t&&(n.href=t),i.href=e,i.href}const Y=(()=>{let e=0,t=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(e+=1,`u${t()}${e}`)})();function d(e){let t=[];for(let r=0,n=e.length;r<n;r++)t.push(e[r]);return t}var g=null;function k(e={}){return g||(e.includeStyleProperties?(g=e.includeStyleProperties,g):(g=d(window.getComputedStyle(document.documentElement)),g))}function p(e,t){let r=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(t);return r?parseFloat(r.replace("px","")):0}function Z(e){let t=p(e,"border-left-width"),r=p(e,"border-right-width");return e.clientWidth+t+r}function ee(e){let t=p(e,"border-top-width"),r=p(e,"border-bottom-width");return e.clientHeight+t+r}function P(e,t={}){return{width:t.width||Z(e),height:t.height||ee(e)}}function te(){let e,t;try{t=process}catch{}let r=t&&t.env?t.env.devicePixelRatio:null;return r&&(e=parseInt(r,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}var c=16384;function re(e){(e.width>c||e.height>c)&&(e.width>c&&e.height>c?e.width>e.height?(e.height*=c/e.width,e.width=c):(e.width*=c/e.height,e.height=c):e.width>c?(e.height*=c/e.width,e.width=c):(e.width*=c/e.height,e.height=c))}function w(e){return new Promise((t,r)=>{let n=new Image;n.onload=()=>{n.decode().then(()=>{requestAnimationFrame(()=>t(n))})},n.onerror=r,n.crossOrigin="anonymous",n.decoding="async",n.src=e})}async function ne(e){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(e)).then(encodeURIComponent).then(t=>`data:image/svg+xml;charset=utf-8,${t}`)}async function ie(e,t,r){let n="http://www.w3.org/2000/svg",i=document.createElementNS(n,"svg"),o=document.createElementNS(n,"foreignObject");return i.setAttribute("width",`${t}`),i.setAttribute("height",`${r}`),i.setAttribute("viewBox",`0 0 ${t} ${r}`),o.setAttribute("width","100%"),o.setAttribute("height","100%"),o.setAttribute("x","0"),o.setAttribute("y","0"),o.setAttribute("externalResourcesRequired","true"),i.appendChild(o),o.appendChild(e),ne(i)}const u=(e,t)=>{if(e instanceof t)return!0;let r=Object.getPrototypeOf(e);return r===null?!1:r.constructor.name===t.name||u(r,t)};function oe(e){let t=e.getPropertyValue("content");return`${e.cssText} content: '${t.replace(/'|"/g,"")}';`}function ae(e,t){return k(t).map(r=>`${r}: ${e.getPropertyValue(r)}${e.getPropertyPriority(r)?" !important":""};`).join(" ")}function le(e,t,r,n){let i=`.${e}:${t}`,o=r.cssText?oe(r):ae(r,n);return document.createTextNode(`${i}{${o}}`)}function N(e,t,r,n){let i=window.getComputedStyle(e,r),o=i.getPropertyValue("content");if(o===""||o==="none")return;let a=Y();try{t.className=`${t.className} ${a}`}catch{return}let l=document.createElement("style");l.appendChild(le(a,r,i,n)),t.appendChild(l)}function se(e,t,r){N(e,t,":before",r),N(e,t,":after",r)}var T="application/font-woff",A="image/jpeg",ce={woff:T,woff2:T,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:A,jpeg:A,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function ue(e){let t=/\.([^./]*?)$/g.exec(e);return t?t[1]:""}function x(e){return ce[ue(e).toLowerCase()]||""}function de(e){return e.split(/,/)[1]}function E(e){return e.search(/^(data:)/)!==-1}function L(e,t){return`data:${t};base64,${e}`}async function H(e,t,r){let n=await fetch(e,t);if(n.status===404)throw Error(`Resource "${n.url}" not found`);let i=await n.blob();return new Promise((o,a)=>{let l=new FileReader;l.onerror=a,l.onloadend=()=>{try{o(r({res:n,result:l.result}))}catch(s){a(s)}},l.readAsDataURL(i)})}var S={};function fe(e,t,r){let n=e.replace(/\?.*/,"");return r&&(n=e),/ttf|otf|eot|woff2?/i.test(n)&&(n=n.replace(/.*\//,"")),t?`[${t}]${n}`:n}async function C(e,t,r){let n=fe(e,t,r.includeQueryParams);if(S[n]!=null)return S[n];r.cacheBust&&(e+=(/\?/.test(e)?"&":"?")+new Date().getTime());let i;try{i=L(await H(e,r.fetchRequestInit,({res:o,result:a})=>(t||(t=o.headers.get("Content-Type")||""),de(a))),t)}catch(o){i=r.imagePlaceholder||"";let a=`Failed to fetch resource: ${e}`;o&&(a=typeof o=="string"?o:o.message),a&&console.warn(a)}return S[n]=i,i}async function he(e){let t=e.toDataURL();return t==="data:,"?e.cloneNode(!1):w(t)}async function me(e,t){if(e.currentSrc){let n=document.createElement("canvas"),i=n.getContext("2d");return n.width=e.clientWidth,n.height=e.clientHeight,i==null||i.drawImage(e,0,0,n.width,n.height),w(n.toDataURL())}let r=e.poster;return w(await C(r,x(r),t))}async function ge(e,t){var r;try{if((r=e==null?void 0:e.contentDocument)!=null&&r.body)return await y(e.contentDocument.body,t,!0)}catch{}return e.cloneNode(!1)}async function pe(e,t){return u(e,HTMLCanvasElement)?he(e):u(e,HTMLVideoElement)?me(e,t):u(e,HTMLIFrameElement)?ge(e,t):e.cloneNode(F(e))}var we=e=>e.tagName!=null&&e.tagName.toUpperCase()==="SLOT",F=e=>e.tagName!=null&&e.tagName.toUpperCase()==="SVG";async function ye(e,t,r){if(F(t))return t;let n=[];return n=we(e)&&e.assignedNodes?d(e.assignedNodes()):d((e.shadowRoot??e).childNodes),n.length===0||u(e,HTMLVideoElement)||await n.reduce((i,o)=>i.then(()=>y(o,r)).then(a=>{a&&t.appendChild(a)}),Promise.resolve()),t}function be(e,t,r){let n=t.style;if(!n)return;let i=window.getComputedStyle(e);i.cssText?(n.cssText=i.cssText,n.transformOrigin=i.transformOrigin):k(r).forEach(o=>{let a=i.getPropertyValue(o);o==="font-size"&&a.endsWith("px")&&(a=`${Math.floor(parseFloat(a.substring(0,a.length-2)))-.1}px`),u(e,HTMLIFrameElement)&&o==="display"&&a==="inline"&&(a="block"),o==="d"&&t.getAttribute("d")&&(a=`path(${t.getAttribute("d")})`),n.setProperty(o,a,i.getPropertyPriority(o))})}function xe(e,t){u(e,HTMLTextAreaElement)&&(t.innerHTML=e.value),u(e,HTMLInputElement)&&t.setAttribute("value",e.value)}function Ee(e,t){if(u(e,HTMLSelectElement)){let r=t,n=Array.from(r.children).find(i=>e.value===i.getAttribute("value"));n&&n.setAttribute("selected","")}}function Se(e,t,r){return u(t,Element)&&(be(e,t,r),se(e,t,r),xe(e,t),Ee(e,t)),t}async function Ce(e,t){let r=e.querySelectorAll?e.querySelectorAll("use"):[];if(r.length===0)return e;let n={};for(let o=0;o<r.length;o++){let a=r[o].getAttribute("xlink:href");if(a){let l=e.querySelector(a),s=document.querySelector(a);!l&&s&&!n[a]&&(n[a]=await y(s,t,!0))}}let i=Object.values(n);if(i.length){let o="http://www.w3.org/1999/xhtml",a=document.createElementNS(o,"svg");a.setAttribute("xmlns",o),a.style.position="absolute",a.style.width="0",a.style.height="0",a.style.overflow="hidden",a.style.display="none";let l=document.createElementNS(o,"defs");a.appendChild(l);for(let s=0;s<i.length;s++)l.appendChild(i[s]);e.appendChild(a)}return e}async function y(e,t,r){return!r&&t.filter&&!t.filter(e)?null:Promise.resolve(e).then(n=>pe(n,t)).then(n=>ye(e,n,t)).then(n=>Se(e,n,t)).then(n=>Ce(n,t))}var M=/url\((['"]?)([^'"]+?)\1\)/g,ve=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,$e=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function Re(e){let t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,"g")}function Ie(e){let t=[];return e.replace(M,(r,n,i)=>(t.push(i),r)),t.filter(r=>!E(r))}async function ke(e,t,r,n,i){try{let o=r?K(t,r):t,a=x(t),l;return l=i?L(await i(o),a):await C(o,a,n),e.replace(Re(t),`$1${l}$3`)}catch{}return e}function Pe(e,{preferredFontFormat:t}){return t?e.replace($e,r=>{for(;;){let[n,,i]=ve.exec(r)||[];if(!i)return"";if(i===t)return`src: ${n};`}}):e}function V(e){return e.search(M)!==-1}async function j(e,t,r){if(!V(e))return e;let n=Pe(e,r);return Ie(n).reduce((i,o)=>i.then(a=>ke(a,o,t,r)),Promise.resolve(n))}async function h(e,t,r){var i;let n=(i=t.style)==null?void 0:i.getPropertyValue(e);if(n){let o=await j(n,null,r);return t.style.setProperty(e,o,t.style.getPropertyPriority(e)),!0}return!1}async function Ne(e,t){await h("background",e,t)||await h("background-image",e,t),await h("mask",e,t)||await h("-webkit-mask",e,t)||await h("mask-image",e,t)||await h("-webkit-mask-image",e,t)}async function Te(e,t){let r=u(e,HTMLImageElement);if(!(r&&!E(e.src))&&!(u(e,SVGImageElement)&&!E(e.href.baseVal)))return;let n=r?e.src:e.href.baseVal,i=await C(n,x(n),t);await new Promise((o,a)=>{e.onload=o,e.onerror=t.onImageErrorHandler?(...s)=>{try{o(t.onImageErrorHandler(...s))}catch(f){a(f)}}:a;let l=e;l.decode&&(l.decode=o),l.loading==="lazy"&&(l.loading="eager"),r?(e.srcset="",e.src=i):e.href.baseVal=i})}async function Ae(e,t){let r=d(e.childNodes).map(n=>D(n,t));await Promise.all(r).then(()=>e)}async function D(e,t){u(e,Element)&&(await Ne(e,t),await Te(e,t),await Ae(e,t))}function Le(e,t){let{style:r}=e;t.backgroundColor&&(r.backgroundColor=t.backgroundColor),t.width&&(r.width=`${t.width}px`),t.height&&(r.height=`${t.height}px`);let n=t.style;return n!=null&&Object.keys(n).forEach(i=>{r[i]=n[i]}),e}var O={};async function _(e){let t=O[e];return t??(t={url:e,cssText:await(await fetch(e)).text()},O[e]=t,t)}async function z(e,t){let r=e.cssText,n=/url\(["']?([^"')]+)["']?\)/g,i=(r.match(/url\([^)]+\)/g)||[]).map(async o=>{let a=o.replace(n,"$1");return a.startsWith("https://")||(a=new URL(a,e.url).href),H(a,t.fetchRequestInit,({result:l})=>(r=r.replace(o,`url(${l})`),[o,l]))});return Promise.all(i).then(()=>r)}function U(e){if(e==null)return[];let t=[],r=e.replace(/(\/\*[\s\S]*?\*\/)/gi,""),n=RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){let a=n.exec(r);if(a===null)break;t.push(a[0])}r=r.replace(n,"");let i=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,o=RegExp("((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})","gi");for(;;){let a=i.exec(r);if(a===null){if(a=o.exec(r),a===null)break;i.lastIndex=o.lastIndex}else o.lastIndex=i.lastIndex;t.push(a[0])}return t}async function He(e,t){let r=[],n=[];return e.forEach(i=>{if("cssRules"in i)try{d(i.cssRules||[]).forEach((o,a)=>{if(o.type===CSSRule.IMPORT_RULE){let l=a+1,s=o.href,f=_(s).then(m=>z(m,t)).then(m=>U(m).forEach(b=>{try{i.insertRule(b,b.startsWith("@import")?l+=1:i.cssRules.length)}catch(W){console.error("Error inserting rule from remote css",{rule:b,error:W})}})).catch(m=>{console.error("Error loading remote css",m.toString())});n.push(f)}})}catch(o){let a=e.find(l=>l.href==null)||document.styleSheets[0];i.href!=null&&n.push(_(i.href).then(l=>z(l,t)).then(l=>U(l).forEach(s=>{a.insertRule(s,a.cssRules.length)})).catch(l=>{console.error("Error loading remote stylesheet",l)})),console.error("Error inlining remote css file",o)}}),Promise.all(n).then(()=>(e.forEach(i=>{if("cssRules"in i)try{d(i.cssRules||[]).forEach(o=>{r.push(o)})}catch(o){console.error(`Error while reading CSS rules from ${i.href}`,o)}}),r))}function Fe(e){return e.filter(t=>t.type===CSSRule.FONT_FACE_RULE).filter(t=>V(t.style.getPropertyValue("src")))}async function Me(e,t){if(e.ownerDocument==null)throw Error("Provided element is not within a Document");return Fe(await He(d(e.ownerDocument.styleSheets),t))}function q(e){return e.trim().replace(/["']/g,"")}function Ve(e){let t=new Set;function r(n){(n.style.fontFamily||getComputedStyle(n).fontFamily).split(",").forEach(i=>{t.add(q(i))}),Array.from(n.children).forEach(i=>{i instanceof HTMLElement&&r(i)})}return r(e),t}async function je(e,t){let r=await Me(e,t),n=Ve(e);return(await Promise.all(r.filter(i=>n.has(q(i.style.fontFamily))).map(i=>{let o=i.parentStyleSheet?i.parentStyleSheet.href:null;return j(i.cssText,o,t)}))).join(`
2
- `)}async function De(e,t){let r=t.fontEmbedCSS==null?t.skipFonts?null:await je(e,t):t.fontEmbedCSS;if(r){let n=document.createElement("style"),i=document.createTextNode(r);n.appendChild(i),e.firstChild?e.insertBefore(n,e.firstChild):e.appendChild(n)}}async function Oe(e,t={}){let{width:r,height:n}=P(e,t),i=await y(e,t,!0);return await De(i,t),await D(i,t),Le(i,t),await ie(i,r,n)}async function _e(e,t={}){let{width:r,height:n}=P(e,t),i=await w(await Oe(e,t)),o=document.createElement("canvas"),a=o.getContext("2d"),l=t.pixelRatio||te(),s=t.canvasWidth||r,f=t.canvasHeight||n;return o.width=s*l,o.height=f*l,t.skipAutoScale||re(o),o.style.width=`${s}`,o.style.height=`${f}`,t.backgroundColor&&(a.fillStyle=t.backgroundColor,a.fillRect(0,0,o.width,o.height)),a.drawImage(i,0,0,o.width,o.height),o}async function ze(e,t={}){return(await _e(e,t)).toDataURL()}const Ue={filter:e=>{try{if("classList"in e){let t=e.classList;if(t.contains("mpl-toolbar")||t.contains("print:hidden"))return!1}return!0}catch(t){return $.error("Error filtering node:",t),!0}},onImageErrorHandler:e=>{$.error("Error loading image:",e)},includeStyleProperties:"width.height.min-width.min-height.max-width.max-height.box-sizing.aspect-ratio.display.position.top.left.bottom.right.z-index.float.clear.flex.flex-direction.flex-wrap.flex-grow.flex-shrink.flex-basis.align-items.align-self.justify-content.gap.order.grid-template-columns.grid-template-rows.grid-column.grid-row.row-gap.column-gap.margin.margin-top.margin-right.margin-bottom.margin-left.padding.padding-top.padding-right.padding-bottom.padding-left.font.font-family.font-size.font-weight.font-style.line-height.letter-spacing.word-spacing.text-align.text-decoration.text-transform.text-indent.text-shadow.white-space.text-wrap.word-break.text-overflow.vertical-align.color.background.background-color.background-image.background-size.background-position.background-repeat.background-clip.border.border-width.border-style.border-color.border-top.border-right.border-bottom.border-left.border-radius.outline.box-shadow.text-shadow.opacity.filter.backdrop-filter.mix-blend-mode.transform.clip-path.overflow.overflow-x.overflow-y.visibility.fill.stroke.stroke-width.object-fit.object-position.list-style.list-style-type.border-collapse.border-spacing.content.cursor".split(".")};async function qe(e,t){return ze(e,{...Ue,...t})}export{J as n,X as r,qe as t};
2
+ `)}async function De(e,t){let r=t.fontEmbedCSS==null?t.skipFonts?null:await je(e,t):t.fontEmbedCSS,n=t.extraStyleContent==null?r:t.extraStyleContent.concat(r||"");if(n){let i=document.createElement("style"),o=document.createTextNode(n);i.appendChild(o),e.firstChild?e.insertBefore(i,e.firstChild):e.appendChild(i)}}async function Oe(e,t={}){let{width:r,height:n}=P(e,t),i=await y(e,t,!0);return await De(i,t),await D(i,t),Le(i,t),await ie(i,r,n)}async function _e(e,t={}){let{width:r,height:n}=P(e,t),i=await w(await Oe(e,t)),o=document.createElement("canvas"),a=o.getContext("2d"),l=t.pixelRatio||te(),s=t.canvasWidth||r,f=t.canvasHeight||n;return o.width=s*l,o.height=f*l,t.skipAutoScale||re(o),o.style.width=`${s}`,o.style.height=`${f}`,t.backgroundColor&&(a.fillStyle=t.backgroundColor,a.fillRect(0,0,o.width,o.height)),a.drawImage(i,0,0,o.width,o.height),o}async function ze(e,t={}){return(await _e(e,t)).toDataURL()}const Ue={filter:e=>{try{if("classList"in e){let t=e.classList;if(t.contains("mpl-toolbar")||t.contains("print:hidden"))return!1}return!0}catch(t){return $.error("Error filtering node:",t),!0}},onImageErrorHandler:e=>{$.error("Error loading image:",e)},includeStyleProperties:"width.height.min-width.min-height.max-width.max-height.box-sizing.aspect-ratio.display.position.top.left.bottom.right.z-index.float.clear.flex.flex-direction.flex-wrap.flex-grow.flex-shrink.flex-basis.align-items.align-self.justify-content.gap.order.grid-template-columns.grid-template-rows.grid-column.grid-row.row-gap.column-gap.margin.margin-top.margin-right.margin-bottom.margin-left.padding.padding-top.padding-right.padding-bottom.padding-left.font.font-family.font-size.font-weight.font-style.line-height.letter-spacing.word-spacing.text-align.text-decoration.text-transform.text-indent.text-shadow.white-space.text-wrap.word-break.text-overflow.vertical-align.color.background.background-color.background-image.background-size.background-position.background-repeat.background-clip.border.border-width.border-style.border-color.border-top.border-right.border-bottom.border-left.border-radius.outline.box-shadow.text-shadow.opacity.filter.backdrop-filter.mix-blend-mode.transform.clip-path.overflow.overflow-x.overflow-y.visibility.fill.stroke.stroke-width.object-fit.object-position.list-style.list-style-type.border-collapse.border-spacing.content.cursor".split(".")};async function qe(e,t){return ze(e,{...Ue,...t})}export{J as n,X as r,qe as t};