tree-element 0.1.1 → 0.3.0

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 (155) hide show
  1. package/README.md +43 -31
  2. package/lib/animation.d.ts +2 -2
  3. package/lib/animation.d.ts.map +1 -1
  4. package/lib/animation.js +16 -12
  5. package/lib/animation.js.map +1 -1
  6. package/lib/classNames.d.ts.map +1 -1
  7. package/lib/classNames.js +2 -2
  8. package/lib/classNames.js.map +1 -1
  9. package/lib/dataLoader.d.ts +1 -0
  10. package/lib/dataLoader.d.ts.map +1 -1
  11. package/lib/dataLoader.js +22 -20
  12. package/lib/dataLoader.js.map +1 -1
  13. package/lib/dragAndDropHandler/binarySearch.js +3 -3
  14. package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
  15. package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
  16. package/lib/dragAndDropHandler/dragElement.js +11 -13
  17. package/lib/dragAndDropHandler/dragElement.js.map +1 -1
  18. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
  19. package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
  20. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
  21. package/lib/dragAndDropHandler/index.d.ts.map +1 -1
  22. package/lib/dragAndDropHandler/index.js +125 -158
  23. package/lib/dragAndDropHandler/index.js.map +1 -1
  24. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
  25. package/lib/dragAndDropHandler/iterateVisibleNodes.js +23 -22
  26. package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
  27. package/lib/dragAndDropHandler/types.d.ts.map +1 -1
  28. package/lib/elementsRenderer.d.ts +20 -7
  29. package/lib/elementsRenderer.d.ts.map +1 -1
  30. package/lib/elementsRenderer.js +195 -136
  31. package/lib/elementsRenderer.js.map +1 -1
  32. package/lib/events.d.ts +44 -11
  33. package/lib/events.d.ts.map +1 -1
  34. package/lib/index.d.ts +36 -13
  35. package/lib/index.d.ts.map +1 -1
  36. package/lib/index.js +386 -349
  37. package/lib/index.js.map +1 -1
  38. package/lib/keyHandler.d.ts +13 -8
  39. package/lib/keyHandler.d.ts.map +1 -1
  40. package/lib/keyHandler.js +106 -51
  41. package/lib/keyHandler.js.map +1 -1
  42. package/lib/methodTypes.d.ts +3 -3
  43. package/lib/methodTypes.d.ts.map +1 -1
  44. package/lib/mouseHandler.d.ts +1 -1
  45. package/lib/mouseHandler.d.ts.map +1 -1
  46. package/lib/mouseHandler.js +36 -49
  47. package/lib/mouseHandler.js.map +1 -1
  48. package/lib/mouseUtils.d.ts.map +1 -1
  49. package/lib/mouseUtils.js +2 -2
  50. package/lib/mouseUtils.js.map +1 -1
  51. package/lib/node.d.ts +47 -16
  52. package/lib/node.d.ts.map +1 -1
  53. package/lib/node.js +169 -171
  54. package/lib/node.js.map +1 -1
  55. package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
  56. package/lib/nodeElement/borderDropHint.js +4 -5
  57. package/lib/nodeElement/borderDropHint.js.map +1 -1
  58. package/lib/nodeElement/folderElement.d.ts +8 -5
  59. package/lib/nodeElement/folderElement.d.ts.map +1 -1
  60. package/lib/nodeElement/folderElement.js +75 -67
  61. package/lib/nodeElement/folderElement.js.map +1 -1
  62. package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
  63. package/lib/nodeElement/ghostDropHint.js +13 -13
  64. package/lib/nodeElement/ghostDropHint.js.map +1 -1
  65. package/lib/nodeElement/index.d.ts +2 -1
  66. package/lib/nodeElement/index.d.ts.map +1 -1
  67. package/lib/nodeElement/index.js +38 -30
  68. package/lib/nodeElement/index.js.map +1 -1
  69. package/lib/nodeUtils.d.ts.map +1 -1
  70. package/lib/nodeUtils.js +1 -1
  71. package/lib/nodeUtils.js.map +1 -1
  72. package/lib/options.d.ts +19 -3
  73. package/lib/options.d.ts.map +1 -1
  74. package/lib/positionUtils.js +3 -3
  75. package/lib/positionUtils.js.map +1 -1
  76. package/lib/requestUrl.d.ts +1 -1
  77. package/lib/requestUrl.d.ts.map +1 -1
  78. package/lib/requestUrl.js +6 -17
  79. package/lib/requestUrl.js.map +1 -1
  80. package/lib/saveStateHandler.d.ts.map +1 -1
  81. package/lib/saveStateHandler.js +59 -89
  82. package/lib/saveStateHandler.js.map +1 -1
  83. package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
  84. package/lib/scrollHandler/containerScrollParent.js +11 -18
  85. package/lib/scrollHandler/containerScrollParent.js.map +1 -1
  86. package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
  87. package/lib/scrollHandler/createScrollParent.js +12 -13
  88. package/lib/scrollHandler/createScrollParent.js.map +1 -1
  89. package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
  90. package/lib/scrollHandler/documentScrollParent.js +18 -27
  91. package/lib/scrollHandler/documentScrollParent.js.map +1 -1
  92. package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
  93. package/lib/scrollHandler/scrollParent.js +30 -34
  94. package/lib/scrollHandler/scrollParent.js.map +1 -1
  95. package/lib/scrollHandler.d.ts.map +1 -1
  96. package/lib/scrollHandler.js +11 -14
  97. package/lib/scrollHandler.js.map +1 -1
  98. package/lib/selectNodeHandler.d.ts +4 -2
  99. package/lib/selectNodeHandler.d.ts.map +1 -1
  100. package/lib/selectNodeHandler.js +64 -83
  101. package/lib/selectNodeHandler.js.map +1 -1
  102. package/lib/setDefaultOptions.d.ts.map +1 -1
  103. package/lib/setDefaultOptions.js +34 -38
  104. package/lib/setDefaultOptions.js.map +1 -1
  105. package/lib/triggerCustomEvent.d.ts.map +1 -1
  106. package/lib/triggerCustomEvent.js +2 -2
  107. package/lib/triggerCustomEvent.js.map +1 -1
  108. package/lib/util.d.ts.map +1 -1
  109. package/lib/util.js +2 -2
  110. package/lib/util.js.map +1 -1
  111. package/lib/version.d.ts +1 -1
  112. package/lib/version.js +1 -1
  113. package/lib/version.js.map +1 -1
  114. package/package.json +43 -32
  115. package/src/animation.ts +14 -12
  116. package/src/classNames.ts +52 -52
  117. package/src/dataLoader.ts +79 -71
  118. package/src/dragAndDropHandler/binarySearch.ts +17 -17
  119. package/src/dragAndDropHandler/dragElement.ts +51 -50
  120. package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
  121. package/src/dragAndDropHandler/index.ts +334 -348
  122. package/src/dragAndDropHandler/iterateVisibleNodes.ts +61 -63
  123. package/src/dragAndDropHandler/types.ts +5 -5
  124. package/src/elementsRenderer.ts +377 -294
  125. package/src/events.ts +241 -208
  126. package/src/header.txt +1 -1
  127. package/src/index.ts +259 -229
  128. package/src/keyHandler.ts +179 -115
  129. package/src/methodTypes.ts +7 -10
  130. package/src/mouseHandler.ts +316 -316
  131. package/src/mouseUtils.ts +14 -14
  132. package/src/node.ts +773 -771
  133. package/src/nodeElement/borderDropHint.ts +25 -25
  134. package/src/nodeElement/folderElement.ts +116 -102
  135. package/src/nodeElement/ghostDropHint.ts +64 -62
  136. package/src/nodeElement/index.ts +81 -73
  137. package/src/nodeUtils.ts +5 -5
  138. package/src/options.ts +25 -5
  139. package/src/requestUrl.ts +7 -14
  140. package/src/saveStateHandler.ts +191 -207
  141. package/src/scrollHandler/containerScrollParent.ts +40 -49
  142. package/src/scrollHandler/createScrollParent.ts +26 -27
  143. package/src/scrollHandler/documentScrollParent.ts +66 -72
  144. package/src/scrollHandler/scrollParent.ts +90 -86
  145. package/src/scrollHandler.ts +45 -45
  146. package/src/selectNodeHandler.ts +171 -165
  147. package/src/setDefaultOptions.ts +44 -32
  148. package/src/triggerCustomEvent.ts +7 -3
  149. package/src/util.ts +2 -3
  150. package/src/version.ts +1 -1
  151. package/tree_element.css +87 -69
  152. package/tree_element.debug.js +3866 -3831
  153. package/tree_element.debug.js.map +1 -1
  154. package/tree_element.js +2 -2
  155. package/tree_element.js.map +1 -1
