tree-element 0.1.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 (182) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +221 -0
  3. package/lib/animation.d.ts +5 -0
  4. package/lib/animation.d.ts.map +1 -0
  5. package/lib/animation.js +39 -0
  6. package/lib/animation.js.map +1 -0
  7. package/lib/classNames.d.ts +34 -0
  8. package/lib/classNames.d.ts.map +1 -0
  9. package/lib/classNames.js +39 -0
  10. package/lib/classNames.js.map +1 -0
  11. package/lib/dataLoader.d.ts +25 -0
  12. package/lib/dataLoader.d.ts.map +1 -0
  13. package/lib/dataLoader.js +69 -0
  14. package/lib/dataLoader.js.map +1 -0
  15. package/lib/dragAndDropHandler/binarySearch.d.ts +3 -0
  16. package/lib/dragAndDropHandler/binarySearch.d.ts.map +1 -0
  17. package/lib/dragAndDropHandler/binarySearch.js +23 -0
  18. package/lib/dragAndDropHandler/binarySearch.js.map +1 -0
  19. package/lib/dragAndDropHandler/dragElement.d.ts +20 -0
  20. package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -0
  21. package/lib/dragAndDropHandler/dragElement.js +39 -0
  22. package/lib/dragAndDropHandler/dragElement.js.map +1 -0
  23. package/lib/dragAndDropHandler/generateHitAreas.d.ts +13 -0
  24. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -0
  25. package/lib/dragAndDropHandler/generateHitAreas.js +130 -0
  26. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -0
  27. package/lib/dragAndDropHandler/index.d.ts +76 -0
  28. package/lib/dragAndDropHandler/index.d.ts.map +1 -0
  29. package/lib/dragAndDropHandler/index.js +311 -0
  30. package/lib/dragAndDropHandler/index.js.map +1 -0
  31. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts +11 -0
  32. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -0
  33. package/lib/dragAndDropHandler/iterateVisibleNodes.js +54 -0
  34. package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -0
  35. package/lib/dragAndDropHandler/types.d.ts +11 -0
  36. package/lib/dragAndDropHandler/types.d.ts.map +1 -0
  37. package/lib/elementsRenderer.d.ts +53 -0
  38. package/lib/elementsRenderer.d.ts.map +1 -0
  39. package/lib/elementsRenderer.js +251 -0
  40. package/lib/elementsRenderer.js.map +1 -0
  41. package/lib/events.d.ts +224 -0
  42. package/lib/events.d.ts.map +1 -0
  43. package/lib/index.d.ts +367 -0
  44. package/lib/index.d.ts.map +1 -0
  45. package/lib/index.js +1098 -0
  46. package/lib/index.js.map +1 -0
  47. package/lib/keyHandler.d.ts +29 -0
  48. package/lib/keyHandler.d.ts.map +1 -0
  49. package/lib/keyHandler.js +107 -0
  50. package/lib/keyHandler.js.map +1 -0
  51. package/lib/methodTypes.d.ts +21 -0
  52. package/lib/methodTypes.d.ts.map +1 -0
  53. package/lib/mouseHandler.d.ts +60 -0
  54. package/lib/mouseHandler.d.ts.map +1 -0
  55. package/lib/mouseHandler.js +283 -0
  56. package/lib/mouseHandler.js.map +1 -0
  57. package/lib/mouseUtils.d.ts +9 -0
  58. package/lib/mouseUtils.d.ts.map +1 -0
  59. package/lib/mouseUtils.js +15 -0
  60. package/lib/mouseUtils.js.map +1 -0
  61. package/lib/node.d.ts +320 -0
  62. package/lib/node.d.ts.map +1 -0
  63. package/lib/node.js +737 -0
  64. package/lib/node.js.map +1 -0
  65. package/lib/nodeElement/borderDropHint.d.ts +9 -0
  66. package/lib/nodeElement/borderDropHint.d.ts.map +1 -0
  67. package/lib/nodeElement/borderDropHint.js +24 -0
  68. package/lib/nodeElement/borderDropHint.js.map +1 -0
  69. package/lib/nodeElement/folderElement.d.ts +22 -0
  70. package/lib/nodeElement/folderElement.d.ts.map +1 -0
  71. package/lib/nodeElement/folderElement.js +100 -0
  72. package/lib/nodeElement/folderElement.js.map +1 -0
  73. package/lib/nodeElement/ghostDropHint.d.ts +18 -0
  74. package/lib/nodeElement/ghostDropHint.d.ts.map +1 -0
  75. package/lib/nodeElement/ghostDropHint.js +67 -0
  76. package/lib/nodeElement/ghostDropHint.js.map +1 -0
  77. package/lib/nodeElement/index.d.ts +28 -0
  78. package/lib/nodeElement/index.d.ts.map +1 -0
  79. package/lib/nodeElement/index.js +66 -0
  80. package/lib/nodeElement/index.js.map +1 -0
  81. package/lib/nodeUtils.d.ts +7 -0
  82. package/lib/nodeUtils.d.ts.map +1 -0
  83. package/lib/nodeUtils.js +4 -0
  84. package/lib/nodeUtils.js.map +1 -0
  85. package/lib/options.d.ts +310 -0
  86. package/lib/options.d.ts.map +1 -0
  87. package/lib/package.json +3 -0
  88. package/lib/positionUtils.d.ts +8 -0
  89. package/lib/positionUtils.d.ts.map +1 -0
  90. package/lib/positionUtils.js +14 -0
  91. package/lib/positionUtils.js.map +1 -0
  92. package/lib/requestUrl.d.ts +9 -0
  93. package/lib/requestUrl.d.ts.map +1 -0
  94. package/lib/requestUrl.js +37 -0
  95. package/lib/requestUrl.js.map +1 -0
  96. package/lib/saveStateHandler.d.ts +46 -0
  97. package/lib/saveStateHandler.d.ts.map +1 -0
  98. package/lib/saveStateHandler.js +204 -0
  99. package/lib/saveStateHandler.js.map +1 -0
  100. package/lib/scrollHandler/containerScrollParent.d.ts +12 -0
  101. package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -0
  102. package/lib/scrollHandler/containerScrollParent.js +49 -0
  103. package/lib/scrollHandler/containerScrollParent.js.map +1 -0
  104. package/lib/scrollHandler/createScrollParent.d.ts +4 -0
  105. package/lib/scrollHandler/createScrollParent.d.ts.map +1 -0
  106. package/lib/scrollHandler/createScrollParent.js +38 -0
  107. package/lib/scrollHandler/createScrollParent.js.map +1 -0
  108. package/lib/scrollHandler/documentScrollParent.d.ts +22 -0
  109. package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -0
  110. package/lib/scrollHandler/documentScrollParent.js +71 -0
  111. package/lib/scrollHandler/documentScrollParent.js.map +1 -0
  112. package/lib/scrollHandler/scrollParent.d.ts +26 -0
  113. package/lib/scrollHandler/scrollParent.d.ts.map +1 -0
  114. package/lib/scrollHandler/scrollParent.js +79 -0
  115. package/lib/scrollHandler/scrollParent.js.map +1 -0
  116. package/lib/scrollHandler.d.ts +20 -0
  117. package/lib/scrollHandler.d.ts.map +1 -0
  118. package/lib/scrollHandler.js +41 -0
  119. package/lib/scrollHandler.js.map +1 -0
  120. package/lib/selectNodeHandler.d.ts +38 -0
  121. package/lib/selectNodeHandler.d.ts.map +1 -0
  122. package/lib/selectNodeHandler.js +166 -0
  123. package/lib/selectNodeHandler.js.map +1 -0
  124. package/lib/setDefaultOptions.d.ts +4 -0
  125. package/lib/setDefaultOptions.d.ts.map +1 -0
  126. package/lib/setDefaultOptions.js +86 -0
  127. package/lib/setDefaultOptions.js.map +1 -0
  128. package/lib/triggerCustomEvent.d.ts +3 -0
  129. package/lib/triggerCustomEvent.d.ts.map +1 -0
  130. package/lib/triggerCustomEvent.js +13 -0
  131. package/lib/triggerCustomEvent.js.map +1 -0
  132. package/lib/util.d.ts +3 -0
  133. package/lib/util.d.ts.map +1 -0
  134. package/lib/util.js +5 -0
  135. package/lib/util.js.map +1 -0
  136. package/lib/version.d.ts +3 -0
  137. package/lib/version.d.ts.map +1 -0
  138. package/lib/version.js +5 -0
  139. package/lib/version.js.map +1 -0
  140. package/package.json +110 -0
  141. package/src/animation.ts +48 -0
  142. package/src/classNames.ts +70 -0
  143. package/src/dataLoader.ts +92 -0
  144. package/src/dragAndDropHandler/binarySearch.ts +27 -0
  145. package/src/dragAndDropHandler/dragElement.ts +62 -0
  146. package/src/dragAndDropHandler/generateHitAreas.ts +195 -0
  147. package/src/dragAndDropHandler/index.ts +442 -0
  148. package/src/dragAndDropHandler/iterateVisibleNodes.ts +91 -0
  149. package/src/dragAndDropHandler/types.ts +12 -0
  150. package/src/elementsRenderer.ts +367 -0
  151. package/src/events.ts +237 -0
  152. package/src/header.txt +16 -0
  153. package/src/index.ts +1290 -0
  154. package/src/keyHandler.ts +139 -0
  155. package/src/methodTypes.ts +44 -0
  156. package/src/mouseHandler.ts +391 -0
  157. package/src/mouseUtils.ts +23 -0
  158. package/src/node.ts +831 -0
  159. package/src/nodeElement/borderDropHint.ts +37 -0
  160. package/src/nodeElement/folderElement.ts +140 -0
  161. package/src/nodeElement/ghostDropHint.ts +84 -0
  162. package/src/nodeElement/index.ts +103 -0
  163. package/src/nodeUtils.ts +12 -0
  164. package/src/options.ts +325 -0
  165. package/src/positionUtils.ts +18 -0
  166. package/src/requestUrl.ts +41 -0
  167. package/src/saveStateHandler.ts +279 -0
  168. package/src/scrollHandler/containerScrollParent.ts +71 -0
  169. package/src/scrollHandler/createScrollParent.ts +51 -0
  170. package/src/scrollHandler/documentScrollParent.ts +104 -0
  171. package/src/scrollHandler/scrollParent.ts +117 -0
  172. package/src/scrollHandler.ts +55 -0
  173. package/src/selectNodeHandler.ts +192 -0
  174. package/src/setDefaultOptions.ts +79 -0
  175. package/src/triggerCustomEvent.ts +14 -0
  176. package/src/util.ts +5 -0
  177. package/src/version.ts +4 -0
  178. package/tree_element.css +195 -0
  179. package/tree_element.debug.js +4153 -0
  180. package/tree_element.debug.js.map +1 -0
  181. package/tree_element.js +21 -0
  182. package/tree_element.js.map +1 -0
@@ -0,0 +1,21 @@
1
+ /*
2
+ Html-tree 0.1.0
3
+
4
+ Copyright 2026 Marco Braak
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ @license
18
+
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=>{if(!this.t.signal.aborted)throw 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.0"}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)}}}();
21
+ //# sourceMappingURL=tree_element.js.map