@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.
Files changed (45) hide show
  1. package/dist/Tree.js +1 -1
  2. package/dist/Tree.js.map +1 -1
  3. package/dist/components/Tree/Tree.js +4 -7
  4. package/dist/components/Tree/Tree.js.map +1 -1
  5. package/dist/components/Tree/components/TreeFile/TreeFile.js +4 -3
  6. package/dist/components/Tree/components/TreeFile/TreeFile.js.map +1 -1
  7. package/dist/components/Tree/components/TreeFolder/TreeFolder.js +4 -3
  8. package/dist/components/Tree/components/TreeFolder/TreeFolder.js.map +1 -1
  9. package/dist/esm/components/Tree/Tree.d.ts +1 -0
  10. package/dist/esm/components/Tree/Tree.d.ts.map +1 -1
  11. package/dist/esm/components/Tree/components/TreeFile/TreeFile.d.ts +1 -0
  12. package/dist/esm/components/Tree/components/TreeFile/TreeFile.d.ts.map +1 -1
  13. package/dist/esm/components/Tree/components/TreeFolder/TreeFolder.d.ts +1 -0
  14. package/dist/esm/components/Tree/components/TreeFolder/TreeFolder.d.ts.map +1 -1
  15. package/dist/esm/src/components/Tree/Tree.js +1 -1
  16. package/dist/esm/src/components/Tree/Tree.js.map +1 -1
  17. package/dist/esm/src/components/Tree/components/TreeFile/TreeFile.js +1 -1
  18. package/dist/esm/src/components/Tree/components/TreeFile/TreeFile.js.map +1 -1
  19. package/dist/esm/src/components/Tree/components/TreeFolder/TreeFolder.js +1 -1
  20. package/dist/esm/src/components/Tree/components/TreeFolder/TreeFolder.js.map +1 -1
  21. package/dist/main.js +1 -1
  22. package/dist/main.js.map +1 -1
  23. package/dist/mocked_classnames_esm/components/Tree/Tree.d.ts +1 -0
  24. package/dist/mocked_classnames_esm/components/Tree/Tree.d.ts.map +1 -1
  25. package/dist/mocked_classnames_esm/components/Tree/components/TreeFile/TreeFile.d.ts +1 -0
  26. package/dist/mocked_classnames_esm/components/Tree/components/TreeFile/TreeFile.d.ts.map +1 -1
  27. package/dist/mocked_classnames_esm/components/Tree/components/TreeFolder/TreeFolder.d.ts +1 -0
  28. package/dist/mocked_classnames_esm/components/Tree/components/TreeFolder/TreeFolder.d.ts.map +1 -1
  29. package/dist/mocked_classnames_esm/src/components/Tree/Tree.js +1 -1
  30. package/dist/mocked_classnames_esm/src/components/Tree/Tree.js.map +1 -1
  31. package/dist/mocked_classnames_esm/src/components/Tree/components/TreeFile/TreeFile.js +1 -1
  32. package/dist/mocked_classnames_esm/src/components/Tree/components/TreeFile/TreeFile.js.map +1 -1
  33. package/dist/mocked_classnames_esm/src/components/Tree/components/TreeFolder/TreeFolder.js +1 -1
  34. package/dist/mocked_classnames_esm/src/components/Tree/components/TreeFolder/TreeFolder.js.map +1 -1
  35. package/dist/types/components/Tree/Tree.d.ts +1 -0
  36. package/dist/types/components/Tree/Tree.d.ts.map +1 -1
  37. package/dist/types/components/Tree/components/TreeFile/TreeFile.d.ts +1 -0
  38. package/dist/types/components/Tree/components/TreeFile/TreeFile.d.ts.map +1 -1
  39. package/dist/types/components/Tree/components/TreeFolder/TreeFolder.d.ts +1 -0
  40. package/dist/types/components/Tree/components/TreeFolder/TreeFolder.d.ts.map +1 -1
  41. package/package.json +2 -2
  42. package/src/components/Tree/Tree.tsx +6 -6
  43. package/src/components/Tree/__stories__/Tree.stories.tsx +40 -20
  44. package/src/components/Tree/components/TreeFile/TreeFile.tsx +5 -2
  45. package/src/components/Tree/components/TreeFolder/TreeFolder.tsx +5 -2
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import { PathName } from "../Icon/SvgIcon/paths";
3
3
  declare const FileTreeValueType: ["directory", "file"];
