ant-design-x-vue-next
Version:
Ant Design X for Vue — community continuation aligned with @ant-design/x
2 lines (1 loc) • 5.72 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),k=require("../chunks/module-chunk.js"),X=require("../_util/hooks/use-x-component-config.js"),K=require("../locale/useLocale.js");require("../x-provider/index.js");const L=require("./DirectoryTree.js"),O=require("./FilePreview.js"),U=require("./style/index.js"),c=require("./utils.js"),z=require("../x-provider/hooks/use-x-provider-context.js"),G=a.defineComponent({name:"AXFolder",__name:"Folder",props:{prefixCls:null,rootClassName:null,className:null,class:null,style:null,classNames:{default:()=>({})},styles:{default:()=>({})},directoryIcons:{type:Boolean},treeData:null,selectable:{type:Boolean,default:!0},selectedFile:{default:void 0},defaultSelectedFile:null,onSelectedFileChange:{type:Function},directoryTreeWith:{default:278},emptyRender:{type:Boolean},previewRender:{type:Function},defaultExpandedPaths:null,expandedPaths:{default:void 0},defaultExpandAll:{type:Boolean,default:!0},onExpandedPathsChange:{type:Function},fileContentService:null,onFileClick:{type:Function},onFolderClick:{type:Function},directoryTitle:{type:Boolean},previewTitle:{type:[Boolean,Function]},contextMenu:{type:Function},onRightClick:{type:Function}},emits:["selectedFileChange","update:selectedFile","expandedPathsChange","update:expandedPaths","fileClick","folderClick","rightClick"],setup(D,{expose:E,emit:V}){const e=D,h=a.useSlots(),o=V,[g]=K.default("Folder"),N=a.ref(null),y=t=>!!(t&&t.length>0&&c.findNodeAndValidate(e.treeData||[],t,!0).isValid),i=a.ref(y(e.selectedFile||e.defaultSelectedFile)),d=a.ref(y(e.defaultSelectedFile)?[...e.defaultSelectedFile||[]]:[]),m=a.ref(e.expandedPaths!==void 0?e.expandedPaths:e.defaultExpandedPaths?[...e.defaultExpandedPaths]:void 0);a.watch(()=>e.selectedFile,t=>{t!==void 0&&(d.value=[...t],i.value=y(t))},{deep:!0}),a.watch(()=>[e.treeData,e.defaultSelectedFile],()=>{const t=e.selectedFile??e.defaultSelectedFile;i.value=y(t)},{deep:!0}),a.watch(()=>e.expandedPaths,t=>{t!==void 0&&(m.value=[...t])},{deep:!0});const u=a.ref(""),f=a.ref(!1),{getPrefixCls:R,direction:F}=z.default(),p=a.computed(()=>R("folder",e.prefixCls)),x=X.default("folder"),[q,A,B]=U.default(p),$=a.computed(()=>{var t;return k.classnames(p.value,x.value.className,e.className,e.class,e.rootClassName,(t=e.classNames)==null?void 0:t.root,A.value,B,{[`${p.value}-rtl`]:(F==null?void 0:F.value)==="rtl",[`${p.value}-selectable`]:e.selectable})}),b=a.computed(()=>{var t;return{...x.value.style,...(t=e.styles)==null?void 0:t.root,...e.style}}),M=a.computed(()=>{const t=e.directoryTreeWith??278;return typeof t=="number"?`${t}px`:t});a.watch(()=>[i.value,d.value,e.treeData,e.fileContentService],async()=>{if(!i.value||d.value.length===0){u.value="",f.value=!1;return}const t=d.value.join("/"),{node:l}=c.findNodeAndValidate(e.treeData||[],d.value);if(e.fileContentService){f.value=!0;try{u.value=await e.fileContentService.loadFileContent(t)}catch(n){u.value=`// ${g.value.loadError}: ${n instanceof Error?n.message:"Unknown error"}`}finally{f.value=!1}}else l!=null&&l.content?(u.value=l.content,f.value=!1):(u.value=`// ${g.value.noService}`,f.value=!1)},{immediate:!0,deep:!0});const I=(t,l)=>{var w,_,P,T;const n=Array.isArray(l.selectedNodes)?l.selectedNodes:l.selectedNodes?[l.selectedNodes]:l.node?[l.node]:[];if(n.some(s=>!s.isLeaf)){if(n.length===1){const s=n[0];(w=e.onFolderClick)==null||w.call(e,s.path),o("folderClick",s.path)}return}const r=((_=t[0])==null?void 0:_.split("/").filter(Boolean))||[];if(r.length===0)return;const v=n[0],S={path:r,title:v==null?void 0:v.title,content:v==null?void 0:v.content};if((P=e.onSelectedFileChange)==null||P.call(e,S),o("selectedFileChange",S),o("update:selectedFile",r),e.selectedFile===void 0&&(i.value=!0,d.value=r),n.length===1){const s=n[0];(T=e.onFileClick)==null||T.call(e,s.path,s.content),o("fileClick",s.path,s.content)}},j=t=>{var l;e.expandedPaths===void 0&&(m.value=t),(l=e.onExpandedPathsChange)==null||l.call(e,t),o("expandedPathsChange",t),o("update:expandedPaths",t)},W=t=>{var l;(l=e.onRightClick)==null||l.call(e,t),o("rightClick",t)};return E({get nativeElement(){return N.value},getNode:t=>c.getNodeByPath(e.treeData,t),updateNode:(t,l)=>e.treeData?c.walkTree(e.treeData,t,0,"update",l):[],deleteNode:t=>e.treeData?c.walkTree(e.treeData,t,0,"delete").filter(Boolean):[],addNode:(t,l)=>e.treeData?c.walkTree(e.treeData,t,0,"add",l):[]}),()=>{var t,l,n;return q(a.createVNode("div",{ref:N,class:$.value,style:b.value},[a.createVNode("div",{class:`${p.value}-container`},[a.createVNode("div",{class:k.classnames(`${p.value}-directory-tree`,(t=e.classNames)==null?void 0:t.directoryTree),style:{width:M.value,...(l=x.value.styles)==null?void 0:l.directoryTree,...(n=e.styles)==null?void 0:n.directoryTree}},[a.createVNode(L.default,{directoryIcons:e.directoryIcons,prefixCls:e.prefixCls,treeData:e.treeData,selectedKeys:e.selectable&&d.value&&i.value?[d.value.join("/")]:[],classNames:e.classNames,styles:e.styles,expandedKeys:m.value,onSelect:I,onExpand:j,defaultExpandAll:e.defaultExpandAll,directoryTitle:h.directoryTitle?()=>h.directoryTitle():e.directoryTitle,contextMenu:e.contextMenu,onRightClick:W},null)]),a.createVNode(O.default,{emptyRender:e.emptyRender,prefixCls:e.prefixCls,classNames:e.classNames,styles:e.styles,selectedFile:i.value?d.value:[],fileContent:u.value,loading:f.value,previewTitle:e.previewTitle,previewRender:e.previewRender,getFileNode:C=>{if(!C||C.length===0)return;const{node:r}=c.findNodeAndValidate(e.treeData||[],C);return r?{title:r.title,path:r.path,content:r.content}:void 0}},{empty:h.empty,previewTitle:h.previewTitle,preview:h.preview})])]))}}});exports.default=G;