tree-element 0.3.2 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +23 -20
  2. package/lib/classNames.js +4 -4
  3. package/lib/classNames.js.map +1 -1
  4. package/lib/dataLoader.d.ts +0 -1
  5. package/lib/dataLoader.d.ts.map +1 -1
  6. package/lib/dataLoader.js +10 -7
  7. package/lib/dataLoader.js.map +1 -1
  8. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
  9. package/lib/dragAndDropHandler/generateHitAreas.js +3 -2
  10. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
  11. package/lib/dragAndDropHandler/index.d.ts +2 -4
  12. package/lib/dragAndDropHandler/index.d.ts.map +1 -1
  13. package/lib/dragAndDropHandler/index.js +2 -9
  14. package/lib/dragAndDropHandler/index.js.map +1 -1
  15. package/lib/elementsRenderer.d.ts +11 -4
  16. package/lib/elementsRenderer.d.ts.map +1 -1
  17. package/lib/elementsRenderer.js +104 -43
  18. package/lib/elementsRenderer.js.map +1 -1
  19. package/lib/events.d.ts +13 -7
  20. package/lib/events.d.ts.map +1 -1
  21. package/lib/folderOpenState.d.ts +8 -0
  22. package/lib/folderOpenState.d.ts.map +1 -0
  23. package/lib/folderOpenState.js +22 -0
  24. package/lib/folderOpenState.js.map +1 -0
  25. package/lib/index.d.ts +27 -20
  26. package/lib/index.d.ts.map +1 -1
  27. package/lib/index.js +166 -65
  28. package/lib/index.js.map +1 -1
  29. package/lib/keyHandler.d.ts +16 -3
  30. package/lib/keyHandler.d.ts.map +1 -1
  31. package/lib/keyHandler.js +79 -32
  32. package/lib/keyHandler.js.map +1 -1
  33. package/lib/methodTypes.d.ts +3 -0
  34. package/lib/methodTypes.d.ts.map +1 -1
  35. package/lib/mouseHandler.d.ts.map +1 -1
  36. package/lib/mouseHandler.js +12 -12
  37. package/lib/mouseHandler.js.map +1 -1
  38. package/lib/node.d.ts +12 -10
  39. package/lib/node.d.ts.map +1 -1
  40. package/lib/node.js +12 -10
  41. package/lib/node.js.map +1 -1
  42. package/lib/nodeElement/folderElement.d.ts +7 -5
  43. package/lib/nodeElement/folderElement.d.ts.map +1 -1
  44. package/lib/nodeElement/folderElement.js +35 -55
  45. package/lib/nodeElement/folderElement.js.map +1 -1
  46. package/lib/nodeElement/index.d.ts +3 -2
  47. package/lib/nodeElement/index.d.ts.map +1 -1
  48. package/lib/nodeElement/index.js +15 -12
  49. package/lib/nodeElement/index.js.map +1 -1
  50. package/lib/options.d.ts +29 -14
  51. package/lib/options.d.ts.map +1 -1
  52. package/lib/options.js +12 -0
  53. package/lib/options.js.map +1 -0
  54. package/lib/saveStateHandler.d.ts.map +1 -1
  55. package/lib/saveStateHandler.js +6 -6
  56. package/lib/saveStateHandler.js.map +1 -1
  57. package/lib/selectNodeHandler.d.ts +3 -0
  58. package/lib/selectNodeHandler.d.ts.map +1 -1
  59. package/lib/selectNodeHandler.js +66 -22
  60. package/lib/selectNodeHandler.js.map +1 -1
  61. package/lib/setDefaultOptions.d.ts.map +1 -1
  62. package/lib/setDefaultOptions.js +1 -0
  63. package/lib/setDefaultOptions.js.map +1 -1
  64. package/lib/version.d.ts +1 -1
  65. package/lib/version.js +1 -1
  66. package/lib/version.js.map +1 -1
  67. package/package.json +38 -32
  68. package/src/classNames.ts +4 -4
  69. package/src/dataLoader.ts +9 -10
  70. package/src/dragAndDropHandler/generateHitAreas.ts +3 -2
  71. package/src/dragAndDropHandler/index.ts +3 -17
  72. package/src/elementsRenderer.ts +124 -55
  73. package/src/events.ts +13 -7
  74. package/src/folderOpenState.ts +38 -0
  75. package/src/index.ts +191 -82
  76. package/src/keyHandler.ts +104 -34
  77. package/src/methodTypes.ts +6 -0
  78. package/src/mouseHandler.ts +15 -13
  79. package/src/node.ts +12 -10
  80. package/src/nodeElement/folderElement.ts +47 -72
  81. package/src/nodeElement/index.ts +20 -17
  82. package/src/options.ts +46 -14
  83. package/src/saveStateHandler.ts +5 -8
  84. package/src/selectNodeHandler.ts +69 -25
  85. package/src/setDefaultOptions.ts +1 -0
  86. package/src/version.ts +1 -1
  87. package/tree_element.css +48 -5
  88. package/tree_element.debug.js +540 -278
  89. package/tree_element.debug.js.map +1 -1
  90. package/tree_element.js +2 -2
  91. package/tree_element.js.map +1 -1
package/tree_element.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- Tree-element 0.3.2
2
+ Tree-element 0.4.1
3
3
 
4
4
  Copyright 2026 Marco Braak
5
5
 
@@ -17,5 +17,5 @@ limitations under the License.
17
17
  @license
18
18
 
19
19
  */