4
4
  export type TreeFile = {
5
+ id: number | string;
5
6
  type: (typeof FileTreeValueType)[number];
6
7
  name: string;
7
8
  extra?: string;
@@ -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,CA+PtD,CAAC;AAKF,eAAe,IAAI,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,6 +1,7 @@
1
1
  import React from "react";
2
2
  import "./TreeFile.scss";
3
3
  interface Props {
4
+ id: number | string;
4
5
  name: string;
5
6
  extra?: string;
6
7
  parentPath?: string;
@@ -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,CAkF7B,CAAC;AAGF,eAAe,QAAQ,CAAC"}
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,6 +1,7 @@
1
1
  import React from "react";
2
2
  import "./TreeFolder.scss";
3
3
  interface Props {
4
+ id: number | string;
4
5
  name: string;
5
6
  extra?: string;
6
7
  parentPath?: string;
@@ -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,CAkHxD,CAAC;AAKF,eAAe,UAAU,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,createForOfIteratorHelper as n,toConsumableArray as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as a}from"../../../_virtual/_tslib.js";import{jsx as r}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,_=a(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(t,a){var r,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=n(t);try{for(o.s();!(r=o.n()).done;){var l=r.value,c=i?"".concat(i,"/").concat(l.name):l.name;if(l.name===a)return c;if(l.type===v&&l.files){var f=e(l.files,a,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,a,r,i=q(H,e.split("/").pop()||"")||e,o=q(H,n.split("/").pop()||"")||n;return t=o,a=i.split("/").filter(Boolean),(r=t.split("/").filter(Boolean)).length>a.length&&a.every((function(e,n){return e===r[n]}))},D=function e(n,a){for(var r=0;n.length>r;r++){var i=n[r],o=a.split("/").pop()||"";if(i.name===o)return{node:i,updatedTree:[].concat(t(n.slice(0,r)),t(n.slice(r+1)))};if(i.type===v&&i.files){var l=e(i.files,a),c=l.node;if(c)return n[r].files=l.updatedTree,{node:c,updatedTree:n}}}return{updatedTree:n}},G=function e(n,a,r){var i=a.split("/"),o=i.pop()||"",l=i.join("/");return n.map((function(n){var i=l?"".concat(l,"/").concat(n.name):n.name;if(n.type===v){if(i===l)return Object.assign(Object.assign({},n),{files:[].concat(t(n.files||[]),[r])});if(n.name===o)return Object.assign(Object.assign({},n),{files:[].concat(t(n.files||[]),[r])});if(n.files)return Object.assign(Object.assign({},n),{files:e(n.files,a,r)})}return n}))},J=function(e,t){var a,r=t.split("/"),i=e,o=null,l=n(r);try{var c,f=function(){var e=a.value;if(!(o=i.find((function(n){return n.name===e}))||null))return{v:null};o.files&&(i=o.files)};for(l.s();!(a=l.n()).done;)if(c=f())return c.v}catch(e){l.e(e)}finally{l.f()}return o},K=function e(t,a){var r,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=n(t);try{for(o.s();!(r=o.n()).done;){var l=r.value,c=i?"".concat(i,"/").concat(l.name):l.name;if(l.name===a)return c;if(l.type===v&&l.files){var f=e(l.files,a,c);if(f)return f}}}catch(e){o.e(e)}finally{o.f()}return a},L=!(!I||0>=I.length),Q=function(e){if(y&&H){var n=J(H,e);n&&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,a=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?(a?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?r(c,Object.assign({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,a,i+1,s)}),"folder-".concat(n.name,"-").concat(l)):r(f,{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()||"",a=n.split("/").pop()||"",r=K(H,t),i=K(H,a);if(!z(r,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(r,i,p||null,l)}}}}),k):d(h,c);return r(u,Object.assign({backend:p},{children:r(s.Provider,Object.assign({value:R},{children:r("div",Object.assign({className:C},_,{children:U}))}))}))};m.defaultProps={initialExpand:!1,alwaysExpanded:!1,className:""},m.displayName="Tree";export{m as default};
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":"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"}
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,d=p.extra,v=p.className,h=p.onMove,j=p.active,T=void 0!==j&&j,x=a(p,["name","parentPath","level","extra","className","onMove","active"]),y=r(),b=y.onFileClick,N=y.childIconPath,P=n((function(){return c(f,g)}),[f,g]),E=l({type:"TREE_ITEM",item:{type:"file",path:P},collect:function(e){return{isDragging:e.isDragging()}}}),_=e(E,2),C=_[0].isDragging,I=_[1],O=m({accept:"TREE_ITEM",drop:function(e){e.path!==P&&h&&h(e.path,P)}}),M=e(O,2)[1],k={paddingLeft:"calc(1.875rem * ".concat(u,")")};return t("div",Object.assign({ref:function(e){return I(M(e))},className:"file-container ".concat(v," ").concat(C?"dragging":""," ").concat(T?"active":""),style:k,onClick:function(e){o(e),b&&b(P,{type:"file",name:f,extra:d,active:T})}},x,{children:i("div",Object.assign({className:"names"},{children:["default"!==N&&t("span",Object.assign({className:"icon"},{children:t(s,{iconType:s.type.PATH,icon:"",iconPath:N,iconSize:16,useCurrentColor:!0,style:{display:"block",marginRight:"8px",marginTop:"0px"}})})),i("span",Object.assign({className:"name"},{children:[f,d&&t("span",Object.assign({className:"extra"},{children:d}))]}))]}))}))};p.defaultProps={level:0,className:"",parentPath:""};export{p as default};
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\n });\n }\n };\n\n const containerStyle = {\n paddingLeft: `calc(1.875rem * ${level})`,\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","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":"+dAiBA,IAMMA,EAA4B,SAACC,OACjCC,EAMcD,EANdC,KACAC,EAKcF,EALdE,WACAC,EAIcH,EAJdG,MACAC,EAGcJ,EAHdI,MACAC,EAEcL,EAFdK,UACAC,EACcN,EADdM,OAAMC,EACQP,EAAdQ,OAAAA,OAAS,IAAHD,GAAQA,EACXE,EAAKC,EAAAV,EARyB,qEAUjCW,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,GAqBVM,EAAiB,CACrBC,YAAW,mBAAAC,OAAqBlC,EAAK,MAGvC,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,QArBiB,SAACC,GACpBC,EAAgBD,GACZhC,GACFA,EAAYE,EAAa,CACvBK,KAAM,OACNnB,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,EAEAL,EAAS4D,aA1FY,CACnBxD,MAAO,EACPE,UAAW,GACXH,WAAY"}
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 m,stopPropagation as d}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.name,j=v.children,x=v.parentPath,y=v.level,T=v.extra,b=v.className,N=v.active,O=void 0!==N&&N,E=v.onMove,P=a(v,["name","children","parentPath","level","extra","className","active","onMove"]),C=p(),I=C.onFileClick,_=C.initialExpand,k=C.alwaysExpanded,M=C.parentIconPath,A=i(k||_),D=e(A,2),F=D[0],H=D[1];c((function(){H(!!k||_)}),[_,k]);var R=s((function(){return m(h,x)}),[h,x]),S=o({type:"TREE_ITEM",item:{type:"folder",path:R},collect:function(e){return{isDragging:e.isDragging()}}}),w=e(S,2),z=w[0].isDragging,B=w[1],L=l({accept:"TREE_ITEM",drop:function(e){e.path!==R&&E&&E(e.path,R)},collect:function(e){return{isOver:e.isOver()}}}),q=e(L,2),G=q[0].isOver,J=q[1],K={paddingLeft:0===y?"4px":"calc(1.875rem * ".concat(y,")")};return t("div",Object.assign({className:"folder-container ".concat(b," ").concat(z?"dragging":"")},P,{children:[t("div",Object.assign({ref:function(e){return B(J(e))},className:"names ".concat(O&&"active"," ").concat(G?"drop-target":""),"data-level":y,style:K,onClick:function(){k||H(!F),I&&I(R,{type:"directory",name:h,extra:T,files:n.Children.toArray(j),active:O})}},{children:[r("span",Object.assign({className:"status"},{children:r(u,{active:F})})),"default"!==M&&r("span",Object.assign({className:"icon"},{children:r(g,{iconType:g.type.PATH,icon:"",iconPath:M,iconSize:16,useCurrentColor:!0,style:{display:"block",marginRight:"8px",marginTop:"0px"}})})),t("span",Object.assign({className:"name"},{children:[h,T&&r("span",Object.assign({className:"extra"},{children:T}))]}))]})),r(f,Object.assign({isExpanded:F},{children:r("div",Object.assign({className:"content",onClick:d},{children:j}))}))]}))};v.defaultProps={level:0,className:"",parentPath:""},v.displayName="TreeFolder";export{v as default};
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
@@ -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\n });\n }\n };\n\n const namesStyle = {\n paddingLeft: parentLevel === 0 ? \"4px\" : `calc(1.875rem * ${parentLevel})`,\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","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":"ulBAwBA,IAMMA,EAAuD,SAACC,OAC5DC,IAAAA,KACAC,IAAAA,SACAC,IAAAA,WACOC,IAAPC,MACAC,IAAAA,MACAC,IAAAA,UAASC,IACTC,OAAAA,OAAS,IAAHD,GAAQA,EACdE,IAAAA,OACGC,EATyDC,EAAAZ,EAAA,CAAA,OAAA,WAAA,aAAA,QAAA,QAAA,YAAA,SAAA,WAW5Da,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,GA4BpBE,EAAa,CACjBC,YAA6B,IAAhB5C,EAAoB,MAAK,mBAAA6C,OAAsB7C,EAAW,MAGzE,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,QA9BiB,WACdvC,GACHO,GAAaD,GAEXR,GACFA,EAAYW,EAAa,CACvBK,KAAM,YACN9B,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,EAEAH,EAAW6E,aA1HU,CACnBvE,MAAO,EACPE,UAAW,GACXJ,WAAY,IAwHdJ,EAAW8E,YAAc"}
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"}
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import { PathName } from "../Icon/SvgIcon/paths";
3
3
  declare const FileTreeValueType: ["directory", "file"];
