@heliux-org/design-system-core 0.0.403-tree-updates → 0.0.405-Tree-updates-final
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/Tree.js +1 -1
- package/dist/Tree.js.map +1 -1
- package/dist/components/Tree/Tree.js +4 -7
- package/dist/components/Tree/Tree.js.map +1 -1
- package/dist/components/Tree/components/TreeFile/TreeFile.js +4 -3
- package/dist/components/Tree/components/TreeFile/TreeFile.js.map +1 -1
- package/dist/components/Tree/components/TreeFolder/TreeFolder.js +4 -3
- package/dist/components/Tree/components/TreeFolder/TreeFolder.js.map +1 -1
- package/dist/esm/components/Tree/Tree.d.ts +1 -0
- package/dist/esm/components/Tree/Tree.d.ts.map +1 -1
- package/dist/esm/components/Tree/components/TreeFile/TreeFile.d.ts +1 -0
- package/dist/esm/components/Tree/components/TreeFile/TreeFile.d.ts.map +1 -1
- package/dist/esm/components/Tree/components/TreeFolder/TreeFolder.d.ts +1 -0
- package/dist/esm/components/Tree/components/TreeFolder/TreeFolder.d.ts.map +1 -1
- package/dist/esm/src/components/Tree/Tree.js +1 -1
- package/dist/esm/src/components/Tree/Tree.js.map +1 -1
- package/dist/esm/src/components/Tree/components/TreeFile/TreeFile.js +1 -1
- package/dist/esm/src/components/Tree/components/TreeFile/TreeFile.js.map +1 -1
- package/dist/esm/src/components/Tree/components/TreeFolder/TreeFolder.js +1 -1
- package/dist/esm/src/components/Tree/components/TreeFolder/TreeFolder.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/mocked_classnames_esm/components/Tree/Tree.d.ts +1 -0
- package/dist/mocked_classnames_esm/components/Tree/Tree.d.ts.map +1 -1
- package/dist/mocked_classnames_esm/components/Tree/components/TreeFile/TreeFile.d.ts +1 -0
- package/dist/mocked_classnames_esm/components/Tree/components/TreeFile/TreeFile.d.ts.map +1 -1
- package/dist/mocked_classnames_esm/components/Tree/components/TreeFolder/TreeFolder.d.ts +1 -0
- package/dist/mocked_classnames_esm/components/Tree/components/TreeFolder/TreeFolder.d.ts.map +1 -1
- package/dist/mocked_classnames_esm/src/components/Tree/Tree.js +1 -1
- package/dist/mocked_classnames_esm/src/components/Tree/Tree.js.map +1 -1
- package/dist/mocked_classnames_esm/src/components/Tree/components/TreeFile/TreeFile.js +1 -1
- package/dist/mocked_classnames_esm/src/components/Tree/components/TreeFile/TreeFile.js.map +1 -1
- package/dist/mocked_classnames_esm/src/components/Tree/components/TreeFolder/TreeFolder.js +1 -1
- package/dist/mocked_classnames_esm/src/components/Tree/components/TreeFolder/TreeFolder.js.map +1 -1
- package/dist/types/components/Tree/Tree.d.ts +1 -0
- package/dist/types/components/Tree/Tree.d.ts.map +1 -1
- package/dist/types/components/Tree/components/TreeFile/TreeFile.d.ts +1 -0
- package/dist/types/components/Tree/components/TreeFile/TreeFile.d.ts.map +1 -1
- package/dist/types/components/Tree/components/TreeFolder/TreeFolder.d.ts +1 -0
- package/dist/types/components/Tree/components/TreeFolder/TreeFolder.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/Tree/Tree.tsx +6 -6
- package/src/components/Tree/__stories__/Tree.stories.tsx +40 -20
- package/src/components/Tree/components/TreeFile/TreeFile.tsx +5 -2
- package/src/components/Tree/components/TreeFolder/TreeFolder.tsx +5 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../../../../src/components/Tree/Tree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,QAAA,MAAM,iBAAiB,uBAA6B,CAAC;AAGrD,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,GAAG,IAAI,EAAE,WAAW,EAAE,QAAQ,KAAK,IAAI,CAAC;CACvH;AAQD,KAAK,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;AAE5C,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,
|
1
|
+
{"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../../../../src/components/Tree/Tree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,QAAA,MAAM,iBAAiB,uBAA6B,CAAC;AAGrD,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,GAAG,IAAI,EAAE,WAAW,EAAE,QAAQ,KAAK,IAAI,CAAC;CACvH;AAQD,KAAK,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;AAE5C,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CA8PtD,CAAC;AAKF,eAAe,IAAI,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TreeFile.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Tree/components/TreeFile/TreeFile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,iBAAiB,CAAC;AAMzB,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACnE;AAQD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
1
|
+
{"version":3,"file":"TreeFile.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Tree/components/TreeFile/TreeFile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,iBAAiB,CAAC;AAMzB,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACnE;AAQD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAoF7B,CAAC;AAGF,eAAe,QAAQ,CAAC"}
|
package/dist/mocked_classnames_esm/components/Tree/components/TreeFolder/TreeFolder.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TreeFolder.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Tree/components/TreeFolder/TreeFolder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,mBAAmB,CAAC;AAY3B,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACnE;AAQD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,
|
1
|
+
{"version":3,"file":"TreeFolder.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Tree/components/TreeFolder/TreeFolder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,mBAAmB,CAAC;AAY3B,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACnE;AAQD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAoHxD,CAAC;AAKF,eAAe,UAAU,CAAC"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{slicedToArray as e,
|
1
|
+
import{slicedToArray as e,toConsumableArray as n,createForOfIteratorHelper as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as r}from"../../../_virtual/_tslib.js";import{jsx as a}from"@emotion/react/jsx-runtime";import{useState as i,useEffect as o,useMemo as l}from"react";import c from"./components/TreeFolder/TreeFolder.js";import f from"./components/TreeFile/TreeFile.js";import{TreeContext as s}from"./TreeContext.js";import{sortChildren as d}from"./utils/treeHelp.js";import{DndProvider as u}from"react-dnd";import{HTML5Backend as p}from"react-dnd-html5-backend";var v=function(){for(var e=arguments.length,n=Array(e),t=0;e>t;t++)n[t]=arguments[t];return n}("directory","file")[0],m=function(m){var h=m.children,y=m.onClick,g=m.initialExpand,j=void 0!==g&&g,b=m.alwaysExpanded,x=void 0!==b&&b,O=m.parentIconPath,T=void 0===O?"default":O,P=m.childIconPath,E=void 0===P?"default":P,I=m.value,C=m.className,F=m.enableSorting,k=void 0!==F&&F,N=m.readOnly,w=void 0!==N&&N,M=m.onMove,_=r(m,["children","onClick","initialExpand","alwaysExpanded","parentIconPath","childIconPath","value","className","enableSorting","readOnly","onMove"]),A=i(I),B=e(A,2),H=B[0],S=B[1];o((function(){I&&S(I)}),[I]);var q=function e(n,r){var a,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=t(n);try{for(o.s();!(a=o.n()).done;){var l=a.value,c=i?"".concat(i,"/").concat(l.name):l.name;if(l.name===r)return c;if(l.type===v&&l.files){var f=e(l.files,r,c);if(f)return f}}}catch(e){o.e(e)}finally{o.f()}return null},z=function(e,n){if(!H)return!1;var t,r,a,i=q(H,e.split("/").pop()||"")||e,o=q(H,n.split("/").pop()||"")||n;return t=o,r=i.split("/").filter(Boolean),(a=t.split("/").filter(Boolean)).length>r.length&&r.every((function(e,n){return e===a[n]}))},D=function e(t,r){for(var a=0;t.length>a;a++){var i=t[a],o=r.split("/").pop()||"";if(i.name===o)return{node:i,updatedTree:[].concat(n(t.slice(0,a)),n(t.slice(a+1)))};if(i.type===v&&i.files){var l=e(i.files,r),c=l.node;if(c)return t[a].files=l.updatedTree,{node:c,updatedTree:t}}}return{updatedTree:t}},G=function e(t,r,a){var i=r.split("/"),o=i.pop()||"",l=i.join("/");return t.map((function(t){var i=l?"".concat(l,"/").concat(t.name):t.name;if(t.type===v){if(i===l)return Object.assign(Object.assign({},t),{files:[].concat(n(t.files||[]),[a])});if(t.name===o)return Object.assign(Object.assign({},t),{files:[].concat(n(t.files||[]),[a])});if(t.files)return Object.assign(Object.assign({},t),{files:e(t.files,r,a)})}return t}))},J=function(e,n){var r,a=n.split("/"),i=e,o=null,l=t(a);try{var c,f=function(){var e=r.value;if(!(o=i.find((function(n){return n.name===e}))||null))return{v:null};o.files&&(i=o.files)};for(l.s();!(r=l.n()).done;)if(c=f())return c.v}catch(e){l.e(e)}finally{l.f()}return o},K=function e(n,r){var a,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=t(n);try{for(o.s();!(a=o.n()).done;){var l=a.value,c=i?"".concat(i,"/").concat(l.name):l.name;if(l.name===r)return c;if(l.type===v&&l.files){var f=e(l.files,r,c);if(f)return f}}}catch(e){o.e(e)}finally{o.f()}return r},L=!(!I||0>=I.length),Q=function(e,n){y&&H&&y(e,n)},R=l((function(){return{onFileClick:Q,initialExpand:x||j,isImperative:L,alwaysExpanded:x,parentIconPath:T,childIconPath:E}}),[j,Q,L,x,T,E]),U=L?function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"";return n&&n.length?(r?n.sort((function(e,n){return e.type!==n.type?e.type!==v?1:-1:e.name.localeCompare(n.name)})):n).map((function(n,l){var s=o?"".concat(o,"/").concat(n.name):n.name;return n.type===v?a(c,Object.assign({id:n.id,name:n.name,extra:n.extra,onMove:w?void 0:t,parentPath:o,level:i,active:(null==n?void 0:n.active)||!1},{children:e(n.files||[],t,r,i+1,s)}),"folder-".concat(n.id)):a(f,{id:n.id,name:n.name,extra:n.extra,onMove:w?void 0:t,parentPath:o,level:i,active:(null==n?void 0:n.active)||!1},"file-".concat(n.name,"-").concat(l))})):null}(H||[],(function(e,n){if(H&&!w){var t=e.split("/").pop()||"",r=n.split("/").pop()||"",a=K(H,t),i=K(H,r);if(!z(a,i)){var o=D(H,e),l=o.node,c=o.updatedTree;if(l){var f=J(H,n),s=n;if(f&&f.type!==v){var d=n.split("/");d.pop(),s=d.join("/")}var u=G(c,s,l);S(u);var p=J(u,s);M(a,i,p||null,l)}}}}),k):d(h,c);return a(u,Object.assign({backend:p},{children:a(s.Provider,Object.assign({value:R},{children:a("div",Object.assign({className:C},_,{children:U}))}))}))};m.defaultProps={initialExpand:!1,alwaysExpanded:!1,className:""},m.displayName="Tree";export{m as default};
|
2
2
|
//# sourceMappingURL=Tree.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Tree.js","sources":["../../../../../src/components/Tree/Tree.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport TreeFolder from \"./components/TreeFolder/TreeFolder\";\nimport TreeFile from \"./components/TreeFile/TreeFile\";\nimport { TreeContext } from \"./TreeContext\";\nimport { makeChildPath, sortChildren } from \"./utils/treeHelp\";\nimport { PathName } from \"../Icon/SvgIcon/paths\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from 'react-dnd-html5-backend';\n\nconst tuple = <T extends string[]>(...args: T) => args;\n\nconst FileTreeValueType = tuple(\"directory\", \"file\");\nconst directoryType = FileTreeValueType[0];\n\nexport type TreeFile = {\n type: (typeof FileTreeValueType)[number];\n name: string;\n extra?: string;\n files?: Array<TreeFile>;\n active?: boolean;\n};\n\ninterface Props {\n value?: Array<TreeFile>;\n initialExpand?: boolean;\n alwaysExpanded?: boolean;\n parentIconPath?: PathName;\n childIconPath?: PathName;\n onClick?: (path: string, node: TreeFile) => void;\n className?: string;\n enableSorting?: boolean;\n readOnly?: boolean\n onMove: (draggedItemPath: string, dropTargetPath: string, parentNode: TreeFile | null, draggedNode: TreeFile) => void;\n}\n\nconst defaultProps = {\n initialExpand: false,\n alwaysExpanded: false,\n className: \"\",\n};\n\ntype NativeAttrs = Omit<React.HTMLAttributes<any>, keyof Props>;\nexport type TreeProps = Props & NativeAttrs;\n\nconst Tree: React.FC<React.PropsWithChildren<TreeProps>> = ({\n children,\n onClick,\n initialExpand = false,\n alwaysExpanded = false,\n parentIconPath = \"default\",\n childIconPath = \"default\",\n value,\n className,\n enableSorting = false,\n readOnly = false,\n onMove,\n ...props\n}: React.PropsWithChildren<TreeProps>) => {\n const [treeData, setTreeData] = useState(value);\n\n useEffect(() => {\n if (value) {\n setTreeData(value);\n }\n }, [value]);\n\n const findFullPath = (nodes: TreeFile[], targetName: string, currentPath: string = \"\"): string | null => {\n for (const node of nodes) {\n const nodePath = currentPath ? `${currentPath}/${node.name}` : node.name;\n if (node.name === targetName) {\n return nodePath;\n }\n if (node.type === directoryType && node.files) {\n const foundPath = findFullPath(node.files, targetName, nodePath);\n if (foundPath) return foundPath;\n }\n }\n return null;\n };\n\n const isParentPath = (parentPath: string, childPath: string): boolean => {\n const parentParts = parentPath.split('/').filter(Boolean);\n const childParts = childPath.split('/').filter(Boolean);\n\n if (parentParts.length >= childParts.length) return false;\n\n return parentParts.every((part, index) => part === childParts[index]);\n };\n\n const isChildOfSource = (sourcePath: string, targetPath: string): boolean => {\n if (!treeData) return false;\n\n const fullSourcePath = findFullPath(treeData, sourcePath.split('/').pop() || \"\") || sourcePath;\n const fullTargetPath = findFullPath(treeData, targetPath.split('/').pop() || \"\") || targetPath;\n\n return isParentPath(fullSourcePath, fullTargetPath);\n };\n\n const findAndRemoveNode = (nodes: TreeFile[], path: string): { node?: TreeFile; updatedTree: TreeFile[] } => {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const nodeName = path.split('/').pop() || \"\";\n\n if (node.name === nodeName) {\n return { node, updatedTree: [...nodes.slice(0, i), ...nodes.slice(i + 1)] };\n } else if (node.type === directoryType && node.files) {\n const { node: foundNode, updatedTree: updatedFiles } = findAndRemoveNode(node.files, path);\n if (foundNode) {\n nodes[i].files = updatedFiles;\n return { node: foundNode, updatedTree: nodes };\n }\n }\n }\n return { updatedTree: nodes };\n };\n\n const addNodeToTarget = (nodes: TreeFile[], targetPath: string, node: TreeFile): TreeFile[] => {\n const pathParts = targetPath.split('/');\n const targetName = pathParts.pop() || \"\";\n const parentPath = pathParts.join('/');\n \n return nodes.map((item) => {\n const itemPath = parentPath ? `${parentPath}/${item.name}` : item.name;\n \n if (item.type === directoryType) {\n if (itemPath === parentPath) {\n return {\n ...item,\n files: [...(item.files || []), node]\n };\n }\n\n if (item.name === targetName) {\n return {\n ...item,\n files: [...(item.files || []), node]\n };\n }\n\n if (item.files) {\n return {\n ...item,\n files: addNodeToTarget(item.files, targetPath, node)\n };\n }\n }\n return item;\n });\n };\n\n const findNodeByPath = (nodes: TreeFile[], path: string): TreeFile | null => {\n const pathParts = path.split('/');\n let currentNodes = nodes;\n let currentNode: TreeFile | null = null;\n\n for (const part of pathParts) {\n currentNode = currentNodes.find(node => node.name === part) || null;\n if (!currentNode) return null;\n if (currentNode.files) {\n currentNodes = currentNode.files;\n }\n }\n\n return currentNode;\n };\n\n const buildFullPath = (nodes: TreeFile[], targetName: string, currentPath: string = \"\"): string => {\n for (const node of nodes) {\n const nodePath = currentPath ? `${currentPath}/${node.name}` : node.name;\n \n if (node.name === targetName) {\n return nodePath;\n }\n \n if (node.type === directoryType && node.files) {\n const foundPath = buildFullPath(node.files, targetName, nodePath);\n if (foundPath) return foundPath;\n }\n }\n return targetName;\n };\n\n const handleMove = (draggedPath: string, targetPath: string) => {\n if (!treeData) return;\n if (readOnly) return;\n \n const draggedName = draggedPath.split('/').pop() || \"\";\n const targetName = targetPath.split('/').pop() || \"\";\n \n const fullSourcePath = buildFullPath(treeData, draggedName);\n const fullTargetPath = buildFullPath(treeData, targetName);\n \n if (isChildOfSource(fullSourcePath, fullTargetPath)) {\n return;\n }\n \n const { node: draggedNode, updatedTree } = findAndRemoveNode(treeData, draggedPath);\n \n if (draggedNode) {\n const targetNode = findNodeByPath(treeData, targetPath);\n\n let finalTargetPath = targetPath;\n\n if (targetNode && targetNode.type !== directoryType) {\n const pathParts = targetPath.split('/');\n pathParts.pop();\n finalTargetPath = pathParts.join('/');\n }\n\n const newTreeData = addNodeToTarget(updatedTree, finalTargetPath, draggedNode);\n setTreeData(newTreeData);\n const newParentNode = findNodeByPath(newTreeData, finalTargetPath);\n onMove(fullSourcePath, fullTargetPath, newParentNode || null, draggedNode);\n }\n };\n\n const isImperative = Boolean(value && value.length > 0);\n const onFileClick = (path: string) => {\n if (onClick && treeData) {\n const node = findNodeByPath(treeData, path);\n if (node) {\n onClick(path, node);\n }\n }\n };\n\n const initialValue = useMemo(\n () => ({\n onFileClick,\n initialExpand: alwaysExpanded || initialExpand,\n isImperative,\n alwaysExpanded,\n parentIconPath,\n childIconPath,\n }),\n [initialExpand, onFileClick, isImperative, alwaysExpanded, parentIconPath, childIconPath]\n );\n\n const makeChildren = (\n value: Array<TreeFile> = [],\n onMove: (draggedPath: string, targetPath: string) => void,\n enableSorting: boolean,\n level: number = 0,\n parentPath: string = \"\",\n ) => {\n if (!value || !value.length) return null;\n \n const sortedValue = enableSorting\n ? value.sort((a, b) => {\n if (a.type !== b.type) return a.type !== directoryType ? 1 : -1;\n return a.name.localeCompare(b.name);\n })\n : value;\n \n return sortedValue.map((item, index) => {\n const currentPath = parentPath ? `${parentPath}/${item.name}` : item.name;\n \n if (item.type === directoryType) {\n return (\n <TreeFolder\n name={item.name}\n extra={item.extra}\n key={`folder-${item.name}-${index}`}\n onMove={readOnly ? undefined : onMove}\n parentPath={parentPath}\n level={level}\n active={item?.active || false}\n >\n {makeChildren(item.files || [], onMove, enableSorting, level + 1, currentPath)}\n </TreeFolder>\n );\n }\n return (\n <TreeFile\n name={item.name}\n extra={item.extra}\n key={`file-${item.name}-${index}`}\n onMove={readOnly ? undefined : onMove}\n parentPath={parentPath}\n level={level}\n active={item?.active || false}\n />\n );\n });\n };\n \n const customChildren = isImperative\n ? makeChildren(treeData || [], handleMove, enableSorting)\n : sortChildren(children, TreeFolder);\n\n return (\n <DndProvider backend={HTML5Backend}>\n <TreeContext.Provider value={initialValue}>\n <div className={className} {...props}>\n {customChildren}\n </div>\n </TreeContext.Provider>\n </DndProvider>\n );\n};\n\nTree.defaultProps = defaultProps;\nTree.displayName = \"Tree\";\n\nexport default Tree;\n"],"names":["directoryType","_len","arguments","length","args","Array","_key","tuple","Tree","_a","children","onClick","_a$initialExpand","initialExpand","_a$alwaysExpanded","alwaysExpanded","_a$parentIconPath","parentIconPath","_a$childIconPath","childIconPath","value","className","_a$enableSorting","enableSorting","_a$readOnly","readOnly","onMove","props","__rest","_useState","useState","_useState2","_slicedToArray","treeData","setTreeData","useEffect","findFullPath","nodes","targetName","_step","currentPath","undefined","_iterator","_createForOfIteratorHelper","s","n","done","node","nodePath","concat","name","type","files","foundPath","err","e","f","isChildOfSource","sourcePath","targetPath","childPath","parentParts","childParts","fullSourcePath","split","pop","fullTargetPath","filter","Boolean","every","part","index","findAndRemoveNode","path","i","nodeName","updatedTree","_toConsumableArray","slice","_findAndRemoveNode","foundNode","addNodeToTarget","pathParts","parentPath","join","map","item","itemPath","Object","assign","findNodeByPath","_step2","currentNodes","currentNode","_iterator2","_ret","_loop","find","v","buildFullPath","_step3","_iterator3","isImperative","onFileClick","initialValue","useMemo","customChildren","makeChildren","level","sort","a","b","localeCompare","_jsx","TreeFolder","extra","active","TreeFile","draggedPath","draggedName","_findAndRemoveNode2","draggedNode","targetNode","finalTargetPath","newTreeData","newParentNode","sortChildren","DndProvider","backend","HTML5Backend","TreeContext","Provider","defaultProps","displayName"],"mappings":"+kBASA,IAGMA,EAHQ,WAAH,IAAA,IAAAC,EAAAC,UAAAC,OAA2BC,EAAOC,MAAAJ,GAAAK,EAAA,EAAAL,EAAAK,EAAAA,IAAPF,EAAOE,GAAAJ,UAAAI,GAAA,OAAKF,CAAI,CAE5BG,CAAM,YAAa,QACL,GAgClCC,EAAqD,SAACC,GAAA,IAC1DC,EAUMD,EAVNC,SACAC,EASMF,EATNE,QAAOC,EASDH,EARNI,cAAAA,OAAgB,IAAHD,GAAQA,EAAAE,EAQfL,EAPNM,eAAAA,OAAiB,IAAHD,GAAQA,EAAAE,EAOhBP,EANNQ,eAAAA,OAAiB,IAAHD,EAAG,UAASA,EAAAE,EAMpBT,EALNU,cAAAA,OAAgB,IAAHD,EAAG,UAASA,EACzBE,EAIMX,EAJNW,MACAC,EAGMZ,EAHNY,UAASC,EAGHb,EAFNc,cAAAA,OAAgB,IAAHD,GAAQA,EAAAE,EAEff,EADNgB,SAAAA,OAAW,IAAHD,GAAQA,EAChBE,EAAMjB,EAANiB,OACGC,EAAKC,EAAAnB,EAZkD,kJAc1DoB,EAAgCC,EAASV,GAAMW,EAAAC,EAAAH,EAAA,GAAxCI,EAAQF,EAAA,GAAEG,EAAWH,EAAA,GAE5BI,GAAU,WACJf,GACFc,EAAYd,EAEhB,GAAG,CAACA,IAEJ,IAAMgB,EAAe,SAAfA,EAAgBC,EAAmBC,GAA+D,IAC9EC,EADmCC,EAAAtC,UAAAC,OAAA,QAAAsC,IAAAvC,UAAA,GAAAA,UAAA,GAAsB,GAAEwC,EAAAC,EAChEN,GAAK,IAAxB,IAAAK,EAAAE,MAAAL,EAAAG,EAAAG,KAAAC,MAA0B,CAAA,IAAfC,EAAIR,EAAAnB,MACP4B,EAAWR,EAAWS,GAAAA,OAAMT,EAAW,KAAAS,OAAIF,EAAKG,MAASH,EAAKG,KACpE,GAAIH,EAAKG,OAASZ,EAChB,OAAOU,EAET,GAAID,EAAKI,OAASnD,GAAiB+C,EAAKK,MAAO,CAC7C,IAAMC,EAAYjB,EAAaW,EAAKK,MAAOd,EAAYU,GACvD,GAAIK,EAAW,OAAOA,CACvB,CACF,CAAA,CAAA,MAAAC,GAAAZ,EAAAa,EAAAD,EAAA,CAAA,QAAAZ,EAAAc,GAAA,CACD,OAAO,MAYHC,EAAkB,SAACC,EAAoBC,GAC3C,IAAK1B,EAAU,OAAO,EAEtB,IAZwC2B,EAClCC,EACAC,EAUAC,EAAiB3B,EAAaH,EAAUyB,EAAWM,MAAM,KAAKC,OAAS,KAAOP,EAC9EQ,EAAiB9B,EAAaH,EAAU0B,EAAWK,MAAM,KAAKC,OAAS,KAAON,EAEpF,OAfwCC,EAeJM,EAd9BL,EAccE,EAdWC,MAAM,KAAKG,OAAOC,UAC3CN,EAAaF,EAAUI,MAAM,KAAKG,OAAOC,UAEVjE,OAAjC0D,EAAY1D,QAET0D,EAAYQ,OAAM,SAACC,EAAMC,GAAK,OAAKD,IAASR,EAAWS,OAY1DC,EAAoB,SAApBA,EAAqBnC,EAAmBoC,GAC5C,IAAK,IAAIC,EAAI,EAAOrC,EAAMlC,OAAVuE,EAAkBA,IAAK,CACrC,IAAM3B,EAAOV,EAAMqC,GACbC,EAAWF,EAAKT,MAAM,KAAKC,OAAS,GAE1C,GAAIlB,EAAKG,OAASyB,EAChB,MAAO,CAAE5B,KAAAA,EAAM6B,YAAW,GAAA3B,OAAA4B,EAAMxC,EAAMyC,MAAM,EAAGJ,IAAEG,EAAKxC,EAAMyC,MAAMJ,EAAI,MACjE,GAAI3B,EAAKI,OAASnD,GAAiB+C,EAAKK,MAAO,CACpD,IAAA2B,EAAuDP,EAAkBzB,EAAKK,MAAOqB,GAAvEO,EAASD,EAAfhC,KACR,GAAIiC,EAEF,OADA3C,EAAMqC,GAAGtB,MAFuC2B,EAAzBH,YAGhB,CAAE7B,KAAMiC,EAAWJ,YAAavC,EAE1C,CACF,CACD,MAAO,CAAEuC,YAAavC,IAGlB4C,EAAkB,SAAlBA,EAAmB5C,EAAmBsB,EAAoBZ,GAC9D,IAAMmC,EAAYvB,EAAWK,MAAM,KAC7B1B,EAAa4C,EAAUjB,OAAS,GAChCkB,EAAaD,EAAUE,KAAK,KAElC,OAAO/C,EAAMgD,KAAI,SAACC,GAChB,IAAMC,EAAWJ,EAAUlC,GAAAA,OAAMkC,EAAU,KAAAlC,OAAIqC,EAAKpC,MAASoC,EAAKpC,KAElE,GAAIoC,EAAKnC,OAASnD,EAAe,CAC/B,GAAIuF,IAAaJ,EACf,OAAAK,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACKH,GACH,CAAAlC,MAAK,GAAAH,OAAA4B,EAAOS,EAAKlC,OAAS,IAAE,CAAGL,MAInC,GAAIuC,EAAKpC,OAASZ,EAChB,OAAAkD,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACKH,GACH,CAAAlC,MAAK,GAAAH,OAAA4B,EAAOS,EAAKlC,OAAS,IAAE,CAAGL,MAInC,GAAIuC,EAAKlC,MACP,OAAAoC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACKH,GAAI,CACPlC,MAAO6B,EAAgBK,EAAKlC,MAAOO,EAAYZ,IAGpD,CACD,OAAOuC,CACT,KAGII,EAAiB,SAACrD,EAAmBoC,GACzC,IAI4BkB,EAJtBT,EAAYT,EAAKT,MAAM,KACzB4B,EAAevD,EACfwD,EAA+B,KAAKC,EAAAnD,EAErBuC,GAAS,IAAA,IAM3Ba,EAN2BC,EAAAA,WAAE,IAAnB1B,EAAIqB,EAAAvE,MAEb,KADAyE,EAAcD,EAAaK,MAAK,SAAAlD,GAAI,OAAIA,EAAKG,OAASoB,CAAI,KAAK,MAC/C,MAAA,CAAA4B,EAAS,MACrBL,EAAYzC,QACdwC,EAAeC,EAAYzC,MAE9B,EAND,IAAA0C,EAAAlD,MAAA+C,EAAAG,EAAAjD,KAAAC,MAAA,GAAAiD,EAAAC,IAAA,OAAAD,EAAAG,CAMC,CAAA,MAAA5C,GAAAwC,EAAAvC,EAAAD,EAAA,CAAA,QAAAwC,EAAAtC,GAAA,CAED,OAAOqC,GAGHM,EAAgB,SAAhBA,EAAiB9D,EAAmBC,GAAwD,IACxE8D,EADoC5D,EAAAtC,UAAAC,OAAA,QAAAsC,IAAAvC,UAAA,GAAAA,UAAA,GAAsB,GAAEmG,EAAA1D,EACjEN,GAAK,IAAxB,IAAAgE,EAAAzD,MAAAwD,EAAAC,EAAAxD,KAAAC,MAA0B,CAAA,IAAfC,EAAIqD,EAAAhF,MACP4B,EAAWR,EAAWS,GAAAA,OAAMT,EAAW,KAAAS,OAAIF,EAAKG,MAASH,EAAKG,KAEpE,GAAIH,EAAKG,OAASZ,EAChB,OAAOU,EAGT,GAAID,EAAKI,OAASnD,GAAiB+C,EAAKK,MAAO,CAC7C,IAAMC,EAAY8C,EAAcpD,EAAKK,MAAOd,EAAYU,GACxD,GAAIK,EAAW,OAAOA,CACvB,CACF,CAAA,CAAA,MAAAC,GAAA+C,EAAA9C,EAAAD,EAAA,CAAA,QAAA+C,EAAA7C,GAAA,CACD,OAAOlB,GAqCHgE,KAAuBlF,GAAwB,GAAfA,EAAMjB,QACtCoG,EAAc,SAAC9B,GACnB,GAAI9D,GAAWsB,EAAU,CACvB,IAAMc,EAAO2C,EAAezD,EAAUwC,GAClC1B,GACFpC,EAAQ8D,EAAM1B,EAEjB,GAGGyD,EAAeC,GACnB,WAAA,MAAO,CACLF,YAAAA,EACA1F,cAAeE,GAAkBF,EACjCyF,aAAAA,EACAvF,eAAAA,EACAE,eAAAA,EACAE,cAAAA,EACD,GACD,CAACN,EAAe0F,EAAaD,EAAcvF,EAAgBE,EAAgBE,IAmDvEuF,EAAiBJ,EAhDF,SAAfK,IAMF,IALFvF,EAAyBlB,UAAAC,OAAA,QAAAsC,IAAAvC,UAAA,GAAAA,UAAA,GAAA,GACzBwB,EAAyDxB,UAAAC,OAAAD,EAAAA,kBAAAuC,EACzDlB,EAAsBrB,UAAAC,OAAAD,EAAAA,kBAAAuC,EACtBmE,yDAAgB,EAChBzB,EAAqBjF,UAAAC,OAAA,QAAAsC,IAAAvC,UAAA,GAAAA,UAAA,GAAA,GAErB,OAAKkB,GAAUA,EAAMjB,QAEDoB,EAChBH,EAAMyF,MAAK,SAACC,EAAGC,GACb,OAAID,EAAE3D,OAAS4D,EAAE5D,KAAa2D,EAAE3D,OAASnD,EAAgB,GAAK,EACvD8G,EAAE5D,KAAK8D,cAAcD,EAAE7D,KAC/B,IACD9B,GAEeiE,KAAI,SAACC,EAAMf,GAC5B,IAAM/B,EAAc2C,EAAUlC,GAAAA,OAAMkC,EAAU,KAAAlC,OAAIqC,EAAKpC,MAASoC,EAAKpC,KAErE,OAAIoC,EAAKnC,OAASnD,EAEdiH,EAACC,EACC1B,OAAAC,OAAA,CAAAvC,KAAMoC,EAAKpC,KACXiE,MAAO7B,EAAK6B,MAEZzF,OAAQD,OAAWgB,EAAYf,EAC/ByD,WAAYA,EACZyB,MAAOA,EACPQ,QAAQ9B,aAAI,EAAJA,EAAM8B,UAAU,GAEvB,CAAA1G,SAAAiG,EAAarB,EAAKlC,OAAS,GAAI1B,EAAQH,EAAeqF,EAAQ,EAAGpE,KAAY,UAAAS,OAN/DqC,EAAKpC,KAAI,KAAAD,OAAIsB,IAWhC0C,EAACI,EACC,CAAAnE,KAAMoC,EAAKpC,KACXiE,MAAO7B,EAAK6B,MAEZzF,OAAQD,OAAWgB,EAAYf,EAC/ByD,WAAYA,EACZyB,MAAOA,EACPQ,QAAQ9B,aAAA,EAAAA,EAAM8B,UAAU,GAJnB,QAAAnE,OAAQqC,EAAKpC,KAAI,KAAAD,OAAIsB,GAOhC,IAtCoC,KA0ClCoC,CAAa1E,GAAY,IAzGV,SAACqF,EAAqB3D,GACvC,GAAK1B,IACDR,EAAJ,CAEA,IAAM8F,EAAcD,EAAYtD,MAAM,KAAKC,OAAS,GAC9C3B,EAAaqB,EAAWK,MAAM,KAAKC,OAAS,GAE5CF,EAAiBoC,EAAclE,EAAUsF,GACzCrD,EAAiBiC,EAAclE,EAAUK,GAE/C,IAAImB,EAAgBM,EAAgBG,GAApC,CAIA,IAAAsD,EAA2ChD,EAAkBvC,EAAUqF,GAAzDG,EAAWD,EAAjBzE,KAAmB6B,EAAW4C,EAAX5C,YAE3B,GAAI6C,EAAa,CACf,IAAMC,EAAahC,EAAezD,EAAU0B,GAExCgE,EAAkBhE,EAEtB,GAAI+D,GAAcA,EAAWvE,OAASnD,EAAe,CACnD,IAAMkF,EAAYvB,EAAWK,MAAM,KACnCkB,EAAUjB,MACV0D,EAAkBzC,EAAUE,KAAK,IAClC,CAED,IAAMwC,EAAc3C,EAAgBL,EAAa+C,EAAiBF,GAClEvF,EAAY0F,GACZ,IAAMC,EAAgBnC,EAAekC,EAAaD,GAClDjG,EAAOqC,EAAgBG,EAAgB2D,GAAiB,KAAMJ,EAC/D,CAnBA,CAVa,IAuG6BlG,GACzCuG,EAAapH,EAAUwG,GAE3B,OACED,EAACc,EAAWvC,OAAAC,OAAA,CAACuC,QAASC,GAAY,CAAAvH,SAChCuG,EAACiB,EAAYC,SAAS3C,OAAAC,OAAA,CAAArE,MAAOoF,GAC3B,CAAA9F,SAAAuG,EAAA,MAAAzB,OAAAC,OAAA,CAAKpE,UAAWA,GAAeM,EAAK,CAAAjB,SACjCgG,UAKX,EAEAlG,EAAK4H,aA1QgB,CACnBvH,eAAe,EACfE,gBAAgB,EAChBM,UAAW,IAwQbb,EAAK6H,YAAc"}
|
1
|
+
{"version":3,"file":"Tree.js","sources":["../../../../../src/components/Tree/Tree.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport TreeFolder from \"./components/TreeFolder/TreeFolder\";\nimport TreeFile from \"./components/TreeFile/TreeFile\";\nimport { TreeContext } from \"./TreeContext\";\nimport { makeChildPath, sortChildren } from \"./utils/treeHelp\";\nimport { PathName } from \"../Icon/SvgIcon/paths\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from 'react-dnd-html5-backend';\n\nconst tuple = <T extends string[]>(...args: T) => args;\n\nconst FileTreeValueType = tuple(\"directory\", \"file\");\nconst directoryType = FileTreeValueType[0];\n\nexport type TreeFile = {\n id: number | string;\n type: (typeof FileTreeValueType)[number];\n name: string;\n extra?: string;\n files?: Array<TreeFile>;\n active?: boolean;\n};\n\ninterface Props {\n value?: Array<TreeFile>;\n initialExpand?: boolean;\n alwaysExpanded?: boolean;\n parentIconPath?: PathName;\n childIconPath?: PathName;\n onClick?: (path: string, node: TreeFile) => void;\n className?: string;\n enableSorting?: boolean;\n readOnly?: boolean\n onMove: (draggedItemPath: string, dropTargetPath: string, parentNode: TreeFile | null, draggedNode: TreeFile) => void;\n}\n\nconst defaultProps = {\n initialExpand: false,\n alwaysExpanded: false,\n className: \"\",\n};\n\ntype NativeAttrs = Omit<React.HTMLAttributes<any>, keyof Props>;\nexport type TreeProps = Props & NativeAttrs;\n\nconst Tree: React.FC<React.PropsWithChildren<TreeProps>> = ({\n children,\n onClick,\n initialExpand = false,\n alwaysExpanded = false,\n parentIconPath = \"default\",\n childIconPath = \"default\",\n value,\n className,\n enableSorting = false,\n readOnly = false,\n onMove,\n ...props\n}: React.PropsWithChildren<TreeProps>) => {\n const [treeData, setTreeData] = useState(value);\n\n useEffect(() => {\n if (value) {\n setTreeData(value);\n }\n }, [value]);\n\n const findFullPath = (nodes: TreeFile[], targetName: string, currentPath: string = \"\"): string | null => {\n for (const node of nodes) {\n const nodePath = currentPath ? `${currentPath}/${node.name}` : node.name;\n if (node.name === targetName) {\n return nodePath;\n }\n if (node.type === directoryType && node.files) {\n const foundPath = findFullPath(node.files, targetName, nodePath);\n if (foundPath) return foundPath;\n }\n }\n return null;\n };\n\n const isParentPath = (parentPath: string, childPath: string): boolean => {\n const parentParts = parentPath.split('/').filter(Boolean);\n const childParts = childPath.split('/').filter(Boolean);\n\n if (parentParts.length >= childParts.length) return false;\n\n return parentParts.every((part, index) => part === childParts[index]);\n };\n\n const isChildOfSource = (sourcePath: string, targetPath: string): boolean => {\n if (!treeData) return false;\n\n const fullSourcePath = findFullPath(treeData, sourcePath.split('/').pop() || \"\") || sourcePath;\n const fullTargetPath = findFullPath(treeData, targetPath.split('/').pop() || \"\") || targetPath;\n\n return isParentPath(fullSourcePath, fullTargetPath);\n };\n\n const findAndRemoveNode = (nodes: TreeFile[], path: string): { node?: TreeFile; updatedTree: TreeFile[] } => {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const nodeName = path.split('/').pop() || \"\";\n\n if (node.name === nodeName) {\n return { node, updatedTree: [...nodes.slice(0, i), ...nodes.slice(i + 1)] };\n } else if (node.type === directoryType && node.files) {\n const { node: foundNode, updatedTree: updatedFiles } = findAndRemoveNode(node.files, path);\n if (foundNode) {\n nodes[i].files = updatedFiles;\n return { node: foundNode, updatedTree: nodes };\n }\n }\n }\n return { updatedTree: nodes };\n };\n\n const addNodeToTarget = (nodes: TreeFile[], targetPath: string, node: TreeFile): TreeFile[] => {\n const pathParts = targetPath.split('/');\n const targetName = pathParts.pop() || \"\";\n const parentPath = pathParts.join('/');\n \n return nodes.map((item) => {\n const itemPath = parentPath ? `${parentPath}/${item.name}` : item.name;\n \n if (item.type === directoryType) {\n if (itemPath === parentPath) {\n return {\n ...item,\n files: [...(item.files || []), node]\n };\n }\n\n if (item.name === targetName) {\n return {\n ...item,\n files: [...(item.files || []), node]\n };\n }\n\n if (item.files) {\n return {\n ...item,\n files: addNodeToTarget(item.files, targetPath, node)\n };\n }\n }\n return item;\n });\n };\n\n const findNodeByPath = (nodes: TreeFile[], path: string): TreeFile | null => {\n const pathParts = path.split('/');\n let currentNodes = nodes;\n let currentNode: TreeFile | null = null;\n\n for (const part of pathParts) {\n currentNode = currentNodes.find(node => node.name === part) || null;\n if (!currentNode) return null;\n if (currentNode.files) {\n currentNodes = currentNode.files;\n }\n }\n\n return currentNode;\n };\n\n const buildFullPath = (nodes: TreeFile[], targetName: string, currentPath: string = \"\"): string => {\n for (const node of nodes) {\n const nodePath = currentPath ? `${currentPath}/${node.name}` : node.name;\n \n if (node.name === targetName) {\n return nodePath;\n }\n \n if (node.type === directoryType && node.files) {\n const foundPath = buildFullPath(node.files, targetName, nodePath);\n if (foundPath) return foundPath;\n }\n }\n return targetName;\n };\n\n const handleMove = (draggedPath: string, targetPath: string) => {\n if (!treeData) return;\n if (readOnly) return;\n \n const draggedName = draggedPath.split('/').pop() || \"\";\n const targetName = targetPath.split('/').pop() || \"\";\n \n const fullSourcePath = buildFullPath(treeData, draggedName);\n const fullTargetPath = buildFullPath(treeData, targetName);\n \n if (isChildOfSource(fullSourcePath, fullTargetPath)) {\n return;\n }\n \n const { node: draggedNode, updatedTree } = findAndRemoveNode(treeData, draggedPath);\n \n if (draggedNode) {\n const targetNode = findNodeByPath(treeData, targetPath);\n\n let finalTargetPath = targetPath;\n\n if (targetNode && targetNode.type !== directoryType) {\n const pathParts = targetPath.split('/');\n pathParts.pop();\n finalTargetPath = pathParts.join('/');\n }\n\n const newTreeData = addNodeToTarget(updatedTree, finalTargetPath, draggedNode);\n setTreeData(newTreeData);\n const newParentNode = findNodeByPath(newTreeData, finalTargetPath);\n onMove(fullSourcePath, fullTargetPath, newParentNode || null, draggedNode);\n }\n };\n\n const isImperative = Boolean(value && value.length > 0);\n const onFileClick = (path: string, node: TreeFile) => {\n if (onClick && treeData) {\n onClick(path, node);\n }\n };\n\n const initialValue = useMemo(\n () => ({\n onFileClick,\n initialExpand: alwaysExpanded || initialExpand,\n isImperative,\n alwaysExpanded,\n parentIconPath,\n childIconPath,\n }),\n [initialExpand, onFileClick, isImperative, alwaysExpanded, parentIconPath, childIconPath]\n );\n\n const makeChildren = (\n value: Array<TreeFile> = [],\n onMove: (draggedPath: string, targetPath: string) => void,\n enableSorting: boolean,\n level: number = 0,\n parentPath: string = \"\",\n ) => {\n if (!value || !value.length) return null;\n \n const sortedValue = enableSorting\n ? value.sort((a, b) => {\n if (a.type !== b.type) return a.type !== directoryType ? 1 : -1;\n return a.name.localeCompare(b.name);\n })\n : value;\n \n return sortedValue.map((item, index) => {\n const currentPath = parentPath ? `${parentPath}/${item.name}` : item.name;\n \n if (item.type === directoryType) {\n return (\n <TreeFolder\n id={item.id}\n name={item.name}\n extra={item.extra}\n key={`folder-${item.id}`}\n onMove={readOnly ? undefined : onMove}\n parentPath={parentPath}\n level={level}\n active={item?.active || false}\n >\n {makeChildren(item.files || [], onMove, enableSorting, level + 1, currentPath)}\n </TreeFolder>\n );\n }\n return (\n <TreeFile\n id={item.id}\n name={item.name}\n extra={item.extra}\n key={`file-${item.name}-${index}`}\n onMove={readOnly ? undefined : onMove}\n parentPath={parentPath}\n level={level}\n active={item?.active || false}\n />\n );\n });\n };\n \n const customChildren = isImperative\n ? makeChildren(treeData || [], handleMove, enableSorting)\n : sortChildren(children, TreeFolder);\n\n return (\n <DndProvider backend={HTML5Backend}>\n <TreeContext.Provider value={initialValue}>\n <div className={className} {...props}>\n {customChildren}\n </div>\n </TreeContext.Provider>\n </DndProvider>\n );\n};\n\nTree.defaultProps = defaultProps;\nTree.displayName = \"Tree\";\n\nexport default Tree;\n"],"names":["directoryType","_len","arguments","length","args","Array","_key","tuple","Tree","_a","children","onClick","_a$initialExpand","initialExpand","_a$alwaysExpanded","alwaysExpanded","_a$parentIconPath","parentIconPath","_a$childIconPath","childIconPath","value","className","_a$enableSorting","enableSorting","_a$readOnly","readOnly","onMove","props","__rest","_useState","useState","_useState2","_slicedToArray","treeData","setTreeData","useEffect","findFullPath","nodes","targetName","_step","currentPath","undefined","_iterator","_createForOfIteratorHelper","s","n","done","node","nodePath","concat","name","type","files","foundPath","err","e","f","isChildOfSource","sourcePath","targetPath","childPath","parentParts","childParts","fullSourcePath","split","pop","fullTargetPath","filter","Boolean","every","part","index","findAndRemoveNode","path","i","nodeName","updatedTree","_toConsumableArray","slice","_findAndRemoveNode","foundNode","addNodeToTarget","pathParts","parentPath","join","map","item","itemPath","Object","assign","findNodeByPath","_step2","currentNodes","currentNode","_iterator2","_ret","_loop","find","v","buildFullPath","_step3","_iterator3","isImperative","onFileClick","initialValue","useMemo","customChildren","makeChildren","level","sort","a","b","localeCompare","_jsx","TreeFolder","id","extra","active","TreeFile","draggedPath","draggedName","_findAndRemoveNode2","draggedNode","targetNode","finalTargetPath","newTreeData","newParentNode","sortChildren","DndProvider","backend","HTML5Backend","TreeContext","Provider","defaultProps","displayName"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{slicedToArray as e}from"../../../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as a}from"../../../../../_virtual/_tslib.js";import{jsx as t,jsxs as i}from"@emotion/react/jsx-runtime";import{useMemo as n}from"react";import"./TreeFile.scss.js";import{useTreeContext as r}from"../../TreeContext.js";import{makeChildPath as c,stopPropagation as o}from"../../utils/treeHelp.js";import s from"../../../Icon/Icon.js";import{useDrag as l,useDrop as m}from"react-dnd";var p=function(p){var f=p.name,g=p.parentPath,u=p.level,
|
1
|
+
import{slicedToArray as e}from"../../../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as a}from"../../../../../_virtual/_tslib.js";import{jsx as t,jsxs as i}from"@emotion/react/jsx-runtime";import{useMemo as n}from"react";import"./TreeFile.scss.js";import{useTreeContext as r}from"../../TreeContext.js";import{makeChildPath as c,stopPropagation as o}from"../../utils/treeHelp.js";import s from"../../../Icon/Icon.js";import{useDrag as l,useDrop as m}from"react-dnd";var p=function(p){var d=p.id,f=p.name,g=p.parentPath,u=p.level,v=p.extra,h=p.className,j=p.onMove,T=p.active,x=void 0!==T&&T,y=a(p,["id","name","parentPath","level","extra","className","onMove","active"]),b=r(),N=b.onFileClick,P=b.childIconPath,E=n((function(){return c(f,g)}),[f,g]),_=l({type:"TREE_ITEM",item:{type:"file",path:E},collect:function(e){return{isDragging:e.isDragging()}}}),C=e(_,2),I=C[0].isDragging,O=C[1],M=m({accept:"TREE_ITEM",drop:function(e){e.path!==E&&j&&j(e.path,E)}}),k=e(M,2)[1],D={paddingLeft:"calc(1.875rem * ".concat(u+1,")")};return t("div",Object.assign({ref:function(e){return O(k(e))},className:"file-container ".concat(h," ").concat(I?"dragging":""," ").concat(x?"active":""),style:D,onClick:function(e){o(e),N&&N(E,{type:"file",id:d,name:f,extra:v,active:x})}},y,{children:i("div",Object.assign({className:"names"},{children:["default"!==P&&t("span",Object.assign({className:"icon"},{children:t(s,{iconType:s.type.PATH,icon:"",iconPath:P,iconSize:16,useCurrentColor:!0,style:{display:"block",marginRight:"8px",marginTop:"0px"}})})),i("span",Object.assign({className:"name"},{children:[f,v&&t("span",Object.assign({className:"extra"},{children:v}))]}))]}))}))};p.defaultProps={level:0,className:"",parentPath:""};export{p as default};
|
2
2
|
//# sourceMappingURL=TreeFile.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TreeFile.js","sources":["../../../../../../../src/components/Tree/components/TreeFile/TreeFile.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport \"./TreeFile.scss\";\nimport { useTreeContext } from \"../../TreeContext\";\nimport { makeChildPath, stopPropagation } from \"../../utils/treeHelp\";\nimport Icon from \"../../../Icon/Icon\";\nimport { useDrag, useDrop } from \"react-dnd\";\n\ninterface Props {\n name: string;\n extra?: string;\n parentPath?: string;\n level?: number;\n className?: string;\n active?: boolean;\n onMove: (draggedItemPath: string, dropTargetPath: string) => void;\n}\n\nconst defaultProps = {\n level: 0,\n className: \"\",\n parentPath: \"\",\n};\n\nconst TreeFile: React.FC<Props> = ({\n name,\n parentPath,\n level,\n extra,\n className,\n onMove,\n active = false,\n ...props\n}) => {\n const { onFileClick, childIconPath } = useTreeContext();\n const currentPath = useMemo(() => makeChildPath(name, parentPath), [\n name,\n parentPath,\n ]);\n\n const [{ isDragging }, dragRef] = useDrag({\n type: \"TREE_ITEM\",\n item: { type: \"file\", path: currentPath },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const [, dropRef] = useDrop({\n accept: \"TREE_ITEM\",\n drop: (draggedItem: { path: string }) => {\n if (draggedItem.path !== currentPath && onMove) {\n onMove(draggedItem.path, currentPath);\n }\n },\n });\n\n const clickHandler = (event: React.MouseEvent) => {\n stopPropagation(event);\n if (onFileClick) {\n onFileClick(currentPath, {\n type: \"file\",\n name,\n extra,\n active
|
1
|
+
{"version":3,"file":"TreeFile.js","sources":["../../../../../../../src/components/Tree/components/TreeFile/TreeFile.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport \"./TreeFile.scss\";\nimport { useTreeContext } from \"../../TreeContext\";\nimport { makeChildPath, stopPropagation } from \"../../utils/treeHelp\";\nimport Icon from \"../../../Icon/Icon\";\nimport { useDrag, useDrop } from \"react-dnd\";\n\ninterface Props {\n id: number | string;\n name: string;\n extra?: string;\n parentPath?: string;\n level?: number;\n className?: string;\n active?: boolean;\n onMove: (draggedItemPath: string, dropTargetPath: string) => void;\n}\n\nconst defaultProps = {\n level: 0,\n className: \"\",\n parentPath: \"\",\n};\n\nconst TreeFile: React.FC<Props> = ({\n id,\n name,\n parentPath,\n level,\n extra,\n className,\n onMove,\n active = false,\n ...props\n}) => {\n const { onFileClick, childIconPath } = useTreeContext();\n const currentPath = useMemo(() => makeChildPath(name, parentPath), [\n name,\n parentPath,\n ]);\n\n const [{ isDragging }, dragRef] = useDrag({\n type: \"TREE_ITEM\",\n item: { type: \"file\", path: currentPath },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const [, dropRef] = useDrop({\n accept: \"TREE_ITEM\",\n drop: (draggedItem: { path: string }) => {\n if (draggedItem.path !== currentPath && onMove) {\n onMove(draggedItem.path, currentPath);\n }\n },\n });\n\n const clickHandler = (event: React.MouseEvent) => {\n stopPropagation(event);\n if (onFileClick) {\n onFileClick(currentPath, {\n type: \"file\",\n id,\n name,\n extra,\n active,\n });\n }\n };\n\n const containerStyle = {\n paddingLeft: `calc(1.875rem * ${level + 1})`,\n };\n\n return (\n <div\n ref={(node) => dragRef(dropRef(node))}\n className={`file-container ${className} ${isDragging ? \"dragging\" : \"\"} ${active ? \"active\" : \"\"}`}\n style={containerStyle}\n onClick={clickHandler}\n {...props}\n >\n <div className=\"names\">\n {childIconPath !== \"default\" && (\n <span className=\"icon\">\n <Icon\n iconType={Icon.type.PATH}\n icon=\"\"\n //@ts-ignore\n iconPath={childIconPath}\n iconSize={16}\n useCurrentColor\n style={{\n display: \"block\",\n marginRight: \"8px\",\n marginTop: \"0px\",\n }}\n />\n </span>\n )}\n <span className=\"name\">\n {name}\n {extra && <span className=\"extra\">{extra}</span>}\n </span>\n </div>\n </div>\n );\n};\n\nTreeFile.defaultProps = defaultProps;\nexport default TreeFile;"],"names":["TreeFile","_a","id","name","parentPath","level","extra","className","onMove","_a$active","active","props","__rest","_useTreeContext","useTreeContext","onFileClick","childIconPath","currentPath","useMemo","makeChildPath","_useDrag","useDrag","type","item","path","collect","monitor","isDragging","_useDrag2","_slicedToArray","dragRef","_useDrop","useDrop","accept","drop","draggedItem","dropRef","containerStyle","paddingLeft","concat","_jsx","Object","assign","ref","node","style","onClick","event","stopPropagation","_jsxs","children","Icon","iconType","PATH","icon","iconPath","iconSize","useCurrentColor","display","marginRight","marginTop","defaultProps"],"mappings":"+dAkBA,IAMMA,EAA4B,SAACC,OACjCC,IAAAA,GACAC,IAAAA,KACAC,IAAAA,WACAC,IAAAA,MACAC,IAAAA,MACAC,IAAAA,UACAC,IAAAA,OAAMC,IACNC,OAAAA,OAAS,IAAHD,GAAQA,EACXE,EAT8BC,EAAAX,EAAA,CAAA,KAAA,OAAA,aAAA,QAAA,QAAA,YAAA,SAAA,WAWjCY,EAAuCC,IAA/BC,EAAWF,EAAXE,YAAaC,EAAaH,EAAbG,cACfC,EAAcC,GAAQ,WAAA,OAAMC,EAAchB,EAAMC,EAAW,GAAE,CACjED,EACAC,IAGFgB,EAAkCC,EAAQ,CACxCC,KAAM,YACNC,KAAM,CAAED,KAAM,OAAQE,KAAMP,GAC5BQ,QAAS,SAACC,GAAO,MAAM,CACrBC,WAAYD,EAAQC,aACrB,IACDC,EAAAC,EAAAT,EAAA,GANOO,EAAUC,EAAA,GAAVD,WAAcG,EAAOF,EAAA,GAQ9BG,EAAoBC,EAAQ,CAC1BC,OAAQ,YACRC,KAAM,SAACC,GACDA,EAAYX,OAASP,GAAeT,GACtCA,EAAO2B,EAAYX,KAAMP,EAE7B,IANOmB,EAOPP,EAAAE,EAAA,GAPc,GAsBVM,EAAiB,CACrBC,YAAWC,mBAAAA,OAAqBlC,EAAQ,EAAC,MAG3C,OACEmC,EACE,MAAAC,OAAAC,OAAA,CAAAC,IAAK,SAACC,GAAI,OAAKd,EAAQM,EAAQQ,GAAM,EACrCrC,UAAS,kBAAAgC,OAAoBhC,OAASgC,OAAIZ,EAAa,WAAa,GAAE,KAAAY,OAAI7B,EAAS,SAAW,IAC9FmC,MAAOR,EACPS,QAtBiB,SAACC,GACpBC,EAAgBD,GACZhC,GACFA,EAAYE,EAAa,CACvBK,KAAM,OACNpB,GAAAA,EACAC,KAAAA,EACAG,MAAAA,EACAI,OAAAA,MAeEC,YAEJsC,EAAK,MAAAR,OAAAC,OAAA,CAAAnC,UAAU,SAAO,CAAA2C,SAAA,CACD,YAAlBlC,GACCwB,wBAAMjC,UAAU,QACd,CAAA2C,SAAAV,EAACW,EACC,CAAAC,SAAUD,EAAK7B,KAAK+B,KACpBC,KAAK,GAELC,SAAUvC,EACVwC,SAAU,GACVC,iBACA,EAAAZ,MAAO,CACLa,QAAS,QACTC,YAAa,MACbC,UAAW,YAKnBX,EAAA,OAAAR,OAAAC,OAAA,CAAMnC,UAAU,QACb,CAAA2C,SAAA,CAAA/C,EACAG,GAASkC,EAAM,OAAAC,OAAAC,OAAA,CAAAnC,UAAU,SAAS,CAAA2C,SAAA5C,eAK7C,EAEAN,EAAS6D,aA5FY,CACnBxD,MAAO,EACPE,UAAW,GACXH,WAAY"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{slicedToArray as e}from"../../../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as a}from"../../../../../_virtual/_tslib.js";import{jsxs as t,jsx as r}from"@emotion/react/jsx-runtime";import n,{useState as i,useEffect as c,useMemo as s}from"react";import{useDrag as o,useDrop as l}from"react-dnd";import"./TreeFolder.scss.js";import{useTreeContext as p}from"../../TreeContext.js";import{makeChildPath as
|
1
|
+
import{slicedToArray as e}from"../../../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as a}from"../../../../../_virtual/_tslib.js";import{jsxs as t,jsx as r}from"@emotion/react/jsx-runtime";import n,{useState as i,useEffect as c,useMemo as s}from"react";import{useDrag as o,useDrop as l}from"react-dnd";import"./TreeFolder.scss.js";import{useTreeContext as p}from"../../TreeContext.js";import{makeChildPath as d,stopPropagation as m}from"../../utils/treeHelp.js";import u from"../TreeStatusIcon/TreeStatusIcon.js";import f from"../expand/expand.js";import g from"../../../Icon/Icon.js";var v=function(v){var h=v.id,j=v.name,x=v.children,y=v.parentPath,T=v.level,b=v.extra,N=v.className,O=v.active,E=void 0!==O&&O,P=v.onMove,C=a(v,["id","name","children","parentPath","level","extra","className","active","onMove"]),I=p(),_=I.onFileClick,k=I.initialExpand,M=I.alwaysExpanded,A=I.parentIconPath,D=i(M||k),F=e(D,2),H=F[0],R=F[1];c((function(){R(!!M||k)}),[k,M]);var S=s((function(){return d(j,y)}),[j,y]),w=o({type:"TREE_ITEM",item:{type:"folder",path:S},collect:function(e){return{isDragging:e.isDragging()}}}),z=e(w,2),B=z[0].isDragging,L=z[1],q=l({accept:"TREE_ITEM",drop:function(e){e.path!==S&&P&&P(e.path,S)},collect:function(e){return{isOver:e.isOver()}}}),G=e(q,2),J=G[0].isOver,K=G[1],Q={paddingLeft:"calc(1.875rem * ".concat(T+1,")")};return t("div",Object.assign({className:"folder-container ".concat(N," ").concat(B?"dragging":"")},C,{children:[t("div",Object.assign({ref:function(e){return L(K(e))},className:"names ".concat(E&&"active"," ").concat(J?"drop-target":""),"data-level":T,style:Q,onClick:function(){M||R(!H),_&&_(S,{type:"directory",id:h,name:j,extra:b,files:n.Children.toArray(x),active:E})}},{children:[r("span",Object.assign({className:"status"},{children:r(u,{active:H})})),"default"!==A&&r("span",Object.assign({className:"icon"},{children:r(g,{iconType:g.type.PATH,icon:"",iconPath:A,iconSize:16,useCurrentColor:!0,style:{display:"block",marginRight:"8px",marginTop:"0px"}})})),t("span",Object.assign({className:"name"},{children:[j,b&&r("span",Object.assign({className:"extra"},{children:b}))]}))]})),r(f,Object.assign({isExpanded:H},{children:r("div",Object.assign({className:"content",onClick:m},{children:x}))}))]}))};v.defaultProps={level:0,className:"",parentPath:""},v.displayName="TreeFolder";export{v as default};
|
2
2
|
//# sourceMappingURL=TreeFolder.js.map
|
package/dist/mocked_classnames_esm/src/components/Tree/components/TreeFolder/TreeFolder.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TreeFolder.js","sources":["../../../../../../../src/components/Tree/components/TreeFolder/TreeFolder.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { useDrag, useDrop } from \"react-dnd\";\nimport \"./TreeFolder.scss\";\nimport { useTreeContext } from \"../../TreeContext\";\nimport {\n makeChildPath,\n sortChildren,\n stopPropagation,\n} from \"../../utils/treeHelp\";\nimport TreeFile from \"../TreeFile/TreeFile\";\nimport TreeStatusIcon from \"../TreeStatusIcon/TreeStatusIcon\";\nimport Expand from \"../expand/expand\";\nimport Icon from \"../../../Icon/Icon\";\n\ninterface Props {\n name: string;\n extra?: string;\n parentPath?: string;\n level?: number;\n className?: string;\n active?: boolean;\n onMove: (draggedItemPath: string, dropTargetPath: string) => void;\n}\n\nconst defaultProps = {\n level: 0,\n className: \"\",\n parentPath: \"\",\n};\n\nconst TreeFolder: React.FC<React.PropsWithChildren<Props>> = ({\n name,\n children,\n parentPath,\n level: parentLevel,\n extra,\n className,\n active = false,\n onMove,\n ...props\n}) => {\n const { onFileClick, initialExpand, isImperative, alwaysExpanded, parentIconPath } =\n useTreeContext();\n const [expanded, setExpanded] = useState<boolean>(\n alwaysExpanded || initialExpand\n );\n\n useEffect(() => {\n if (alwaysExpanded) {\n setExpanded(true);\n } else {\n setExpanded(initialExpand);\n }\n }, [initialExpand, alwaysExpanded]);\n\n const currentPath = useMemo(\n () => makeChildPath(name, parentPath),\n [name, parentPath]\n );\n\n const [{ isDragging }, dragRef] = useDrag({\n type: \"TREE_ITEM\",\n item: { type: \"folder\", path: currentPath },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const [{ isOver }, dropRef] = useDrop({\n accept: \"TREE_ITEM\",\n drop: (draggedItem: { path: string }) => {\n if (draggedItem.path !== currentPath && onMove) {\n onMove(draggedItem.path, currentPath);\n }\n },\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n }),\n });\n\n const clickHandler = () => {\n if (!alwaysExpanded) {\n setExpanded(!expanded);\n }\n if (onFileClick) {\n onFileClick(currentPath, {\n type: \"directory\",\n name,\n extra,\n //@ts-ignore\n files: React.Children.toArray(children),\n active
|
1
|
+
{"version":3,"file":"TreeFolder.js","sources":["../../../../../../../src/components/Tree/components/TreeFolder/TreeFolder.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { useDrag, useDrop } from \"react-dnd\";\nimport \"./TreeFolder.scss\";\nimport { useTreeContext } from \"../../TreeContext\";\nimport {\n makeChildPath,\n sortChildren,\n stopPropagation,\n} from \"../../utils/treeHelp\";\nimport TreeFile from \"../TreeFile/TreeFile\";\nimport TreeStatusIcon from \"../TreeStatusIcon/TreeStatusIcon\";\nimport Expand from \"../expand/expand\";\nimport Icon from \"../../../Icon/Icon\";\n\ninterface Props {\n id: number | string;\n name: string;\n extra?: string;\n parentPath?: string;\n level?: number;\n className?: string;\n active?: boolean;\n onMove: (draggedItemPath: string, dropTargetPath: string) => void;\n}\n\nconst defaultProps = {\n level: 0,\n className: \"\",\n parentPath: \"\",\n};\n\nconst TreeFolder: React.FC<React.PropsWithChildren<Props>> = ({\n id,\n name,\n children,\n parentPath,\n level: parentLevel,\n extra,\n className,\n active = false,\n onMove,\n ...props\n}) => {\n const { onFileClick, initialExpand, isImperative, alwaysExpanded, parentIconPath } =\n useTreeContext();\n const [expanded, setExpanded] = useState<boolean>(\n alwaysExpanded || initialExpand\n );\n\n useEffect(() => {\n if (alwaysExpanded) {\n setExpanded(true);\n } else {\n setExpanded(initialExpand);\n }\n }, [initialExpand, alwaysExpanded]);\n\n const currentPath = useMemo(\n () => makeChildPath(name, parentPath),\n [name, parentPath]\n );\n\n const [{ isDragging }, dragRef] = useDrag({\n type: \"TREE_ITEM\",\n item: { type: \"folder\", path: currentPath },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const [{ isOver }, dropRef] = useDrop({\n accept: \"TREE_ITEM\",\n drop: (draggedItem: { path: string }) => {\n if (draggedItem.path !== currentPath && onMove) {\n onMove(draggedItem.path, currentPath);\n }\n },\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n }),\n });\n\n const clickHandler = () => {\n if (!alwaysExpanded) {\n setExpanded(!expanded);\n }\n if (onFileClick) {\n onFileClick(currentPath, {\n type: \"directory\",\n id,\n name,\n extra,\n //@ts-ignore\n files: React.Children.toArray(children),\n active,\n });\n }\n };\n\n const namesStyle = {\n paddingLeft: `calc(1.875rem * ${parentLevel + 1})`,\n };\n\n return (\n <div \n className={`folder-container ${className} ${isDragging ? \"dragging\" : \"\"}`}\n {...props}\n >\n <div\n ref={(node) => dragRef(dropRef(node))}\n className={`names ${active && \"active\"} ${isOver ? \"drop-target\" : \"\"}`}\n data-level={parentLevel}\n style={namesStyle}\n onClick={clickHandler}\n >\n <span className=\"status\">\n <TreeStatusIcon active={expanded} />\n </span>\n {parentIconPath !== \"default\" && (\n <span className=\"icon\">\n <Icon\n iconType={Icon.type.PATH}\n icon=\"\"\n //@ts-ignore\n iconPath={parentIconPath}\n iconSize={16}\n useCurrentColor\n style={{\n display: \"block\",\n marginRight: \"8px\",\n marginTop: \"0px\",\n }}\n />\n </span>\n )}\n <span className=\"name\">\n {name}\n {extra && <span className=\"extra\">{extra}</span>}\n </span>\n </div>\n <Expand isExpanded={expanded}>\n <div className=\"content\" onClick={stopPropagation}>\n {children}\n </div>\n </Expand>\n </div>\n );\n};\n\nTreeFolder.defaultProps = defaultProps;\nTreeFolder.displayName = \"TreeFolder\";\n\nexport default TreeFolder;\n"],"names":["TreeFolder","_a","id","name","children","parentPath","parentLevel","level","extra","className","_a$active","active","onMove","props","__rest","_useTreeContext","useTreeContext","onFileClick","initialExpand","alwaysExpanded","parentIconPath","_useState","useState","_useState2","_slicedToArray","expanded","setExpanded","useEffect","currentPath","useMemo","makeChildPath","_useDrag","useDrag","type","item","path","collect","monitor","isDragging","_useDrag2","dragRef","_useDrop","useDrop","accept","drop","draggedItem","isOver","_useDrop2","dropRef","namesStyle","paddingLeft","concat","_jsxs","Object","assign","ref","node","style","onClick","files","React","Children","toArray","_jsx","TreeStatusIcon","Icon","iconType","PATH","icon","iconPath","iconSize","useCurrentColor","display","marginRight","marginTop","Expand","isExpanded","stopPropagation","defaultProps","displayName"],"mappings":"ulBAyBA,IAMMA,EAAuD,SAACC,OAC5DC,EAQMD,EARNC,GACAC,EAOMF,EAPNE,KACAC,EAMMH,EANNG,SACAC,EAKMJ,EALNI,WACOC,EAIDL,EAJNM,MACAC,EAGMP,EAHNO,MACAC,EAEMR,EAFNQ,UAASC,EAEHT,EADNU,OAAAA,OAAS,IAAHD,GAAQA,EACdE,EAAMX,EAANW,OACGC,EAVyDC,EAAAb,EAAA,CAAA,KAAA,OAAA,WAAA,aAAA,QAAA,QAAA,YAAA,SAAA,WAY5Dc,EACEC,IADMC,EAAWF,EAAXE,YAAaC,EAAaH,EAAbG,cAA6BC,EAAcJ,EAAdI,eAAgBC,EAAcL,EAAdK,eAElEC,EAAgCC,EAC9BH,GAAkBD,GACnBK,EAAAC,EAAAH,EAAA,GAFMI,EAAQF,EAAA,GAAEG,EAAWH,EAAA,GAI5BI,GAAU,WAEND,IADEP,GAGUD,EAEhB,GAAG,CAACA,EAAeC,IAEnB,IAAMS,EAAcC,GAClB,WAAA,OAAMC,EAAc3B,EAAME,EAAW,GACrC,CAACF,EAAME,IAGT0B,EAAkCC,EAAQ,CACxCC,KAAM,YACNC,KAAM,CAAED,KAAM,SAAUE,KAAMP,GAC9BQ,QAAS,SAACC,GAAO,MAAM,CACrBC,WAAYD,EAAQC,aACrB,IACDC,EAAAf,EAAAO,EAAA,GANOO,EAAUC,EAAA,GAAVD,WAAcE,EAAOD,EAAA,GAQ9BE,EAA8BC,EAAQ,CACpCC,OAAQ,YACRC,KAAM,SAACC,GACDA,EAAYV,OAASP,GAAehB,GACtCA,EAAOiC,EAAYV,KAAMP,EAE5B,EACDQ,QAAS,SAACC,GAAO,MAAM,CACrBS,OAAQT,EAAQS,SACjB,IACDC,EAAAvB,EAAAiB,EAAA,GAVOK,EAAMC,EAAA,GAAND,OAAUE,EAAOD,EAAA,GA6BpBE,EAAa,CACjBC,YAAWC,mBAAAA,OAAqB7C,EAAc,EAAC,MAGjD,OACE8C,uBACE3C,UAAS,oBAAA0C,OAAsB1C,EAAS,KAAA0C,OAAIb,EAAa,WAAa,KAClEzB,EAAK,CAAAT,SAAA,CAEXgD,EACE,MAAAC,OAAAC,OAAA,CAAAC,IAAK,SAACC,GAAI,OAAKhB,EAAQQ,EAAQQ,GAAM,EACrC/C,UAAS0C,SAAAA,OAAWxC,GAAU,SAAQ,KAAAwC,OAAIL,EAAS,cAAgB,iBACvDxC,EACZmD,MAAOR,EACPS,QA/BiB,WACdvC,GACHO,GAAaD,GAEXR,GACFA,EAAYW,EAAa,CACvBK,KAAM,YACN/B,GAAAA,EACAC,KAAAA,EACAK,MAAAA,EAEAmD,MAAOC,EAAMC,SAASC,QAAQ1D,GAC9BO,OAAAA,iBAqBAoD,EAAM,OAAAV,OAAAC,OAAA,CAAA7C,UAAU,UAAQ,CAAAL,SACtB2D,EAACC,EAAc,CAACrD,OAAQc,OAEN,YAAnBL,GACC2C,EAAM,OAAAV,OAAAC,OAAA,CAAA7C,UAAU,QACd,CAAAL,SAAA2D,EAACE,EACC,CAAAC,SAAUD,EAAKhC,KAAKkC,KACpBC,KAAK,GAELC,SAAUjD,EACVkD,SAAU,GACVC,iBACA,EAAAd,MAAO,CACLe,QAAS,QACTC,YAAa,MACbC,UAAW,YAKnBtB,wBAAM3C,UAAU,QACb,CAAAL,SAAA,CAAAD,EACAK,GAASuD,wBAAMtD,UAAU,SAAS,CAAAL,SAAAI,aAGvCuD,EAACY,iBAAOC,WAAYnD,GAClB,CAAArB,SAAA2D,EAAA,MAAAV,OAAAC,OAAA,CAAK7C,UAAU,UAAUiD,QAASmB,GAC/B,CAAAzE,SAAAA,WAKX,EAEAJ,EAAW8E,aA5HU,CACnBvE,MAAO,EACPE,UAAW,GACXJ,WAAY,IA0HdL,EAAW+E,YAAc"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../../../../src/components/Tree/Tree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,QAAA,MAAM,iBAAiB,uBAA6B,CAAC;AAGrD,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,GAAG,IAAI,EAAE,WAAW,EAAE,QAAQ,KAAK,IAAI,CAAC;CACvH;AAQD,KAAK,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;AAE5C,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,
|
1
|
+
{"version":3,"file":"Tree.d.ts","sourceRoot":"","sources":["../../../../src/components/Tree/Tree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,QAAA,MAAM,iBAAiB,uBAA6B,CAAC;AAGrD,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,GAAG,IAAI,EAAE,WAAW,EAAE,QAAQ,KAAK,IAAI,CAAC;CACvH;AAQD,KAAK,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;AAE5C,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CA8PtD,CAAC;AAKF,eAAe,IAAI,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TreeFile.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Tree/components/TreeFile/TreeFile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,iBAAiB,CAAC;AAMzB,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACnE;AAQD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
1
|
+
{"version":3,"file":"TreeFile.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Tree/components/TreeFile/TreeFile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,iBAAiB,CAAC;AAMzB,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACnE;AAQD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAoF7B,CAAC;AAGF,eAAe,QAAQ,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TreeFolder.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Tree/components/TreeFolder/TreeFolder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,mBAAmB,CAAC;AAY3B,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACnE;AAQD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,
|
1
|
+
{"version":3,"file":"TreeFolder.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Tree/components/TreeFolder/TreeFolder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,mBAAmB,CAAC;AAY3B,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACnE;AAQD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAoHxD,CAAC;AAKF,eAAe,UAAU,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@heliux-org/design-system-core",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.405-Tree-updates-final",
|
4
4
|
"description": "Official Heliux design system resources for application development in React.js",
|
5
5
|
"main": "./dist/main.js",
|
6
6
|
"types": "./dist/types/index.d.ts",
|
@@ -301,5 +301,5 @@
|
|
301
301
|
"PR: Icon 💎": "New Icons"
|
302
302
|
}
|
303
303
|
},
|
304
|
-
"gitHead": "
|
304
|
+
"gitHead": "a7153cfe2dfe25597046c5ca9cbfed46dc877549"
|
305
305
|
}
|
@@ -13,6 +13,7 @@ const FileTreeValueType = tuple("directory", "file");
|
|
13
13
|
const directoryType = FileTreeValueType[0];
|
14
14
|
|
15
15
|
export type TreeFile = {
|
16
|
+
id: number | string;
|
16
17
|
type: (typeof FileTreeValueType)[number];
|
17
18
|
name: string;
|
18
19
|
extra?: string;
|
@@ -215,12 +216,9 @@ const Tree: React.FC<React.PropsWithChildren<TreeProps>> = ({
|
|
215
216
|
};
|
216
217
|
|
217
218
|
const isImperative = Boolean(value && value.length > 0);
|
218
|
-
const onFileClick = (path: string) => {
|
219
|
+
const onFileClick = (path: string, node: TreeFile) => {
|
219
220
|
if (onClick && treeData) {
|
220
|
-
|
221
|
-
if (node) {
|
222
|
-
onClick(path, node);
|
223
|
-
}
|
221
|
+
onClick(path, node);
|
224
222
|
}
|
225
223
|
};
|
226
224
|
|
@@ -258,9 +256,10 @@ const Tree: React.FC<React.PropsWithChildren<TreeProps>> = ({
|
|
258
256
|
if (item.type === directoryType) {
|
259
257
|
return (
|
260
258
|
<TreeFolder
|
259
|
+
id={item.id}
|
261
260
|
name={item.name}
|
262
261
|
extra={item.extra}
|
263
|
-
key={`folder-${item.
|
262
|
+
key={`folder-${item.id}`}
|
264
263
|
onMove={readOnly ? undefined : onMove}
|
265
264
|
parentPath={parentPath}
|
266
265
|
level={level}
|
@@ -272,6 +271,7 @@ const Tree: React.FC<React.PropsWithChildren<TreeProps>> = ({
|
|
272
271
|
}
|
273
272
|
return (
|
274
273
|
<TreeFile
|
274
|
+
id={item.id}
|
275
275
|
name={item.name}
|
276
276
|
extra={item.extra}
|
277
277
|
key={`file-${item.name}-${index}`}
|
@@ -21,47 +21,67 @@ export const Overview = {
|
|
21
21
|
|
22
22
|
const hierarchyData = [
|
23
23
|
{
|
24
|
+
id: "1",
|
24
25
|
type: "directory",
|
25
26
|
name: "Heliux Inc",
|
26
27
|
files: [
|
27
28
|
{
|
29
|
+
id: "2",
|
28
30
|
type: "directory",
|
29
31
|
name: "Factory",
|
30
32
|
files: [
|
31
33
|
{
|
32
|
-
|
33
|
-
|
34
|
+
id: "3",
|
35
|
+
type: "directory",
|
36
|
+
name: "Printing",
|
34
37
|
},
|
35
38
|
{
|
36
|
-
|
37
|
-
|
39
|
+
id: "4",
|
40
|
+
type: "file",
|
41
|
+
name: "Staging1",
|
38
42
|
},
|
39
43
|
{
|
40
|
-
|
41
|
-
|
44
|
+
id: "5",
|
45
|
+
type: "file",
|
46
|
+
name: "Staging2",
|
42
47
|
},
|
43
48
|
{
|
44
|
-
|
45
|
-
|
46
|
-
|
49
|
+
id: "6",
|
50
|
+
type: "file",
|
51
|
+
name: "Staging1",
|
47
52
|
},
|
48
53
|
{
|
49
|
-
|
50
|
-
name: "Assembly",
|
51
|
-
files:[
|
52
|
-
{
|
54
|
+
id: "7",
|
53
55
|
type: "file",
|
54
|
-
name: "
|
55
|
-
|
56
|
-
]
|
56
|
+
name: "Staging3",
|
57
|
+
active: true,
|
57
58
|
},
|
58
59
|
{
|
59
|
-
|
60
|
-
|
60
|
+
id: "8",
|
61
|
+
type: "directory",
|
62
|
+
name: "Assembly",
|
63
|
+
files: [
|
64
|
+
{
|
65
|
+
id: "9",
|
66
|
+
type: "file",
|
67
|
+
name: "Staging4",
|
68
|
+
},
|
69
|
+
{
|
70
|
+
id: "12",
|
71
|
+
type: "file",
|
72
|
+
name: "Staging1",
|
73
|
+
},
|
74
|
+
],
|
75
|
+
},
|
76
|
+
{
|
77
|
+
id: "10",
|
78
|
+
type: "file",
|
79
|
+
name: "Staging5",
|
61
80
|
},
|
62
81
|
{
|
63
|
-
|
64
|
-
|
82
|
+
id: "11",
|
83
|
+
type: "directory",
|
84
|
+
name: "Finishing",
|
65
85
|
},
|
66
86
|
],
|
67
87
|
},
|
@@ -6,6 +6,7 @@ import Icon from "../../../Icon/Icon";
|
|
6
6
|
import { useDrag, useDrop } from "react-dnd";
|
7
7
|
|
8
8
|
interface Props {
|
9
|
+
id: number | string;
|
9
10
|
name: string;
|
10
11
|
extra?: string;
|
11
12
|
parentPath?: string;
|
@@ -22,6 +23,7 @@ const defaultProps = {
|
|
22
23
|
};
|
23
24
|
|
24
25
|
const TreeFile: React.FC<Props> = ({
|
26
|
+
id,
|
25
27
|
name,
|
26
28
|
parentPath,
|
27
29
|
level,
|
@@ -59,15 +61,16 @@ const TreeFile: React.FC<Props> = ({
|
|
59
61
|
if (onFileClick) {
|
60
62
|
onFileClick(currentPath, {
|
61
63
|
type: "file",
|
64
|
+
id,
|
62
65
|
name,
|
63
66
|
extra,
|
64
|
-
active
|
67
|
+
active,
|
65
68
|
});
|
66
69
|
}
|
67
70
|
};
|
68
71
|
|
69
72
|
const containerStyle = {
|
70
|
-
paddingLeft: `calc(1.875rem * ${level})`,
|
73
|
+
paddingLeft: `calc(1.875rem * ${level + 1})`,
|
71
74
|
};
|
72
75
|
|
73
76
|
return (
|
@@ -13,6 +13,7 @@ import Expand from "../expand/expand";
|
|
13
13
|
import Icon from "../../../Icon/Icon";
|
14
14
|
|
15
15
|
interface Props {
|
16
|
+
id: number | string;
|
16
17
|
name: string;
|
17
18
|
extra?: string;
|
18
19
|
parentPath?: string;
|
@@ -29,6 +30,7 @@ const defaultProps = {
|
|
29
30
|
};
|
30
31
|
|
31
32
|
const TreeFolder: React.FC<React.PropsWithChildren<Props>> = ({
|
33
|
+
id,
|
32
34
|
name,
|
33
35
|
children,
|
34
36
|
parentPath,
|
@@ -85,17 +87,18 @@ const TreeFolder: React.FC<React.PropsWithChildren<Props>> = ({
|
|
85
87
|
if (onFileClick) {
|
86
88
|
onFileClick(currentPath, {
|
87
89
|
type: "directory",
|
90
|
+
id,
|
88
91
|
name,
|
89
92
|
extra,
|
90
93
|
//@ts-ignore
|
91
94
|
files: React.Children.toArray(children),
|
92
|
-
active
|
95
|
+
active,
|
93
96
|
});
|
94
97
|
}
|
95
98
|
};
|
96
99
|
|
97
100
|
const namesStyle = {
|
98
|
-
paddingLeft:
|
101
|
+
paddingLeft: `calc(1.875rem * ${parentLevel + 1})`,
|
99
102
|
};
|
100
103
|
|
101
104
|
return (
|