orgchart
Version:
Simple and direct organization chart(tree-like hierarchy) library based on pure DOM.
1 lines • 66.8 kB
JavaScript
"use strict";!function(e){"object"==typeof module&&"object"==typeof module.exports?module.exports=e(window,document):window.OrgChart=e(window,document)}(function(e,t,l){const n=new WeakMap,d=()=>"undefined"!=typeof globalThis&&globalThis.window?globalThis.window:e,m=()=>{var e=d();return e&&e.document?e.document:"undefined"!=typeof globalThis&&globalThis.document?globalThis.document:t},s=e=>e&&"number"==typeof e.nodeType,o=e=>e&&"number"==typeof e.length&&"string"!=typeof e&&!s(e),r=e=>"string"==typeof e&&e.trim().startsWith("<")&&e.trim().endsWith(">"),a=e=>Array.from(new Set(e.filter(Boolean)));function h(e,t){return C(e,t||m())[0]||null}function c(e,t){return C(e,t||m())}function u(){return Object.assign.apply(Object,[{}].concat(Array.from(arguments)))}function p(t,n){if(Array.isArray(t)||o(t))for(let e=0;e<t.length&&!1!==n.call(t[e],e,t[e]);e+=1);else Object.keys(t||{}).some(e=>!1===n.call(t[e],e,t[e]))}function f(e){e=(e=e||"*")&&e.replace(/:not\("([^"]+)"\)/g,":not($1)");const n={selector:e,first:!1,last:!1,gt:null,hidden:!1,visible:!1};return n.selector=n.selector.replace(/:first\b/g,function(){return n.first=!0,""}),n.selector=n.selector.replace(/:last\b/g,function(){return n.last=!0,""}),n.selector=n.selector.replace(/:gt\((\d+)\)/g,function(e,t){return n.gt=Number(t),""}),n.selector=n.selector.replace(/:hidden\b/g,function(){return n.hidden=!0,""}),n.selector=n.selector.replace(/:visible\b/g,function(){return n.visible=!0,""}),n.selector=n.selector.trim()||"*",n}function g(e){return!(!e||1!==e.nodeType)&&"none"!==(e=d().getComputedStyle(e)).display&&"hidden"!==e.visibility}function v(e,t){const n=f(t);let i=e.filter(e=>{var t=n.selector;if(!t||"*"===t)return!0;if(!e||1!==e.nodeType)return!1;try{return e.matches(t)}catch(e){return!1}});return n.hidden&&(i=i.filter(e=>!g(e))),n.visible&&(i=i.filter(e=>g(e))),null!==n.gt&&(i=i.filter((e,t)=>t>n.gt)),n.first&&(i=i.slice(0,1)),i=n.last?i.slice(-1):i}function E(e){var t=m().createElement("template");return t.innerHTML=e.trim(),Array.from(t.content.childNodes)}function i(e){return String(e).replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function L(e){return n.has(e)||n.set(e,{}),n.get(e)}function y(e,t,n){L(e)[i(t)]=n}function b(e,t){e=L(e),t=i(t);return Object.prototype.hasOwnProperty.call(e,t)?e[t]:l}function C(t,n){var e,i;return null===t||t===l?[]:Array.isArray(t)?a(t.flatMap(e=>C(e,n))):s(t)?[t]:o(t)?Array.from(t).flatMap(e=>C(e,n)):"string"==typeof t?r(t)?E(t):(e=m(),i=(i=C(n||e,e)).length?i.flatMap(e=>1!==e.nodeType&&9!==e.nodeType?[]:v(Array.from(e.querySelectorAll(f(t).selector)),t)):v(Array.from(e.querySelectorAll(f(t).selector)),t),a(i)):[]}function A(e,t){e="string"==typeof e?e:e.type,e=new(d().CustomEvent)(e,{bubbles:!0,cancelable:!0,detail:t});return(e.originalEvent=e).data=t,e.delegateTarget=null,e}function S(e,t,n){return Math.min(Math.max(e,t),n)}function N(e){e=(e||"").replace(/\s+/g,"").toLowerCase();return!e||"transparent"===e||"rgba(0,0,0,0)"===e||"hsla(0,0%,0%,0)"===e}function x(e){var t=e?e.querySelector(".title"):null,n=t?d().getComputedStyle(t).backgroundColor:"",t=[e,t,e?e.querySelector(".content"):null].flatMap(function(e){e=e?d().getComputedStyle(e):null;return e?[e.backgroundColor,e.borderTopColor,e.borderRightColor,e.borderBottomColor,e.borderLeftColor]:[]});return e=!N(n)&&n||t.find(function(e){return!N(e)})||"rgba(217, 83, 79, 0.8)",!(n=/^rgba?\(([^)]+)\)$/i.exec((e||"").trim()))||(n=n[1].split(",").slice(0,3).map(function(e){return S(Math.round(.68*parseFloat(e.trim())),0,255)})).some(function(e){return Number.isNaN(e)})?e:"rgb("+n.join(", ")+")"}function w(e){let t,n=1,i=0,s=0;return e&&(e=d().getComputedStyle(e).transform||e.style.transform||"none")&&"none"!==e&&(0===e.indexOf("matrix3d(")?(t=e.slice(9,-1).split(",").map(function(e){return d().parseFloat(e.trim())}),n=Math.abs(t[0])||1,i=t[12]||0,s=t[13]||0):0===e.indexOf("matrix(")?(t=e.slice(7,-1).split(",").map(function(e){return d().parseFloat(e.trim())}),n=Math.abs(t[0])||1,i=t[4]||0,s=t[5]||0):0===e.indexOf("scale3d(")?(t=e.slice(8,-1).split(",").map(function(e){return d().parseFloat(e.trim())}),n=Math.abs(t[0])||1):0===e.indexOf("scale(")&&(t=e.slice(6,-1).split(",").map(function(e){return d().parseFloat(e.trim())}),n=Math.abs(t[0])||1)),{scale:n,translateX:i,translateY:s}}function H(e,t){if(!(this instanceof H))return new H(e,t);"[object Object]"!==Object.prototype.toString.call(e)||t?(this.chartContainer=h(e),this.opts=t||{}):(this.opts=e,this.chartContainer=h(e.chartContainer||e.container)),this.chart=null,this.defaultOptions={icons:{theme:"oci",parentNode:"oci-menu",expandToUp:"oci-chevron-up",collapseToDown:"oci-chevron-down",collapseToLeft:"oci-chevron-left",expandToRight:"oci-chevron-right",backToCompact:"oci-corner-top-left",backToLoose:"oci-corner-bottom-right",collapsed:"oci-plus-square",expanded:"oci-minus-square",spinner:"oci-spinner"},nodeTitle:"name",nodeId:"id",toggleSiblingsResp:!1,visibleLevel:999,chartClass:"",exportButton:!1,exportButtonName:"Export",exportFilename:"OrgChart",exportFileextension:"png",exportScale:2,draggable:!1,direction:"t2b",pan:!1,minimap:!1,zoom:!1,zoominLimit:7,zoomoutLimit:.5},this.chartContainer&&this.init()}return"object"==typeof module&&"object"==typeof module.exports&&Object.defineProperty(H,"__testing__",{value:{getState:b,setState:y}}),H.prototype={init:function(e){this.options=u({},this.defaultOptions,this.opts,e);var t,e=this.chartContainer;let n,i;this.detachMinimap(),this.chart&&this.chart.remove();var s,o=this.options.data,r=((n=m().createElement("div")).className="orgchart"+(""!==this.options.chartClass?" "+this.options.chartClass:"")+("t2b"!==this.options.direction?" "+this.options.direction:""),y(n,"options",this.options),(this.chart=n).addEventListener("click",function(e){e=h((e.originalEvent||e).target);e&&"function"==typeof e.closest&&e.closest(".node")||Array.from(n.querySelectorAll(".node.focused")).forEach(function(e){e.classList.remove("focused")})}),void 0!==d().MutationObserver&&this.triggerInitEvent(),(r=o)&&(1===r.nodeType||9===r.nodeType||r===d())&&"UL"===o.tagName);return(s=m().createElement("ul")).className="nodes",n.appendChild(s),i=!r&&Array.isArray(o)?s:((t=m().createElement("li")).className="hierarchy",s.appendChild(t),t),r?this.buildHierarchy(i,this.buildJsonDS(o.firstElementChild)):o.relationship?this.buildHierarchy(i,o):this.buildHierarchy(i,Array.isArray(o)?o:this.attachRel(o,"00")),e&&e.appendChild(n),this.options.exportButton&&!m().querySelector(".oc-export-btn")&&this.attachExportButton(),this.options.pan&&this.bindPan(),this.options.zoom&&this.bindZoom(),this.options.minimap&&this.attachMinimap(),this},handleCompactNodes:function(){var e=this.chart;e&&Array.from(e.querySelectorAll(".node.compact")).forEach(function(e){let t=0,n=e.parentElement;for(;n;)n.classList&&n.classList.contains("compact")&&(t+=1),n=n.parentElement;e.classList.add(t%2==0?"even":"odd")})},triggerInitEvent:function(){const i=this;const e=new(d().MutationObserver)(function(n){e.disconnect();e:for(let t=0;t<n.length;t++)for(let e=0;e<n[t].addedNodes.length;e++)if(n[t].addedNodes[e].classList&&n[t].addedNodes[e].classList.contains("orgchart")){if(i.handleCompactNodes(),!i.chart)break e;i.options.initCompleted&&"function"==typeof i.options.initCompleted&&i.options.initCompleted(i.chart),n[t].addedNodes[e].dispatchEvent(A("init.orgchart"));break e}});e.observe(this.chartContainer,{childList:!0})},triggerShowEvent:function(e,t){e&&"function"==typeof e.dispatchEvent&&e.dispatchEvent(A("show-"+t+".orgchart"))},triggerHideEvent:function(e,t){e&&"function"==typeof e.dispatchEvent&&e.dispatchEvent(A("hide-"+t+".orgchart"))},attachExportButton:function(){const t=this;var e,n=this.chartContainer;n&&n.parentElement&&((e=m().createElement("button")).className="oc-export-btn",e.textContent=this.options.exportButtonName,e.addEventListener("click",function(e){e.preventDefault(),t.export()}),n.insertAdjacentElement("afterend",e))},setOptions:function(e,t){return"string"==typeof e&&("pan"===e&&(t?this.bindPan():this.unbindPan()),"zoom"===e&&(t?this.bindZoom():this.unbindZoom()),"minimap"===e)&&(this.options=u({},this.options||{},{minimap:t}),this.chart&&y(this.chart,"options",this.options),t?this.attachMinimap():this.detachMinimap()),"object"==typeof e&&(e.data?this.init(e):(void 0!==e.pan&&(e.pan?this.bindPan():this.unbindPan()),void 0!==e.zoom&&(e.zoom?this.bindZoom():this.unbindZoom()),void 0!==e.minimap&&(this.options=u({},this.options||{},{minimap:e.minimap}),this.chart&&y(this.chart,"options",this.options),e.minimap?this.attachMinimap():this.detachMinimap()))),this},attachMinimap:function(){const t=this;var e,n,i,s,o,r=this.chartContainer,a=this.chart;let l;r&&a&&(this.detachMinimap(),d().getComputedStyle(r).position&&"static"!==d().getComputedStyle(r).position||(y(r,"minimapOriginalPosition",r.style.position||""),y(r,"minimapManagedPosition",!0),r.style.position="relative"),(e=m().createElement("div")).className="orgchart-minimap",(n=m().createElement("div")).className="orgchart-minimap-stage",(i=m().createElement("div")).className="orgchart-minimap-content",(s=m().createElement("div")).className="orgchart-minimap-viewport",n.appendChild(i),n.appendChild(s),e.appendChild(n),r.appendChild(e),r=function(e){t.minimapStartHandler(e)},e.addEventListener("wheel",o=function(e){t.minimapWheelHandler(e)}),s.addEventListener("mousedown",r),void 0!==d().MutationObserver&&(l=new(d().MutationObserver)(function(){t.updateMinimap(!0)})).observe(a,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class"]}),y(a,"minimapElement",e),y(a,"minimapStageElement",n),y(a,"minimapContentElement",i),y(a,"minimapViewportElement",s),y(a,"minimapWheelBoundHandler",o),y(a,"minimapPointerDownBoundHandler",r),y(a,"minimapMutationObserver",l||null),this.updateMinimap(!0))},detachMinimap:function(){var e,t,n,i,s,o,r,a=this.chartContainer;const l=this.chart;l&&(e=b(l,"minimapElement"),t=b(l,"minimapViewportElement"),n=b(l,"minimapWheelBoundHandler"),i=b(l,"minimapPointerDownBoundHandler"),s=b(l,"minimapMoveBoundHandler"),o=b(l,"minimapEndBoundHandler"),r=b(l,"minimapMutationObserver"),e&&n&&e.removeEventListener("wheel",n),t&&i&&t.removeEventListener("mousedown",i),s&&m().removeEventListener("mousemove",s),o&&m().removeEventListener("mouseup",o),r&&r.disconnect(),e&&e.parentElement&&e.remove(),["minimapElement","minimapStageElement","minimapContentElement","minimapViewportElement","minimapWheelBoundHandler","minimapPointerDownBoundHandler","minimapMoveBoundHandler","minimapEndBoundHandler","minimapMutationObserver","minimapDragState","minimapScale","minimapOffsetX","minimapOffsetY","minimapContentWidth","minimapContentHeight"].forEach(function(e){y(l,e,null)})),a&&b(a,"minimapManagedPosition")&&(a.style.position=b(a,"minimapOriginalPosition")||"",y(a,"minimapManagedPosition",null),y(a,"minimapOriginalPosition",null))},minimapWheelHandler:function(e){var t=this.chartContainer;this.chart&&t&&("function"==typeof e.preventDefault&&e.preventDefault(),this.setChartScale(this.chart,1+(0<e.deltaY?-.2:.2),{x:t.getBoundingClientRect().left+t.clientWidth/2,y:t.getBoundingClientRect().top+t.clientHeight/2}))},minimapStartHandler:function(e){var t=this.chart,n=t?b(t,"minimapViewportElement"):null,i=this.minimapMoveHandler.bind(this),s=this.minimapEndHandler.bind(this),o=n?n.getBoundingClientRect():null;t&&n&&o&&("function"==typeof e.preventDefault&&e.preventDefault(),y(t,"minimapDragState",{startClientX:e.clientX,startClientY:e.clientY,startLeft:o.left,startTop:o.top,viewportWidth:o.width,viewportHeight:o.height}),y(t,"minimapMoveBoundHandler",i),y(t,"minimapEndBoundHandler",s),m().addEventListener("mousemove",i),m().addEventListener("mouseup",s))},minimapMoveHandler:function(e){var t=this.chart,n=t?b(t,"minimapDragState"):null,i=t?b(t,"minimapStageElement"):null;t&&n&&i&&(t=i.getBoundingClientRect(),this.moveChartFromMinimap(n.startLeft+(e.clientX-n.startClientX)-t.left,n.startTop+(e.clientY-n.startClientY)-t.top,n.viewportWidth,n.viewportHeight))},minimapEndHandler:function(){var e=this.chart,t=e?b(e,"minimapMoveBoundHandler"):null,n=e?b(e,"minimapEndBoundHandler"):null;t&&(m().removeEventListener("mousemove",t),y(e,"minimapMoveBoundHandler",null)),n&&(m().removeEventListener("mouseup",n),y(e,"minimapEndBoundHandler",null)),e&&y(e,"minimapDragState",null)},moveChartFromMinimap:function(e,t,n,i){var s=this.chart,o=this.chartContainer,r=s?b(s,"minimapStageElement"):null,a=s?b(s,"minimapScale"):null,l=s?b(s,"minimapOffsetX"):0,c=s?b(s,"minimapOffsetY"):0,d=s?b(s,"minimapContentWidth"):0,h=s?b(s,"minimapContentHeight"):0,u=w(s),p=s?s.getBoundingClientRect():null,f=o?o.getBoundingClientRect():null;s&&o&&r&&a&&p&&f&&(o=i/a,r=S((e-l)/a,0,Math.max(d-n/a,0)),i=S((t-c)/a,0,Math.max(h-o,0)),e=p.left-u.translateX,l=p.top-u.translateY,s.style.transformOrigin="0 0",s.style.transform="matrix("+u.scale+", 0, 0, "+u.scale+", "+(f.left-e-r*u.scale)+", "+(f.top-l-i*u.scale)+")",this.updateMinimap())},updateMinimap:function(e){var t,n,i,s=this.chart,o=this.chartContainer,r=s?b(s,"minimapStageElement"):null,a=s?b(s,"minimapContentElement"):null,l=s?b(s,"minimapViewportElement"):null,c=w(s),d=s?s.getBoundingClientRect():null,h=o?o.getBoundingClientRect():null;if(this.options&&this.options.minimap&&s&&o&&r&&a&&l&&d&&h){if(o=0!==c.scale&&d.width?d.width/c.scale:s.scrollWidth||s.offsetWidth||1,t=0!==c.scale&&d.height?d.height/c.scale:s.scrollHeight||s.offsetHeight||1,n=r.clientWidth||180,r=r.clientHeight||120,i=(n-o*(n=Math.min(n/Math.max(o,1),r/Math.max(t,1))))/2,r=(r-t*n)/2,a.style.width=o+"px",a.style.height=t+"px",a.style.transformOrigin="0 0",a.style.transform="translate("+i+"px, "+r+"px) scale("+n+")",e||!a.firstElementChild){var e=s;var u=d;var p=c.scale||1;const f=m().createDocumentFragment();Array.from(e.querySelectorAll(".node")).filter(g).forEach(function(e){var t=e.getBoundingClientRect(),n=m().createElement("div"),i=(t.top-u.top)/p;n.className="orgchart-minimap-node",n.style.left=Math.max((t.left-u.left)/p,0)+"px",n.style.top=Math.max(i+(t.height/p-18)/2,0)+"px",n.style.width=Math.max(t.width/p,6)+"px",n.style.height="18px",n.style.backgroundColor=x(e),f.appendChild(n)}),a.innerHTML="",a.appendChild(f)}e=S((h.left-d.left)/c.scale,0,Math.max(o,0)),a=S((h.top-d.top)/c.scale,0,Math.max(t,0)),d=Math.min(o,h.width/c.scale),h=Math.min(t,h.height/c.scale),l.style.width=Math.max(d*n,12)+"px",l.style.height=Math.max(h*n,12)+"px",l.style.transform="translate("+(i+e*n)+"px, "+(r+a*n)+"px)",y(s,"minimapScale",n),y(s,"minimapOffsetX",i),y(s,"minimapOffsetY",r),y(s,"minimapContentWidth",o),y(s,"minimapContentHeight",t)}},panStartHandler:function(n){const r=this;var i=n.originalEvent||n;const a=h(n.chart||i.currentTarget);var l,n=h(i.target);if(a)if(n&&"function"==typeof n.closest&&n.closest(".node")||i.touches&&1<i.touches.length)y(a,"panning",!1);else{a.style.cursor="move",y(a,"panning",!0);let e=0,t=0;"none"!==(n=a.style.transform||d().getComputedStyle(a).transform||"none")&&(l=n.split(","),t=-1===n.indexOf("3d")?(e=parseInt(l[4]),parseInt(l[5])):(e=parseInt(l[12]),parseInt(l[13])));let s=0,o=0;if(i.targetTouches){if(1===i.targetTouches.length)s=i.targetTouches[0].pageX-e,o=i.targetTouches[0].pageY-t;else if(1<i.targetTouches.length)return}else s=("number"==typeof i.pageX?i.pageX:i.clientX)-e,o=("number"==typeof i.pageY?i.pageY:i.clientY)-t;(n=b(a,"panMoveHandler"))&&(a.removeEventListener("mousemove",n),a.removeEventListener("touchmove",n)),l=function(n){var i;if(b(a,"panning")){let e=0,t=0;if(n.targetTouches){if(1===n.targetTouches.length)e=n.targetTouches[0].pageX-s,t=n.targetTouches[0].pageY-o;else if(1<n.targetTouches.length)return}else e=("number"==typeof n.pageX?n.pageX:n.clientX)-s,t=("number"==typeof n.pageY?n.pageY:n.clientY)-o;"none"===(n=a.style.transform||d().getComputedStyle(a).transform||"none")?-1===n.indexOf("3d")?a.style.transform="matrix(1, 0, 0, 1, "+e+", "+t+")":a.style.transform="matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, "+e+", "+t+", 0, 1)":(i=n.split(","),-1===n.indexOf("3d")?(i[4]=" "+e,i[5]=" "+t+")"):(i[12]=" "+e,i[13]=" "+t),a.style.transform=i.join(","),r.updateMinimap())}},y(a,"panMoveHandler",l),a.addEventListener("mousemove",l),a.addEventListener("touchmove",l)}},panEndHandler:function(e){var t=e.originalEvent||e,e=h(e.chart||t.chart||t.currentTarget);e&&b(e,"panning")&&(t=b(e,"panMoveHandler"),y(e,"panning",!1),e.style.cursor="default",t)&&(e.removeEventListener("mousemove",t),e.removeEventListener("touchmove",t),y(e,"panMoveHandler",null))},bindPan:function(){const t=this;var e,n=this.chartContainer;const i=this.chart;n&&i&&(this.unbindPan(),n.style.overflow="hidden",n=function(e){t.panStartHandler({chart:i,originalEvent:e})},e=function(){t.panEndHandler({chart:i})},y(i,"panStartBoundHandler",n),y(i,"panEndBoundHandler",e),i.addEventListener("mousedown",n),i.addEventListener("touchstart",n),m().addEventListener("mouseup",e),m().addEventListener("touchend",e))},unbindPan:function(){var e,t=this.chartContainer,n=this.chart;t&&n&&(t.style.overflow="auto",t=b(n,"panStartBoundHandler"),e=b(n,"panEndBoundHandler"),t&&(n.removeEventListener("mousedown",t),n.removeEventListener("touchstart",t),y(n,"panStartBoundHandler",null)),e)&&(m().removeEventListener("mouseup",e),m().removeEventListener("touchend",e),y(n,"panEndBoundHandler",null))},zoomWheelHandler:function(e){var t=e.originalEvent||e,e=e.orgChart,n=e?e.chartContainer:null,i=n&&"function"==typeof n.getBoundingClientRect?n.getBoundingClientRect():null,s=t&&"number"==typeof t.clientX&&"number"==typeof t.clientY;let o=null;if(e&&e.chart&&n){if(i&&s){if(t.clientX<i.left||t.clientX>i.right||t.clientY<i.top||t.clientY>i.bottom)return;o={x:t.clientX,y:t.clientY}}t&&"function"==typeof t.preventDefault&&t.preventDefault();n=1+(0<t.deltaY?-.2:.2);e.setChartScale(e.chart,n,o)}},zoomStartHandler:function(e){var t,n,i=e.originalEvent||e;i.touches&&2===i.touches.length&&(t=(e=e.orgChart).chart)&&(y(t,"pinching",!0),n=e.getPinchDist(i),e=e.getPinchCenter(i),y(t,"pinchDistStart",n),y(t,"pinchCenterStart",e),y(t,"pinchCenterEnd",e))},zoomingHandler:function(e){var t,n=e.originalEvent||e,e=e.orgChart,i=e.chart;i&&b(i,"pinching")&&(t=e.getPinchDist(n),e=e.getPinchCenter(n),y(i,"pinchDistEnd",t),y(i,"pinchCenterEnd",e))},zoomEndHandler:function(e){var t,e=e.orgChart,n=e.chart;n&&b(n,"pinching")&&(y(n,"pinching",!1),t=b(n,"pinchDistEnd")-b(n,"pinchDistStart"),n=b(n,"pinchCenterEnd")||b(n,"pinchCenterStart")||null,0<t?e.setChartScale(e.chart,1.2,n):t<0&&e.setChartScale(e.chart,.8,n))},bindZoom:function(){const t=this;var e,n,i,s,o=this.chartContainer,r=this.chart;o&&r&&(this.unbindZoom(),n=function(e){t.zoomStartHandler({orgChart:t,originalEvent:e})},i=function(e){t.zoomingHandler({orgChart:t,originalEvent:e})},s=function(){t.zoomEndHandler({orgChart:t})},y(r,"zoomWheelBoundHandler",e=function(e){t.zoomWheelHandler({orgChart:t,originalEvent:e})}),y(r,"zoomStartBoundHandler",n),y(r,"zoomingBoundHandler",i),y(r,"zoomEndBoundHandler",s),o.addEventListener("wheel",e),o.addEventListener("touchstart",n),m().addEventListener("touchmove",i),m().addEventListener("touchend",s))},unbindZoom:function(){var e,t,n,i,s=this.chartContainer,o=this.chart;s&&o&&(e=b(o,"zoomWheelBoundHandler"),t=b(o,"zoomStartBoundHandler"),n=b(o,"zoomingBoundHandler"),i=b(o,"zoomEndBoundHandler"),e&&(s.removeEventListener("wheel",e),y(o,"zoomWheelBoundHandler",null)),t&&(s.removeEventListener("touchstart",t),y(o,"zoomStartBoundHandler",null)),n&&(m().removeEventListener("touchmove",n),y(o,"zoomingBoundHandler",null)),i)&&(m().removeEventListener("touchend",i),y(o,"zoomEndBoundHandler",null))},getPinchDist:function(e){e=e.originalEvent||e;return Math.sqrt((e.touches[0].clientX-e.touches[1].clientX)*(e.touches[0].clientX-e.touches[1].clientX)+(e.touches[0].clientY-e.touches[1].clientY)*(e.touches[0].clientY-e.touches[1].clientY))},getPinchCenter:function(e){e=e.originalEvent||e;return{x:(e.touches[0].clientX+e.touches[1].clientX)/2,y:(e.touches[0].clientY+e.touches[1].clientY)/2}},setChartScale:function(e,t,n){var i,s,o,r,a,e=h(e),l=this.chartContainer;let c,d;e&&(a=b(e,"options"),o=w(e).scale,r=w(e).translateX,i=w(e).translateY,(t=o*t)>a.zoomoutLimit)&&t<a.zoominLimit&&(c=r,d=i,a="function"==typeof e.getBoundingClientRect?e.getBoundingClientRect():null,(n=!n&&l&&"function"==typeof l.getBoundingClientRect?{x:(l=l.getBoundingClientRect()).left+l.width/2,y:l.top+l.height/2}:n)&&a&&"number"==typeof n.x&&"number"==typeof n.y&&0!==o&&(l=n.x,n=n.y,s=(l-a.left)/o,o=(n-a.top)/o,r=a.left-r,a=a.top-i,c=l-r-s*t,d=n-a-o*t),e.style.transformOrigin="0 0",e.style.transform="matrix("+t+", 0, 0, "+t+", "+c+", "+d+")",this.updateMinimap())},buildJsonDS:function(e){const t=this,n=h(e);var i;let s;return n?(e=Array.from(n.children||[]).find(function(e){return"UL"===e.tagName})||null,s={name:(n.childNodes&&n.childNodes[0]?n.childNodes[0].textContent:"").trim(),relationship:(n.parentElement&&n.parentElement.parentElement&&"LI"===n.parentElement.parentElement.tagName?"1":"0")+(n.parentElement&&Array.from(n.parentElement.children).filter(function(e){return e!==n&&"LI"===e.tagName}).length?1:0)+(e?1:0)},p((i=n).dataset?Object.assign({},i.dataset):{},function(e,t){s[e]=t}),e&&Array.from(e.children).forEach(function(e){"LI"===e.tagName&&(s.children||(s.children=[]),s.children.push(t.buildJsonDS(e)))}),s):{}},attachRel:function(t,e){const n=this;return t.relationship=e+(t.children&&0<t.children.length?1:0),this.options?.compact?.constructor===Function&&this.options.compact(t)&&(t.compact=!0),t.children&&t.children.forEach(function(e){t.hybrid||t.vertical?e.vertical=!0:t.compact&&e.children?e.compact=!0:t.compact&&!e.children&&(e.associatedCompact=!0),n.attachRel(e,"1"+(1<t.children.length?1:0))}),t},loopChart:function(e,t){const n=this;var e=h(e);let i,s;return t=null!==t&&t!==l&&t,e&&(i=e.classList&&e.classList.contains("hierarchy")?Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("node")}):e.querySelector(".node"))?(s={id:i.id},t&&p(b(i,"nodeData"),function(e,t){s[e]=t}),(e=Array.from(i.parentElement?i.parentElement.children:[]).find(function(e){return e!==i&&e.classList&&e.classList.contains("nodes")})||null)&&Array.from(e.children).forEach(function(e){e.classList&&e.classList.contains("hierarchy")&&(s.children||(s.children=[]),s.children.push(n.loopChart(e,t)))}),s):{}},getHierarchy:function(e){var t,n=this.chart;return e=null!==e&&e!==l&&e,n?(t=n?Array.from(n.querySelectorAll(".node")):[]).length?t.some(function(e){return!e.id})?"Error: All nodes of orghcart to be exported must have data-id attribute!":this.loopChart(n,e):"Error: nodes do not exist":"Error: orgchart does not exist"},getNodeState:function(e,t){const n=h(e);let i;let s;if(n&&n.classList&&n.classList.contains("node"))if(t=t||"self",e=!!n.closest("vertical"),"parent"===t){if(i=e?(i=(i=(i=n.closest("ul"))?i.parentElement&&i.parentElement.closest("ul"):null)||n.closest(".nodes"))||((i=n.closest(".vertical"))&&i.parentElement?i.parentElement.firstElementChild:null):(i=n.closest(".nodes"))?i.previousElementSibling:null)return i.classList.contains("hidden")||i.closest(".nodes")&&i.closest(".nodes").classList.contains("hidden")||i.closest(".vertical")&&i.closest(".vertical").classList.contains("hidden")?{exist:!0,visible:!1}:{exist:!0,visible:!0}}else if("children"===t){if(i=e?Array.from(n.parentElement?n.parentElement.children:[]).find(function(e){return"UL"===e.tagName})||null:Array.from(n.parentElement?n.parentElement.children:[]).find(function(e){return e!==n&&e.classList&&e.classList.contains("nodes")})||null)return i.classList.contains("hidden")?{exist:!0,visible:!1}:{exist:!0,visible:!0}}else{if("siblings"!==t)return n.closest(".nodes")&&n.closest(".nodes").classList.contains("hidden")||n.closest(".hierarchy")&&n.closest(".hierarchy").classList.contains("hidden")||n.closest(".vertical")&&(n.closest(".nodes")&&n.closest(".nodes").classList.contains("hidden")||n.closest(".vertical").classList.contains("hidden"))?{exist:!0,visible:!1}:{exist:!0,visible:!0};if(e?(i=n.closest("ul"),s=i?Array.from(i.children||[]).filter(function(e){return"LI"===e.tagName}):[]):(s=n.parentElement&&n.parentElement.parentElement?Array.from(n.parentElement.parentElement.children).filter(function(e){return e!==n.parentElement}):[],i=s[0]||null),i&&(!e||1<s.length))return s.some(function(e){return e.classList.contains("hidden")})||s.some(function(e){return e.parentElement&&e.parentElement.classList.contains("hidden")})||e&&i.closest(".vertical")&&i.closest(".vertical").classList.contains("hidden")?{exist:!0,visible:!1}:{exist:!0,visible:!0}}return{exist:!1,visible:!1}},getParent:function(e){return this.getRelatedNodes(e,"parent")},getChildren:function(e){return this.getRelatedNodes(e,"children")},getSiblings:function(e){return this.getRelatedNodes(e,"siblings")},getRelatedNodes:function(e,t){const n=h(e);let i;return n&&n.classList&&n.classList.contains("node")?"parent"===t?(e=n.closest(".nodes"))?e.previousElementSibling:null:"children"===t?(e=Array.from(n.parentElement?n.parentElement.children:[]).find(function(e){return e!==n&&e.classList&&e.classList.contains("nodes")}))?Array.from(e.children).filter(function(e){return e.classList&&e.classList.contains("hierarchy")}).map(function(e){return e.querySelector(".node")}).filter(Boolean):[]:"siblings"===t&&(i=n.closest(".hierarchy"))&&i.parentElement?Array.from(i.parentElement.children).filter(function(e){return e!==i}).map(function(e){return e.querySelector(".node")}).filter(Boolean):[]:"parent"===t?null:[]},hideParentEnd:function(e){var t=e.originalEvent||e,n=h(e.animatedNode||t.animatedNode||t.target),e=h(e.parent||t.parent);n&&n.classList&&n.classList.remove("sliding"),e&&e.classList&&e.classList.add("hidden")},hideParent:function(e){var t,n,e=h(e);let i;e&&(i=this.getParent(e),t=e.closest(".orgchart"),n=e.closest(".hierarchy"),i&&i.querySelector&&i.querySelector(".spinner")&&t&&y(t,"inAjax",!1),this.getNodeState(e,"siblings").visible&&this.hideSiblings(e),n&&n.classList.add("isAncestorsCollapsed"),this.getNodeState(i).visible&&(i.classList.add("sliding","slide-down"),i.addEventListener("transitionend",function(e){e.animatedNode=i,e.parent=i,H.prototype.hideParentEnd(e)},{once:!0})),this.getNodeState(i,"parent").visible)&&this.hideParent(i)},showParentEnd:function(e){var t=e.originalEvent||e,n=h(e.animatedNode||t.animatedNode||t.target),e=h(e.node||t.node);n&&n.classList&&n.classList.remove("sliding"),this.isInAction(e)&&(t=e&&Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("topEdge")})||null,this.switchVerticalArrow(t))},showParent:function(e){const t=this,n=h(e);let i;n&&(i=this.getParent(n),e=n.closest(".hierarchy"),i&&i.classList&&i.classList.remove("hidden"),e&&e.classList.remove("isAncestorsCollapsed"),this.repaint(i),i)&&i.classList&&(i.classList.add("sliding"),i.classList.remove("slide-down"),i.addEventListener("transitionend",function(e){e.animatedNode=i,e.node=n,t.showParentEnd(e)},{once:!0}))},stopAjax:function(e){var e=h(e);e&&e.querySelector(".spinner")&&(e=e.closest(".orgchart"))&&y(e,"inAjax",!1)},isVisibleNode:function(e,t){return this.getNodeState(t).visible},isCompactDescendant:function(e,t){return!!(t&&t.parentElement&&t.parentElement.matches(".node.compact"))},hideChildrenEnd:function(e){var t=e.originalEvent||e,n=h(e.node||t.node);c(e.animatedNodes||t.animatedNodes).forEach(function(e){e.classList&&e.classList.remove("sliding"),(e=e&&"function"==typeof e.closest?e.closest(".nodes"):null)&&e.classList&&e.classList.add("hidden")}),this.isInAction(n)&&(e=n&&Array.from(n.children||[]).find(function(e){return e.classList&&e.classList.contains("bottomEdge")})||null,this.switchVerticalArrow(e))},hideChildren:function(e){const t=this,n=h(e);var i;let s;n&&(e=n.closest(".hierarchy"),i=Array.from(n.parentElement?n.parentElement.children:[]).find(function(e){return e!==n&&e.classList&&e.classList.contains("nodes")})||null)&&(e&&e.classList.add("isChildrenCollapsed"),this.stopAjax(i),s=Array.from(i.querySelectorAll(".node")).filter(function(e,t){return this.isVisibleNode(t,e)&&!this.isCompactDescendant(t,e)},this),i.classList.contains("vertical")||s.forEach(function(e){e=e.closest(".hierarchy");e&&e.classList.add("isCollapsedDescendant")}),(i.classList.contains("vertical")||i.querySelector(".vertical"))&&s.forEach(function(e){Array.from(e.querySelectorAll("."+this.options.icons.expanded)).forEach(function(e){e.classList.remove(this.options.icons.expanded),e.classList.add(this.options.icons.collapsed)},this)},this),this.repaint(s[0]),s.forEach(function(e){e.classList.add("sliding","slide-up")}),s[0])&&s[0].addEventListener("transitionend",function(e){e.node=n,e.animatedNodes=s,t.hideChildrenEnd(e)},{once:!0})},showChildrenEnd:function(e){var t=e.originalEvent||e,n=h(e.node||t.node);c(e.animatedNodes||t.animatedNodes).forEach(function(e){e.classList&&e.classList.remove("sliding")}),this.isInAction(n)&&(e=n&&Array.from(n.children||[]).find(function(e){return e.classList&&e.classList.contains("bottomEdge")})||null,this.switchVerticalArrow(e))},showChildren:function(e){const t=this,n=h(e);var i;let s;n&&(e=n.closest(".hierarchy"),i=Array.from(n.parentElement?n.parentElement.children:[]).find(function(e){return e!==n&&e.classList&&e.classList.contains("nodes")})||null)&&(e&&e.classList.remove("isChildrenCollapsed"),i.classList.remove("hidden"),e=i.classList.contains("vertical"),s=e?Array.from(i.querySelectorAll(".node")).filter(function(e,t){return this.isVisibleNode(t,e)},this):Array.from(i.children).filter(function(e){return e.classList&&e.classList.contains("hierarchy")}).map(function(e){return e.querySelector(".node")}).filter(function(e,t){return this.isVisibleNode(t,e)},this),e||s.forEach(function(e){var t=e.closest(".hierarchy");t&&!e.matches(":only-child")&&t.classList.add("isChildrenCollapsed"),t&&t.classList.remove("isCollapsedDescendant")}),this.repaint(s[0]),s.forEach(function(e){e.classList.add("sliding"),e.classList.remove("slide-up")}),s[0])&&s[0].addEventListener("transitionend",function(e){e.node=n,e.animatedNodes=s,t.showChildrenEnd(e)},{once:!0})},hideSiblingsEnd:function(e){const t=this;var n=e.originalEvent||e,i=h(e.node||n.node);const s=h(e.nodeContainer||n.nodeContainer);let o=(void 0!==e.direction?e:n).direction;e=e.animatedNodes||n.animatedNodes;void 0===o&&(o=n.direction);let r=[],a;if(s)if("left"===o)for(a=s.previousElementSibling;a;)a.classList.contains("hidden")||r.push(a),a=a.previousElementSibling;else if("right"===o)for(a=s.nextElementSibling;a;)a.classList.contains("hidden")||r.push(a),a=a.nextElementSibling;else s.parentElement&&(r=Array.from(s.parentElement.children).filter(function(e){return e!==s}));c(e).forEach(function(e){e.classList&&e.classList.remove("sliding")}),r.forEach(function(e){Array.from(e.querySelectorAll(".node")).filter(function(e){return t.isVisibleNode(null,e)}).slice(1).forEach(function(e){e.classList.remove("slide-left","slide-right"),t.options.compact||e.classList.add("slide-up")}),Array.from(e.querySelectorAll(".nodes, .vertical")).forEach(function(e){e.classList.add("hidden")}),e.classList.add("hidden")}),this.isInAction(i)&&this.switchHorizontalArrow(i)},hideSiblings:function(t,n){const i=this,s=h(t);var e;let o;t=[];let r=[];if(s&&(e=s.closest(".orgchart"),o=s.closest(".hierarchy"))){if(o.classList.add("isSiblingsCollapsed"),(t=o.parentElement?Array.from(o.parentElement.children).filter(function(e){return e!==o}):[]).some(function(e){return e.querySelector(".spinner")})&&e&&y(e,"inAjax",!1),n)if("left"===n){let e=o.previousElementSibling;for(o.classList.add("left-sibs"),t.forEach(function(e){e.classList.contains("isSiblingsCollapsed")&&e.classList.remove("isSiblingsCollapsed","left-sibs")});e;)e.classList.add("isCollapsedSibling","isChildrenCollapsed"),r=r.concat(Array.from(e.querySelectorAll(".node")).filter(function(e,t){return this.isVisibleNode(t,e)},this)),e=e.previousElementSibling;r.forEach(function(e){e.classList.add("sliding","slide-right")})}else{let e=o.nextElementSibling;for(o.classList.add("right-sibs"),t.forEach(function(e){e.classList.contains("isSiblingsCollapsed")&&e.classList.remove("isSiblingsCollapsed","right-sibs")});e;)e.classList.add("isCollapsedSibling","isChildrenCollapsed"),r=r.concat(Array.from(e.querySelectorAll(".node")).filter(function(e,t){return this.isVisibleNode(t,e)},this)),e=e.nextElementSibling;r.forEach(function(e){e.classList.add("sliding","slide-left")})}else t.forEach(function(t){var e=Array.from(t.querySelectorAll(".node")).filter(function(e,t){return this.isVisibleNode(t,e)},this);t.classList.add("isCollapsedSibling","isChildrenCollapsed"),r=r.concat(e),e.forEach(function(e){e.classList.add("sliding"),t.compareDocumentPosition(o)&Node.DOCUMENT_POSITION_FOLLOWING?e.classList.add("slide-right"):e.classList.add("slide-left")})},this);r[0]&&r[0].addEventListener("transitionend",function(e){e.node=s,e.nodeContainer=o,e.direction=n,e.animatedNodes=r,i.hideSiblingsEnd(e)},{once:!0})}},showSiblingsEnd:function(e){var t=e.originalEvent||e,n=h(e.node||t.node);c(e.visibleNodes||t.visibleNodes).forEach(function(e){e.classList&&e.classList.remove("sliding")}),this.isInAction(n)&&(this.switchHorizontalArrow(n),e=n&&Array.from(n.children||[]).find(function(e){return e.classList&&e.classList.contains("topEdge")})||null)&&e.classList&&(e.classList.remove(this.options.icons.expandToUp),e.classList.add(this.options.icons.collapseToDown))},showRelatedParentEnd:function(e){var t=e.originalEvent||e,e=h(e.animatedNode||t.animatedNode||t.target);e&&e.classList&&e.classList.remove("sliding")},showSiblings:function(e,t){const n=this,i=h(e);let s,o=[];let r,a;if(i&&(s=i.closest(".hierarchy"))){if(t)if("left"===t){let e=s.previousElementSibling;for(;e;)e.classList.remove("hidden"),o.push(e),e=e.previousElementSibling}else{let e=s.nextElementSibling;for(;e;)e.classList.remove("hidden"),o.push(e),e=e.nextElementSibling}else(o=s.parentElement?Array.from(s.parentElement.children).filter(function(e){return e!==s}):[]).forEach(function(e){e.classList.remove("hidden")});e=i.closest(".nodes"),r=e?e.previousElementSibling:null,t?(s.classList.remove(t+"-sibs"),Array.from(s.classList).some(function(e){return-1<e.indexOf("-sibs")})||s.classList.remove("isSiblingsCollapsed"),o.forEach(function(e){e.classList.remove("isCollapsedSibling",t+"-sibs")})):(s.classList.remove("isSiblingsCollapsed"),o.forEach(function(e){e.classList.remove("isCollapsedSibling")})),this.getNodeState(i,"parent").visible||(s.classList.remove("isAncestorsCollapsed"),r&&(r.classList.remove("hidden"),this.repaint(r),r.classList.add("sliding"),r.classList.remove("slide-down"),r.addEventListener("transitionend",function(e){e.animatedNode=r,n.showRelatedParentEnd(e)},{once:!0}))),a=o.flatMap(function(e){return Array.from(e.querySelectorAll(".node"))},this).filter(function(e,t){return this.isVisibleNode(t,e)},this),this.repaint(a[0]),a.forEach(function(e){e.classList.add("sliding"),e.classList.remove("slide-left","slide-right")}),a[0]&&a[0].addEventListener("transitionend",function(e){e.node=i,e.visibleNodes=a,n.showSiblingsEnd(e)},{once:!0})}},startLoading:function(e){var e=h(e),t=this.chart;let n;return!(!e||!t||void 0!==b(t,"inAjax")&&!0===b(t,"inAjax")||(e.classList.add("hidden"),(e=e.parentElement)&&(e.insertAdjacentHTML("beforeend",`<i class="${this.options.icons.theme} ${this.options.icons.spinner} spinner"></i>`),n=Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("spinner")})||null,Array.from(e.children||[]).forEach(function(e){e!==n&&(e.style.opacity=.2)})),y(t,"inAjax",!0),Array.from(m().querySelectorAll(".oc-export-btn")).forEach(function(e){e.disabled=!0}),0))},endLoading:function(e){var t,e=h(e),n=this.chart;e&&n&&(t=e.parentElement,e.classList.remove("hidden"),t&&(Array.from(t.querySelectorAll(".spinner")).forEach(function(e){e.remove()}),Array.from(t.children||[]).forEach(function(e){e.removeAttribute("style")})),y(n,"inAjax",!1),Array.from(m().querySelectorAll(".oc-export-btn")).forEach(function(e){e.disabled=!1}))},isInAction:function(e){e=h(e);const t=Array.from(e?e.children:[]).filter(function(e){return e.classList&&e.classList.contains("edge")}).map(function(e){return e.className}).join(" ");return[this.options.icons.expandToUp,this.options.icons.collapseToDown,this.options.icons.collapseToLeft,this.options.icons.expandToRight].some(function(e){return-1<t.indexOf(e)})},switchVerticalArrow:function(e){e=h(e);e&&e.classList&&(e.classList.toggle(this.options.icons.expandToUp),e.classList.toggle(this.options.icons.collapseToDown))},switchHorizontalArrow:function(e){var t,n,e=h(e),i=this.options;let s;e&&(s=e.closest(".hierarchy"),n=e.closest(".nodes"),t=Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("leftEdge")})||null,e=Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("rightEdge")})||null,i.toggleSiblingsResp&&(void 0===i.ajaxURL||b(n,"siblingsLoaded"))?((n=s?s.previousElementSibling:null)&&t&&(t.classList.toggle(i.icons.collapseToLeft,n.classList.contains("hidden")),t.classList.toggle(i.icons.expandToRight,!n.classList.contains("hidden"))),(n=s?s.nextElementSibling:null)&&e&&(e.classList.toggle(i.icons.expandToRight,n.classList.contains("hidden")),e.classList.toggle(i.icons.collapseToLeft,!n.classList.contains("hidden")))):(n=!!(n=s&&s.parentElement?Array.from(s.parentElement.children).filter(function(e){return e!==s}):[]).length&&!n[0].classList.contains("hidden"),t&&(t.classList.toggle(i.icons.expandToRight,n),t.classList.toggle(i.icons.collapseToLeft,!n)),e&&(e.classList.toggle(i.icons.collapseToLeft,n),e.classList.toggle(i.icons.expandToRight,!n))))},repaint:function(e){e&&(e.style.offsetWidth=e.offsetWidth)},nodeEnterLeaveHandler:function(e){var t=e.originalEvent||e,n=t.type,e=e.node||t.currentTarget,t=Array.from(e?e.children:[]),i=!(!e||!e.closest(".nodes.vertical")),s=t.find(function(e){return e.classList&&e.classList.contains("toggleBtn")})||null,o=t.find(function(e){return e.classList&&e.classList.contains("topEdge")})||null,r=t.find(function(e){return e.classList&&e.classList.contains("rightEdge")})||null,a=t.find(function(e){return e.classList&&e.classList.contains("bottomEdge")})||null,l=t.find(function(e){return e.classList&&e.classList.contains("leftEdge")})||null;let c=!1;i?"mouseenter"===n?s&&(c=this.getNodeState(e,"children").visible,s.classList.toggle(this.options.icons.collapsed,!c),s.classList.toggle(this.options.icons.expanded,c)):s&&s.classList.remove(this.options.icons.collapsed,this.options.icons.expanded):"mouseenter"===n?(o&&(c=this.getNodeState(e,"parent").visible,o.classList.toggle(this.options.icons.expandToUp,!c),o.classList.toggle(this.options.icons.collapseToDown,c)),a&&(c=this.getNodeState(e,"children").visible,a.classList.toggle(this.options.icons.collapseToDown,!c),a.classList.toggle(this.options.icons.expandToUp,c)),(l||r)&&this.switchHorizontalArrow(e)):t.forEach(function(e){e.classList&&e.classList.contains("edge")&&e.classList.remove(this.options.icons.expandToUp,this.options.icons.collapseToDown,this.options.icons.collapseToLeft,this.options.icons.expandToRight)},this)},nodeClickHandler:function(e){var t=this.chart,n=e.originalEvent||e,e=e.node||n.currentTarget;t&&e&&e.classList&&(Array.from(t.querySelectorAll(".focused")).forEach(function(e){e.classList.remove("focused")}),e.classList.add("focused"))},addAncestors:function(e,t){var n=this.chart?this.chart.querySelector(":scope > .nodes > .hierarchy"):null;let i,s;n&&(this.buildHierarchy(n,e),e=Array.from(n.children).slice(0,2),(i=m().createElement("li")).className="hierarchy",n.insertBefore(i,e[0]||null),e.forEach(function(e){i.appendChild(e)}),n=(s=m().getElementById(t))&&Array.from(s.parentElement?s.parentElement.children:[]).find(function(e){return e!==s&&e.classList&&e.classList.contains("nodes")})||null)&&n!==i.parentElement&&n.appendChild(i)},addDescendants:function(e,t){const n=this;t=h(t);let i;t&&t.parentElement&&((i=m().createElement("ul")).className="nodes",t.after(i),p(e,function(){var e=m().createElement("li");e.className="hierarchy",i.appendChild(e),n.buildHierarchy(e,this)}))},HideFirstParentEnd:function(e){var t=e.originalEvent||e,e=h(e.topEdge||t.topEdge),t=e?e.parentElement:null;this.isInAction(t)&&(this.switchVerticalArrow(e),this.switchHorizontalArrow(t))},topEdgeClickHandler:function(e){const t=this;var n=e.originalEvent||e,i=e.node||n.currentTarget;const s=h(e.edge||n.target);var o,r,e=this.getParent(i),n=this.getNodeState(i,"parent");n.exist&&(o=!!(e&&e.classList&&e.classList.contains("sliding")),r=!!(e&&e.classList&&e.classList.contains("slide-down")),o&&!r||(n.visible&&!r?(this.hideParent(i),e&&e.addEventListener("transitionend",function(e){e.topEdge=s,t.HideFirstParentEnd(e)},{once:!0}),this.triggerHideEvent(i,"parent")):(this.showParent(i),this.triggerShowEvent(i,"parent"))))},bottomEdgeClickHandler:function(e){var t=e.originalEvent||e;const n=e.node||t.currentTarget;e=this.getNodeState(n,"children");e.exist&&!((t=Array.from(n.parentElement?n.parentElement.children:[]).find(function(e){return e!==n&&e.classList&&e.classList.contains("nodes")})||null)?Array.from(t.children).filter(function(e){return e.classList&&e.classList.contains("hierarchy")}).map(function(e){return e.querySelector(".node")}).filter(Boolean):[]).some(function(e){return e.classList.contains("sliding")})&&(e.visible?(this.hideChildren(n),this.triggerHideEvent(n,"children")):(this.showChildren(n),this.triggerShowEvent(n,"children")))},hEdgeClickHandler:function(e){var t,n=e.originalEvent||e,i=e.node||n.currentTarget,e=h(e.edge||n.target),n=this.options,s=this.getNodeState(i,"siblings");let o;s.exist&&!((o=i.closest(".hierarchy"))&&o.parentElement?Array.from(o.parentElement.children).filter(function(e){return e!==o}):[]).some(function(e){return e.querySelector(".sliding")})&&(n.toggleSiblingsResp?(n=o?o.previousElementSibling:null,t=o?o.nextElementSibling:null,e&&e.classList&&e.classList.contains("leftEdge")?n&&n.classList.contains("hidden")?(this.showSiblings(i,"left"),this.triggerShowEvent(i,"siblings")):(this.hideSiblings(i,"left"),this.triggerHideEvent(i,"siblings")):t&&t.classList.contains("hidden")?(this.showSiblings(i,"right"),this.triggerShowEvent(i,"siblings")):(this.hideSiblings(i,"right"),this.triggerHideEvent(i,"siblings"))):s.visible?(this.hideSiblings(i),this.triggerHideEvent(i,"siblings")):(this.showSiblings(i),this.triggerShowEvent(i,"siblings")))},backToCompactHandler:function(e){var t=e.originalEvent||e,e=e.compactNode||t.currentTarget;e&&(e.classList.remove("looseMode"),Array.from(e.querySelectorAll(".looseMode")).forEach(function(e){var t=Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("backToCompactSymbol")})||null,n=Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("backToLooseSymbol")})||null;e.classList.remove("looseMode"),t&&t.classList.add("hidden"),n&&n.classList.remove("hidden")}),t=Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("backToCompactSymbol")})||null,e=Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("backToLooseSymbol")})||null,t&&t.classList.add("hidden"),e)&&e.classList.remove("hidden")},backToLooseHandler:function(e){var t=e.originalEvent||e,e=e.compactNode||t.currentTarget;e&&(e.classList.add("looseMode"),t=Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("backToLooseSymbol")})||null,e=Array.from(e.children||[]).find(function(e){return e.classList&&e.classList.contains("backToCompactSymbol")})||null,t&&t.classList.add("hidden"),e)&&e.classList.remove("hidden")},expandVNodesEnd:function(e){var t=e.originalEvent||e;c(e.vNodes||t.vNodes).forEach(function(e){e.classList&&e.classList.remove("sliding")})},collapseVNodesEnd:function(e){var t=e.originalEvent||e;c(e.vNodes||t.vNodes).forEach(function(e){var t=e&&"function"==typeof e.closest?e.closest("ul"):null;e.classList&&e.classList.remove("sliding"),t&&t.classList&&t.classList.add("hidden")})},toggleVNodes:function(e){const t=this;var n=e.originalEvent||e,e=e.toggleButton||n.target,n=e&&e.parentElement?e.parentElement.nextElementSibling:null;let i,s;e&&n&&(i=Array.from(n.querySelectorAll(".node")),(s=Array.from(n.children||[]).map(function(e){return e.querySelector(".node")}).filter(Boolean)).some(function(e){return e.classList.contains("sliding")})||(e.classList.toggle(this.options.icons.collapsed),e.classList.toggle(this.options.icons.expanded),i[0]&&i[0].classList.contains("slide-up")?(n.classList.remove("hidden"),this.repaint(s[0]),s.forEach(function(e){e.classList.add("sliding"),e.classList.remove("slide-up")}),s[0]&&s[0].addEventListener("transitionend",function(e){e.vNodes=s,t.expandVNodesEnd(e)},{once:!0})):(i.forEach(function(e){e.classList.add("sliding","slide-up")}),i[0]&&i[0].addEventListener("transitionend",function(e){e.vNodes=i,t.collapseVNodesEnd(e)},{once:!0}),i.forEach(function(e){Array.from(e.querySelectorAll(".toggleBtn")).forEach(function(e){e.classList.remove(this.options.icons.collapsed,this.options.icons.expanded)},this)},this))))},createGhostNode:function(n){var i,s=n.originalEvent||n,n=n.sourceNode||s.target,o=n&&"function"==typeof n.closest?n.closest(".orgchart"):null,r=this.options,a=/firefox/.test(d().navigator.userAgent.toLowerCase());let l,c;if(n&&o){if(m().querySelector(".ghost-node"))l=o.querySelector(".ghost-node"),c=l?l.firstElementChild:null;else{if(!(l=m().createElementNS("http://www.w3.org/2000/svg","svg")).classList)return;l.classList.add("ghost-node"),c=m().createElementNS("http://www.w3.org/2000/svg","rect"),l.appendChild(c),o.appendChild(l)}if(l&&c){n=n.getBoundingClientRect(),o=(o.style.transform||d().getComputedStyle(o).transform||"none").split(","),i="t2b"===r.direction||"b2t"===r.direction,o=Math.abs(d().parseFloat(i?o[0].slice(o[0].indexOf("(")+1):o[1])),l.setAttribute("width",i?n.width:n.height),l.setAttribute("height",i?n.height:n.width),c.setAttribute("x",5*o),c.setAttribute("y",5*o),c.setAttribute("width",120*o),c.setAttribute("height",40*o),c.setAttribute("rx",4*o),c.setAttribute("ry",4*o),c.setAttribute("stroke-width",+o);let e=s.offsetX*o,t=s.offsetY*o;"l2r"===r.direction?(e=s.offsetY*o,t=s.offsetX*o):"r2l"===r.direction?(e=n.width-s.offsetY*o,t=s.offsetX*o):"b2t"===r.direction&&(e=n.width-s.offsetX*o,t=n.height-s.offsetY*o),a?(c.setAttribute("fill","rgb(255, 255, 255)"),c.setAttribute("stroke","rgb(191, 0, 0)"),(i=m().createElement("img")).src="data:image/svg+xml;utf8,"+(new XMLSerializer).serializeToString(l),s.dataTransfer.setDragImage(i,e,t)):s.dataTransfer.setDragImage&&s.dataTransfer.setDragImage(l,e,t)}}},getUpperLevel:function(e){e=h(e);let t,n=0;if(!e||!e.matches(".node"))return 0;for(t=e.parentElement;t;)t.classList&&t.classList.contains("hierarchy")&&(n+=1),t=t.parentElement;return n},getLowerLevel:function(e){e=h(e);let t=1,n;if(!e||!e.matches(".node"))return 0;for(n=this.getChildren(e);n.length;){const i=[];t+=1,n.forEach(function(e){Array.prototype.push.apply(i,this.getChildren(e))},this),n=i}return t},getLevelOrderNodes:function(e){var e=h(e),t=[],n=[];if(!e)return[];for(t.push(e);t.length;){var i=[],s=t.length;for(let e=0;e<s;e++){var o=t.shift(),r=this.getChildren(o);r.length&&Array.prototype.push.apply(t,r),i.push(o)}n.push(i)}return n},filterAllowedDropNodes:function(e){const t=h(e),n=this.options;var i,e=this.chart;let s,o,r;e&&(i=t&&"function"==typeof t.closest?t.closest("[draggable]"):null,r=!!(i&&i.classList&&i.classList.contains("node")),s=t&&t.closest(".nodes")?t.closest(".nodes").previousElementSibling:null,i=t&&t.closest(".hierarchy")?Array.from(t.closest(".hierarchy").querySelectorAll(".node")):[],o=new Set(i),y(e,"dragged",t),Array.from(e.querySelectorAll(".node")).forEach(function(e){r&&o.has(e)||n.dropCriteria&&!n.dropCriteria(t,s,e)||e.classList.add("allowedDrop")}))},dragstartHandler:function(e){var t=e.originalEvent||e,e=e.draggedNode||t.target,n=this.chart,n=n&&(n.style.transform||d().getComputedStyle(n).transform)||"none";t.dataTransfer.setData("text/html","hack for firefox"),"none"!==n&&this.createGhostNode({sourceNode:e,originalEvent:t}),this.filterAllowedDropNodes(e)},dragoverHandler:function(e){var t=e.originalEvent||e,e=e.dropZone||t.currentTarget;e&&e.classList&&e.classList.contains("allowedDrop")?"function"==typeof t.preventDefault&&t.preventDefault():t.dataTransfer.dropEffect="none"},dragendHandler:function(e){var t=this.chart;t&&Array.from(t.querySelectorAll(".allowedDrop")).forEach(function(e){e.classList.remove("allowedDrop")})},dropHandler:async function(e){var t=e.originalEvent||e,n=this.chart;const i=e.dropZone||t.currentTarget;var s,o,r,a,e=n?h(b(n,"dragged")):null,t=n?b(n,"options"):null;let l,c,d;e&&e.classList&&e.classList.contains("node")?i&&i.classList&&i.classList.contains("allowedDrop")&&(l=e.closest(".nodes")?e.closest(".nodes").previousElementSibling:null,a={type:"nodedrop.orgchart",defaultPrevented:!1,preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented}},n&&(((s=A(a,{draggedNode:e,dragZone:l,dropZone:i})).delegateTarget=n).dispatchEvent(s),a.defaultPrevented=s.defaultPrevented),a.isDefaultPrevented()||(s=t.data,o=(a=new JSONDigger(s,t.nodeId,"children")).findOneNode({hybrid:!0}),1<t.verticalLevel||o?(o=a.findNodeById(b(e,"nodeData").id),r=Object.assign({},o),a.removeNode(o.id),(o=a.findNodeById(b(i,"nodeData").id)).children?o.children.push(r):o.children=[r],this.attachRel(s,"00"),this.init({data:s})):(d=e.closest(".hierarchy"),(c=Array.from(i.parentElement?i.parentElement.children:[]).find(function(e){return e!==i&&e.classList&&e.classList.contains("nodes")})||null)?(a=`<i class="edge horizontalEdge rightEdge ${this.options.icons.theme}"></i><i class="edge horizontalEdge leftEdge ${this.options.icons.theme}"></i>`,e.querySelector(".horizontalEdge")||e.insertAdjacentHTML("