package/tree_element.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- Html-tree 0.1.1
2
+ Tree-element 0.3.0
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{t;i;o;h;l;u;constructor({classNames:t,dataFilter:e,loadData:s,treeElement:i,triggerEvent:o}){this.t=new AbortController,this.i=t,this.o=e,this.h=s,this.l=i,this.u=o}deinit(){this.t.abort()}async loadFromUrl(t,e){const s=e?.element??this.l;s.classList.add(this.i.loading),this.u("tree.loading_data",{element:s,node:e});const i=()=>{s.classList.remove(this.i.loading),this.u("tree.loaded_data",{element:s,node:e})},o=this.t.signal;return t.setSearchParam("_",Date.now().toString()),fetch(t.toString(),{headers:{"Content-Type":"application/json"},signal:o}).then(async t=>{if(t.ok){const s=await t.json();i(),this.h(this.o?this.o(s):s,e)}else i(),this.u("tree.load_failed",{response:t})}).catch(t=>{this.t.signal.aborted||(i(),this.u("tree.load_failed",{error:t}))})}}const e=t=>s(t).top,s=t=>{const e=t.getBoundingClientRect();return{left:e.x+window.scrollX,top:e.y+window.scrollY}};class i{m;_;p;constructor({autoEscape:t,classNames:e,nodeName:s,offsetX:i,offsetY:o,treeElement:n}){this._=i,this.p=o,this.m=this.v(s,t,e),n.appendChild(this.m)}move(t,e){this.m.style.left=t-this._+"px",this.m.style.top=e-this.p+"px"}remove(){this.m.remove()}v(t,e,s){const i=document.createElement("span");return i.classList.add(s.title,s.dragging),e?i.textContent=t:i.innerHTML=t,i.style.position="absolute",i}}const o=(t,e,s,i)=>{const o=Math.min(e.length,4),n=Math.round((i-s)/o);let r=s;for(let s=0;s<o;s++){const i=e[s];i.position&&t.push({bottom:r+n,node:i.node,position:i.position,top:r}),r+=n}},n=(t,s,i)=>((t,e)=>{if(!t.length)return[];let s=t[0].top,i=[];const n=[];for(const e of t)e.top!==s&&i.length&&(o(n,i,s,e.top),s=e.top,i=[]),i.push(e);return o(n,i,s,e),n})(((t,s)=>{const i=[];let o=0;const n=(t,e,s)=>{i.push({node:t,position:e,top:s}),o=s};return((t,{handleAfterOpenFolder:e,handleClosedFolder:s,handleFirstNode:i,handleNode:o,handleOpenFolder:n})=>{let r=!0;const h=(t,l)=>{let a=(!0===t.is_open||!t.element)&&t.hasChildren(),c=null;if(t.element?.offsetParent&&(c=t.element,r&&(i(t),r=!1),t.hasChildren()?t.is_open?n(t,t.element)||(a=!1):s(t,l,c):o(t,l,t.element)),a){const s=t.children.length;t.children.forEach((e,i)=>{const o=t.children[i];if(o)if(i===s-1)h(o,null);else{const e=t.children[i+1];e&&h(o,e)}}),t.is_open&&c&&e(t,l)}};h(t,null)})(t,{handleAfterOpenFolder:(t,e)=>{n(t,t===s||e===s?null:"after",o)},handleClosedFolder:(t,i,o)=>{const r=e(o);t===s?n(t,null,r):(n(t,"inside",r),i!==s&&n(t,"after",r))},handleFirstNode:t=>{t!==s&&t.element&&n(t,"before",e(t.element))},handleNode:(t,i,o)=>{const r=e(o);n(t,t===s?null:"inside",r),n(t,i===s||t===s?null:"after",r)},handleOpenFolder:(t,i)=>{if(t===s){const s=e(i),o=i.clientHeight;return n(t,null,s),o>5&&n(t,null,s+o-5),!1}return t.children[0]!==s&&n(t,"inside",e(i)),!0}}),i})(t,s),i);class r{currentItem;hitAreas;hoveredArea;isDragging;S;i;N;D;F;C;M;T;I;$;A;k;H;L;B;P;O;U;l;u;constructor({autoEscape:t,classNames:e,getNodeElement:s,getNodeElementForNode:i,getScrollLeft:o,getTree:n,onCanMove:r,onCanMoveTo:h,onDragMove:l,onDragStop:a,onIsMoveHandle:c,openFolderDelay:d,openNode:u,refreshElements:m,slide:g,treeElement:_,triggerEvent:f}){this.S=t,this.i=e,this.D=s,this.F=i,this.C=o,this.M=n,this.T=r,this.I=h,this.$=l,this.A=a,this.k=c,this.H=d,this.B=u,this.O=m,this.U=g,this.l=_,this.u=f,this.hoveredArea=null,this.hitAreas=[],this.isDragging=!1,this.currentItem=null,this.N=null,this.L=null,this.P=null}mouseCapture(t){const e=t.target;if(!this.R(e))return null;if(this.k&&!this.k(e))return null;let s=this.D(e);return s&&this.T&&(this.T(s.node)||(s=null)),this.currentItem=s,null!=this.currentItem}mouseDrag(t){if(!this.currentItem||!this.N)return!1;this.N.move(t.pageX,t.pageY);const e=this.V(t.pageX,t.pageY);return e&&this.Y(e,this.currentItem)?(e.node.isFolder()||this.j(),this.hoveredArea!==e&&(this.hoveredArea=e,this.G(e)?this.X(e.node):this.j(),this.J())):(this.K(),this.j(),this.hoveredArea=e),e||this.$&&this.$(this.currentItem.node,t.originalEvent),!0}mouseStart(t){if(!this.currentItem)return!1;this.refresh();const{left:e,top:o}=s(t.target),n=this.currentItem.node;return this.N=new i({autoEscape:this.S??!0,classNames:this.i,nodeName:n.name,offsetX:t.pageX-e,offsetY:t.pageY-o,treeElement:this.l}),this.isDragging=!0,this.currentItem.element.classList.add(this.i.moving),!0}mouseStop(t){this.W(t),this.q(),this.Z(),this.K(),this.tt();const e=this.currentItem;return this.currentItem&&(this.currentItem.element.classList.remove(this.i.moving),this.currentItem=null),this.isDragging=!1,!this.hoveredArea&&e&&this.A&&this.A(e.node,t.originalEvent),!1}refresh(){if(this.tt(),this.currentItem){const t=this.currentItem.node;this.et(t),this.currentItem=this.F(t),this.isDragging&&this.currentItem.element.classList.add(this.i.moving)}}Y(t,e){return!this.I||this.I(e.node,t.node,t.position)}q(){this.N&&(this.N.remove(),this.N=null)}V(t,e){const s=this.st();return t<s.left||e<s.top||t>s.right||e>s.bottom?null:function(t,e){let s=0,i=t.length;for(;s<i;){const o=s+i>>1,n=t[o];if(void 0===n)return null;const r=e(n);if(r>0)i=o;else{if(!(r<0))return n;s=o+1}}return null}(this.hitAreas,t=>e<t.top?1:e>t.bottom?-1:0)}et(t){const e=this.M();this.hitAreas=e?n(e,t,this.st().bottom):[]}st(){const t=s(this.l),e=t.left+this.C(),i=t.top;return{bottom:i+this.l.clientHeight+16,left:e,right:e+this.l.clientWidth,top:i}}W(t){if(this.currentItem&&this.hoveredArea?.position&&this.Y(this.hoveredArea,this.currentItem)){const e=this.currentItem.node,s=this.hoveredArea.node,i=this.hoveredArea.position,o=e.parent;"inside"===i&&(this.hoveredArea.node.is_open=!0);const n=()=>{const t=this.M();t&&(t.moveNode(e,s,i),this.l.textContent="",this.O(null))};this.u("tree.move",{moveInfo:{doMove:n,movedNode:e,originalEvent:t.originalEvent,position:i,previousParent:o,targetNode:s}})&&n()}}R(t){const e=t.nodeName;return"INPUT"!==e&&"SELECT"!==e&&"TEXTAREA"!==e}G(t){const e=t.node;return e.isFolder()&&!e.is_open&&"inside"===t.position}K(){this.P&&this.P.remove()}tt(){this.hitAreas=[]}Z(){this.hoveredArea=null}X(t){const e=()=>{this.B(t,this.U).then(()=>{this.refresh(),this.J()})};this.j();const s=this.H;!1!==s&&(this.L=window.setTimeout(e,s))}j(){this.L&&(clearTimeout(this.L),this.L=null)}J(){if(!this.hoveredArea)return;this.K();const t=this.F(this.hoveredArea.node);this.P=t.addDropHint(this.hoveredArea.position)}}const h=t=>t?"true":"false";class l{closedIconElement;openedIconElement;S;it;i;ot;M;nt;rt;ht;lt;ct;dt;ut;constructor({autoEscape:t,buttonLeft:e,classNames:s,closedIcon:i,dragAndDrop:o,getTree:n,htmlElement:r,isNodeSelected:h,onCreateLi:l,openedIcon:a,rtl:c,setNodeElement:d,showEmptyFolder:u,tabIndex:m}){this.S=t,this.it=e,this.i=s,this.ot=o,this.M=n,this.nt=r,this.rt=h,this.ht=l,this.lt=c,this.ct=d,this.dt=u,this.ut=m,this.openedIconElement=this.gt(a??"+"),this.closedIconElement=this.gt(i??"-")}render(t){t?.parent?this.renderFromNode(t):this.renderFromRoot()}renderFromNode(t){if(!t.element)return;const e=t.element,s=this._t(t,t.getLevel());e.replaceWith(s),this.ft(s,t.children,!1,t.getLevel()+1)}renderFromRoot(){this.nt.textContent="";const t=this.M();t&&this.ft(this.nt,t.children,!0,1)}vt(t,e){t.element=e,this.ct(e,t)}gt(t){if("string"==typeof t){const e=document.createElement("div");return e.innerHTML=t,document.createTextNode(e.innerHTML)}return t.nodeType?t:void 0}ft(t,e,s,i){const o=this.St(s);t.appendChild(o);for(const t of e){const e=this._t(t,i);o.appendChild(e),t.hasChildren()&&this.ft(e,t.children,!1,i+1)}}Nt(t,e,s){const i=this.Et(t),o=this.wt(t,s),n=t.is_open?this.openedIconElement:this.closedIconElement,r=document.createElement("li");r.className=`${this.i.common} ${o}`,r.setAttribute("role","none");const l=document.createElement("div");l.className=`${this.i.element} ${this.i.common}`,l.setAttribute("role","none"),r.appendChild(l);const a=document.createElement("a");a.className=i,n&&a.appendChild(n.cloneNode(!0)),this.it&&l.appendChild(a);const c=this.bt(t.name,s,!0,e);return c.setAttribute("aria-expanded",h(t.is_open)),l.appendChild(c),this.it||l.appendChild(a),r}_t(t,e){const s=this.rt(t),i=t.isFolder()||t.isEmptyFolder&&this.dt?this.Nt(t,e,s):this.yt(t,e,s);return this.vt(t,i),this.ht&&this.ht(t,i,s),i}yt(t,e,s){const i=[this.i.common];s&&i.push(this.i.selected);const o=i.join(" "),n=document.createElement("li");n.className=o,n.setAttribute("role","none");const r=document.createElement("div");r.className=`${this.i.element} ${this.i.common}`,r.setAttribute("role","none"),n.appendChild(r);const h=this.bt(t.name,s,!1,e);return r.appendChild(h),n}bt(t,e,s,i){const o=document.createElement("span");let n=`${this.i.title} ${this.i.common}`;if(s&&(n+=` ${this.i.titleFolder}`),n+=` ${this.it?this.i.titleButtonLeft:this.i.titleButtonRight}`,o.className=n,e){const t=this.ut;void 0!==t&&o.setAttribute("tabindex",`${t}`)}return this.Dt(o,t,i,e),this.S?o.textContent=t:o.innerHTML=t,o}St(t){let e,s;t?(e=this.i.tree,s="tree",this.lt&&(e+=` ${this.i.rtl}`)):(e="",s="group"),this.ot&&(e+=` ${this.i.dnd}`);const i=document.createElement("ul");return i.className=`${this.i.common} ${e}`,i.setAttribute("role",s),i}Et(t){const e=[this.i.toggler,this.i.common];return t.is_open||e.push(this.i.closed),this.it?e.push(this.i.togglerLeft):e.push(this.i.togglerRight),e.join(" ")}wt(t,e){const s=[this.i.folder];return t.is_open||s.push(this.i.closed),e&&s.push(this.i.selected),t.is_loading&&s.push(this.i.loading),s.join(" ")}Dt(t,e,s,i){t.setAttribute("aria-label",e),t.setAttribute("aria-level",`${s}`),t.setAttribute("aria-selected",h(i)),t.setAttribute("role","treeitem")}}class a{Ft;Ct;Mt;Tt;B;It;constructor({closeNode:t,getSelectedNode:e,isFocusOnTree:s,keyboardSupport:i,openNode:o,selectNode:n}){this.Ft=t,this.Ct=e,this.Mt=s,this.Tt=i,this.B=o,this.It=n,i&&document.addEventListener("keydown",this.$t)}deinit(){this.Tt&&document.removeEventListener("keydown",this.$t)}moveDown(t){return this.xt(t.getNextVisibleNode())}moveUp(t){return this.xt(t.getPreviousVisibleNode())}At(){return this.Tt&&this.Mt()}$t=t=>{if(!this.At())return;let e=!1;const s=this.Ct();if(s)switch(t.key){case"ArrowDown":e=this.moveDown(s);break;case"ArrowLeft":e=this.kt(s);break;case"ArrowRight":e=this.Ht(s);break;case"ArrowUp":e=this.moveUp(s)}e&&t.preventDefault()};kt(t){return t.isFolder()&&t.is_open?(this.Ft(t),!0):this.xt(t.getParent())}Ht(t){return!!t.isFolder()&&(t.is_open?this.xt(t.getNextVisibleNode()):(this.B(t),!0))}xt(t){return!!t&&(this.It(t),!0)}}const c=t=>({originalEvent:t,pageX:t.pageX,pageY:t.pageY,target:t.target}),d=(t,e)=>({originalEvent:e,pageX:t.pageX,pageY:t.pageY,target:t.target});class u{i;m;Lt;Bt;Pt;Ot;Ut;Rt;zt;Vt;Yt;jt;Gt;Xt;u;Jt;constructor({classNames:t,element:e,getMouseDelay:s,getNode:i,onClickButton:o,onClickTitle:n,onMouseCapture:r,onMouseDrag:h,onMouseStart:l,onMouseStop:a,triggerEvent:c,useContextMenu:d}){this.i=t,this.m=e,this.Lt=s,this.Bt=i,this.zt=o,this.Vt=n,this.Yt=r,this.jt=h,this.Gt=l,this.Xt=a,this.u=c,this.Jt=d,e.addEventListener("click",this.Kt),e.addEventListener("dblclick",this.Wt),e.addEventListener("mousedown",this.qt,{passive:!1}),e.addEventListener("touchstart",this.Qt,{passive:!1}),d&&e.addEventListener("contextmenu",this.Zt),this.Ot=!1,this.Ut=null,this.Pt=!1,this.Rt=null}deinit(){this.m.removeEventListener("click",this.Kt),this.m.removeEventListener("dblclick",this.Wt),this.Jt&&this.m.removeEventListener("contextmenu",this.Zt),this.m.removeEventListener("mousedown",this.qt),this.m.removeEventListener("touchstart",this.Qt),this.te()}ee(t){const e=t.closest(`.${this.i.toggler}`);if(e){const t=this.Bt(e);if(t)return{node:t,type:"button"}}else{const e=t.closest(`.${this.i.element}`);if(e){const t=this.Bt(e);if(t)return{node:t,type:"label"}}}return null}Kt=t=>{if(!t.target)return;const e=this.ee(t.target);if(e)switch(e.type){case"button":this.zt(e.node),t.preventDefault(),t.stopPropagation();break;case"label":this.u("tree.click",{node:e.node,originalEvent:t})&&this.Vt(e.node)}};Zt=t=>{if(!t.target)return;const e=t.target.closest(`ul.${this.i.tree} .${this.i.element}`);if(e){const s=this.Bt(e);if(s)return t.preventDefault(),t.stopPropagation(),this.u("tree.contextmenu",{node:s,originalEvent:t}),!1}return null};Wt=t=>{if(!t.target)return;const e=this.ee(t.target);"label"===e?.type&&this.u("tree.dblclick",{node:e.node,originalEvent:t})};se(t){return this.Ot&&this.ie(t),this.Rt=t,!!this.Yt(t)&&(this.oe(),!0)}ne(t,e){if(this.Ot)return this.jt(e),void(t.cancelable&&t.preventDefault());this.Pt&&(this.Rt&&(this.Ot=this.Gt(this.Rt)),this.Ot?(this.jt(e),t.cancelable&&t.preventDefault()):this.ie(e))}ie(t){this.te(),this.Pt=!1,this.Rt=null,this.Ot&&(this.Ot=!1,this.Xt(t))}oe(){document.addEventListener("mousemove",this.re,{passive:!1}),document.addEventListener("touchmove",this.he,{passive:!1}),document.addEventListener("mouseup",this.le,{passive:!1}),document.addEventListener("touchend",this.ae,{passive:!1});const t=this.Lt();t?this.ce(t):this.Pt=!0}qt=t=>{if(0!==t.button)return;this.se(c(t))&&t.cancelable&&t.preventDefault()};re=t=>{this.ne(t,c(t))};le=t=>{this.ie(c(t))};te(){document.removeEventListener("mousemove",this.re),document.removeEventListener("touchmove",this.he),document.removeEventListener("mouseup",this.le),document.removeEventListener("touchend",this.ae)}ce(t){this.Ut&&clearTimeout(this.Ut),this.Ut=window.setTimeout(()=>{this.Rt&&(this.Pt=!0)},t),this.Pt=!1}ae=t=>{if(t.touches.length>1)return;const e=t.touches[0];e&&this.ie(d(e,t))};he=t=>{if(t.touches.length>1)return;const e=t.touches[0];e&&this.ne(t,d(e,t))};Qt=t=>{if(t.touches.length>1)return;const e=t.touches[0];e&&this.se(d(e,t))}}const m=t=>"object"==typeof t&&"children"in t&&t.children instanceof Array;class g{children;element;id;idMapping;is_loading;is_open;isEmptyFolder;load_on_demand;name;nodeClass;parent;tree;constructor(t=null,e=!1,s=g){this.name="",this.load_on_demand=!1,this.isEmptyFolder=null!=t&&m(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=s):this.idMapping=void 0}addAfter(t){if(this.parent){const e=this.de(t),s=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(e,s+1),e.ue(t),e}return null}addBefore(t){if(this.parent){const e=this.de(t),s=this.parent.getChildIndex(this);return this.parent.addChildAtPosition(e,s),e.ue(t),e}return null}addChild(t){this.children.push(t),t.me(this)}addChildAtPosition(t,e){this.children.splice(e,0,t),t.me(this)}addNodeToIndex(t){null!=t.id&&this.idMapping?.set(t.id,t)}addParent(t){if(this.parent){const e=this.de(t);this.tree&&e.me(this.tree);const s=this.parent;for(const t of s.children)e.addChild(t);return s.children=[],s.addChild(e),e}return null}append(t){const e=this.de(t);return this.addChild(e),e.ue(t),e}filter(t){const e=[];return this.iterate(s=>(t(s)&&e.push(s),!0)),e}getChildIndex(t){return this.children.indexOf(t)}getData(t=!1){const e=t=>t.map(t=>{const s={};for(const e in t)if(-1===["parent","children","element","idMapping","load_on_demand","nodeClass","tree","isEmptyFolder"].indexOf(e)&&Object.prototype.hasOwnProperty.call(t,e)){const i=t[e];s[e]=i}return t.hasChildren()&&(s.children=e(t.children)),s});return e(t?[this]:this.children)}getLastChild(){if(this.hasChildren()){const 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){if(t&&this.hasChildren())return this.children[0]??null;if(this.parent){const t=this.getNextSibling();return t||this.parent.getNextNode(!1)}return null}getNextSibling(){if(this.parent){const t=this.parent.getChildIndex(this)+1;return t<this.parent.children.length?this.parent.children[t]??null:null}return null}getNextVisibleNode(){if(this.hasChildren()&&this.is_open)return this.children[0]??null;if(this.parent){const t=this.getNextSibling();return t||this.parent.getNextNode(!1)}return null}getNodeByCallback(t){let e=null;return this.iterate(s=>!e&&(!t(s)||(e=s,!1))),e}getNodeById(t){return this.idMapping?.get(t)??null}getNodeByName(t){return this.getNodeByCallback(e=>e.name===t)}getNodeByNameMustExist(t){const 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(s=>s[t]===e)}getParent(){return this.parent&&this.parent.parent?this.parent:null}getPreviousNode(){if(this.parent){const t=this.getPreviousSibling();return t?t.hasChildren()?t.getLastChild():t:this.getParent()}return null}getPreviousSibling(){if(this.parent){const t=this.parent.getChildIndex(this)-1;return t>=0?this.parent.children[t]??null:null}return null}getPreviousVisibleNode(){if(this.parent){const 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){const e=t=>{for(const e of t){const t=this.de();t.initFromData(e),this.addChild(t)}};(t=>{this.setData(t),m(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){const e=(s,i)=>{for(const o of s.children){t(o,i)&&o.hasChildren()&&e(o,i+1)}};e(this,0)}loadFromData(t){this.removeChildren();for(const e of t){const t=this.de(e);this.addChild(t),m(e)&&t.loadFromData(e.children)}return this}moveNode(t,e,s){if(!t.parent||t.isParentOf(e))return!1;switch(t.parent.ge(t),s){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){const e=this.de(t);return this.addChildAtPosition(e,0),e.ue(t),e}remove(){this.parent&&(this.parent.removeChild(this),this.parent=null)}removeChild(t){t.removeChildren(),this.ge(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(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)){const s=t[e];"label"===e||"name"===e?"string"==typeof s&&(this.name=s):"children"!==e&&"parent"!==e&&(this[e]=s)}}de(t){return new(this._e())(t)}ge(t){this.children.splice(this.getChildIndex(t),1),this.tree?.removeNodeFromIndex(t)}_e(){return this.nodeClass??this.tree?.nodeClass??g}ue(t){m(t)&&t.children.length&&this.loadFromData(t.children)}me(t){this.parent=t,this.tree=t.tree,this.tree?.addNodeToIndex(this)}}class _{fe;constructor(t,e,s){const i=t.querySelector(`:scope > .${s.element}`);if(!i)return void(this.fe=void 0);const o=Math.max(t.offsetWidth+e-4,0),n=Math.max(t.clientHeight-4,0),r=document.createElement("span");r.className=s.border,r.style.width=`${o}px`,r.style.height=`${n}px`,this.fe=r,i.append(this.fe)}remove(){this.fe?.remove()}}class f{i;m;pe;ve;constructor(t,e,s,i){switch(this.i=i,this.m=e,this.ve=t,this.pe=this.Se(),s){case"after":this.Ne();break;case"before":this.Ee();break;case"inside":t.isFolder()&&t.is_open?this.we():this.be()}}remove(){this.pe.remove()}Se(){const{circle:t,common:e,ghost:s,line:i}=this.i,o=document.createElement("li");o.className=`${e} ${s}`;const n=document.createElement("span");n.className=`${e} ${t}`,o.append(n);const r=document.createElement("span");return r.className=`${e} ${i}`,o.append(r),o}Ne(){this.m.after(this.pe)}Ee(){this.m.before(this.pe)}be(){this.m.after(this.pe),this.pe.classList.add(this.i.inside)}we(){const t=this.ve.children[0]?.element;t&&t.before(this.pe)}}class p{element;node;i;C;ut;l;constructor({classNames:t,getScrollLeft:e,node:s,tabIndex:i,treeElement:o}){this.i=t,this.C=e,this.node=s,this.ut=i,this.l=o,s.element??=this.l,this.element=s.element}addDropHint(t){return this.ye(t)?new _(this.element,this.C(),this.i):new f(this.node,this.element,t,this.i)}deselect(){this.element.classList.remove(this.i.selected);const t=this.De();t.removeAttribute("tabindex"),t.setAttribute("aria-selected","false"),t.blur()}select(t){this.element.classList.add(this.i.selected);const e=this.De(),s=this.ut;null!=s&&e.setAttribute("tabindex",s.toString()),e.setAttribute("aria-selected","true"),t&&e.focus()}De(){return this.element.querySelector(`:scope > .${this.i.element} > span.${this.i.title}`)}Fe(){return this.element.querySelector(":scope > ul")}ye(t){return"inside"===t}}const v=t=>"number"==typeof t?t:"slow"===t?600:200;class S extends p{Ce;Me;u;constructor({classNames:t,closedIconElement:e,getScrollLeft:s,node:i,openedIconElement:o,tabIndex:n,treeElement:r,triggerEvent:h}){super({classNames:t,getScrollLeft:s,node:i,tabIndex:n,treeElement:r}),this.Ce=e,this.Me=o,this.u=h}close(t,e){if(!this.node.is_open)return;this.node.is_open=!1;const s=this.Te();s.classList.add(this.i.closed),s.innerHTML="";const i=this.Ce;if(i){const t=i.cloneNode(!0);s.appendChild(t)}const o=()=>{this.element.classList.add(this.i.closed);this.De().setAttribute("aria-expanded","false"),this.u("tree.close",{node:this.node})},n=this.Fe();t?((t,e,s)=>{t.animate([{height:`${t.scrollHeight}px`,overflow:"hidden"},{height:"0",overflow:"hidden"}],{duration:v(e)}).onfinish=()=>{t.style.display="none",s()}})(n,e,o):(n.style.display="none",o())}async open(t,e){return new Promise(s=>{if(this.node.is_open)return void s();this.node.is_open=!0;const i=this.Te();i.classList.remove(this.i.closed),i.innerHTML="";const o=this.Me;if(o){const t=o.cloneNode(!0);i.appendChild(t)}const n=()=>{this.element.classList.remove(this.i.closed);this.De().setAttribute("aria-expanded","true"),this.u("tree.open",{node:this.node}),s()},r=this.Fe();t?((t,e,s)=>{t.style.display="block",t.animate([{height:"0",overflow:"hidden"},{height:`${t.scrollHeight}px`,overflow:"hidden"}],{duration:v(e)}).onfinish=()=>{s()}})(r,e,n):(r.style.display="block",n())})}ye(t){return!this.node.is_open&&"inside"===t}Te(){return this.element.querySelector(`:scope > .${this.i.element} > a.${this.i.toggler}`)}}const N="http://localhost";class E{Ie;$e;constructor(t){(t=>{try{return new URL(t),!0}catch{return!1}})(t)?(this.$e=new URL(t),this.Ie=!0):(this.$e=new URL(t,N),this.Ie=!1)}setSearchParam(t,e){this.$e.searchParams.set(t,e)}toString(){return this.Ie?this.$e.href:this.$e.href.slice(16)}}class w{xe;Ae;ke;M;He;Le;B;O;Be;Pe;constructor({addToSelection:t,getNodeById:e,getSelectedNodes:s,getTree:i,onGetStateFromStorage:o,onSetStateFromStorage:n,openNode:r,refreshElements:h,removeFromSelection:l,saveState:a}){this.xe=t,this.Ae=e,this.ke=s,this.M=i,this.He=o,this.Le=n,this.B=r,this.O=h,this.Be=l,this.Pe=a}getNodeIdToBeSelected(){if(!this.Pe)return null;const t=this.getStateFromStorage();return t?.selected_node?t.selected_node[0]??null:null}getState(){return{open_nodes:(()=>{const t=[];return this.M()?.iterate(e=>(e.is_open&&e.id&&e.hasChildren()&&t.push(e.id),!0)),t})(),selected_node:(()=>{const t=[];return this.ke().forEach(e=>{null!=e.id&&t.push(e.id)}),t})()}}getStateFromStorage(){if(!this.Pe)return null;const t=this.Oe();return t?this.Ue(t):null}saveState(){if(!this.Pe)return;const t=JSON.stringify(this.getState());this.Le?this.Le(t):localStorage.setItem(this.Re(),t)}setInitialState(t){let e=!1;return t.open_nodes&&(e=this.ze(t.open_nodes)),this.Ve(),t.selected_node&&this.Ye(t.selected_node),e}async setInitialStateOnDemand(t){let e=t.open_nodes;const s=async()=>{if(!e)return;const s=[];for(const t of e){const e=this.Ae(t);e?e.is_loading||(e.load_on_demand?await i(e):await this.B(e,!1)):s.push(t)}e=s,t.selected_node&&this.Ye(t.selected_node)&&this.O(null)},i=async t=>{await this.B(t,!1),await s()};await s()}Re(){return"string"==typeof this.Pe?this.Pe:"tree"}Oe(){return this.He?this.He():localStorage.getItem(this.Re())}ze(t){let e=!1;for(const s of t){const t=this.Ae(s);t&&(t.load_on_demand?e=!0:t.is_open=!0)}return e}Ue(t){const e=JSON.parse(t);var s;return e.selected_node&&("number"==typeof(s=e.selected_node)&&s%1==0)&&(e.selected_node=[e.selected_node]),e}Ve(){this.ke().forEach(t=>{this.Be(t)})}Ye(t){let e=0;for(const s of t){const t=this.Ae(s);t&&(e+=1,this.xe(t))}return 0!==e}}class b{je;Ge;Xe;Je;Ke;We;constructor({container:t,refreshHitAreas:e}){this.je=t,this.Je=e}checkHorizontalScrolling(t){const e=this.qe(t);this.Ge!==e&&(this.Ge=e,null!=this.Xe&&window.clearTimeout(this.Xe),e&&(this.Xe=window.setTimeout(this.Qe.bind(this),40)))}checkVerticalScrolling(t){const e=this.Ze(t);this.Ke!==e&&(this.Ke=e,null!=this.We&&(window.clearTimeout(this.We),this.We=void 0),e&&(this.We=window.setTimeout(this.ts.bind(this),40)))}getScrollLeft(){return this.je.scrollLeft}scrollToY(t){this.je.scrollTop=t}stopScrolling(){this.Ge=void 0,this.Ke=void 0}Qe(){if(!this.Ge)return;const t="left"===this.Ge?-20:20;this.je.scrollBy({behavior:"instant",left:t,top:0}),this.Je(),setTimeout(this.Qe.bind(this),40)}ts(){if(!this.Ke)return;const t="top"===this.Ke?-20:20;this.je.scrollBy({behavior:"instant",left:0,top:t}),this.Je(),setTimeout(this.ts.bind(this),40)}}class y extends b{es;ss;stopScrolling(){super.stopScrolling(),this.Ge=void 0,this.Ke=void 0}qe(t){const e=s(this.je),i=this.je.getBoundingClientRect().width,o=e.left+i,n=e.left;return t>o-20?"right":t<n+20?"left":void 0}Ze(t){return t<this.ns()?"top":t>this.rs()?"bottom":void 0}rs(){if(null==this.es){const t=this.je.getBoundingClientRect().height;this.es=this.ns()+t}return this.es}ns(){return this.ss??=e(this.je),this.ss}}class D extends b{hs;ls;l;constructor({refreshHitAreas:t,treeElement:e}){super({container:document.documentElement,refreshHitAreas:t}),this.l=e}scrollToY(t){const s=e(this.l);super.scrollToY(t+s)}stopScrolling(){super.stopScrolling(),this.hs=void 0,this.ls=void 0}qe(t){const e=t-this.je.scrollLeft<20;return t>window.innerWidth-20&&this.cs()?"right":e?"left":void 0}Ze(t){const e=this.je.scrollTop;if(t-e<20)return"top";return window.innerHeight-(t-e)<20&&this.ds()?"bottom":void 0}ds(){return this.je.scrollTop+this.je.clientHeight<this.us()}cs(){return this.je.scrollLeft+this.je.clientWidth<this.gs()}us(){return this.hs??=this.je.scrollHeight,this.hs}gs(){return this.ls??=this.je.scrollWidth,this.ls}}const F=t=>"auto"===t||"scroll"===t,C=t=>{const e=getComputedStyle(t);return F(e.overflowX)||F(e.overflowY)},M=(t,e)=>{const s=(t=>{if(C(t))return t;let e=t.parentElement;for(;e;){if(C(e))return e;e=e.parentElement}return null})(t);return s&&"HTML"!==s.tagName?new y({container:s,refreshHitAreas:e}):new D({refreshHitAreas:e,treeElement:t})};class T{Je;_s;l;constructor({refreshHitAreas:t,treeElement:e}){this.Je=t,this._s=void 0,this.l=e}checkScrolling(t){this.fs(t),this.ps(t)}getScrollLeft(){return this.vs().getScrollLeft()}scrollToY(t){this.vs().scrollToY(t)}stopScrolling(){this.vs().stopScrolling()}ps(t){this.vs().checkHorizontalScrolling(t.pageX)}fs(t){this.vs().checkVerticalScrolling(t.pageY)}vs(){return this._s??=M(this.l,this.Je),this._s}}class I{Ae;F;Ss;Ns;Es;ws;bs;ys;u;constructor({getNodeById:t,getNodeElementForNode:e,getOnCanSelectNode:s,getSelectable:i,openParents:o,saveState:n,triggerEvent:r}){this.Ae=t,this.F=e,this.Ss=s,this.Ns=i,this.Es=o,this.ws=n,this.bs=new Set,this.ys=null,this.u=r}addToSelection(t){null!=t.id?this.bs.add(t.id):this.ys=t}clear(){this.bs.clear(),this.ys=null}getSelectedNode(){const t=this.getSelectedNodes();return!!t.length&&(t[0]??!1)}getSelectedNodes(){if(this.ys)return[this.ys];{const t=[];return this.bs.forEach(e=>{const s=this.Ae(e);s&&t.push(s)}),t}}getSelectedNodesUnder(t){if(this.ys)return t.isParentOf(this.ys)?[this.ys]:[];{const e=[];return this.bs.forEach(s=>{const i=this.Ae(s);i&&t.isParentOf(i)&&e.push(i)}),e}}isNodeSelected(t){return null!=t.id?this.bs.has(t.id):!!this.ys&&this.ys.element===t.element}removeFromSelection(t,e=!1){null==t.id?this.ys&&t.element===this.ys.element&&(this.ys=null):(this.bs.delete(t.id),e&&t.iterate(()=>(null!=t.id&&this.bs.delete(t.id),!0)))}selectSingleNode(t,e){const s={mustSetFocus:!0,mustToggle:!0,...e??{}};if(!(()=>{if(!this.Ns())return!1;const e=this.Ss();return!e||e(t)})())return;const i=t=>{this.removeFromSelection(t),this.F(t).deselect()};if(this.isNodeSelected(t))s.mustToggle&&(i(t),this.u("tree.deselect",{node:t}));else{const e=this.getSelectedNode();e&&i(e),this.addToSelection(t),this.Es(t),this.F(t).select(s.mustSetFocus),this.u("tree.select",{deselectedNode:e||null,node:t})}this.ws()}}const $={animationSpeed:"fast",autoEscape:!0,autoOpen:!1,buttonLeft:!0,classPrefix:"tree-element",closedIcon:void 0,commonClassName:void 0,data:void 0,dataFilter:void 0,dataUrl:void 0,dragAndDrop:!1,keyboardSupport:!0,nodeClass:g,onCanMove:void 0,onCanMoveTo:void 0,onCanSelectNode:void 0,onCreateLi:void 0,onDragMove:void 0,onDragStop:void 0,onGetStateFromStorage:void 0,onIsMoveHandle:void 0,onSetStateFromStorage:void 0,openedIcon:void 0,openFolderDelay:500,rtl:void 0,saveState:!1,selectable:!0,showEmptyFolder:!1,slide:!0,startDndDelay:300,tabIndex:0,treeClassName:void 0,useContextMenu:!0},x=t=>t.rtl?"&#x25c0;":"&#x25ba;",A=t=>{const e=t.dataset.rtl;return""==e||"false"!==e&&Boolean(e)},k=(t,e,s)=>{const i=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:s});return t.dispatchEvent(i),!i.defaultPrevented};return class{tree;i;Ds;Fs;nt;Cs;Ms;Ts;Is;$s;xs;As;ks;Hs;Ls;constructor({htmlElement:e,overrideTriggerEventProvider:s,...i}){this.nt=e,this.$s=((t,e)=>{const s={...$,...e};return s.dataUrl??=t.dataset.url,s.rtl??=A(t),s.closedIcon??=x(s),s.openedIcon??="&#x25bc;",s})(e,i),this.i=(({classPrefix:t,commonClassName:e,treeClassName:s})=>({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:s??t}))(this.$s),this.Ls=s??k,this.Cs=!1,this.tree=new g({},!0),this.Is=new WeakMap;const{autoEscape:o,buttonLeft:n,closedIcon:h,dataFilter:c,dragAndDrop:d,keyboardSupport:m,onCanMove:_,onCanMoveTo:f,onCreateLi:p,onDragMove:v,onDragStop:S,onGetStateFromStorage:N,onIsMoveHandle:E,onSetStateFromStorage:b,openedIcon:y,openFolderDelay:D,rtl:F,saveState:C,showEmptyFolder:M,slide:H,tabIndex:L}=this.$s,B=this.i,P=this.closeNode.bind(this),O=this.D.bind(this),U=this.F.bind(this),R=this.getNodeById.bind(this),z=this.getSelectedNode.bind(this),V=this.getTree.bind(this),Y=this.Mt.bind(this),j=this.loadData.bind(this),G=this.openNode.bind(this),X=this.Es.bind(this),J=this.O.bind(this),K=this.refreshHitAreas.bind(this),W=this.ct.bind(this),q=this.nt,Q=this.u.bind(this),Z=new I({getNodeById:R,getNodeElementForNode:U,getOnCanSelectNode:()=>this.$s.onCanSelectNode,getSelectable:()=>this.$s.selectable,openParents:X,saveState:()=>{rt.saveState()},triggerEvent:Q}),tt=Z.addToSelection.bind(Z),et=Z.getSelectedNodes.bind(Z),st=Z.isNodeSelected.bind(Z),it=Z.removeFromSelection.bind(Z),ot=Z.selectSingleNode.bind(Z),nt=new t({classNames:B,dataFilter:c,loadData:j,treeElement:q,triggerEvent:Q}),rt=new w({addToSelection:tt,getNodeById:R,getSelectedNodes:et,getTree:V,onGetStateFromStorage:N,onSetStateFromStorage:b,openNode:G,refreshElements:J,removeFromSelection:it,saveState:C}),ht=new T({refreshHitAreas:K,treeElement:q}),lt=ht.getScrollLeft.bind(ht),at=new r({autoEscape:o,classNames:B,getNodeElement:O,getNodeElementForNode:U,getScrollLeft:lt,getTree:V,onCanMove:_,onCanMoveTo:f,onDragMove:v,onDragStop:S,onIsMoveHandle:E,openFolderDelay:D,openNode:G,refreshElements:J,slide:H,treeElement:q,triggerEvent:Q}),ct=new a({closeNode:P,getSelectedNode:z,isFocusOnTree:Y,keyboardSupport:m,openNode:G,selectNode:ot}),dt=new l({autoEscape:o,buttonLeft:n,classNames:B,closedIcon:h,dragAndDrop:d,getTree:V,htmlElement:q,isNodeSelected:st,onCreateLi:p,openedIcon:y,rtl:F,setNodeElement:W,showEmptyFolder:M,tabIndex:L}),ut=this.getNode.bind(this),mt=this.Bs.bind(this),gt=this.Ps.bind(this),_t=this.Os.bind(this),ft=this.Us.bind(this),pt=new u({classNames:B,element:q,getMouseDelay:()=>this.$s.startDndDelay??0,getNode:ut,onClickButton:this.toggle.bind(this),onClickTitle:ot,onMouseCapture:mt,onMouseDrag:gt,onMouseStart:_t,onMouseStop:ft,triggerEvent:Q,useContextMenu:this.$s.useContextMenu});this.Ds=nt,this.Fs=at,this.Ms=ct,this.Ts=pt,this.xs=dt,this.As=rt,this.ks=ht,this.Hs=Z,this.Rs()}addNodeAfter(t,e){const s=e.addAfter(t);return s&&this.O(e.parent),s}addNodeBefore(t,e){const s=e.addBefore(t);return s&&this.O(e.parent),s}addParentNode(t,e){const s=e.addParent(t);return s&&this.O(s.parent),s}addToSelection(t,e){this.Hs.addToSelection(t),this.Es(t),this.F(t).select(e??!0),this.ws()}appendNode(t,e){const s=e.append(t);return this.O(e),s}closeNode(t,e){(t.isFolder()||t.isEmptyFolder)&&(this.zs(t).close(e??this.$s.slide,this.$s.animationSpeed),this.ws())}deinit(){this.nt.textContent="",this.Ds.deinit(),this.Ms.deinit(),this.Ts.deinit(),this.tree=new g({},!0)}getNode(t){const e=t.closest(`li.${this.i.common}`);return e?this.Is.get(e)??null:null}getNodeByCallback(t){return this.tree.getNodeByCallback(t)}getNodeById(t){return this.tree.getNodeById(t)}getNodeByName(t){return this.tree.getNodeByName(t)}getNodeByNameMustExist(t){return this.tree.getNodeByNameMustExist(t)}getNodesByProperty(t,e){return this.tree.getNodesByProperty(t,e)}getSelectedNode(){return this.Hs.getSelectedNode()}getSelectedNodes(){return this.Hs.getSelectedNodes()}getState(){return this.As.getState()}getStateFromStorage(){return this.As.getStateFromStorage()}getTree(){return this.tree}getVersion(){return"0.1.1"}isDragging(){return this.Fs.isDragging}isNodeSelected(t){return this.Hs.isNodeSelected(t)}loadData(t,e){t&&(e?(this.Vs(e),this.Ys(t,e)):this.js(t),this.isDragging()&&this.Fs.refresh()),this.u("tree.set_data",{node:e,treeData:t??void 0})}async loadDataFromUrl(t,e){const s=t?new E(t):this.Gs(e);s&&await this.Ds.loadFromUrl(s,e)}moveDown(){const t=this.getSelectedNode();t&&this.Ms.moveDown(t)}moveNode(t,e,s){this.tree.moveNode(t,e,s),this.O(null)}moveUp(){const t=this.getSelectedNode();t&&this.Ms.moveUp(t)}async openNode(t,e){const s=e??this.$s.slide,i=async(e,s)=>{if(!t.children.length)return;const i=this.zs(e);await i.open(s,this.$s.animationSpeed)};if(t.isFolder()||t.isEmptyFolder)if(t.load_on_demand)await this.Xs(t,s);else{let e=t.parent;for(;e;)e.parent&&await i(e,!1),e=e.parent;await i(t,s),this.ws()}}prependNode(t,e){const s=e.prepend(t);return this.O(e),s}refresh(){this.O(null)}refreshHitAreas(){this.Fs.refresh()}removeFromSelection(t){this.Hs.removeFromSelection(t),this.F(t).deselect(),this.ws()}removeNode(t){this.Hs.removeFromSelection(t,!0);const e=t.parent;t.remove(),this.O(e)}scrollToNode(t){if(!t.element)return;const s=e(t.element)-e(this.nt);this.ks.scrollToY(s)}selectNode(t,e){if(!t)return this.Js(),void this.As.saveState();this.Hs.selectSingleNode(t,e)}setOption(t,e){this.$s[t]=e}setState(t){this.As.setInitialState(t),this.O(null)}toggle(t,e=null){const s=e??this.$s.slide;t.is_open?this.closeNode(t,s):this.openNode(t,s)}toJson(){return JSON.stringify(this.tree.getData())}updateNode(t,e){const s="object"==typeof e&&e.id&&e.id!==t.id;s&&this.tree.removeNodeFromIndex(t),t.setData(e),s&&this.tree.addNodeToIndex(t),"object"==typeof e&&e.children&&e.children instanceof Array&&(t.removeChildren(),e.children.length&&t.loadFromData(e.children)),this.O(t)}zs(t){const e=this.i,s=this.xs.closedIconElement,i=this.ks.getScrollLeft.bind(this.ks),o=this.xs.openedIconElement,n=this.$s.tabIndex,r=this.nt,h=this.u.bind(this);return new S({classNames:e,closedIconElement:s,getScrollLeft:i,node:t,openedIconElement:o,tabIndex:n,treeElement:r,triggerEvent:h})}Ks(t){const e=this.i,s=this.ks.getScrollLeft.bind(this.ks),i=this.$s.tabIndex,o=this.nt;return new p({classNames:e,getScrollLeft:s,node:t,tabIndex:i,treeElement:o})}Gs(t){const e=this.$s.dataUrl;let s;if(s="function"==typeof e?e(t):e,!s)return null;const i=new E(s);if(t?.id)i.setSearchParam("node",t.id.toString());else{const t=this.Ws();t&&i.setSearchParam("selected_node",t.toString())}return i}Js(){const t=this.getSelectedNode();t&&this.removeFromSelection(t)}Vs(t){const e=this.Hs.getSelectedNodesUnder(t);for(const t of e)this.Hs.removeFromSelection(t)}qs(){return!0===this.$s.autoOpen?-1:"number"==typeof this.$s.autoOpen?this.$s.autoOpen:"string"==typeof this.$s.autoOpen?parseInt(this.$s.autoOpen,10):0}D(t){const e=this.getNode(t);return e?this.F(e):null}F(t){return t.isFolder()?this.zs(t):this.Ks(t)}Ws(){return this.As.getNodeIdToBeSelected()}Rs(){if(this.$s.data)this.loadData(this.$s.data);else{this.Gs()?this.loadDataFromUrl():this.loadData([])}}js(t){const e=()=>{this.Cs||(this.Cs=!0,this.u("tree.init"))};this.tree=new this.$s.nodeClass(null,!0,this.$s.nodeClass),this.Hs.clear(),this.tree.loadFromData(t);const s=this.Qs();this.O(null),s?this.Zs().then(e):e()}Mt(){const t=document.activeElement;if(!t)return!1;const e=t.tagName;if("A"!==e&&"SPAN"!==e)return!1;const s=this.getNode(t);return s?.tree===this.tree}ti(t){const e=this.getSelectedNode();return!!e&&(t===e||t.isParentOf(e))}async Xs(t,e){t.is_loading=!0,await this.loadDataFromUrl(void 0,t),await this.openNode(t,e)}Ys(t,e){e.loadFromData(t),e.load_on_demand=!1,e.is_loading=!1,this.O(e)}Bs(t){return!!this.$s.dragAndDrop&&this.Fs.mouseCapture(t)}Ps(t){if(!this.$s.dragAndDrop)return!1;const e=this.Fs.mouseDrag(t);return this.ks.checkScrolling(t),e}Os(t){return!!this.$s.dragAndDrop&&this.Fs.mouseStart(t)}Us(t){return!!this.$s.dragAndDrop&&(this.ks.stopScrolling(),this.Fs.mouseStop(t))}Es(t){const e=t.parent;e?.parent&&!e.is_open&&this.openNode(e,!1)}O(t){const e=this.Mt(),s=!!t&&this.ti(t);this.xs.render(t),s&&this.ei(e),this.u("tree.refresh")}ws(){this.As.saveState()}ei(t){const e=this.getSelectedNode();if(e){this.F(e).select(t)}}Qs(){const t=()=>{if(!1===this.$s.autoOpen)return!1;const t=this.qs();let e=!1;return this.tree.iterate((s,i)=>s.load_on_demand?(e=!0,!1):!!s.hasChildren()&&(s.is_open=!0,i!==t)),e};let[e,s]=(()=>{const t=this.As.getStateFromStorage();if(t){return[!0,this.As.setInitialState(t)]}return[!1,!1]})();return e||(s=t()),s}async Zs(){return new Promise(t=>{const e=()=>{const e=this.qs();let s=0;const i=t=>{s+=1,this.openNode(t,!1).then(()=>{s-=1,o()})},o=()=>{this.tree.iterate((t,s)=>t.load_on_demand?(t.is_loading||i(t),!1):(this.openNode(t,!1),s!==e)),0===s&&t()};o()};(()=>{const e=this.As.getStateFromStorage();return!!e&&(this.As.setInitialStateOnDemand(e).then(()=>{t()}),!0)})()||e()})}ct(t,e){this.Is.set(t,e)}u(t,e){return this.Ls(this.nt,t,e)}}}();
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,xt:e,S:i,It: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.xt=e,this.S=i,this.It=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.It?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.It&&s.append(h);let n=this._e(!0);return n.setAttribute("aria-expanded",t?"true":"false"),s.append(n),this.It||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.It?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.xt&&s.setAttribute("aria-labelledby",this.xt)),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.It?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,xe:r,Ie: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.xe=r,this.Ie=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.xe(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.Ie(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){(t=>URL.canParse(t))(t)?(this.yi=new URL(t),this.Di=!0):(this.yi=new URL(t,"http://localhost"),this.Di=!1)}v(t,e){this.yi.searchParams.set(t,e)}N(){return this.Di?this.yi.href:this.yi.href.slice(16)}}class N{constructor({Fi:t,Ti:e,Ci:i,B:s,$i:h,Mi:r,j:n,Y:l,xi:o,Ii:a}){this.Fi=t,this.Ti=e,this.Ci=i,this.B=s,this.$i=h,this.Mi=r,this.j=n,this.Y=l,this.xi=o,this.Li=a}ki(){if(!this.Li)return null;let t=this.Ai();return t?.selected_node?t.selected_node[0]??null:null}Bi(){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.Ci())null!=e.id&&t.push(e.id);return t})()}}Ai(){if(!this.Li)return null;let t=this.Hi();return t?this.Pi(t):null}Ii(){if(!this.Li)return;let t=JSON.stringify(this.Bi());this.Mi?this.Mi(t):localStorage.setItem(this.Oi(),t)}Ri(t){let e=!!t.open_nodes&&this.Ui(t.open_nodes);return this.Vi(),t.selected_node&&this.ji(t.selected_node),e}async Yi(t){let e=t.open_nodes,i=async()=>{if(!e)return;let i=[];for(let t of e){let e=this.Ti(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.ji(t.selected_node)&&this.Y(null)},s=async t=>{await this.j(t,!1),await i()};await i()}Oi(){return"string"==typeof this.Li?this.Li:"tree"}Hi(){return this.$i?this.$i():localStorage.getItem(this.Oi())}Ui(t){let e=!1;for(let i of t){let t=this.Ti(i);t&&(t.load_on_demand?e=!0:t.is_open=!0)}return e}Pi(t){let e=JSON.parse(t);return e.selected_node&&Number.isInteger(e.selected_node)&&(e.selected_node=[e.selected_node]),e}Vi(){let t=this.Ci();for(let e of t)this.xi(e)}ji(t){let e=0;for(let i of t){let t=this.Ti(i);t&&(e+=1,this.Fi(t))}return 0!==e}}class S{constructor({zi:t,Xi:e}){this.zi=t,this.Xi=e}Gi(t){let e=this.Ji(t);this.Ki!==e&&(this.Ki=e,null!=this.Wi&&window.clearTimeout(this.Wi),e&&(this.Wi=window.setTimeout(this.qi.bind(this),40)))}Qi(t){let e=this.Zi(t);this.ts!==e&&(this.ts=e,null!=this.es&&(window.clearTimeout(this.es),this.es=void 0),e&&(this.es=window.setTimeout(this.ss.bind(this),40)))}A(){return this.zi.scrollLeft}hs(t){this.zi.scrollTop=t}rs(){this.Ki=void 0,this.ts=void 0}qi(){this.Ki&&(this.zi.scrollBy({behavior:"instant",left:"left"===this.Ki?-20:20,top:0}),this.Xi(),setTimeout(this.qi.bind(this),40))}ss(){this.ts&&(this.zi.scrollBy({behavior:"instant",left:0,top:"top"===this.ts?-20:20}),this.Xi(),setTimeout(this.ss.bind(this),40))}}class w extends S{rs(){super.rs(),this.Ki=void 0,this.ts=void 0}Ji(t){let e=i(this.zi),s=this.zi.getBoundingClientRect().width;return t>e.left+s-20?"right":t<e.left+20?"left":void 0}Zi(t){return t<this.ns()?"top":t>this.ls()?"bottom":void 0}ls(){if(null==this.ds){let t=this.zi.getBoundingClientRect().height;this.ds=this.ns()+t}return this.ds}ns(){return this.us??=e(this.zi),this.us}}class b extends S{constructor({Xi:t,l:e}){super({zi:document.documentElement,Xi:t}),this.l=e}hs(t){let i=e(this.l);super.hs(t+i)}rs(){super.rs(),this._s=void 0,this.cs=void 0}Ji(t){let e=this.zi.scrollLeft;return t>window.innerWidth-20&&this.gs()?"right":t-e<20?"left":void 0}Zi(t){let e=this.zi.scrollTop;return t-e<20?"top":window.innerHeight-(t-e)<20&&this.fs()?"bottom":void 0}fs(){return this.zi.scrollTop+this.zi.clientHeight<this.ps()}gs(){return this.zi.scrollLeft+this.zi.clientWidth<this.vs()}ps(){return this._s??=this.zi.scrollHeight,this._s}vs(){return this.cs??=this.zi.scrollWidth,this.cs}}let E=t=>"auto"===t||"scroll"===t,y=t=>{let e=getComputedStyle(t);return E(e.overflowX)||E(e.overflowY)};class D{constructor({Xi:t,l:e}){this.Xi=t,this.Ns=void 0,this.l=e}Ss(t){this.Qi(t),this.Gi(t)}A(){return this.ws().A()}hs(t){this.ws().hs(t)}rs(){this.ws().rs()}Gi(t){this.ws().Gi(t.pageX)}Qi(t){this.ws().Qi(t.pageY)}ws(){return this.Ns??=((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({zi:i,Xi:e}):new b({Xi:e,l:t})})(this.l,this.Xi),this.Ns}}class F{constructor({Ti:t,k:e,bs:i,Es:s,ys:h,Ii:r,o:n,Ds:l}){this.Ti=t,this.k=e,this.bs=i,this.Es=s,this.ys=h,this.Ii=r,this.Fs=new Set,this.Ts=null,this.o=n,this.Ds=l}Fi(t){null==t.id?this.Ts=t:this.Fs.add(t.id)}Nt(){this.Fs.clear(),this.Ts=null}fe(){let t=this.Ci();return t.length?t[0]??null:null}Ci(){if(this.Ts)return[this.Ts];let t=[];return this.Fs.forEach(e=>{let i=this.Ti(e);i&&t.push(i)}),t}Cs(t){if(this.Ts)return t.isParentOf(this.Ts)?[this.Ts]:[];let e=[];return this.Fs.forEach(i=>{let s=this.Ti(i);s&&t.isParentOf(s)&&e.push(s)}),e}Bt(t){return null!=t.id?this.Fs.has(t.id):!!this.Ts&&this.Ts===t}xi(t,e=!1){null==t.id?this.Ts===t&&(this.Ts=null):(this.Fs.delete(t.id),e&&t.iterate(()=>(null!=t.id&&this.Fs.delete(t.id),!0)))}$s(t,e){let i={mustSetFocus:!0,mustToggle:!0,...e};if(!(()=>{if(!this.Es())return!1;let e=this.bs();return!e||e(t)})())return;let s=t=>{this.xi(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.Fi(t),this.ys(t),this.k(t).Ni(i.mustSetFocus),this.o("tree.select",{deselectedNode:e,node:t})}this.Ds(),this.Ii()}}let T={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},C=(t,e,i)=>{let s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:i});return t.dispatchEvent(s),!s.defaultPrevented};return class{t;Ms;xs;Is;At;Ls;ks;As;Bs;Hs;Ps;Os;Rs;Us;Vs;js;constructor({htmlElement:e,overrideTriggerEventProvider:i,...s}){this.At=e,this.Hs=((t,e)=>{let i={...T,...e,animationSpeed:e.animationSpeed??("function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches?0:T.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?"&#x25c0;":"&#x25ba;")(i),i.openedIcon??="&#x25bc;",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.Hs),this.js=i??C,this.Ls=!1,this.Vs=new _({},!0),this.Bs=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:$,openedIcon:M,openFolderDelay:x,rtl:I,saveState:L,showEmptyFolder:k,slide:A,tabIndex:B}=this.Hs,H=this.t,P=this.closeNode.bind(this),O=this.L.bind(this),R=this.k.bind(this),U=this.ge.bind(this),V=this.getNodeById.bind(this),j=this.getSelectedNode.bind(this),Y=this.getTree.bind(this),z=this.loadData.bind(this),X=this.openNode.bind(this),G=this.ys.bind(this),J=this.Y.bind(this),K=this.refreshHitAreas.bind(this),W=this.Rt.bind(this),q=this.At,Q=this.o.bind(this),Z=this.Ds.bind(this),tt=new F({Ti:V,k:R,bs:()=>this.Hs.onCanSelectNode,Es:()=>this.Hs.selectable,ys:G,Ii:()=>{lt.Ii()},o:Q,Ds:Z}),et=tt.Fi.bind(tt),it=tt.Ci.bind(tt),st=tt.Bt.bind(tt),ht=tt.xi.bind(tt),rt=tt.$s.bind(tt),nt=new t({t:H,i:m,h:z,l:q,o:Q}),lt=new N({Fi:et,Ti:V,Ci:it,B:Y,$i:E,Mi:$,j:X,Y:J,xi:ht,Ii:L}),ot=new D({Xi:K,l:q}),at=ot.A.bind(ot),dt=new r({S:a,t:H,L:O,k:R,A:at,B:Y,H:p,P:v,O:w,R:b,U:y,V:x,j:X,Y:J,X:A,l:q,o:Q}),ut=new l({me:P,ge:U,fe:j,B:Y,pe:f,j:X,ve:rt,o:Q}),_t=new n({Mt:h,xt:o,S:a,It:u,t:H,Lt:c,kt:g,B:Y,At:q,Bt:st,Ht:S,Pt:M,Ot:I,Rt:W,Ut:k,Vt:B}),ct=this.getNode.bind(this),mt=this.et.bind(this),gt=this.ht.bind(this),ft=this.ct.bind(this),pt=this.ft.bind(this),vt=new d({t:H,C:q,Ce:()=>this.Hs.startDndDelay??0,$e:ct,Me:this.toggle.bind(this),xe:rt,Ie:mt,Le:gt,ke:ft,Ae:pt,o:Q,Be:this.Hs.useContextMenu});this.Ms=nt,this.xs=dt,this.ks=ut,this.As=vt,this.Ps=_t,this.Os=lt,this.Rs=ot,this.Us=tt,this.Ys()}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.Us.Fi(t),this.ys(t),this.k(t).Ni(e),this.Ds(),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.zs(t).wi(e??this.Hs.slide,this.Hs.animationSpeed),this.Ii())}deinit(){this.At.textContent="",this.Ms._(),this.ks._(),this.As._(),this.Vs=new _({},!0)}getNode(t){let e=t.closest(`li.${this.t.common}`);return e?this.Bs.get(e)??null:null}getNodeByCallback(t){return this.Vs.getNodeByCallback(t)}getNodeById(t){return this.Vs.getNodeById(t)}getNodeByName(t){return this.Vs.getNodeByName(t)}getNodeByNameMustExist(t){return this.Vs.getNodeByNameMustExist(t)}getNodesByProperty(t,e){return this.Vs.getNodesByProperty(t,e)}getSelectedNode(){return this.Us.fe()}getSelectedNodes(){return this.Us.Ci()}getState(){return this.Os.Bi()}getStateFromStorage(){return this.Os.Ai()}getTree(){return this.Vs}getVersion(){return"0.3.0"}isDragging(){return this.xs.K}isNodeSelected(t){return this.Us.Bt(t)}loadData(t,e){t&&(e?(this.Xs(e),this.Gs(t,e)):this.Js(t),this.isDragging()&&this.xs.gt()),this.o("tree.set_data",{node:e,treeData:t??void 0})}async loadDataFromUrl(t,e){let i=t?new v(t):this.Ks(e);i&&await this.Ms.m(i,e)}moveDown(){this.ks.we()}moveNode(t,e,i){this.Vs.moveNode(t,e,i),this.Y(null)}moveUp(){this.ks.be()}async openNode(t,e){let i=e??this.Hs.slide,s=async(e,i)=>{if(!t.children.length)return;let s=this.zs(e);await s.Ei(i,this.Hs.animationSpeed)};if(t.isFolder()||t.isEmptyFolder)if(t.load_on_demand)await this.Ws(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.xs.gt()}removeFromSelection(t){this.Us.xi(t),this.k(t).fi(),this.Ds(),this.Ii()}removeNode(t){this.Us.xi(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.Rs.hs(i)}selectNode(t,e){if(!t)return this.qs(),void this.Os.Ii();this.Us.$s(t,{mustToggle:!1,...e})}setOption(t,e){this.Hs[t]=e}setState(t){this.Os.Ri(t),this.Y(null),this.Ii()}async toggle(t,e=null){let i=e??this.Hs.slide;t.is_open?await this.closeNode(t,i):await this.openNode(t,i)}toJson(){return JSON.stringify(this.Vs.getData())}updateNode(t,e){let i="object"==typeof e&&e.id&&e.id!==t.id;i&&this.Vs.removeNodeFromIndex(t),t.setData(e),i&&this.Vs.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.Zs(),e=async()=>{let i=[];this.Vs.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()}zs(t){let e=this.t,i=this.Ps.zt,s=this.Rs.A.bind(this.Rs),h=this.Ps.jt,r=this.Hs.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.Ps.se(t);return this.Ds(),e},Vt:r,l:n,o:l})}th(t){let e=this.t,i=this.Rs.A.bind(this.Rs);return new g({t:e,A:i,st:t,Vt:this.Hs.tabIndex,l:this.At})}Ks(t){let e=this.Hs.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.ki();t&&s.v("selected_node",t.toString())}return s}qs(){let t=this.getSelectedNode();t&&this.removeFromSelection(t)}Xs(t){let e=this.Us.Cs(t);for(let t of e)this.Us.xi(t)}Zs(){return!0===this.Hs.autoOpen?-1:"number"==typeof this.Hs.autoOpen?this.Hs.autoOpen:"string"==typeof this.Hs.autoOpen?parseInt(this.Hs.autoOpen,10):0}eh(){let t=this.Vs.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.Vs?i:null}L(t){let e=this.getNode(t);return e?this.k(e):null}k(t){return t.isFolder()?this.zs(t):this.th(t)}ki(){return this.Os.ki()}ih(){return this.getSelectedNodes().some(t=>Boolean(t.element))}Ys(){this.Hs.data?this.loadData(this.Hs.data):this.Ks()?this.loadDataFromUrl():this.loadData([])}Js(t){let e=()=>{this.Ls||(this.Ls=!0,this.o("tree.init"))};this.Vs=new this.Hs.nodeClass(null,!0,this.Hs.nodeClass),this.Us.Nt(),this.Vs.loadFromData(t);let i=this.Ri();this.Y(null),i?this.Yi().then(e):e()}sh(){return null!==this.ge()}hh(t){let e=this.getSelectedNode();return!!e&&(t===e||t.isParentOf(e))}async Ws(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)}Gs(t,e){e.loadFromData(t),e.load_on_demand=!1,e.is_loading=!1,this.Y(e)}et(t){return!!this.Hs.dragAndDrop&&this.xs.et(t)}ht(t){if(!this.Hs.dragAndDrop)return!1;let e=this.xs.ht(t);return this.Rs.Ss(t),e}ct(t){return!!this.Hs.dragAndDrop&&this.xs.ct(t)}ft(t){return!!this.Hs.dragAndDrop&&(this.Rs.rs(),this.xs.ft(t))}ys(t){let e=t.parent;e?.parent&&!e.is_open&&this.openNode(e,!1)}Y(t){let e=this.sh(),i=!!t&&this.hh(t);this.Ps.te(t),i&&this.rh(e),this.Ds(),this.o("tree.refresh")}Ii(){this.Os.Ii()}rh(t){let e=this.getSelectedNode();e&&this.k(e).Ni(t)}Ri(){let[t,e]=(()=>{let t=this.Os.Ai();return t?[!0,this.Os.Ri(t)]:[!1,!1]})();return t||(e=(()=>{if(!1===this.Hs.autoOpen)return!1;let t=this.Zs(),e=!1;return this.Vs.iterate((i,s)=>i.load_on_demand?(e=!0,!1):!!i.hasChildren()&&(i.is_open=!0,s!==t)),e})()),e}async Yi(){let t=this.Os.Ai();t?await this.Os.Yi(t):await this.Qs()}Rt(t,e){this.Bs.set(t,e)}o(t,e){return this.js(this.At,t,e)}Ds(){let t=this.Hs.tabIndex,e=this.Is,i=null==t||this.ih()?null:this.eh();e&&e!==i&&"true"!==e.getAttribute("aria-selected")&&e.setAttribute("tabindex","-1"),i&&null!=t&&i.setAttribute("tabindex",String(t)),this.Is=i}}}();
21
21
  //# sourceMappingURL=tree_element.js.map