20
- var TreeElement=function(){"use strict";class t{constructor({t:t,i:e,h:i,l:s,o:h}){this.u=new AbortController,this.t=t,this.i=e,this.h=i,this.l=s,this.o=h}_(){this.u.abort()}async m(t,e){let i=e?.element??this.l;i.classList.add(this.t.loading);let s=e?this.p(i):null;s?.setAttribute("aria-busy","true"),this.o("tree.loading_data",{element:i,node:e});let h=()=>{i.classList.remove(this.t.loading),s?.removeAttribute("aria-busy"),this.o("tree.loaded_data",{element:i,node:e})},r=this.u.signal;return t.v("_",Date.now().toString()),fetch(t.N(),{headers:{"Content-Type":"application/json"},signal:r}).then(async t=>{if(t.ok){let i=await t.json();h(),this.h(this.i?this.i(i):i,e)}else h(),this.o("tree.load_failed",{response:t})}).catch(t=>{this.u.signal.aborted||(h(),this.o("tree.load_failed",{error:t}))})}p(t){return t.querySelector(`:scope > .${this.t.element} > .${this.t.title}`)}}let e=t=>i(t).top,i=t=>{let e=t.getBoundingClientRect();return{left:e.x+window.scrollX,top:e.y+window.scrollY}};class s{constructor({S:t,t:e,D:i,F:s,T:h,l:r}){this.F=s,this.T=h,this.C=this.$(i,t,e),r.append(this.C)}M(t,e){this.C.style.left=t-this.F+"px",this.C.style.top=e-this.T+"px"}I(){this.C.remove()}$(t,e,i){let s=document.createElement("span");return s.classList.add(i.title,i.dragging),e?s.textContent=t:s.innerHTML=t,s.style.position="absolute",s}}let h=(t,e,i,s)=>{let h=Math.min(e.length,4),r=Math.round((s-i)/h),n=i;for(let i=0;i<h;i++){let s=e[i];s.position&&t.push({bottom:n+r,node:s.node,position:s.position,top:n}),n+=r}};class r{constructor({S:t,t:e,L:i,k:s,A:h,B:r,H:n,P:l,O:o,R:a,U:d,V:u,j:_,Y:c,X:m,l:g,o:f}){this.S=t,this.t=e,this.L=i,this.k=s,this.A=h,this.B=r,this.H=n,this.P=l,this.O=o,this.R=a,this.U=d,this.V=u,this.j=_,this.Y=c,this.X=m,this.l=g,this.o=f,this.G=null,this.J=[],this.K=!1,this.W=null,this.q=null,this.Z=null,this.tt=null}et(t){let e=t.target;if(!this.it(e))return null;if(this.U&&!this.U(e))return null;let i=this.L(e);return i&&this.H&&!this.H(i.st)&&(i=null),this.W=i,null!=this.W}ht(t){if(!this.W||!this.q)return!1;this.q.M(t.pageX,t.pageY);let e=this.rt(t.pageX,t.pageY);return e&&this.nt(e,this.W)?(e.node.isFolder()||this.lt(),this.G!==e&&(this.G=e,this.ot(e)?this.dt(e.node):this.lt(),this.ut())):(this._t(),this.lt(),this.G=e),!e&&this.O&&this.O(this.W.st,t.originalEvent),!0}ct(t){if(!this.W)return!1;this.gt();let{left:e,top:h}=i(t.target);return this.q=new s({S:this.S??!0,t:this.t,D:this.W.st.name,F:t.pageX-e,T:t.pageY-h,l:this.l}),this.K=!0,this.W.C.classList.add(this.t.moving),!0}ft(t){this.vt(t),this.Nt(),this.St(),this._t(),this.wt();let e=this.W;return this.W&&(this.W.C.classList.remove(this.t.moving),this.W=null),this.K=!1,!this.G&&e&&this.R&&this.R(e.st,t.originalEvent),!1}gt(){if(this.wt(),!this.W)return;let t=this.W.st;this.bt(t),this.W=this.k(t),this.K&&this.W.C.classList.add(this.t.moving)}nt(t,e){return!this.P||this.P(e.st,t.node,t.position)}Nt(){this.q&&(this.q.I(),this.q=null)}rt(t,e){let i=this.Et();return t<i.left||e<i.top||t>i.right||e>i.bottom?null:function(t,e){let i=0,s=t.length;for(;i<s;){let h=i+s>>1,r=t[h];if(void 0===r)return null;let n=e(r);if(n>0)s=h;else{if(!(n<0))return r;i=h+1}}return null}(this.J,t=>e<t.top?1:e>t.bottom?-1:0)}bt(t){let i=this.B();this.J=i?((t,i,s)=>((t,e)=>{if(!t.length)return[];let i=t[0].top,s=[],r=[];for(let e of t)e.top!==i&&s.length&&(h(r,s,i,e.top),i=e.top,s=[]),s.push(e);return h(r,s,i,e),r})(((t,i)=>{let s=[],h=0,r=(t,e,i)=>{s.push({node:t,position:e,top:i}),h=i};return((t,{yt:e,Dt:i,Ft:s,Tt:h,Ct:r})=>{let n=!0,l=(t,o)=>{let a=(!0===t.is_open||!t.element)&&t.hasChildren(),d=null;if(t.element?.offsetParent&&(d=t.element,n&&(s(t),n=!1),t.hasChildren()?t.is_open?r(t,t.element)||(a=!1):i(t,o,d):h(t,o,t.element)),!a)return;let u=t.children.length;for(let e of t.children.keys()){let i=t.children[e];if(i)if(e===u-1)l(i,null);else{let s=t.children[e+1];s&&l(i,s)}}t.is_open&&d&&e(t,o)};l(t,null)})(t,{yt:(t,e)=>{r(t,t===i||e===i?null:"after",h)},Dt:(t,s,h)=>{let n=e(h);t===i?r(t,null,n):(r(t,"inside",n),s!==i&&r(t,"after",n))},Ft:t=>{t!==i&&t.element&&r(t,"before",e(t.element))},Tt:(t,s,h)=>{let n=e(h);r(t,t===i?null:"inside",n),r(t,s===i||t===i?null:"after",n)},Ct:(t,s)=>{if(t===i){let i=e(s),h=s.clientHeight;return r(t,null,i),h>5&&r(t,null,i+h-5),!1}return t.children[0]!==i&&r(t,"inside",e(s)),!0}}),s})(t,i),s))(i,t,this.Et().bottom):[]}Et(){let t=i(this.l),e=t.left+this.A(),s=t.top;return{bottom:s+this.l.clientHeight+16,left:e,right:e+this.l.clientWidth,top:s}}vt(t){if(!(this.W&&this.G?.position&&this.nt(this.G,this.W)))return;let e=this.W.st,i=this.G.node,s=this.G.position,h=e.parent;"inside"===s&&(this.G.node.is_open=!0);let r=()=>{let t=this.B();t&&(t.moveNode(e,i,s),this.l.textContent="",this.Y(null))};this.o("tree.move",{moveInfo:{doMove:r,movedNode:e,originalEvent:t.originalEvent,position:s,previousParent:h,targetNode:i}})&&r()}it(t){let e=t.nodeName;return"INPUT"!==e&&"SELECT"!==e&&"TEXTAREA"!==e}ot(t){let e=t.node;return e.isFolder()&&!e.is_open&&"inside"===t.position}_t(){this.tt&&this.tt.remove()}wt(){this.J=[]}St(){this.G=null}dt(t){this.lt();let e=this.V;!1!==e&&(this.Z=window.setTimeout(()=>{this.j(t,this.X).then(()=>{this.gt(),this.ut()})},e))}lt(){this.Z&&(clearTimeout(this.Z),this.Z=null)}ut(){if(!this.G)return;this._t();let t=this.k(this.G.node);this.tt=t.$t(this.G.position)}}class n{constructor({Mt:t,It:e,S:i,xt:s,t:h,Lt:r="-",kt:n,B:l,At:o,Bt:a,Ht:d,Pt:u="+",Ot:_,Rt:c,Ut:m,Vt:g}){this.Mt=t,this.It=e,this.S=i,this.xt=s,this.t=h,this.kt=n,this.B=l,this.At=o,this.Bt=a,this.Ht=d,this.Ot=_,this.Rt=c,this.Ut=m,this.Vt=g,this.jt=this.Yt(u),this.zt=this.Yt(r),this.Xt=this.Gt(!0),this.Jt=this.Gt(!1),this.Kt=this.Wt(),this.qt=this.Qt(!0),this.Zt=this.Qt(!1)}te(t){t?.parent?this.ee(t):this.ie()}se(t){return t.element&&t.hasChildren()?this.he(t.element,t.children,!1,t.getLevel()+1):null}ee(t){if(!t.element)return;let e=t.element,i=this.re(t,t.getLevel());e.replaceWith(i),this.ne(t)&&this.he(i,t.children,!1,t.getLevel()+1)}ie(){this.At.textContent="";let t=this.B();t&&this.he(this.At,t.children,!0,1)}le(t,e){t.element=e,this.Rt(e,t)}Yt(t){if("string"==typeof t){let e=document.createElement("template");return e.innerHTML=t,e.content}return t.nodeType?t:void 0}he(t,e,i,s){let h=(i?this.Xt:this.Jt).cloneNode();t.append(h);for(let t of e){let e=this.re(t,s);h.append(e),this.ne(t)&&this.he(e,t.children,!1,s+1)}return h}oe(t,e,i){let s=(t.is_open?this.qt:this.Zt).cloneNode(!0);i&&s.classList.add(this.t.selected);let h=s.firstChild.childNodes[this.xt?1:0];return this.ae(h,t.name,i,e),t.is_loading&&(s.classList.add(this.t.loading),h.setAttribute("aria-busy","true")),s}Qt(t){let e=[this.t.common,this.t.folder];t||e.push(this.t.closed);let i=this.de(e.join(" ")),s=i.firstChild,h=document.createElement("span");h.className=this.ue(t),h.setAttribute("aria-hidden","true");let r=t?this.jt:this.zt;r&&h.append(r.cloneNode(!0)),this.xt&&s.append(h);let n=this._e(!0);return n.setAttribute("aria-expanded",t?"true":"false"),s.append(n),this.xt||s.append(h),i}re(t,e){let i=this.Bt(t),s=t.isFolder()||t.isEmptyFolder&&this.Ut?this.oe(t,e,i):this.ce(t,e,i);return this.le(t,s),this.Ht&&this.Ht(t,s,i),s}de(t){let e=document.createElement("li");e.className=t,e.setAttribute("role","none");let i=document.createElement("div");return i.className=`${this.t.element} ${this.t.common}`,i.setAttribute("role","none"),e.append(i),e}ce(t,e,i){let s=this.Kt.cloneNode(!0);return i&&s.classList.add(this.t.selected),this.ae(s.firstChild.firstChild,t.name,i,e),s}Wt(){let t=this.de(this.t.common);return t.firstChild.append(this._e(!1)),t}_e(t){let e=document.createElement("span"),i=`${this.t.title} ${this.t.common}`;return t&&(i+=` ${this.t.titleFolder}`),i+=` ${this.xt?this.t.titleButtonLeft:this.t.titleButtonRight}`,e.className=i,e.setAttribute("role","treeitem"),e.setAttribute("aria-selected","false"),void 0!==this.Vt&&e.setAttribute("tabindex","-1"),e}Gt(t){let e,i;t?(e=this.t.tree,i="tree",this.Ot&&(e+=` ${this.t.rtl}`)):(e="",i="group"),this.kt&&(e+=` ${this.t.dnd}`);let s=document.createElement("ul");return s.className=`${this.t.common} ${e}`,s.setAttribute("role",i),t&&(void 0!==this.Mt&&s.setAttribute("aria-label",this.Mt),void 0!==this.It&&s.setAttribute("aria-labelledby",this.It)),s}ae(t,e,i,s){if(t.setAttribute("aria-level",String(s)),i){t.setAttribute("aria-selected","true");let e=this.Vt;void 0!==e&&t.setAttribute("tabindex",String(e))}this.S?t.textContent=e:t.innerHTML=e}ue(t){let e=[this.t.toggler,this.t.common];return t||e.push(this.t.closed),e.push(this.xt?this.t.togglerLeft:this.t.togglerRight),e.join(" ")}ne(t){return t.hasChildren()&&!0===t.is_open}}class l{constructor({me:t,ge:e,fe:i,B:s,pe:h,j:r,ve:n,o:l}){this.me=t,this.ge=e,this.fe=i,this.B=s,this.pe=h,this.j=r,this.Ne=n,this.o=l,h&&document.addEventListener("keydown",this.Se)}_(){this.pe&&document.removeEventListener("keydown",this.Se)}we(){return this.ve(this.fe()?.getNextVisibleNode())}be(){return this.ve(this.fe()?.getPreviousVisibleNode())}Ee(t,e){return this.o("tree.activate",{node:t,originalEvent:e}),!0}ye(t){switch(t){case"ArrowDown":return this.we();case"ArrowLeft":return this.De();case"ArrowRight":return this.Fe();case"ArrowUp":return this.be();default:return!1}}Se=t=>{let e,i=this.ge();if(!i)return;let s=this.fe();switch(t.key){case"End":e=this.ve(this.B()?.getLastChild());break;case"Enter":e=this.Ee(s??i,t);break;case"Home":e=this.ve(this.B()?.children[0]);break;default:e=s?this.ye(t.key):this.Te(t.key,i)}e&&t.preventDefault()};Te(t,e){switch(t){case" ":case"ArrowDown":case"ArrowRight":return this.ve(e);default:return!1}}De(){let t=this.fe();return!!t&&(t.isFolder()&&t.is_open?(this.me(t),!0):this.ve(t.getParent()))}Fe(){let t=this.fe();return!!t?.isFolder()&&(t.is_open?this.ve(t.getNextVisibleNode()):(this.j(t),!0))}ve(t){return!!t&&(this.Ne(t),!0)}}let o=t=>({originalEvent:t,pageX:t.pageX,pageY:t.pageY,target:t.target}),a=(t,e)=>({originalEvent:e,pageX:t.pageX,pageY:t.pageY,target:t.target});class d{constructor({t:t,C:e,Ce:i,$e:s,Me:h,Ie:r,xe:n,Le:l,ke:o,Ae:a,o:d,Be:u}){this.t=t,this.C=e,this.Ce=i,this.$e=s,this.Me=h,this.Ie=r,this.xe=n,this.Le=l,this.ke=o,this.Ae=a,this.o=d,this.Be=u,e.addEventListener("click",this.He),e.addEventListener("dblclick",this.Pe),e.addEventListener("mousedown",this.Oe,{passive:!1}),e.addEventListener("touchstart",this.Re,{passive:!1}),u&&e.addEventListener("contextmenu",this.Ue),this.Ve=!1,this.je=null,this.Ye=!1,this.ze=null}_(){this.C.removeEventListener("click",this.He),this.C.removeEventListener("dblclick",this.Pe),this.Be&&this.C.removeEventListener("contextmenu",this.Ue),this.C.removeEventListener("mousedown",this.Oe),this.C.removeEventListener("touchstart",this.Re),this.Xe()}Ge(t){let e=t.closest(`.${this.t.toggler}`);if(e){let t=this.$e(e);if(t)return{node:t,type:"button"}}else{let e=t.closest(`.${this.t.element}`);if(e){let t=this.$e(e);if(t)return{node:t,type:"label"}}}return null}He=t=>{if(!t.target)return;let e=this.Ge(t.target);if(e)switch(e.type){case"button":this.Me(e.node),t.preventDefault(),t.stopPropagation();break;case"label":this.o("tree.click",{node:e.node,originalEvent:t})&&this.Ie(e.node)}};Ue=t=>{if(!t.target)return;let e=t.target.closest(`ul.${this.t.tree} .${this.t.element}`);if(e){let i=this.$e(e);if(i)return t.preventDefault(),t.stopPropagation(),this.o("tree.contextmenu",{node:i,originalEvent:t}),!1}return null};Pe=t=>{if(!t.target)return;let e=this.Ge(t.target);"label"===e?.type&&this.o("tree.dblclick",{node:e.node,originalEvent:t})};Je(t){return this.Ve&&this.Ke(t),this.ze=t,!!this.xe(t)&&(this.We(),!0)}qe(t,e){if(this.Ve)return this.Le(e),void(t.cancelable&&t.preventDefault());this.Ye&&(this.ze&&(this.Ve=this.ke(this.ze)),this.Ve?(this.Le(e),t.cancelable&&t.preventDefault()):this.Ke(e))}Ke(t){this.Xe(),this.Ye=!1,this.ze=null,this.Ve&&(this.Ve=!1,this.Ae(t))}We(){document.addEventListener("mousemove",this.Qe,{passive:!1}),document.addEventListener("touchmove",this.Ze,{passive:!1}),document.addEventListener("mouseup",this.ti,{passive:!1}),document.addEventListener("touchend",this.ei,{passive:!1});let t=this.Ce();t?this.ii(t):this.Ye=!0}Oe=t=>{0===t.button&&this.Je(o(t))&&t.cancelable&&t.preventDefault()};Qe=t=>{this.qe(t,o(t))};ti=t=>{this.Ke(o(t))};Xe(){document.removeEventListener("mousemove",this.Qe),document.removeEventListener("touchmove",this.Ze),document.removeEventListener("mouseup",this.ti),document.removeEventListener("touchend",this.ei)}ii(t){this.je&&clearTimeout(this.je),this.je=window.setTimeout(()=>{this.ze&&(this.Ye=!0)},t),this.Ye=!1}ei=t=>{if(t.touches.length>1)return;let e=t.touches[0];e&&this.Ke(a(e,t))};Ze=t=>{if(t.touches.length>1)return;let e=t.touches[0];e&&this.qe(t,a(e,t))};Re=t=>{if(t.touches.length>1)return;let e=t.touches[0];e&&this.Je(a(e,t))}}let u=t=>"object"==typeof t&&"children"in t&&Array.isArray(t.children);class _{children;element;id;idMapping;is_loading;is_open;isEmptyFolder;load_on_demand=!1;name="";nodeClass;parent;tree;constructor(t=null,e=!1,i=_){this.isEmptyFolder=null!=t&&u(t)&&0===t.children.length,this.setData(t),this.children=[],this.parent=null,this.is_loading=void 0,this.is_open??=void 0,e?(this.idMapping=new Map,this.tree=this,this.nodeClass=i):this.idMapping=void 0}addAfter(t){if(this.parent){let e=this.si(t),i=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(e,i+1),e.hi(t),e}return null}addBefore(t){if(this.parent){let e=this.si(t),i=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(e,i),e.hi(t),e}return null}addChild(t){this.children.push(t),t.ri(this)}addChildAtPosition(t,e){this.children.splice(e,0,t),t.ri(this)}addNodeToIndex(t){null!=t.id&&this.idMapping?.set(t.id,t)}addParent(t){if(this.parent){let e=this.si(t);this.tree&&e.ri(this.tree);let i=this.parent;for(let t of i.children)e.addChild(t);return i.children=[],i.addChild(e),e}return null}append(t){let e=this.si(t);return this.addChild(e),e.hi(t),e}filter(t){let e=[];return this.iterate(i=>(t(i)&&e.push(i),!0)),e}getChildIndex(t){return this.children.indexOf(t)}getData(t=!1){let e=t=>t.map(t=>{let i={};for(let e in t)!["children","element","idMapping","isEmptyFolder","load_on_demand","nodeClass","parent","tree"].includes(e)&&Object.prototype.hasOwnProperty.call(t,e)&&(i[e]=t[e]);return t.hasChildren()&&(i.children=e(t.children)),i});return e(t?[this]:this.children)}getLastChild(){if(this.hasChildren()){let t=this.children[this.children.length-1];return t.hasChildren()&&t.is_open?t.getLastChild():t}return null}getLevel(){let t=0,e=this;for(;e.parent;)t+=1,e=e.parent;return t}getNextNode(t=!0){return t&&this.hasChildren()?this.children[0]??null:this.parent?this.getNextSibling()??this.parent.getNextNode(!1):null}getNextSibling(){if(this.parent){let t=this.parent.getChildIndex(this)+1;return t<this.parent.children.length?this.parent.children[t]??null:null}return null}getNextVisibleNode(){return this.hasChildren()&&this.is_open?this.children[0]??null:this.parent?this.getNextSibling()||this.parent.getNextNode(!1):null}getNodeByCallback(t){let e=null;return this.iterate(i=>!(e||t(i)&&(e=i,1))),e}getNodeById(t){return this.idMapping?.get(t)??null}getNodeByName(t){return this.getNodeByCallback(e=>e.name===t)}getNodeByNameMustExist(t){let e=this.getNodeByCallback(e=>e.name===t);if(!e)throw new Error(`Node with name ${t} not found`);return e}getNodesByProperty(t,e){return this.filter(i=>i[t]===e)}getParent(){return this.parent&&this.parent.parent?this.parent:null}getPreviousNode(){if(this.parent){let t=this.getPreviousSibling();return t?t.hasChildren()?t.getLastChild():t:this.getParent()}return null}getPreviousSibling(){if(this.parent){let t=this.parent.getChildIndex(this)-1;return t>=0?this.parent.children[t]??null:null}return null}getPreviousVisibleNode(){if(this.parent){let t=this.getPreviousSibling();return t?t.hasChildren()&&t.is_open?t.getLastChild():t:this.getParent()}return null}hasChildren(){return 0!==this.children.length}initFromData(t){let e=t=>{for(let e of t){let t=this.si();t.initFromData(e),this.addChild(t)}};(t=>{this.setData(t),u(t)&&t.children.length&&e(t.children)})(t)}isFolder(){return this.hasChildren()||this.load_on_demand}isParentOf(t){let e=t.parent;for(;e;){if(e===this)return!0;e=e.parent}return!1}iterate(t){let e=(i,s)=>{for(let h of i.children)t(h,s)&&h.hasChildren()&&e(h,s+1)};e(this,0)}loadFromData(t){this.removeChildren();for(let e of t){let t=this.si(e);this.addChild(t),u(e)&&t.loadFromData(e.children)}return this}moveNode(t,e,i){if(!t.parent||t.isParentOf(e))return!1;switch(t.parent.ni(t),i){case"after":return!!e.parent&&(e.parent.addChildAtPosition(t,e.parent.getChildIndex(e)+1),!0);case"before":return!!e.parent&&(e.parent.addChildAtPosition(t,e.parent.getChildIndex(e)),!0);case"inside":return e.addChildAtPosition(t,0),!0}}prepend(t){let e=this.si(t);return this.addChildAtPosition(e,0),e.hi(t),e}remove(){this.parent&&(this.parent.removeChild(this),this.parent=null)}removeChild(t){t.removeChildren(),this.ni(t)}removeChildren(){this.iterate(t=>(this.tree?.removeNodeFromIndex(t),!0)),this.children=[]}removeNodeFromIndex(t){null!=t.id&&this.idMapping?.delete(t.id)}setData(t){if(t)if("string"==typeof t)this.name=t;else if("object"==typeof t)for(let e in t){if(!Object.prototype.hasOwnProperty.call(t,e))continue;let i=t[e];"label"===e||"name"===e?"string"==typeof i&&(this.name=i):"children"!==e&&"parent"!==e&&(this[e]=i)}}si(t){return new(this.li())(t)}ni(t){this.children.splice(this.getChildIndex(t),1),this.tree?.removeNodeFromIndex(t)}li(){return this.nodeClass??this.tree?.nodeClass??_}hi(t){u(t)&&t.children.length&&this.loadFromData(t.children)}ri(t){this.parent=t,this.tree=t.tree,this.tree?.addNodeToIndex(this)}}class c{constructor(t,e,i){let s=t.querySelector(`:scope > .${i.element}`);if(!s)return void(this.oi=void 0);let h=Math.max(t.offsetWidth+e-4,0),r=Math.max(t.clientHeight-4,0),n=document.createElement("span");n.className=i.border,n.style.width=`${h}px`,n.style.height=`${r}px`,this.oi=n,s.append(this.oi)}remove(){this.oi?.remove()}}class m{constructor(t,e,i,s){switch(this.t=s,this.C=e,this.st=t,this.ai=this.di(),i){case"after":this.ui();break;case"before":this._i();break;case"inside":t.isFolder()&&t.is_open?this.ci():this.mi()}}remove(){this.ai.remove()}di(){let{circle:t,common:e,ghost:i,line:s}=this.t,h=document.createElement("li");h.className=`${e} ${i}`;let r=document.createElement("span");r.className=`${e} ${t}`,h.append(r);let n=document.createElement("span");return n.className=`${e} ${s}`,h.append(n),h}ui(){this.C.after(this.ai)}_i(){this.C.before(this.ai)}mi(){this.C.after(this.ai),this.ai.classList.add(this.t.inside)}ci(){let t=this.st.children[0]?.element;t&&t.before(this.ai)}}class g{constructor({t:t,A:e,st:i,Vt:s,l:h}){this.t=t,this.A=e,this.st=i,this.Vt=s,this.l=h,this.C=i.element??this.l}$t(t){return this.gi(t)?new c(this.C,this.A(),this.t):new m(this.st,this.C,t,this.t)}fi(){if(!this.pi())return;this.C.classList.remove(this.t.selected);let t=this.p();null!=this.Vt&&t.setAttribute("tabindex","-1"),t.setAttribute("aria-selected","false"),t.blur()}Ni(t){if(!this.pi())return;this.C.classList.add(this.t.selected);let e=this.p(),i=this.Vt;null!=i&&e.setAttribute("tabindex",i.toString()),e.setAttribute("aria-selected","true"),t&&e.focus()}p(){return this.C.querySelector(`:scope > .${this.t.element} > span.${this.t.title}`)}Si(){return this.C.querySelector(":scope > ul")}pi(){return Boolean(this.st.element)}gi(t){return"inside"===t}}let f=t=>"number"==typeof t?t:"slow"===t?600:200;class p extends g{constructor({t:t,zt:e,A:i,st:s,jt:h,se:r,Vt:n,l:l,o:o}){super({t:t,A:i,st:s,Vt:n,l:l}),this.zt=e,this.jt=h,this.se=r,this.o=o}async wi(t,e){if(!this.st.is_open)return;if(this.st.is_open=!1,!this.pi())return void this.o("tree.close",{node:this.st});let i=this.bi();i.classList.add(this.t.closed),i.replaceChildren();let s=this.zt;if(s){let t=s.cloneNode(!0);i.append(t)}let h=this.Si();h&&(t?await((t,e)=>{let i=t.animate([{height:`${t.scrollHeight}px`,overflow:"hidden"},{height:"0",overflow:"hidden"}],{duration:f(e)});return new Promise(e=>{i.onfinish=()=>{t.style.display="none",e()}})})(h,e):h.style.display="none"),this.C.classList.add(this.t.closed),this.p().setAttribute("aria-expanded","false"),this.o("tree.close",{node:this.st})}async Ei(t,e){if(this.st.is_open)return;if(this.st.is_open=!0,!this.pi())return void this.o("tree.open",{node:this.st});let i=this.bi();i.classList.remove(this.t.closed),i.replaceChildren();let s=this.jt;if(s){let t=s.cloneNode(!0);i.append(t)}let h=this.Si()??this.se(this.st);h&&(t?await((t,e)=>{t.style.display="block";let i=t.animate([{height:"0",overflow:"hidden"},{height:`${t.scrollHeight}px`,overflow:"hidden"}],{duration:f(e)});return new Promise(t=>{i.onfinish=()=>{t()}})})(h,e):h.style.display="block"),this.C.classList.remove(this.t.closed),this.p().setAttribute("aria-expanded","true"),this.o("tree.open",{node:this.st})}gi(t){return!this.st.is_open&&"inside"===t}bi(){return this.C.querySelector(`:scope > .${this.t.element} > .${this.t.toggler}`)}}class v{constructor(t){this.yi=new URL(t,document.baseURI)}v(t,e){this.yi.searchParams.set(t,e)}N(){return this.yi.href}}class N{constructor({Di:t,Fi:e,Ti:i,B:s,Ci:h,$i:r,j:n,Y:l,Mi:o,Ii:a}){this.Di=t,this.Fi=e,this.Ti=i,this.B=s,this.Ci=h,this.$i=r,this.j=n,this.Y=l,this.Mi=o,this.xi=a}Li(){if(!this.xi)return null;let t=this.ki();return t?.selected_node?t.selected_node[0]??null:null}Ai(){return{open_nodes:(()=>{let t=[];return this.B()?.iterate(e=>(e.is_open&&e.id&&e.hasChildren()&&t.push(e.id),!0)),t})(),selected_node:(()=>{let t=[];for(let e of this.Ti())null!=e.id&&t.push(e.id);return t})()}}ki(){if(!this.xi)return null;let t=this.Bi();return t?this.Hi(t):null}Ii(){if(!this.xi)return;let t=JSON.stringify(this.Ai());this.$i?this.$i(t):localStorage.setItem(this.Pi(),t)}Oi(t){let e=!!t.open_nodes&&this.Ri(t.open_nodes);return this.Ui(),t.selected_node&&this.Vi(t.selected_node),e}async ji(t){let e=t.open_nodes,i=async()=>{if(!e)return;let i=[];for(let t of e){let e=this.Fi(t);e?e.is_loading||(e.load_on_demand?await s(e):await this.j(e,!1)):i.push(t)}e=i,t.selected_node&&this.Vi(t.selected_node)&&this.Y(null)},s=async t=>{await this.j(t,!1),await i()};await i()}Pi(){return"string"==typeof this.xi?this.xi:"tree"}Bi(){return this.Ci?this.Ci():localStorage.getItem(this.Pi())}Ri(t){let e=!1;for(let i of t){let t=this.Fi(i);t&&(t.load_on_demand?e=!0:t.is_open=!0)}return e}Hi(t){let e=JSON.parse(t);return e.selected_node&&Number.isInteger(e.selected_node)&&(e.selected_node=[e.selected_node]),e}Ui(){let t=this.Ti();for(let e of t)this.Mi(e)}Vi(t){let e=0;for(let i of t){let t=this.Fi(i);t&&(e+=1,this.Di(t))}return 0!==e}}class S{constructor({Yi:t,zi:e}){this.Yi=t,this.zi=e}Xi(t){let e=this.Gi(t);this.Ji!==e&&(this.Ji=e,null!=this.Ki&&window.clearTimeout(this.Ki),e&&(this.Ki=window.setTimeout(this.Wi.bind(this),40)))}qi(t){let e=this.Qi(t);this.Zi!==e&&(this.Zi=e,null!=this.ts&&(window.clearTimeout(this.ts),this.ts=void 0),e&&(this.ts=window.setTimeout(this.es.bind(this),40)))}A(){return this.Yi.scrollLeft}ss(t){this.Yi.scrollTop=t}hs(){this.Ji=void 0,this.Zi=void 0}Wi(){this.Ji&&(this.Yi.scrollBy({behavior:"instant",left:"left"===this.Ji?-20:20,top:0}),this.zi(),setTimeout(this.Wi.bind(this),40))}es(){this.Zi&&(this.Yi.scrollBy({behavior:"instant",left:0,top:"top"===this.Zi?-20:20}),this.zi(),setTimeout(this.es.bind(this),40))}}class w extends S{hs(){super.hs(),this.Ji=void 0,this.Zi=void 0}Gi(t){let e=i(this.Yi),s=this.Yi.getBoundingClientRect().width;return t>e.left+s-20?"right":t<e.left+20?"left":void 0}Qi(t){return t<this.rs()?"top":t>this.ns()?"bottom":void 0}ns(){if(null==this.ls){let t=this.Yi.getBoundingClientRect().height;this.ls=this.rs()+t}return this.ls}rs(){return this.ds??=e(this.Yi),this.ds}}class b extends S{constructor({zi:t,l:e}){super({Yi:document.documentElement,zi:t}),this.l=e}ss(t){let i=e(this.l);super.ss(t+i)}hs(){super.hs(),this.us=void 0,this._s=void 0}Gi(t){let e=this.Yi.scrollLeft;return t>window.innerWidth-20&&this.cs()?"right":t-e<20?"left":void 0}Qi(t){let e=this.Yi.scrollTop;return t-e<20?"top":window.innerHeight-(t-e)<20&&this.gs()?"bottom":void 0}gs(){return this.Yi.scrollTop+this.Yi.clientHeight<this.fs()}cs(){return this.Yi.scrollLeft+this.Yi.clientWidth<this.ps()}fs(){return this.us??=this.Yi.scrollHeight,this.us}ps(){return this._s??=this.Yi.scrollWidth,this._s}}let E=t=>"auto"===t||"scroll"===t,y=t=>{let e=getComputedStyle(t);return E(e.overflowX)||E(e.overflowY)};class D{constructor({zi:t,l:e}){this.zi=t,this.vs=void 0,this.l=e}Ns(t){this.qi(t),this.Xi(t)}A(){return this.Ss().A()}ss(t){this.Ss().ss(t)}hs(){this.Ss().hs()}Xi(t){this.Ss().Xi(t.pageX)}qi(t){this.Ss().qi(t.pageY)}Ss(){return this.vs??=((t,e)=>{let i=(t=>{if(y(t))return t;let e=t.parentElement;for(;e;){if(y(e))return e;e=e.parentElement}return null})(t);return i&&"HTML"!==i.tagName?new w({Yi:i,zi:e}):new b({zi:e,l:t})})(this.l,this.zi),this.vs}}class F{constructor({Fi:t,k:e,ws:i,bs:s,Es:h,Ii:r,o:n,ys:l}){this.Fi=t,this.k=e,this.ws=i,this.bs=s,this.Es=h,this.Ii=r,this.Ds=new Set,this.Fs=null,this.o=n,this.ys=l}Di(t){null==t.id?this.Fs=t:this.Ds.add(t.id)}Nt(){this.Ds.clear(),this.Fs=null}fe(){let t=this.Ti();return t.length?t[0]??null:null}Ti(){if(this.Fs)return[this.Fs];let t=[];return this.Ds.forEach(e=>{let i=this.Fi(e);i&&t.push(i)}),t}Ts(t){if(this.Fs)return t.isParentOf(this.Fs)?[this.Fs]:[];let e=[];return this.Ds.forEach(i=>{let s=this.Fi(i);s&&t.isParentOf(s)&&e.push(s)}),e}Bt(t){return null!=t.id?this.Ds.has(t.id):!!this.Fs&&this.Fs===t}Mi(t,e=!1){null==t.id?this.Fs===t&&(this.Fs=null):(this.Ds.delete(t.id),e&&t.iterate(()=>(null!=t.id&&this.Ds.delete(t.id),!0)))}Cs(t,e){let i={mustSetFocus:!0,mustToggle:!0,...e};if(!(()=>{if(!this.bs())return!1;let e=this.ws();return!e||e(t)})())return;let s=t=>{this.Mi(t),this.k(t).fi()};if(this.Bt(t))i.mustToggle&&(s(t),this.o("tree.deselect",{node:t}));else{let e=this.fe();e&&s(e),this.Di(t),this.Es(t),this.k(t).Ni(i.mustSetFocus),this.o("tree.select",{deselectedNode:e,node:t})}this.ys(),this.Ii()}}let T=t=>`<svg width="0.8em" height="0.8em" viewBox="0 0 10 10" focusable="false"><polygon points="${t}" fill="currentColor"/></svg>`,C=T("0.5,0.5 9.5,0.5 5,9.5"),$=T("9.5,0.5 9.5,9.5 0.5,5"),M=T("0.5,0.5 0.5,9.5 9.5,5"),I={animationSpeed:"fast",autoEscape:!0,autoOpen:!1,buttonLeft:!0,classPrefix:"tree-element",dragAndDrop:!1,keyboardSupport:!0,nodeClass:_,openFolderDelay:500,saveState:!1,selectable:!0,showEmptyFolder:!1,slide:!0,startDndDelay:300,tabIndex:0,useContextMenu:!0},x=(t,e,i)=>{let s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:i});return t.dispatchEvent(s),!s.defaultPrevented};return class{t;$s;Ms;Is;At;xs;Ls;ks;As;Bs;Hs;Ps;Os;Rs;Us;Vs;constructor({htmlElement:e,overrideTriggerEventProvider:i,...s}){this.At=e,this.Bs=((t,e)=>{let i={...I,...e,animationSpeed:e.animationSpeed??("function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches?0:I.animationSpeed)};return i.dataUrl??=t.dataset.url,i.rtl??=(t=>{let e=t.dataset.rtl;return""==e||"false"!==e&&Boolean(e)})(t),i.closedIcon??=(t=>t.rtl?$:M)(i),i.openedIcon??=C,i})(e,s),this.t=(({classPrefix:t,commonClassName:e,treeClassName:i})=>({border:`${t}-border`,circle:`${t}-circle`,closed:`${t}-closed`,common:e??`${t}-common`,dnd:`${t}-dnd`,dragging:`${t}-dragging`,element:`${t}-element`,folder:`${t}-folder`,ghost:`${t}-ghost`,inside:`${t}-inside`,line:`${t}-line`,loading:`${t}-loading`,moving:`${t}-moving`,rtl:`${t}-rtl`,selected:`${t}-selected`,title:`${t}-title`,titleButtonLeft:`${t}-title-button-left`,titleButtonRight:`${t}-title-button-right`,titleFolder:`${t}-title-folder`,toggler:`${t}-toggler`,togglerLeft:`${t}-toggler-left`,togglerRight:`${t}-toggler-right`,tree:i??t}))(this.Bs),this.Vs=i??x,this.xs=!1,this.Us=new _({},!0),this.As=new WeakMap,this.Is=null;let{ariaLabel:h,ariaLabelledBy:o,autoEscape:a,buttonLeft:u,closedIcon:c,dataFilter:m,dragAndDrop:g,keyboardSupport:f,onCanMove:p,onCanMoveTo:v,onCreateLi:S,onDragMove:w,onDragStop:b,onGetStateFromStorage:E,onIsMoveHandle:y,onSetStateFromStorage:T,openedIcon:L,openFolderDelay:k,rtl:A,saveState:B,showEmptyFolder:H,slide:P,tabIndex:O}=this.Bs,R=this.t,U=this.closeNode.bind(this),V=this.L.bind(this),j=this.k.bind(this),Y=this.ge.bind(this),z=this.getNodeById.bind(this),X=this.getSelectedNode.bind(this),G=this.getTree.bind(this),J=this.loadData.bind(this),K=this.openNode.bind(this),W=this.Es.bind(this),q=this.Y.bind(this),Q=this.refreshHitAreas.bind(this),Z=this.Rt.bind(this),tt=this.At,et=this.o.bind(this),it=this.ys.bind(this),st=new F({Fi:z,k:j,ws:()=>this.Bs.onCanSelectNode,bs:()=>this.Bs.selectable,Es:W,Ii:()=>{dt.Ii()},o:et,ys:it}),ht=st.Di.bind(st),rt=st.Ti.bind(st),nt=st.Bt.bind(st),lt=st.Mi.bind(st),ot=st.Cs.bind(st),at=new t({t:R,i:m,h:J,l:tt,o:et}),dt=new N({Di:ht,Fi:z,Ti:rt,B:G,Ci:E,$i:T,j:K,Y:q,Mi:lt,Ii:B}),ut=new D({zi:Q,l:tt}),_t=ut.A.bind(ut),ct=new r({S:a,t:R,L:V,k:j,A:_t,B:G,H:p,P:v,O:w,R:b,U:y,V:k,j:K,Y:q,X:P,l:tt,o:et}),mt=new l({me:U,ge:Y,fe:X,B:G,pe:f,j:K,ve:ot,o:et}),gt=new n({Mt:h,It:o,S:a,xt:u,t:R,Lt:c,kt:g,B:G,At:tt,Bt:nt,Ht:S,Pt:L,Ot:A,Rt:Z,Ut:H,Vt:O}),ft=this.getNode.bind(this),pt=this.et.bind(this),vt=this.ht.bind(this),Nt=this.ct.bind(this),St=this.ft.bind(this),wt=new d({t:R,C:tt,Ce:()=>this.Bs.startDndDelay??0,$e:ft,Me:this.toggle.bind(this),Ie:ot,xe:pt,Le:vt,ke:Nt,Ae:St,o:et,Be:this.Bs.useContextMenu});this.$s=at,this.Ms=ct,this.Ls=mt,this.ks=wt,this.Hs=gt,this.Ps=dt,this.Os=ut,this.Rs=st,this.js()}addNodeAfter(t,e){let i=e.addAfter(t);return i&&this.Y(e.parent),i}addNodeBefore(t,e){let i=e.addBefore(t);return i&&this.Y(e.parent),i}addParentNode(t,e){let i=e.addParent(t);return i&&this.Y(i.parent),i}addToSelection(t,e=!0){this.Rs.Di(t),this.Es(t),this.k(t).Ni(e),this.ys(),this.Ii()}appendNode(t,e){let i=e.append(t);return this.Y(e),i}async closeNode(t,e){(t.isFolder()||t.isEmptyFolder)&&(await this.Ys(t).wi(e??this.Bs.slide,this.Bs.animationSpeed),this.Ii())}deinit(){this.At.textContent="",this.$s._(),this.Ls._(),this.ks._(),this.Us=new _({},!0)}getNode(t){let e=t.closest(`li.${this.t.common}`);return e?this.As.get(e)??null:null}getNodeByCallback(t){return this.Us.getNodeByCallback(t)}getNodeById(t){return this.Us.getNodeById(t)}getNodeByName(t){return this.Us.getNodeByName(t)}getNodeByNameMustExist(t){return this.Us.getNodeByNameMustExist(t)}getNodesByProperty(t,e){return this.Us.getNodesByProperty(t,e)}getSelectedNode(){return this.Rs.fe()}getSelectedNodes(){return this.Rs.Ti()}getState(){return this.Ps.Ai()}getStateFromStorage(){return this.Ps.ki()}getTree(){return this.Us}getVersion(){return"0.3.2"}isDragging(){return this.Ms.K}isNodeSelected(t){return this.Rs.Bt(t)}loadData(t,e){t&&(e?(this.zs(e),this.Xs(t,e)):this.Gs(t),this.isDragging()&&this.Ms.gt()),this.o("tree.set_data",{node:e,treeData:t??void 0})}async loadDataFromUrl(t,e){let i=t?new v(t):this.Js(e);i&&await this.$s.m(i,e)}moveDown(){this.Ls.we()}moveNode(t,e,i){this.Us.moveNode(t,e,i),this.Y(null)}moveUp(){this.Ls.be()}async openNode(t,e){let i=e??this.Bs.slide,s=async(e,i)=>{if(!t.children.length)return;let s=this.Ys(e);await s.Ei(i,this.Bs.animationSpeed)};if(t.isFolder()||t.isEmptyFolder)if(t.load_on_demand)await this.Ks(t,i);else{let e=t.parent;for(;e;)e.parent&&await s(e,!1),e=e.parent;await s(t,i),this.Ii()}}prependNode(t,e){let i=e.prepend(t);return this.Y(e),i}refresh(){this.Y(null)}refreshHitAreas(){this.Ms.gt()}removeFromSelection(t){this.Rs.Mi(t),this.k(t).fi(),this.ys(),this.Ii()}removeNode(t){this.Rs.Mi(t,!0);let e=t.parent;t.remove(),this.Y(e)}scrollToNode(t){if(!t.element)return;let i=e(t.element)-e(this.At);this.Os.ss(i)}selectNode(t,e){if(!t)return this.Ws(),void this.Ps.Ii();this.Rs.Cs(t,{mustToggle:!1,...e})}setOption(t,e){this.Bs[t]=e}setState(t){this.Ps.Oi(t),this.Y(null),this.Ii()}async toggle(t,e=null){let i=e??this.Bs.slide;t.is_open?await this.closeNode(t,i):await this.openNode(t,i)}toJson(){return JSON.stringify(this.Us.getData())}updateNode(t,e){let i="object"==typeof e&&e.id&&e.id!==t.id;i&&this.Us.removeNodeFromIndex(t),t.setData(e),i&&this.Us.addNodeToIndex(t),"object"==typeof e&&e.children&&Array.isArray(e.children)&&(t.removeChildren(),e.children.length&&t.loadFromData(e.children)),this.Y(t)}async qs(){let t=this.Qs(),e=async()=>{let i=[];this.Us.iterate((s,h)=>s.load_on_demand?(s.is_loading||i.push(this.openNode(s,!1).then(e)),!1):(this.openNode(s,!1),h!==t)),await Promise.all(i)};await e()}Ys(t){let e=this.t,i=this.Hs.zt,s=this.Os.A.bind(this.Os),h=this.Hs.jt,r=this.Bs.tabIndex,n=this.At,l=this.o.bind(this);return new p({t:e,zt:i,A:s,st:t,jt:h,se:t=>{let e=this.Hs.se(t);return this.ys(),e},Vt:r,l:n,o:l})}Zs(t){let e=this.t,i=this.Os.A.bind(this.Os);return new g({t:e,A:i,st:t,Vt:this.Bs.tabIndex,l:this.At})}Js(t){let e=this.Bs.dataUrl,i="function"==typeof e?e(t):e;if(!i)return null;let s=new v(i);if(t?.id)s.v("node",t.id.toString());else{let t=this.Li();t&&s.v("selected_node",t.toString())}return s}Ws(){let t=this.getSelectedNode();t&&this.removeFromSelection(t)}zs(t){let e=this.Rs.Ts(t);for(let t of e)this.Rs.Mi(t)}Qs(){return!0===this.Bs.autoOpen?-1:"number"==typeof this.Bs.autoOpen?this.Bs.autoOpen:"string"==typeof this.Bs.autoOpen?parseInt(this.Bs.autoOpen,10):0}th(){let t=this.Us.children[0]?.element;return t?t.querySelector(`:scope > .${this.t.element} > span.${this.t.title}`):null}ge(){let t=document.activeElement;if(!t)return null;let e=t.tagName;if("A"!==e&&"SPAN"!==e)return null;let i=this.getNode(t);return i?.tree===this.Us?i:null}L(t){let e=this.getNode(t);return e?this.k(e):null}k(t){return t.isFolder()?this.Ys(t):this.Zs(t)}Li(){return this.Ps.Li()}eh(){return this.getSelectedNodes().some(t=>Boolean(t.element))}js(){this.Bs.data?this.loadData(this.Bs.data):this.Js()?this.loadDataFromUrl():this.loadData([])}Gs(t){let e=()=>{this.xs||(this.xs=!0,this.o("tree.init"))};this.Us=new this.Bs.nodeClass(null,!0,this.Bs.nodeClass),this.Rs.Nt(),this.Us.loadFromData(t);let i=this.Oi();this.Y(null),i?this.ji().then(e):e()}ih(){return null!==this.ge()}sh(t){let e=this.getSelectedNode();return!!e&&(t===e||t.isParentOf(e))}async Ks(t,e){t.is_loading=!0,await this.loadDataFromUrl(void 0,t),t.load_on_demand?t.is_loading=!1:await this.openNode(t,e)}Xs(t,e){e.loadFromData(t),e.load_on_demand=!1,e.is_loading=!1,this.Y(e)}et(t){return!!this.Bs.dragAndDrop&&this.Ms.et(t)}ht(t){if(!this.Bs.dragAndDrop)return!1;let e=this.Ms.ht(t);return this.Os.Ns(t),e}ct(t){return!!this.Bs.dragAndDrop&&this.Ms.ct(t)}ft(t){return!!this.Bs.dragAndDrop&&(this.Os.hs(),this.Ms.ft(t))}Es(t){let e=t.parent;e?.parent&&!e.is_open&&this.openNode(e,!1)}Y(t){let e=this.ih(),i=!!t&&this.sh(t);this.Hs.te(t),i&&this.hh(e),this.ys(),this.o("tree.refresh")}Ii(){this.Ps.Ii()}hh(t){let e=this.getSelectedNode();e&&this.k(e).Ni(t)}Oi(){let[t,e]=(()=>{let t=this.Ps.ki();return t?[!0,this.Ps.Oi(t)]:[!1,!1]})();return t||(e=(()=>{if(!1===this.Bs.autoOpen)return!1;let t=this.Qs(),e=!1;return this.Us.iterate((i,s)=>i.load_on_demand?(e=!0,!1):!!i.hasChildren()&&(i.is_open=!0,s!==t)),e})()),e}async ji(){let t=this.Ps.ki();t?await this.Ps.ji(t):await this.qs()}Rt(t,e){this.As.set(t,e)}o(t,e){return this.Vs(this.At,t,e)}ys(){let t=this.Bs.tabIndex,e=this.Is,i=null==t||this.eh()?null:this.th();e&&e!==i&&"true"!==e.getAttribute("aria-selected")&&e.setAttribute("tabindex","-1"),i&&null!=t&&i.setAttribute("tabindex",String(t)),this.Is=i}}}();
20
+ var TreeElement=function(){"use strict";class t{constructor({t:t,i:e,h:i,l:s,o:h}){this.u=new AbortController,this.t=t,this.i=e,this.h=i,this.l=s,this.o=h}_(){this.u.abort()}async m(t,e){let i=e?.element??this.l;i.classList.add(this.t.loading),e&&i.setAttribute("aria-busy","true"),this.o("tree.loading_data",{element:i,node:e});let s=()=>{i.classList.remove(this.t.loading),e&&i.removeAttribute("aria-busy"),this.o("tree.loaded_data",{element:i,node:e})},h=this.u.signal;return t.p("_",Date.now().toString()),fetch(t.S(),{headers:{Accept:"application/json"},signal:h}).then(async t=>{if(t.ok){let i=await t.json();s(),this.h(this.i?this.i(i):i,e)}else s(),this.o("tree.load_failed",{response:t})}).catch(t=>{this.u.signal.aborted||(s(),this.o("tree.load_failed",{error:t}))})}}let e=t=>i(t).top,i=t=>{let e=t.getBoundingClientRect();return{left:e.x+window.scrollX,top:e.y+window.scrollY}};class s{constructor({N:t,t:e,v:i,D:s,T:h,l:r}){this.D=s,this.T=h,this.F=this.C(i,t,e),r.append(this.F)}$(t,e){this.F.style.left=t-this.D+"px",this.F.style.top=e-this.T+"px"}M(){this.F.remove()}C(t,e,i){let s=document.createElement("span");return s.classList.add(i.title,i.dragging),e?s.textContent=t:s.innerHTML=t,s.style.position="absolute",s}}let h=(t,e,i,s)=>{let h=Math.min(e.length,4),r=Math.round((s-i)/h),l=i;for(let i=0;i<h;i++){let s=e[i];s.position&&t.push({bottom:l+r,node:s.node,position:s.position,top:l}),l+=r}};class r{constructor({N:t,t:e,I:i,k:s,A:h,B:r,L:l,H:n,P:o,O:a,U:d,R:u,V:_,j:c,l:m,o:g}){this.N=t,this.t=e,this.I=i,this.k=s,this.A=h,this.B=r,this.L=l,this.H=n,this.P=o,this.O=a,this.U=d,this.R=u,this.V=_,this.j=c,this.l=m,this.o=g,this.Y=null,this.K=[],this.X=!1,this.G=null,this.J=null,this.W=null,this.q=null}Z(t){let e=t.target;if(!this.tt(e))return null;if(this.U&&!this.U(e))return null;let i=this.I(e);return i&&this.L&&!this.L(i.et)&&(i=null),this.G=i,null!=this.G}it(t){if(!this.G||!this.J)return!1;this.J.$(t.pageX,t.pageY);let e=this.st(t.pageX,t.pageY);return e&&this.ht(e,this.G)?this.Y!==e&&(this.Y=e,this.rt(e)?this.lt(e.node):this.nt(),this.ot()):(this.dt(),this.nt(),this.Y=e),!e&&this.P&&this.P(this.G.et,t.originalEvent),!0}ut(t){if(!this.G)return!1;this._t();let{left:e,top:h}=i(t.target);return this.J=new s({N:this.N??!0,t:this.t,v:this.G.et.name,D:t.pageX-e,T:t.pageY-h,l:this.l}),this.X=!0,this.G.F.classList.add(this.t.moving),!0}ct(t){this.gt(t),this.ft(),this.St(),this.dt(),this.Nt();let e=this.G;this.G&&(this.G.F.classList.remove(this.t.moving),this.G=null),this.X=!1,!this.Y&&e&&this.O&&this.O(e.et,t.originalEvent)}_t(){if(this.Nt(),!this.G)return;let t=this.G.et;this.vt(t),this.G=this.k(t),this.X&&this.G.F.classList.add(this.t.moving)}ht(t,e){return!this.H||this.H(e.et,t.node,t.position)}ft(){this.J&&(this.J.M(),this.J=null)}st(t,e){let i=this.wt();return t<i.left||e<i.top||t>i.right||e>i.bottom?null:function(t,e){let i=0,s=t.length;for(;i<s;){let h=i+s>>1,r=t[h];if(void 0===r)return null;let l=e(r);if(l>0)s=h;else{if(!(l<0))return r;i=h+1}}return null}(this.K,t=>e<t.top?1:e>t.bottom?-1:0)}vt(t){let i=this.B();this.K=i?((t,i,s)=>((t,e)=>{if(!t.length)return[];let i=t[0].top,s=[],r=[];for(let e of t)e.top!==i&&s.length&&(h(r,s,i,e.top),i=e.top,s=[]),s.push(e);return h(r,s,i,e),r})(((t,i)=>{let s=[],h=0,r=(t,e,i)=>{s.push({node:t,position:e,top:i}),h=i};return((t,{bt:e,yt:i,Et:s,Dt:h,Tt:r})=>{let l=!0,n=(t,o)=>{let a=(!0===t.is_open||!t.element)&&t.hasChildren(),d=null;if(t.element?.offsetParent&&(d=t.element,l&&(s(t),l=!1),t.hasChildren()?t.is_open?r(t,t.element)||(a=!1):i(t,o,d):h(t,o,t.element)),!a)return;let u=t.children.length;for(let e of t.children.keys()){let i=t.children[e];if(i)if(e===u-1)n(i,null);else{let s=t.children[e+1];s&&n(i,s)}}t.is_open&&d&&e(t,o)};n(t,null)})(t,{bt:(t,e)=>{r(t,e===i?null:"after",h)},yt:(t,s,h)=>{let l=e(h);t===i?r(t,null,l):(r(t,"inside",l),s!==i&&r(t,"after",l))},Et:t=>{t!==i&&t.element&&r(t,"before",e(t.element))},Dt:(t,s,h)=>{let l=e(h);r(t,t===i?null:"inside",l),r(t,s===i||t===i?null:"after",l)},Tt:(t,s)=>{if(t===i){let i=e(s),h=s.clientHeight;return r(t,null,i),h>5&&r(t,null,i+h-5),!1}return t.children[0]!==i&&r(t,"inside",e(s)),!0}}),s})(t,i),s))(i,t,this.wt().bottom):[]}wt(){let t=i(this.l),e=t.left+this.A(),s=t.top;return{bottom:s+this.l.clientHeight+16,left:e,right:e+this.l.clientWidth,top:s}}gt(t){if(!(this.G&&this.Y?.position&&this.ht(this.Y,this.G)))return;let e=this.G.et,i=this.Y.node,s=this.Y.position,h=e.parent;"inside"===s&&(this.Y.node.is_open=!0);let r=()=>{let t=this.B();t&&(t.moveNode(e,i,s),this.l.textContent="",this.j(null))};this.o("tree.move",{moveInfo:{doMove:r,movedNode:e,originalEvent:t.originalEvent,position:s,previousParent:h,targetNode:i}})&&r()}tt(t){return!["INPUT","SELECT","TEXTAREA"].includes(t.nodeName)}rt(t){let e=t.node;return e.isFolder()&&!e.is_open&&"inside"===t.position}dt(){this.q&&this.q.remove()}Nt(){this.K=[]}St(){this.Y=null}lt(t){this.nt();let e=this.R;!1!==e&&(this.W=window.setTimeout(()=>{this.V(t).then(()=>{this._t(),this.ot()})},e))}nt(){this.W&&(clearTimeout(this.W),this.W=null)}ot(){if(!this.Y)return;this.dt();let t=this.k(this.Y.node);this.q=t.Ft(this.Y.position)}}let l=(t,e,i,s)=>{t.classList.toggle(i.closed,!e),t.replaceChildren();let h=e?s.opened:s.closed;h&&t.append(h.cloneNode(!0))},n=(t,e,i)=>{t.classList.toggle(i.closed,!e),t.setAttribute("aria-expanded",e?"true":"false")};class o{constructor({Ct:t,$t:e,N:i,Mt:s,t:h,It:r="-",xt:l,B:n,kt:o,At:a,Bt:d,Lt:u,Ht:_="+",Pt:c,Ot:m,Ut:g,Rt:f}){this.Ct=t,this.$t=e,this.N=i,this.Mt=s,this.t=h,this.xt=l,this.B=n,this.kt=o,this.At=a,this.Bt=d,this.Lt=u,this.Pt=c,this.Ot=m,this.Ut=g,this.Rt=f,this.Vt={closed:this.jt(r),opened:this.jt(_)};let p=this.Yt();this.zt=p.closedFolderTemplate,this.Kt=p.groupUlTemplate,this.Xt=p.nodeTemplate,this.Gt=p.openedFolderTemplate,this.Jt=p.rootUlTemplate}Wt(t){t?.parent?this.qt(t):this.Qt()}Zt(t){return t.element&&t.hasChildren()?this.te(t.element,t.children,!1,t.getLevel()+1):null}qt(t){if(!t.element)return;let e=t.element,i=this.ee(t,t.getLevel());e.replaceWith(i),this.ie(t)&&this.te(i,t.children,!1,t.getLevel()+1)}Qt(){this.kt.textContent="";let t=this.B();t&&this.te(this.kt,t.children,!0,1)}se(t){this.xt=t,this.he();for(let e of this.kt.querySelectorAll(`ul.${this.t.common}`))e.classList.toggle(this.t.dnd,t)}re(t){this.Bt=t,this.he()}le(t){this.Rt=t,this.he();for(let e of this.kt.querySelectorAll("li[role=treeitem]"))void 0===t?e.removeAttribute("tabindex"):this.Bt||"true"!==e.getAttribute("aria-selected")?e.setAttribute("tabindex","-1"):e.setAttribute("tabindex",String(t))}ne(t,e){t.element=e,this.Ot(e,t)}jt(t){if("string"==typeof t){let e=document.createElement("template");return e.innerHTML=t,e.content}return t.nodeType?t:void 0}te(t,e,i,s){let h=(i?this.Jt:this.Kt).cloneNode();t.append(h);for(let t of e){let e=this.ee(t,s);h.append(e),this.ie(t)&&this.te(e,t.children,!1,s+1)}return h}oe(t,e,i){let s=(t.is_open?this.Gt:this.zt).cloneNode(!0);return i&&s.classList.add(this.t.selected),this.ae(s,s.firstChild.childNodes[this.Mt?1:0],t.name,i,e),t.is_loading&&(s.classList.add(this.t.loading),s.setAttribute("aria-busy","true")),s}de(t){let e=this.ue(`${this.t.common} ${this.t.folder}`);n(e,t,this.t);let i=e.firstChild,s=document.createElement("span");return s.className=this._e(),s.setAttribute("aria-hidden","true"),l(s,t,this.t,this.Vt),this.Mt&&i.append(s),i.append(this.ce(!0)),this.Mt||i.append(s),e}ee(t,e){let i=this.At(t),s=t.isFolder()||t.isEmptyFolder&&this.Ut?this.oe(t,e,i):this.me(t,e,i);return this.ne(t,s),this.Lt&&this.Lt(t,s,i),s}ue(t){let e=document.createElement("li");e.className=t,e.setAttribute("role","treeitem"),this.Bt&&e.setAttribute("aria-selected","false"),void 0!==this.Rt&&e.setAttribute("tabindex","-1");let i=document.createElement("div");return i.className=`${this.t.element} ${this.t.common}`,i.setAttribute("role","none"),e.append(i),e}me(t,e,i){let s=this.Xt.cloneNode(!0);return i&&s.classList.add(this.t.selected),this.ae(s,s.firstChild.firstChild,t.name,i,e),s}ge(){let t=this.ue(this.t.common);return t.firstChild.append(this.ce(!1)),t}Yt(){return{closedFolderTemplate:this.de(!1),groupUlTemplate:this.fe(!1),nodeTemplate:this.ge(),openedFolderTemplate:this.de(!0),rootUlTemplate:this.fe(!0)}}ce(t){let e=document.createElement("span"),i=`${this.t.title} ${this.t.common}`;return t&&(i+=` ${this.t.titleFolder}`),i+=` ${this.Mt?this.t.titleButtonLeft:this.t.titleButtonRight}`,e.className=i,e}fe(t){let e,i;t?(e=this.t.tree,i="tree",this.Pt&&(e+=` ${this.t.rtl}`)):(e="",i="group"),this.xt&&(e+=` ${this.t.dnd}`);let s=document.createElement("ul");return s.className=`${this.t.common} ${e}`,s.setAttribute("role",i),t&&(void 0!==this.Ct&&s.setAttribute("aria-label",this.Ct),void 0!==this.$t&&s.setAttribute("aria-labelledby",this.$t),this.Bt&&s.setAttribute("aria-multiselectable","true")),s}ae(t,e,i,s,h){if(t.setAttribute("aria-level",String(h)),s){t.setAttribute("aria-selected","true");let e=this.Rt;void 0===e||this.Bt||t.setAttribute("tabindex",String(e))}this.N?e.textContent=i:e.innerHTML=i,t.setAttribute("aria-label",e.textContent)}_e(){let t=[this.t.toggler,this.t.common];return t.push(this.Mt?this.t.togglerLeft:this.t.togglerRight),t.join(" ")}ie(t){return t.hasChildren()&&!0===t.is_open}he(){let t=this.Yt();this.zt=t.closedFolderTemplate,this.Kt=t.groupUlTemplate,this.Xt=t.nodeTemplate,this.Gt=t.openedFolderTemplate,this.Jt=t.rootUlTemplate}}class a{constructor({pe:t,Se:e,Ne:i,ve:s,we:h,B:r,be:l,Bt:n,V:o,ye:a,Ee:d,o:u}){this.pe=t,this.Se=e,this.Ne=i,this.ve=s,this.we=h,this.B=r,this.be=l,this.Bt=n,this.V=o,this.De=a,this.Ee=d,this.o=u,l&&document.addEventListener("keydown",this.Te)}_(){this.be&&document.removeEventListener("keydown",this.Te)}Fe(){return this.Ce(this.$e()?.getNextVisibleNode())}Me(){return this.Ce(this.$e()?.getPreviousVisibleNode())}Ie(t){t!==this.be&&(this.be=t,t?document.addEventListener("keydown",this.Te):document.removeEventListener("keydown",this.Te))}re(t){this.Bt=t}xe(t,e){return this.o("tree.activate",{node:t,originalEvent:e}),!0}$e(){return this.Bt?this.Ne():this.we()}Ce(t){return!!t&&(this.Bt?this.Se(t):this.De(t),!0)}ke(t){switch(t){case"ArrowDown":return this.Fe();case"ArrowLeft":return this.Ae();case"ArrowRight":return this.Be();case"ArrowUp":return this.Me();default:return!1}}Le(t,e){return this.$e()?this.ke(t):this.He(t,e)}Te=t=>{let e,i=this.ve();if(i){switch(t.key){case" ":e=this.Bt?this.Pe(i):this.Le(t.key,i);break;case"End":e=this.Ce(this.B()?.getLastChild());break;case"Enter":e=this.xe(this.Bt?i:this.we()??i,t);break;case"Home":e=this.Ce(this.B()?.children[0]);break;default:e=this.Le(t.key,i)}e&&t.preventDefault()}};He(t,e){switch(t){case" ":case"ArrowDown":case"ArrowRight":return this.Ce(e);default:return!1}}Ae(){let t=this.$e();return!!t&&(t.isFolder()&&t.is_open?(this.pe(t),!0):this.Ce(t.getParent()))}Be(){let t=this.$e();return!!t?.isFolder()&&(t.is_open?this.Ce(t.getNextVisibleNode()):(this.V(t),!0))}Pe(t){return this.Ee(t),!0}}let d=t=>({originalEvent:t,pageX:t.pageX,pageY:t.pageY,target:t.target}),u=(t,e)=>({originalEvent:e,pageX:t.pageX,pageY:t.pageY,target:t.target});class _{constructor({t:t,F:e,Oe:i,Ue:s,Re:h,Ve:r,je:l,Ye:n,ze:o,Ke:a,o:d,Xe:u}){this.t=t,this.F=e,this.Oe=i,this.Ue=s,this.Re=h,this.Ve=r,this.je=l,this.Ye=n,this.ze=o,this.Ke=a,this.o=d,this.Xe=u,e.addEventListener("click",this.Ge),e.addEventListener("dblclick",this.Je),e.addEventListener("mousedown",this.We,{passive:!1}),e.addEventListener("touchstart",this.qe,{passive:!1}),u&&e.addEventListener("contextmenu",this.Qe),this.Ze=!1,this.ti=null,this.ei=!1,this.ii=null}_(){this.F.removeEventListener("click",this.Ge),this.F.removeEventListener("dblclick",this.Je),this.Xe&&this.F.removeEventListener("contextmenu",this.Qe),this.F.removeEventListener("mousedown",this.We),this.F.removeEventListener("touchstart",this.qe),this.si()}hi(t){let e=t.closest(`.${this.t.toggler}`);if(e){let t=this.Ue(e);if(t)return{node:t,type:"button"}}else{let e=t.closest(`.${this.t.element}`);if(e){let t=this.Ue(e);if(t)return{node:t,type:"label"}}}return null}Ge=t=>{if(!t.target)return;let e=this.hi(t.target);if(e)switch(e.type){case"button":this.Re(e.node),t.preventDefault(),t.stopPropagation();break;case"label":this.o("tree.click",{node:e.node,originalEvent:t})&&this.Ve(e.node)}};Qe=t=>{if(!t.target)return;let e=t.target.closest(`ul.${this.t.tree} .${this.t.element}`);if(!e)return;let i=this.Ue(e);i&&(t.preventDefault(),t.stopPropagation(),this.o("tree.contextmenu",{node:i,originalEvent:t}))};Je=t=>{if(!t.target)return;let e=this.hi(t.target);"label"===e?.type&&this.o("tree.dblclick",{node:e.node,originalEvent:t})};ri(t){return this.Ze&&this.li(t),this.ii=t,!!this.je(t)&&(this.ni(),!0)}oi(t,e){if(this.Ze)return this.Ye(e),void(t.cancelable&&t.preventDefault());this.ei&&(this.ii&&(this.Ze=this.ze(this.ii)),this.Ze?(this.Ye(e),t.cancelable&&t.preventDefault()):this.li(e))}li(t){this.si(),this.ei=!1,this.ii=null,this.Ze&&(this.Ze=!1,this.Ke(t))}ni(){document.addEventListener("mousemove",this.ai,{passive:!1}),document.addEventListener("touchmove",this.di,{passive:!1}),document.addEventListener("mouseup",this.ui,{passive:!1}),document.addEventListener("touchend",this._i,{passive:!1});let t=this.Oe();t?this.ci(t):this.ei=!0}We=t=>{0===t.button&&this.ri(d(t))&&t.cancelable&&t.preventDefault()};ai=t=>{this.oi(t,d(t))};ui=t=>{this.li(d(t))};si(){document.removeEventListener("mousemove",this.ai),document.removeEventListener("touchmove",this.di),document.removeEventListener("mouseup",this.ui),document.removeEventListener("touchend",this._i)}ci(t){this.ti&&clearTimeout(this.ti),this.ti=window.setTimeout(()=>{this.ii&&(this.ei=!0)},t),this.ei=!1}_i=t=>{if(t.touches.length>1)return;let e=t.touches[0];e&&this.li(u(e,t))};di=t=>{if(t.touches.length>1)return;let e=t.touches[0];e&&this.oi(t,u(e,t))};qe=t=>{if(t.touches.length>1)return;let e=t.touches[0];e&&this.ri(u(e,t))}}let c=t=>"object"==typeof t&&"children"in t&&Array.isArray(t.children);class m{children;element;id;idMapping;is_loading;is_open;isEmptyFolder;load_on_demand=!1;name="";nodeClass;parent;tree;constructor(t=null,e=!1,i=m){this.isEmptyFolder=null!=t&&c(t)&&0===t.children.length,this.setData(t),this.children=[],this.parent=null,this.is_loading=void 0,this.is_open??=void 0,e?(this.idMapping=new Map,this.tree=this,this.nodeClass=i):this.idMapping=void 0}addAfter(t){if(this.parent){let e=this.mi(t),i=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(e,i+1),e.gi(t),e}return null}addBefore(t){if(this.parent){let e=this.mi(t),i=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(e,i),e.gi(t),e}return null}addChild(t){this.children.push(t),t.fi(this)}addChildAtPosition(t,e){this.children.splice(e,0,t),t.fi(this)}addNodeToIndex(t){null!=t.id&&this.idMapping?.set(t.id,t)}addParent(t){if(this.parent){let e=this.mi(t);this.tree&&e.fi(this.tree);let i=this.parent;for(let t of i.children)e.addChild(t);return i.children=[],i.addChild(e),e}return null}append(t){let e=this.mi(t);return this.addChild(e),e.gi(t),e}filter(t){let e=[];return this.iterate(i=>(t(i)&&e.push(i),!0)),e}getChildIndex(t){return this.children.indexOf(t)}getData(t=!1){let e=t=>t.map(t=>{let i={};for(let e in t)!["children","element","idMapping","isEmptyFolder","load_on_demand","nodeClass","parent","tree"].includes(e)&&Object.prototype.hasOwnProperty.call(t,e)&&(i[e]=t[e]);return t.hasChildren()&&(i.children=e(t.children)),i});return e(t?[this]:this.children)}getLastChild(){if(this.hasChildren()){let t=this.children[this.children.length-1];return t.hasChildren()&&t.is_open?t.getLastChild():t}return null}getLevel(){let t=0,e=this;for(;e.parent;)t+=1,e=e.parent;return t}getNextNode(t=!0){return t&&this.hasChildren()?this.children[0]??null:this.parent?this.getNextSibling()??this.parent.getNextNode(!1):null}getNextSibling(){if(this.parent){let t=this.parent.getChildIndex(this)+1;return t<this.parent.children.length?this.parent.children[t]??null:null}return null}getNextVisibleNode(){return this.hasChildren()&&this.is_open?this.children[0]??null:this.parent?this.getNextSibling()||this.parent.getNextNode(!1):null}getNodeByCallback(t){let e=null;return this.iterate(i=>!(e||t(i)&&(e=i,1))),e}getNodeById(t){return this.idMapping?.get(t)??null}getNodeByName(t){return this.getNodeByCallback(e=>e.name===t)}getNodeByNameMustExist(t){let e=this.getNodeByCallback(e=>e.name===t);if(!e)throw new Error(`Node with name ${t} not found`);return e}getNodesByProperty(t,e){return this.filter(i=>i[t]===e)}getParent(){return this.parent&&this.parent.parent?this.parent:null}getPreviousNode(){if(this.parent){let t=this.getPreviousSibling();return t?t.hasChildren()?t.getLastChild():t:this.getParent()}return null}getPreviousSibling(){if(this.parent){let t=this.parent.getChildIndex(this)-1;return t>=0?this.parent.children[t]??null:null}return null}getPreviousVisibleNode(){if(this.parent){let t=this.getPreviousSibling();return t?t.hasChildren()&&t.is_open?t.getLastChild():t:this.getParent()}return null}hasChildren(){return 0!==this.children.length}initFromData(t){let e=t=>{for(let e of t){let t=this.mi();t.initFromData(e),this.addChild(t)}};(t=>{this.setData(t),c(t)&&t.children.length&&e(t.children)})(t)}isFolder(){return this.hasChildren()||this.load_on_demand}isParentOf(t){let e=t.parent;for(;e;){if(e===this)return!0;e=e.parent}return!1}iterate(t){let e=(i,s)=>{for(let h of i.children)t(h,s)&&h.hasChildren()&&e(h,s+1)};e(this,0)}loadFromData(t){this.removeChildren();for(let e of t){let t=this.mi(e);this.addChild(t),c(e)&&t.loadFromData(e.children)}return this}moveNode(t,e,i){if(!t.parent||t.isParentOf(e))return!1;switch(t.parent.pi(t),i){case"after":return!!e.parent&&(e.parent.addChildAtPosition(t,e.parent.getChildIndex(e)+1),!0);case"before":return!!e.parent&&(e.parent.addChildAtPosition(t,e.parent.getChildIndex(e)),!0);case"inside":return e.addChildAtPosition(t,0),!0}}prepend(t){let e=this.mi(t);return this.addChildAtPosition(e,0),e.gi(t),e}remove(){this.parent&&(this.parent.removeChild(this),this.parent=null)}removeChild(t){t.removeChildren(),this.pi(t)}removeChildren(){this.iterate(t=>(this.tree?.removeNodeFromIndex(t),!0)),this.children=[]}removeNodeFromIndex(t){null!=t.id&&this.idMapping?.delete(t.id)}setData(t){if(t)if("string"==typeof t)this.name=t;else if("object"==typeof t)for(let e in t){if(!Object.prototype.hasOwnProperty.call(t,e))continue;let i=t[e];"label"===e||"name"===e?"string"==typeof i&&(this.name=i):"children"!==e&&"parent"!==e&&(this[e]=i)}}mi(t){return new(this.Si())(t)}pi(t){this.children.splice(this.getChildIndex(t),1),this.tree?.removeNodeFromIndex(t)}Si(){return this.nodeClass??this.tree?.nodeClass??m}gi(t){c(t)&&t.children.length&&this.loadFromData(t.children)}fi(t){this.parent=t,this.tree=t.tree,this.tree?.addNodeToIndex(this)}}class g{constructor(t,e,i){let s=t.querySelector(`:scope > .${i.element}`);if(!s)return void(this.Ni=void 0);let h=Math.max(t.offsetWidth+e-4,0),r=Math.max(t.clientHeight-4,0),l=document.createElement("span");l.className=i.border,l.style.width=`${h}px`,l.style.height=`${r}px`,this.Ni=l,s.append(this.Ni)}remove(){this.Ni?.remove()}}class f{constructor(t,e,i,s){switch(this.t=s,this.F=e,this.et=t,this.wi=this.bi(),i){case"after":this.yi();break;case"before":this.Ei();break;case"inside":t.isFolder()&&t.is_open?this.Di():this.Ti()}}remove(){this.wi.remove()}bi(){let{circle:t,common:e,ghost:i,line:s}=this.t,h=document.createElement("li");h.className=`${e} ${i}`;let r=document.createElement("span");r.className=`${e} ${t}`,h.append(r);let l=document.createElement("span");return l.className=`${e} ${s}`,h.append(l),h}yi(){this.F.after(this.wi)}Ei(){this.F.before(this.wi)}Ti(){this.F.after(this.wi),this.wi.classList.add(this.t.inside)}Di(){let t=this.et.children[0]?.element;t&&t.before(this.wi)}}class p{constructor({t:t,A:e,Bt:i=!1,et:s,Rt:h,l:r}){this.t=t,this.A=e,this.Bt=i,this.et=s,this.Rt=h,this.l=r,this.F=s.element??this.l}Ft(t){return this.Fi(t)?new g(this.F,this.A(),this.t):new f(this.et,this.F,t,this.t)}Ci(){this.$i()&&(this.F.classList.remove(this.t.selected),this.Bt?this.F.setAttribute("aria-selected","false"):(this.F.removeAttribute("aria-selected"),null!=this.Rt&&this.F.setAttribute("tabindex","-1"),this.F.blur()))}Mi(t){if(!this.$i())return;this.F.classList.add(this.t.selected),this.F.setAttribute("aria-selected","true");let e=this.Rt;null==e||this.Bt||this.F.setAttribute("tabindex",e.toString()),t&&this.F.focus()}Ii(){return this.F.querySelector(":scope > ul")}$i(){return Boolean(this.et.element)}Fi(t){return"inside"===t}}let S=t=>"number"==typeof t?t:"slow"===t?600:200,N=(t,e)=>{t.style.display="block";let i=t.animate([{height:"0",overflow:"hidden"},{height:`${t.scrollHeight}px`,overflow:"hidden"}],{duration:S(e)});return new Promise(t=>{i.onfinish=()=>{t()}})},v=(t,e)=>{let i=t.animate([{height:`${t.scrollHeight}px`,overflow:"hidden"},{height:"0",overflow:"hidden"}],{duration:S(e)});return new Promise(e=>{i.onfinish=()=>{t.style.display="none",e()}})};class w extends p{constructor({t:t,A:e,Vt:i,Bt:s,et:h,Zt:r,Rt:l,l:n,o:o}){super({t:t,A:e,Bt:s,et:h,Rt:l,l:n}),this.Vt=i,this.Zt=r,this.o=o}async xi(t,e){this.et.is_open&&(this.et.is_open=!1,this.$i()&&(this.ki(!1),await this.Ai(this.Ii(),!1,t,e),this.Bi(!1)),this.o("tree.close",{node:this.et}))}async Li(t,e){if(!this.et.is_open){if(this.et.is_open=!0,this.$i()){this.ki(!0);let i=this.Ii()??this.Zt(this.et);await this.Ai(i,!0,t,e),this.Bi(!0)}this.o("tree.open",{node:this.et})}}Fi(t){return!this.et.is_open&&"inside"===t}Hi(){return this.F.querySelector(`:scope > .${this.t.element} > .${this.t.toggler}`)}ki(t){l(this.Hi(),t,this.t,this.Vt)}Bi(t){n(this.F,t,this.t)}async Ai(t,e,i,s){t&&(i?await(e?N:v)(t,s):t.style.display=e?"block":"none")}}let b=["animationSpeed","dataUrl","dragAndDrop","keyboardSupport","multiSelect","onCanSelectNode","selectable","slide","startDndDelay","tabIndex"];class y{constructor(t){this.Pi=new URL(t,document.baseURI)}p(t,e){this.Pi.searchParams.set(t,e)}S(){return this.Pi.href}}class E{constructor({Oi:t,Ui:e,Ri:i,B:s,Vi:h,ji:r,V:l,j:n,Yi:o,zi:a}){this.Oi=t,this.Ui=e,this.Ri=i,this.B=s,this.Vi=h,this.ji=r,this.V=l,this.j=n,this.Yi=o,this.Ki=a}Xi(){let t=this.Gi();return t?.selected_node?t.selected_node[0]??null:null}Ji(){return{open_nodes:(()=>{let t=[];return this.B()?.iterate(e=>(e.is_open&&e.id&&e.hasChildren()&&t.push(e.id),!0)),t})(),selected_node:(()=>{let t=[];for(let e of this.Ri())null!=e.id&&t.push(e.id);return t})()}}Gi(){if(!this.Ki)return null;let t=this.Wi();return t?this.qi(t):null}zi(){if(!this.Ki)return;let t=JSON.stringify(this.Ji());this.ji?this.ji(t):localStorage.setItem(this.Qi(),t)}Zi(t){let e=!!t.open_nodes&&this.ts(t.open_nodes);return this.es(),t.selected_node&&this.ss(t.selected_node),e}async hs(t){let e=t.open_nodes,i=async()=>{if(!e)return;let i=[];for(let t of e){let e=this.Ui(t);e?e.is_loading||(e.load_on_demand?await s(e):await this.V(e,!1)):i.push(t)}e=i,t.selected_node&&this.ss(t.selected_node)&&this.j(null)},s=async t=>{await this.V(t,!1),await i()};await i()}Qi(){return"string"==typeof this.Ki?this.Ki:"tree"}Wi(){return this.Vi?this.Vi():localStorage.getItem(this.Qi())}ts(t){let e=!1;for(let i of t){let t=this.Ui(i);t&&(t.load_on_demand?e=!0:t.is_open=!0)}return e}qi(t){let e=JSON.parse(t);return e.selected_node&&Number.isInteger(e.selected_node)&&(e.selected_node=[e.selected_node]),e}es(){let t=this.Ri();for(let e of t)this.Yi(e)}ss(t){let e=!1;for(let i of t){let t=this.Ui(i);t&&(this.Oi(t),e=!0)}return e}}class D{constructor({rs:t,ls:e}){this.rs=t,this.ls=e}ns(t){let e=this.ds(t);this.us!==e&&(this.us=e,null!=this._s&&window.clearTimeout(this._s),e&&(this._s=window.setTimeout(this.cs.bind(this),40)))}gs(t){let e=this.fs(t);this.ps!==e&&(this.ps=e,null!=this.Ss&&(window.clearTimeout(this.Ss),this.Ss=void 0),e&&(this.Ss=window.setTimeout(this.Ns.bind(this),40)))}A(){return this.rs.scrollLeft}vs(t){this.rs.scrollTop=t}ws(){this.us=void 0,this.ps=void 0}cs(){this.us&&(this.rs.scrollBy({behavior:"instant",left:"left"===this.us?-20:20,top:0}),this.ls(),setTimeout(this.cs.bind(this),40))}Ns(){this.ps&&(this.rs.scrollBy({behavior:"instant",left:0,top:"top"===this.ps?-20:20}),this.ls(),setTimeout(this.Ns.bind(this),40))}}class T extends D{ws(){super.ws(),this.us=void 0,this.ps=void 0}ds(t){let e=i(this.rs),s=this.rs.getBoundingClientRect().width;return t>e.left+s-20?"right":t<e.left+20?"left":void 0}fs(t){return t<this.bs()?"top":t>this.ys()?"bottom":void 0}ys(){if(null==this.Es){let t=this.rs.getBoundingClientRect().height;this.Es=this.bs()+t}return this.Es}bs(){return this.Ds??=e(this.rs),this.Ds}}class F extends D{constructor({ls:t,l:e}){super({rs:document.documentElement,ls:t}),this.l=e}vs(t){let i=e(this.l);super.vs(t+i)}ws(){super.ws(),this.Ts=void 0,this.Fs=void 0}ds(t){let e=this.rs.scrollLeft;return t>window.innerWidth-20&&this.Cs()?"right":t-e<20?"left":void 0}fs(t){let e=this.rs.scrollTop;return t-e<20?"top":window.innerHeight-(t-e)<20&&this.$s()?"bottom":void 0}$s(){return this.rs.scrollTop+this.rs.clientHeight<this.Ms()}Cs(){return this.rs.scrollLeft+this.rs.clientWidth<this.Is()}Ms(){return this.Ts??=this.rs.scrollHeight,this.Ts}Is(){return this.Fs??=this.rs.scrollWidth,this.Fs}}let C=t=>"auto"===t||"scroll"===t,$=t=>{let e=getComputedStyle(t);return C(e.overflowX)||C(e.overflowY)};class M{constructor({ls:t,l:e}){this.ls=t,this.xs=void 0,this.l=e}ks(t){this.gs(t),this.ns(t)}A(){return this.As().A()}vs(t){this.As().vs(t)}ws(){this.As().ws()}ns(t){this.As().ns(t.pageX)}gs(t){this.As().gs(t.pageY)}As(){return this.xs??=((t,e)=>{let i=(t=>{if($(t))return t;let e=t.parentElement;for(;e;){if($(e))return e;e=e.parentElement}return null})(t);return i&&"HTML"!==i.tagName?new T({rs:i,ls:e}):new F({ls:e,l:t})})(this.l,this.ls),this.xs}}class I{constructor({Ui:t,k:e,Bs:i,Ls:s,Hs:h,zi:r,o:l,Ps:n}){this.Ui=t,this.k=e,this.Bs=i,this.Ls=s,this.Hs=h,this.zi=r,this.Os=new Set,this.Us=null,this.o=l,this.Ps=n}Oi(t){null==t.id?this.Us=t:this.Os.add(t.id)}ft(){this.Os.clear(),this.Us=null}we(){let t=this.Ri();return t.length?t[0]??null:null}Ri(){if(this.Us)return[this.Us];let t=[];return this.Os.forEach(e=>{let i=this.Ui(e);i&&t.push(i)}),t}Rs(t){if(this.Us)return t.isParentOf(this.Us)?[this.Us]:[];let e=[];return this.Os.forEach(i=>{let s=this.Ui(i);s&&t.isParentOf(s)&&e.push(s)}),e}At(t){return null!=t.id?this.Os.has(t.id):!!this.Us&&this.Us===t}Yi(t,e=!1){null==t.id?this.Us===t&&(this.Us=null):(this.Os.delete(t.id),e&&t.iterate(t=>(null!=t.id&&this.Os.delete(t.id),!0)))}Vs(t,e){if(!this.js(t))return;let i={mustSetFocus:!0,mustToggle:!0,...e},s=this.Ri().filter(e=>e!==t);if(this.At(t))if(s.length){for(let t of s)this.Ys(t);for(let t of s)this.o("tree.deselect",{node:t})}else i.mustToggle&&(this.Ys(t),this.o("tree.deselect",{node:t}));else{let[e=null,...h]=s;for(let t of s)this.Ys(t);this.Oi(t),this.Hs(t),this.k(t).Mi(i.mustSetFocus);for(let t of h)this.o("tree.deselect",{node:t});this.o("tree.select",{deselectedNode:e,node:t})}this.Ps(),this.zi()}Ee(t,e=!0){this.js(t)&&(this.At(t)?(this.Ys(t),this.o("tree.deselect",{node:t})):(this.Oi(t),this.Hs(t),this.k(t).Mi(e),this.o("tree.select",{deselectedNode:null,node:t})),this.Ps(),this.zi())}js(t){if(!this.Ls())return!1;let e=this.Bs();return!e||e(t)}Ys(t){this.Yi(t),this.k(t).Ci()}}let x=t=>`<svg width="0.8em" height="0.8em" viewBox="0 0 10 10" focusable="false"><polygon points="${t}" fill="currentColor"/></svg>`,k=x("0.5,0.5 9.5,0.5 5,9.5"),A=x("9.5,0.5 9.5,9.5 0.5,5"),B=x("0.5,0.5 0.5,9.5 9.5,5"),L={animationSpeed:"fast",autoEscape:!0,autoOpen:!1,buttonLeft:!0,classPrefix:"tree-element",dragAndDrop:!1,keyboardSupport:!0,multiSelect:!1,nodeClass:m,openFolderDelay:500,saveState:!1,selectable:!0,showEmptyFolder:!1,slide:!0,startDndDelay:300,tabIndex:0,useContextMenu:!0},H=(t,e,i)=>{let s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:i});return t.dispatchEvent(s),!s.defaultPrevented};return class{zs;t;Ks;Xs;Gs;kt;Js;Ws;qs;Qs;Zs;th;eh;ih;sh;hh;rh;constructor({htmlElement:e,overrideTriggerEventProvider:i,...s}){this.kt=e,this.Zs=((t,e)=>{let i={...L,...e,animationSpeed:e.animationSpeed??("function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches?0:L.animationSpeed)};return i.dataUrl??=t.dataset.url,i.rtl??=(t=>{let e=t.dataset.rtl;return""==e||"false"!==e&&Boolean(e)})(t),i.closedIcon??=(t=>t.rtl?A:B)(i),i.openedIcon??=k,i})(e,s),this.t=(({classPrefix:t,commonClassName:e=`${t}-common`,treeClassName:i=t})=>({border:`${t}-border`,circle:`${t}-circle`,closed:`${t}-closed`,common:e,dnd:`${t}-dnd`,dragging:`${t}-dragging`,element:`${t}-element`,folder:`${t}-folder`,ghost:`${t}-ghost`,inside:`${t}-inside`,line:`${t}-line`,loading:`${t}-loading`,moving:`${t}-moving`,rtl:`${t}-rtl`,selected:`${t}-selected`,title:`${t}-title`,titleButtonLeft:`${t}-title-button-left`,titleButtonRight:`${t}-title-button-right`,titleFolder:`${t}-title-folder`,toggler:`${t}-toggler`,togglerLeft:`${t}-toggler-left`,togglerRight:`${t}-toggler-right`,tree:i}))(this.Zs),this.rh=i??H,this.Js=!1,this.hh=new m({},!0),this.Qs=new WeakMap,this.Gs=null,this.zs=null;let{ariaLabel:h,ariaLabelledBy:l,autoEscape:n,buttonLeft:d,closedIcon:u,dataFilter:c,dragAndDrop:g,keyboardSupport:f,multiSelect:p,onCanMove:S,onCanMoveTo:N,onCreateLi:v,onDragMove:w,onDragStop:b,onGetStateFromStorage:y,onIsMoveHandle:D,onSetStateFromStorage:T,openedIcon:F,openFolderDelay:C,rtl:$,saveState:x,showEmptyFolder:P,tabIndex:O}=this.Zs,U=this.t,R=this.closeNode.bind(this),V=this.I.bind(this),j=this.k.bind(this),Y=this.ve.bind(this),z=this.getNodeById.bind(this),K=this.getSelectedNode.bind(this),X=this.getTree.bind(this),G=this.loadData.bind(this),J=this.openNode.bind(this),W=this.Hs.bind(this),q=this.j.bind(this),Q=this.refreshHitAreas.bind(this),Z=this.Ot.bind(this),tt=this.kt,et=this.o.bind(this),it=this.Ps.bind(this),st=new I({Ui:z,k:j,Bs:()=>this.Zs.onCanSelectNode,Ls:()=>this.Zs.selectable,Hs:W,zi:()=>{ut.zi()},o:et,Ps:it}),ht=st.Oi.bind(st),rt=st.Ri.bind(st),lt=st.At.bind(st),nt=st.Yi.bind(st),ot=st.Vs.bind(st),at=st.Ee.bind(st),dt=new t({t:U,i:c,h:G,l:tt,o:et}),ut=new E({Oi:ht,Ui:z,Ri:rt,B:X,Vi:y,ji:T,V:J,j:q,Yi:nt,zi:x}),_t=new M({ls:Q,l:tt}),ct=_t.A.bind(_t),mt=new r({N:n,t:U,I:V,k:j,A:ct,B:X,L:S,H:N,P:w,O:b,U:D,R:C,V:J,j:q,l:tt,o:et}),gt=new a({pe:R,Se:this.Se.bind(this),Ne:this.Ne.bind(this),ve:Y,we:K,B:X,be:f,Bt:p,V:J,ye:ot,Ee:at,o:et}),ft=new o({Ct:h,$t:l,N:n,Mt:d,t:U,It:u,xt:g,B:X,kt:tt,At:lt,Bt:p,Lt:v,Ht:F,Pt:$,Ot:Z,Ut:P,Rt:O}),pt=this.getNode.bind(this),St=this.Z.bind(this),Nt=this.it.bind(this),vt=this.ut.bind(this),wt=this.ct.bind(this),bt=new _({t:U,F:tt,Oe:()=>this.Zs.startDndDelay??0,Ue:pt,Re:this.toggle.bind(this),Ve:t=>{this.Zs.multiSelect?(at(t,!1),this.Se(t)):ot(t)},je:St,Ye:Nt,ze:vt,Ke:wt,o:et,Xe:this.Zs.useContextMenu});this.Ks=dt,this.Xs=mt,this.Ws=gt,this.qs=bt,this.th=ft,this.eh=ut,this.ih=_t,this.sh=st,p&&tt.addEventListener("focusin",this.nh),this.oh()}addNodeAfter(t,e){let i=e.addAfter(t);return i&&this.j(e.parent),i}addNodeBefore(t,e){let i=e.addBefore(t);return i&&this.j(e.parent),i}addParentNode(t,e){let i=e.addParent(t);return i&&this.j(i.parent),i}addToSelection(t,e=!0){this.sh.Oi(t),this.Hs(t),this.k(t).Mi(e),this.Ps(),this.zi()}appendNode(t,e){let i=e.append(t);return this.j(e),i}async closeNode(t,e){(t.isFolder()||t.isEmptyFolder)&&(await this.ah(t).xi(e??this.Zs.slide,this.Zs.animationSpeed),this.zi())}deinit(){this.kt.textContent="",this.Ks._(),this.Ws._(),this.qs._(),this.kt.removeEventListener("focusin",this.nh),this.hh=new m({},!0)}getNode(t){let e=t.closest(`li.${this.t.common}`);return e?this.Qs.get(e)??null:null}getNodeByCallback(t){return this.hh.getNodeByCallback(t)}getNodeById(t){return this.hh.getNodeById(t)}getNodeByName(t){return this.hh.getNodeByName(t)}getNodeByNameMustExist(t){return this.hh.getNodeByNameMustExist(t)}getNodesByProperty(t,e){return this.hh.getNodesByProperty(t,e)}getSelectedNode(){return this.sh.we()}getSelectedNodes(){return this.sh.Ri()}getState(){return this.eh.Ji()}getStateFromStorage(){return this.eh.Gi()}getTree(){return this.hh}getVersion(){return"0.4.1"}isDragging(){return this.Xs.X}isNodeSelected(t){return this.sh.At(t)}loadData(t,e){t&&(e?(this.dh(e),this.uh(t,e)):this._h(t),this.isDragging()&&this.Xs._t()),this.o("tree.set_data",{node:e,treeData:t??void 0})}async loadDataFromUrl(t,e){let i=t?new y(t):this.mh(e);i&&await this.Ks.m(i,e)}moveDown(){this.Ws.Fe()}moveNode(t,e,i){this.hh.moveNode(t,e,i),this.j(null)}moveUp(){this.Ws.Me()}async openNode(t,e){let i=e??this.Zs.slide,s=async(t,e)=>{if(!t.children.length)return;let i=this.ah(t);await i.Li(e,this.Zs.animationSpeed)};if(t.isFolder()||t.isEmptyFolder)if(t.load_on_demand)await this.gh(t,i);else{let e=t.parent;for(;e;)e.parent&&await s(e,!1),e=e.parent;await s(t,i),this.zi()}}prependNode(t,e){let i=e.prepend(t);return this.j(e),i}refresh(){this.j(null)}refreshHitAreas(){this.Xs._t()}removeFromSelection(t){this.sh.Yi(t),this.k(t).Ci(),this.Ps(),this.zi()}removeNode(t){this.sh.Yi(t,!0);let e=t.parent;t.remove(),this.j(e)}scrollToNode(t){if(!t.element)return;let i=e(t.element)-e(this.kt);this.ih.vs(i)}selectNode(t,e){if(!t)return this.fh(),void this.eh.zi();this.sh.Vs(t,{mustToggle:!1,...e})}setOption(t,e){if(!b.includes(t))throw new Error(`The option ${t} can only be set in the constructor`);switch(this.Zs[t]=e,t){case"dragAndDrop":this.th.se(Boolean(e));break;case"keyboardSupport":this.Ws.Ie(Boolean(e));break;case"multiSelect":this.re(Boolean(e));break;case"tabIndex":this.Zs.tabIndex=e??void 0,this.th.le(this.Zs.tabIndex),this.Gs=null,this.Ps()}}setState(t){this.eh.Zi(t),this.j(null),this.zi()}async toggle(t,e=null){let i=e??this.Zs.slide;t.is_open?await this.closeNode(t,i):await this.openNode(t,i)}toJson(){return JSON.stringify(this.hh.getData())}updateNode(t,e){let i="object"==typeof e&&e.id&&e.id!==t.id;i&&this.hh.removeNodeFromIndex(t),t.setData(e),i&&this.hh.addNodeToIndex(t),"object"==typeof e&&e.children&&Array.isArray(e.children)&&(t.removeChildren(),e.children.length&&t.loadFromData(e.children)),this.j(t)}async ph(){let t=this.Sh(),e=async()=>{let i=[];this.hh.iterate((s,h)=>s.load_on_demand?(s.is_loading||i.push(this.openNode(s,!1).then(e)),!1):(this.openNode(s,!1),h!==t)),await Promise.all(i)};await e()}ah(t){let e=this.t,i=this.ih.A.bind(this.ih),s=this.Zs.tabIndex,h=this.kt,r=this.o.bind(this);return new w({t:e,A:i,Vt:this.th.Vt,Bt:this.Zs.multiSelect,et:t,Zt:t=>{let e=this.th.Zt(t);return this.Ps(),e},Rt:s,l:h,o:r})}Nh(t){let e=this.t,i=this.ih.A.bind(this.ih);return new p({t:e,A:i,Bt:this.Zs.multiSelect,et:t,Rt:this.Zs.tabIndex,l:this.kt})}mh(t){let e=this.Zs.dataUrl,i="function"==typeof e?e(t):e;if(!i)return null;let s=new y(i);if(t?.id)s.p("node",t.id.toString());else{let t=this.Xi();t&&s.p("selected_node",t.toString())}return s}fh(){for(let t of this.getSelectedNodes())this.removeFromSelection(t)}dh(t){let e=this.sh.Rs(t);for(let t of e)this.sh.Yi(t)}Se(t){this.zs=t,this.Ps(),t.element?.focus()}Ne(){let t=this.zs?.element;return t&&this.kt.contains(t)?this.zs:null}Sh(){return!0===this.Zs.autoOpen?-1:"number"==typeof this.Zs.autoOpen?this.Zs.autoOpen:"string"==typeof this.Zs.autoOpen?parseInt(this.Zs.autoOpen,10):0}wh(){return this.hh.children[0]?.element??null}ve(){let t=document.activeElement;if(!t||!["A","LI","SPAN"].includes(t.tagName))return null;let e=this.getNode(t);return e?.tree===this.hh?e:null}I(t){let e=this.getNode(t);return e?this.k(e):null}k(t){return t.isFolder()?this.ah(t):this.Nh(t)}Xi(){return this.eh.Xi()}nh=()=>{let t=this.ve();t&&t!==this.zs&&(this.zs=t,this.Ps())};bh(){return this.getSelectedNodes().some(t=>Boolean(t.element))}oh(){this.Zs.data?this.loadData(this.Zs.data):this.mh()?this.loadDataFromUrl():this.loadData([])}_h(t){let e=()=>{this.Js||(this.Js=!0,this.o("tree.init"))},i=this.ve();this.hh=new this.Zs.nodeClass(null,!0,this.Zs.nodeClass),this.sh.ft(),this.hh.loadFromData(t);let s=this.Zi();this.j(null),i&&this.yh(i),s?this.hs().then(e):e()}async gh(t,e){t.is_loading=!0,await this.loadDataFromUrl(void 0,t),t.load_on_demand?t.is_loading=!1:await this.openNode(t,e)}uh(t,e){e.loadFromData(t),e.load_on_demand=!1,e.is_loading=!1,this.j(e)}Z(t){return!!this.Zs.dragAndDrop&&this.Xs.Z(t)}it(t){if(!this.Zs.dragAndDrop)return!1;let e=this.Xs.it(t);return this.ih.ks(t),e}ut(t){return!!this.Zs.dragAndDrop&&this.Xs.ut(t)}ct(t){this.Zs.dragAndDrop&&(this.ih.ws(),this.Xs.ct(t))}Hs(t){let e=t.parent;e?.parent&&!e.is_open&&this.openNode(e,!1)}j(t){let e=this.ve();this.th.Wt(t),e&&this.yh(e),this.Ps(),this.o("tree.refresh")}yh(t){if(this.kt.contains(document.activeElement))return;let e=((null==t.id?null:this.getNodeById(t.id))??t).element;e&&this.kt.contains(e)&&e.focus()}zi(){this.eh.zi()}Zi(){let[t,e]=(()=>{let t=this.eh.Gi();return t?[!0,this.eh.Zi(t)]:[!1,!1]})();return t||(e=(()=>{if(!1===this.Zs.autoOpen)return!1;let t=this.Sh(),e=!1;return this.hh.iterate((i,s)=>i.load_on_demand?(e=!0,!1):!!i.hasChildren()&&(i.is_open=!0,s!==t)),e})()),e}async hs(){let t=this.eh.Gi();t?await this.eh.hs(t):await this.ph()}re(t){let e=this.ve();this.Ws.re(t),this.th.re(t),t?this.kt.addEventListener("focusin",this.nh):this.kt.removeEventListener("focusin",this.nh),this.zs=t?e:null,this.Gs=null,this.j(null)}Ot(t,e){this.Qs.set(t,e)}o(t,e){return this.rh(this.kt,t,e)}Ps(){let t,e=this.Zs.tabIndex,i=this.Zs.multiSelect,s=this.Gs;t=null==e?null:i?this.Ne()?.element??this.wh():this.bh()?null:this.wh(),s&&s!==t&&(i||"true"!==s.getAttribute("aria-selected"))&&s.setAttribute("tabindex","-1"),t&&null!=e&&t.setAttribute("tabindex",String(e)),this.Gs=t}}}();
21
21
  //# sourceMappingURL=tree_element.js.map