4
4
  export type TreeFile = {
5
+ id: number | string;
5
6
  type: (typeof FileTreeValueType)[number];
6
7
  name: string;
7
8
  extra?: string;
@@ -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,CA+PtD,CAAC;AAKF,eAAe,IAAI,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,6 +1,7 @@
1
1
  import React from "react";
2
2
  import "./TreeFile.scss";
3
3
  interface Props {
4
+ id: number | string;
4
5
  name: string;
5
6
  extra?: string;
6
7
  parentPath?: string;
@@ -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,CAkF7B,CAAC;AAGF,eAAe,QAAQ,CAAC"}
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,6 +1,7 @@
1
1
  import React from "react";
2
2
  import "./TreeFolder.scss";
3
3
  interface Props {
4
+ id: number | string;
4
5
  name: string;
5
6
  extra?: string;
6
7
  parentPath?: string;
@@ -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,CAkHxD,CAAC;AAKF,eAAe,UAAU,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.403-tree-updates",
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": "82af138cea195024715d9d80c31e83820d43e240"
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
- const node = findNodeByPath(treeData, path);
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.name}-${index}`}
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
- type: "directory",
33
- name: "Printing",
34
+ id: "3",
35
+ type: "directory",
36
+ name: "Printing",
34
37
  },
35
38
  {
36
- type: "file",
37
- name: "Staging1",
39
+ id: "4",
40
+ type: "file",
41
+ name: "Staging1",
38
42
  },
39
43
  {
40
- type: "file",
41
- name: "Staging2",
44
+ id: "5",
45
+ type: "file",
46
+ name: "Staging2",
42
47
  },
43
48
  {
44
- type: "file",
45
- name: "Staging3",
46
- active: true,
49
+ id: "6",
50
+ type: "file",
51
+ name: "Staging1",
47
52
  },
48
53
  {
49
- type: "directory",
50
- name: "Assembly",
51
- files:[
52
- {
54
+ id: "7",
53
55
  type: "file",
54
- name: "Staging4",
55
- },
56
- ]
56
+ name: "Staging3",
57
+ active: true,
57
58
  },
58
59
  {
59
- type: "file",
60
- name: "Staging5",
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
- type: "directory",
64
- name: "Finishing",
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: parentLevel === 0 ? "4px" : `calc(1.875rem * ${parentLevel})`,
101
+ paddingLeft: `calc(1.875rem * ${parentLevel + 1})`,
99
102
  };
100
103
 
101
104
  return (