mind-elixir
Version:
Mind elixir is a free open source mind map core.
15 lines • 92.9 kB
JavaScript
var MindElixir=(function(I){"use strict";const ee={name:"Latte",type:"light",palette:["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],cssVar:{"--node-gap-x":"30px","--node-gap-y":"10px","--main-gap-x":"65px","--main-gap-y":"45px","--root-radius":"30px","--main-radius":"20px","--root-color":"#ffffff","--root-bgcolor":"#4c4f69","--root-border-color":"rgba(0, 0, 0, 0)","--main-border":"","--main-color":"#444446","--main-bgcolor":"#ffffff","--main-bgcolor-transparent":"rgba(255, 255, 255, 0.8)","--topic-padding":"3px","--color":"#777777","--bgcolor":"#f6f6f6","--selected":"#4dc4ff","--accent-color":"#e64553","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea","--map-padding":"50px 80px"}},te={name:"Dark",type:"dark",palette:["#848FA0","#748BE9","#D2F9FE","#4145A5","#789AFA","#706CF4","#EF987F","#775DD5","#FCEECF","#DA7FBC"],cssVar:{"--node-gap-x":"30px","--node-gap-y":"10px","--main-gap-x":"65px","--main-gap-y":"45px","--root-radius":"30px","--main-radius":"20px","--root-color":"#ffffff","--root-bgcolor":"#2d3748","--root-border-color":"rgba(255, 255, 255, 0.1)","--main-border":"","--main-color":"#ffffff","--main-bgcolor":"#4c4f69","--main-bgcolor-transparent":"rgba(76, 79, 105, 0.8)","--topic-padding":"3px","--color":"#cccccc","--bgcolor":"#252526","--selected":"#4dc4ff","--accent-color":"#789AFA","--panel-color":"#ffffff","--panel-bgcolor":"#2d3748","--panel-border-color":"#696969","--map-padding":"50px 80px"}};function ye(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/"/g,""")}const ne=function(e,t){if(t.id===e)return t;if(t.children&&t.children.length){for(let n=0;n<t.children.length;n++){const o=ne(e,t.children[n]);if(o)return o}return null}else return null},W=(e,t)=>{if(e.parent=t,e.children)for(let n=0;n<e.children.length;n++)W(e.children[n],e)},K=(e,t,n)=>{if(e.expanded=t,e.children)if(n===void 0||n>0){const o=n!==void 0?n-1:void 0;e.children.forEach(s=>{K(s,t,o)})}else e.children.forEach(o=>{K(o,!1)})};function be(e){if(e.id=Y(),e.children)for(let t=0;t<e.children.length;t++)be(e.children[t])}function oe(e,t,n,o){const s=n-e,i=o-t,l=Math.atan2(i,s)*180/Math.PI,a=12,c=30,h=(l+180-c)*Math.PI/180,d=(l+180+c)*Math.PI/180;return{x1:n+Math.cos(h)*a,y1:o+Math.sin(h)*a,x2:n+Math.cos(d)*a,y2:o+Math.sin(d)*a}}function Y(){return(new Date().getTime().toString(16)+Math.random().toString(16).substring(2)).substring(2,18)}const St=function(){const e=Y();return{topic:this.newTopicName,id:e}};function V(e){return JSON.parse(JSON.stringify(e,(n,o)=>{if(n!=="parent")return o}))}const P=(e,t)=>{let n=0,o=0;for(;t&&t!==e;)n+=t.offsetLeft,o+=t.offsetTop,t=t.offsetParent;return{offsetLeft:n,offsetTop:o}},M=(e,t)=>{for(const n in t)e.setAttribute(n,t[n])},se=e=>e?e.tagName==="ME-TPC":!1,ve=e=>{const t=new Set(e.map(n=>n.nodeObj));return e.filter(n=>n.nodeObj.parent).filter(n=>{let o=n.nodeObj.parent;for(;o;){if(t.has(o))return!1;o=o.parent}return!0})},we=e=>{const t=/translate3d\(([^,]+),\s*([^,]+)/,n=e.match(t);return n?{x:parseFloat(n[1]),y:parseFloat(n[2])}:{x:0,y:0}},Ae=function(e){for(let t=0;t<e.length;t++){const{dom:n,evt:o,func:s}=e[t];n.addEventListener(o,s)}return function(){for(let n=0;n<e.length;n++){const{dom:o,evt:s,func:i}=e[n];o.removeEventListener(s,i)}}},Pe=(e,t)=>{const n=e.x-t.x,o=e.y-t.y;return Math.sqrt(n*n+o*o)},Oe=function(e,t){if(!t)return ie(e),e;let n=e.querySelector(".insert-preview");const o=`insert-preview ${t} show`;return n||(n=document.createElement("div"),e.appendChild(n)),n.className=o,e},ie=function(e){if(!e)return;const t=e.querySelectorAll(".insert-preview");for(const n of t||[])n.remove()},re=function(e,t){for(const n of t){const o=n.parentElement.parentElement.contains(e);if(!(e&&e.tagName==="ME-TPC"&&e!==n&&!o&&e.nodeObj.parent))return!1}return!0},Nt=function(e){const t=document.createElement("div");return t.className="mind-elixir-ghost",e.container.appendChild(t),t};class Tt{mind;isMoving=!1;interval=null;speed=20;constructor(t){this.mind=t}move(t,n){this.isMoving||(this.isMoving=!0,this.interval=setInterval(()=>{this.mind.move(t*this.speed*this.mind.scaleVal,n*this.speed*this.mind.scaleVal)},100))}stop(){this.isMoving=!1,this.interval&&(clearInterval(this.interval),this.interval=null)}}function Dt(e){return{isDragging:!1,insertType:null,meet:null,ghost:Nt(e),edgeMoveController:new Tt(e),startX:0,startY:0,pointerId:null}}const Mt=5;function $e(e,t,n,o=!1){if(e.spacePressed)return!1;const s=n.target;if(s?.tagName!=="ME-TPC"||!s.nodeObj.parent)return!1;if(t.startX=n.clientX,t.startY=n.clientY,t.pointerId=n.pointerId,e.dragged=e.currentNodes,o){Ie(e,t);const i=e.container.getBoundingClientRect();He(t.ghost,n.clientX-i.x,n.clientY-i.y)}return!0}function He(e,t,n){e.style.transform=`translate(${t-10}px, ${n-10}px)`,e.style.display="block"}function Ie(e,t){const{dragged:n}=e;if(!n)return;const o=document.activeElement;o&&o.isContentEditable&&o.blur(),t.isDragging=!0,n.length>1?t.ghost.innerHTML=n.length+"":t.ghost.innerHTML=n[0].innerHTML;for(const s of n)s.parentElement.parentElement.style.opacity="0.5";e.panHelper.clear()}function _t(e,t,n){const{dragged:o}=e;if(!o||t.pointerId!==n.pointerId)return;const s=n.clientX-t.startX,i=n.clientY-t.startY,r=Math.sqrt(s*s+i*i);if(!t.isDragging&&r>Mt&&Ie(e,t),!t.isDragging)return;const l=e.container.getBoundingClientRect();He(t.ghost,n.clientX-l.x,n.clientY-l.y),n.clientX<l.x+50?t.edgeMoveController.move(1,0):n.clientX>l.x+l.width-50?t.edgeMoveController.move(-1,0):n.clientY<l.y+50?t.edgeMoveController.move(0,1):n.clientY>l.y+l.height-50?t.edgeMoveController.move(0,-1):t.edgeMoveController.stop(),ie(t.meet);const a=12*e.scaleVal;if(e.direction===3){const h=document.elementFromPoint(n.clientX-a,n.clientY);if(re(h,o)){t.meet=h;const d=h.getBoundingClientRect();n.clientX>d.x+d.width?t.insertType="after":t.insertType="in"}else{const d=document.elementFromPoint(n.clientX+a,n.clientY);if(re(d,o)){t.meet=d;const u=d.getBoundingClientRect();n.clientX<u.x?t.insertType="before":t.insertType="in"}else t.insertType=null,t.meet=null}t.meet&&Oe(t.meet,t.insertType);return}const c=document.elementFromPoint(n.clientX,n.clientY-a);if(re(c,o)){t.meet=c;const h=c.getBoundingClientRect(),d=h.y;n.clientY>d+h.height?t.insertType="after":t.insertType="in"}else{const h=document.elementFromPoint(n.clientX,n.clientY+a);if(re(h,o)){t.meet=h;const u=h.getBoundingClientRect().y;n.clientY<u?t.insertType="before":t.insertType="in"}else t.insertType=null,t.meet=null}t.meet&&Oe(t.meet,t.insertType)}function Lt(e,t,n){const{dragged:o}=e;if(!(!o||t.pointerId!==n.pointerId)){t.edgeMoveController.stop();for(const s of o)s.parentElement.parentElement.style.opacity="1";t.ghost.style.display="none",t.ghost.innerHTML="",t.isDragging&&t.meet&&(ie(t.meet),t.insertType==="before"?e.moveNodeBefore(o,t.meet):t.insertType==="after"?e.moveNodeAfter(o,t.meet):t.insertType==="in"&&e.moveNodeIn(o,t.meet)),e.dragged=null,t.isDragging=!1,t.insertType=null,t.meet=null,t.pointerId=null}}function je(e,t){const{dragged:n}=e;if(n){t.edgeMoveController.stop();for(const o of n)o.parentElement.parentElement.style.opacity="1";t.meet&&ie(t.meet),t.ghost.style.display="none",t.ghost.innerHTML="",e.dragged=null,t.isDragging=!1,t.insertType=null,t.meet=null,t.pointerId=null}}function kt(e){return()=>{}}const L={LHS:"lhs",RHS:"rhs",DOWN:"down"},At=function(){this.nodes.innerHTML="",this.nodes.className=this.direction===3?"down":"";const e=this.createTopic(this.nodeData);xe.call(this,e,this.nodeData),e.draggable=!1;const t=document.createElement("me-root");t.appendChild(e);const n=this.nodeData.children||[];if(this.direction===2){let o=0,s=0;n.map(i=>{i.direction===0?o+=1:i.direction===1?s+=1:o<=s?(i.direction=0,o+=1):(i.direction=1,s+=1)})}Pt(this,n,t)},Pt=function(e,t,n){if(e.direction===3){const i=document.createElement("me-main");i.className=L.DOWN;for(let r=0;r<t.length;r++){const{grp:l}=e.createWrapper(t[r]);i.appendChild(l)}e.nodes.appendChild(n),e.nodes.appendChild(i),e.nodes.appendChild(e.lines),e.nodes.appendChild(e.labelContainer);return}const o=document.createElement("me-main");o.className=L.LHS;const s=document.createElement("me-main");s.className=L.RHS;for(let i=0;i<t.length;i++){const r=t[i],{grp:l}=e.createWrapper(r);e.direction===2?r.direction===0?o.appendChild(l):s.appendChild(l):e.direction===0?o.appendChild(l):s.appendChild(l)}e.nodes.appendChild(o),e.nodes.appendChild(n),e.nodes.appendChild(s),e.nodes.appendChild(e.lines),e.nodes.appendChild(e.labelContainer)},Ot=function(e,t){const n=document.createElement("me-children");for(let o=0;o<t.length;o++){const s=t[o],{grp:i}=e.createWrapper(s);n.appendChild(i)}return n},Re=function(e,t){const o=(this?.el?this.el:t||document).querySelector(`[data-nodeid="me${e}"]`);if(!o)throw new Error(`FindEle: Node ${e} not found, maybe it's collapsed.`);return o},xe=function(e,t){if(e.innerHTML="",t.style){const n=t.style;for(const o in n)e.style[o]=n[o]}if(t.dangerouslySetInnerHTML){e.innerHTML=t.dangerouslySetInnerHTML;return}if(t.image){const n=t.image;if(n.url&&n.width&&n.height){const o=document.createElement("img");o.src=this.imageProxy?this.imageProxy(n.url):n.url,o.style.width=n.width+"px",o.style.height=n.height+"px",n.fit&&(o.style.objectFit=n.fit),e.appendChild(o),e.image=o}}else e.image&&(e.image=void 0);{const n=document.createElement("span");n.className="text",this.markdown?n.innerHTML=this.markdown(t.topic,t):n.textContent=t.topic,e.appendChild(n),e.text=n}if(t.hyperLink){const n=document.createElement("a");n.className="hyper-link",n.target="_blank",n.innerText="🔗",n.href=t.hyperLink,e.appendChild(n),e.link=n}else e.link&&(e.link=void 0);if(t.icons&&t.icons.length){const n=document.createElement("span");n.className="icons",n.innerHTML=t.icons.map(o=>`<span>${ye(o)}</span>`).join(""),e.appendChild(n),e.icons=n}else e.icons&&(e.icons=void 0);if(t.tags&&t.tags.length){const n=document.createElement("div");n.className="tags",t.tags.forEach(o=>{const s=document.createElement("span");typeof o=="string"?s.textContent=o:(s.textContent=o.text,o.className&&(s.className=o.className),o.style&&Object.assign(s.style,o.style)),n.appendChild(s)}),e.appendChild(n),e.tags=n}else e.tags&&(e.tags=void 0)},$t=function(e,t){const n=document.createElement("me-wrapper"),{p:o,tpc:s}=this.createParent(e);if(n.appendChild(o),!t&&e.children&&e.children.length>0){const i=Ee(e.expanded);if(o.appendChild(i),e.expanded!==!1){const r=Ot(this,e.children);n.appendChild(r)}}return{grp:n,top:o,tpc:s}},Ht=function(e){const t=document.createElement("me-parent"),n=this.createTopic(e);return xe.call(this,n,e),t.appendChild(n),{p:t,tpc:n}},It=function(e){const t=document.createElement("me-children");return t.append(...e),t},jt=function(e){const t=document.createElement("me-tpc");return t.nodeObj=e,t.dataset.nodeid="me"+e.id,t};function Be(e){const t=document.createRange();t.selectNodeContents(e);const n=window.getSelection();n&&(n.removeAllRanges(),n.addRange(t))}const Rt=function(e){if(!e)return;const t=document.createElement("div"),n=e.nodeObj,o=n.topic,{offsetLeft:s,offsetTop:i}=P(this.nodes,e);this.nodes.appendChild(t),t.id="input-box",t.textContent=o,t.contentEditable="plaintext-only",t.spellcheck=!1;const r=getComputedStyle(e);t.style.cssText=`
left: ${s}px;
top: ${i}px;
min-width:${e.offsetWidth-8}px;
color:${r.color};
font-size:${r.fontSize};
padding:${r.padding};
margin:${r.margin};
background-color:${r.backgroundColor!=="rgba(0, 0, 0, 0)"&&r.backgroundColor};
border: ${r.border};
border-radius:${r.borderRadius}; `,this.direction===0&&(t.style.right="0"),e.style.opacity="0",Be(t),this.bus.fire("operation",{name:"beginEdit",obj:e.nodeObj}),t.addEventListener("keydown",l=>{if(l.stopPropagation(),l.isComposing)return;const a=l.key;if(a==="Enter"||a==="Tab"){if(l.shiftKey)return;l.preventDefault(),t.blur(),this.container.focus()}else a==="Escape"&&(l.preventDefault(),t.textContent=o,t.blur(),this.container.focus())}),t.addEventListener("blur",()=>{if(!t)return;e.style.opacity="1";const l=t.innerText?.trim()||"";t.remove(),!(l===o||l==="")&&(n.topic=l,this.markdown?e.text.innerHTML=this.markdown(n.topic,n):e.text.textContent=l,this.linkDiv(),this.bus.fire("operation",{name:"finishEdit",obj:n,origin:o}))})},Ee=function(e){const t=document.createElement("me-epd");return t.expanded=e!==!1,t.className=e!==!1?"minus":"",t},le=e=>{const t=e.parent?.children,n=t?.indexOf(e)??0;return{siblings:t,index:n}};function We(e){const{siblings:t,index:n}=le(e);return t===void 0?0:(t.splice(n,1),t.length)}function Bt(e,t,n){const{siblings:o,index:s}=le(n);o!==void 0&&(t==="before"?o.splice(s,0,e):o.splice(s+1,0,e))}function Wt(e,t){const{siblings:n,index:o}=le(e);n!==void 0&&(n[o]=t,t.children=[e])}function Yt(e,t,n){if(We(t),n.parent?.parent||(t.direction=n.direction),e==="in")n.children?n.children.push(t):n.children=[t];else{t.direction!==void 0&&(t.direction=n.direction);const{siblings:o,index:s}=le(n);if(o===void 0)return;e==="before"?o.splice(s,0,t):o.splice(s+1,0,t)}}const Ft=function({map:e,direction:t},n){if(t===0)return 0;if(t===1)return 1;if(t===3)return 3;if(t===2){const o=e.querySelector(".lhs")?.childElementCount||0,s=e.querySelector(".rhs")?.childElementCount||0;return o<=s?(n.direction=0,0):(n.direction=1,1)}},Ye=function(e,t,n){const o=n.children[0].children[0],s=t.parentElement;if(s.tagName==="ME-PARENT"){if(J(o),s.children[1])s.nextSibling.appendChild(n);else{const i=e.createChildren([n]);s.appendChild(Ee(!0)),s.insertAdjacentElement("afterend",i)}e.linkDiv(n.offsetParent)}else if(s.tagName==="ME-ROOT"){const i=Ft(e,o.nodeObj);i===3?e.container.querySelector("me-main.down")?.appendChild(n):i===0?e.container.querySelector(".lhs")?.appendChild(n):e.container.querySelector(".rhs")?.appendChild(n),e.linkDiv()}},Xt=function(e,t){const n=e.parentNode;if(t===0){const o=n.parentNode.parentNode;o.tagName!=="ME-MAIN"&&(o.previousSibling.children[1].remove(),o.remove())}n.parentNode.remove()},Fe={before:"beforebegin",after:"afterend"},J=function(e){const n=e.parentElement.parentElement.lastElementChild;n?.tagName==="svg"&&n?.remove()},Kt=function(e,t){const n=e.nodeObj,o=V(n);o.style&&t.style&&(t.style=Object.assign(o.style,t.style));const s=Object.assign(n,t);xe.call(this,e,s),this.linkDiv(),this.bus.fire("operation",{name:"reshapeNode",obj:s,origin:o})},Ce=function(e,t,n){if(!t)return null;const o=t.nodeObj;o.expanded===!1&&(e.expandNode(t,!0),t=e.findEle(o.id));const s=n||e.generateNewObj();o.children?o.children.push(s):o.children=[s],W(e.nodeData);const{grp:i,top:r}=e.createWrapper(s);return Ye(e,t,i),{newTop:r,newNodeObj:s}},Vt=function(e,t,n){const o=t||this.currentNode;if(!o)return;const s=o.nodeObj;if(s.parent){if(!s.parent?.parent&&this.direction===2){const c=this.map.querySelector(".lhs")?.childElementCount||0,h=this.map.querySelector(".rhs")?.childElementCount||0;if(!c||!h){this.addChild(this.findEle(s.parent.id),n);return}}}else{this.addChild();return}const i=n||this.generateNewObj();if(!s.parent?.parent){const c=o.closest("me-main").className===L.LHS?0:1;i.direction=c}Bt(i,e,s),W(this.nodeData);const r=o.parentElement,{grp:l,top:a}=this.createWrapper(i);r.parentElement.insertAdjacentElement(Fe[e],l),this.linkDiv(l.offsetParent),n||this.editTopic(a.firstChild),this.bus.fire("operation",{name:"insertSibling",type:e,obj:i}),this.selectNode(a.firstChild,!0)},Gt=function(e,t){const n=e||this.currentNode;if(!n)return;J(n);const o=n.nodeObj;if(!o.parent)return;const s=t||this.generateNewObj();if(!o.parent?.parent){const c=n.closest("me-main").className===L.LHS?0:1;s.direction=c}Wt(o,s),W(this.nodeData);const i=n.parentElement.parentElement,{grp:r,top:l}=this.createWrapper(s,!0);l.appendChild(Ee(!0)),i.insertAdjacentElement("afterend",r);const a=this.createChildren([i]);l.insertAdjacentElement("afterend",a),this.linkDiv(),t||this.editTopic(l.firstChild),this.bus.fire("operation",{name:"insertParent",obj:s}),this.selectNode(l.firstChild,!0)},zt=function(e,t){const n=e||this.currentNode;if(!n)return;const o=Ce(this,n,t);if(!o)return;const{newTop:s,newNodeObj:i}=o;this.bus.fire("operation",{name:"addChild",obj:i}),t||this.editTopic(s.firstChild),this.selectNode(s.firstChild,!0)},qt=function(e,t){const n=V(e.nodeObj);be(n);const o=Ce(this,t,n);if(!o)return;const{newNodeObj:s}=o;this.bus.fire("operation",{name:"copyNode",obj:s}),this.selectNode(this.findEle(s.id))},Ut=function(e,t){const n=[];for(let o=0;o<e.length;o++){const s=e[o],i=V(s.nodeObj);be(i);const r=Ce(this,t,i);if(!r)return;const{newNodeObj:l}=r;n.push(l)}this.bus.fire("operation",{name:"copyNodes",objs:n}),this.unselectNodes(this.currentNodes),this.selectNodes(n.map(o=>this.findEle(o.id)))},Xe=function(e,t,n){const o=t.parent?.children;if(o===void 0)return;const s=e.direction===2&&!t.parent?.parent,i=a=>!s||a.direction===t.direction;let r,l=!1;for(const a of o)if(i(a)){if(a===t){if(n===-1)return r?{to:r,type:"before"}:void 0;l=!0;continue}if(l)return{to:a,type:"after"};r=a}},Jt=function(e){const t=e||this.currentNode;if(!t)return;const n=t.nodeObj;if(!n.parent)return;const o=Xe(this,n,-1);o&&Z([t],o.type,this.findEle(o.to.id),this)},Zt=function(e){const t=e||this.currentNode;if(!t)return;const n=t.nodeObj;if(!n.parent)return;const o=Xe(this,n,1);o&&Z([t],o.type,this.findEle(o.to.id),this)},Qt=function(e){if(e=ve(e),e.length===0)return;for(const n of e){const o=n.nodeObj,s=We(o);Xt(n,s)}const t=e[e.length-1];this.selectNode(this.findEle(t.nodeObj.parent.id)),this.linkDiv(),this.bus.fire("operation",{name:"removeNodes",objs:e.map(n=>n.nodeObj)})},Z=(e,t,n,o)=>{e=ve(e);let s=n.nodeObj;t==="in"&&s.expanded===!1&&(o.expandNode(n,!0),n=o.findEle(s.id),s=n.nodeObj),t==="after"&&(e=e.reverse());const i=new Set;for(const l of e){const a=l.nodeObj;if(Yt(t,a,s),W(o.nodeData),t==="in"){const h=l.parentElement.parentElement,d=h.parentElement;Ye(o,n,h),i.add(d)}else{J(l);const c=l.parentElement.parentNode;i.add(c.parentElement),n.parentElement.parentNode.insertAdjacentElement(Fe[t],c)}}for(const l of i)l.childElementCount===0&&l.tagName!=="ME-MAIN"&&(l.previousSibling.children[1].remove(),l.remove());o.linkDiv(),o.scrollIntoView(e[e.length-1]);const r=t==="before"?"moveNodeBefore":t==="after"?"moveNodeAfter":"moveNodeIn";o.bus.fire("operation",{name:r,objs:e.map(l=>l.nodeObj),toObj:s})},Ke=Object.freeze(Object.defineProperty({__proto__:null,addChild:zt,beginEdit:function(e){const t=e||this.currentNode;t&&(t.nodeObj.dangerouslySetInnerHTML||this.editTopic(t))},copyNode:qt,copyNodes:Ut,insertParent:Gt,insertSibling:Vt,moveDownNode:Zt,moveNodeAfter:function(e,t){Z(e,"after",t,this)},moveNodeBefore:function(e,t){Z(e,"before",t,this)},moveNodeIn:function(e,t){Z(e,"in",t,this)},moveUpNode:Jt,removeNodes:Qt,reshapeNode:Kt,rmSubline:J,setNodeTopic:function(e,t){e.text.textContent=t,e.nodeObj.topic=t,this.linkDiv()}},Symbol.toStringTag,{value:"Module"}));function en(e){return{nodeData:e.isFocusMode?e.nodeDataBackup:e.nodeData,arrows:e.arrows,summaries:e.summaries,direction:e.direction,theme:e.theme,compact:e.compact,meta:e.meta}}const tn=function(e,t=!1){const n=this.container,o=e.getBoundingClientRect(),s=n.getBoundingClientRect();if(t||o.top>s.bottom-50||o.bottom<s.top+50||o.left>s.right-50||o.right<s.left+50){const r=o.left+o.width/2,l=o.top+o.height/2,a=s.left+s.width/2,c=s.top+s.height/2,h=r-a,d=l-c;this.move(-h,-d,!0)}},nn=function(e,t,n){this.clearSelection(),this.scrollIntoView(e),this.selection?.select(e),t&&this.bus.fire("selectNewNode",e.nodeObj)},on=function(e){this.selection?.select(e)},sn=function(e){this.selection?.deselect(e)},rn=function(){this.unselectNodes(this.currentNodes),this.unselectSummary(),this.unselectArrow()},Se=function(e){return JSON.stringify(e,(t,n)=>{if(!(t==="parent"&&typeof n!="string"))return n})},ln=function(){const e=en(this);return Se(e)},cn=function(){return JSON.parse(this.getDataString())},an=function(){this.editable=!0},dn=function(){this.editable=!1},hn=function(e,t={x:0,y:0}){if(e<this.scaleMin&&e<this.scaleVal||e>this.scaleMax&&e>this.scaleVal)return;const n=this.container.getBoundingClientRect(),o=t.x?t.x-n.left-n.width/2:0,s=t.y?t.y-n.top-n.height/2:0,{dx:i,dy:r}=Ne(this),l=this.map.style.transform,{x:a,y:c}=we(l),h=a-i,d=c-r,u=this.scaleVal,p=(-o+h)*(1-e/u),m=(-s+d)*(1-e/u);this.map.style.transform=`translate3d(${a-p}px, ${c-m}px, 0) scale(${e})`,this.scaleVal=e,this.bus.fire("scale",e)},fn=function(){const e=this.nodes.offsetHeight/this.container.offsetHeight,t=this.nodes.offsetWidth/this.container.offsetWidth,n=1/Math.max(1,Math.max(e,t));this.scaleVal=n;const{dx:o,dy:s}=Ne(this,!0);this.map.style.transform=`translate3d(${o}px, ${s}px, 0) scale(${n})`,this.bus.fire("scale",n)},un=function(e,t,n=!1){const{map:o,scaleVal:s,bus:i,container:r,nodes:l}=this;if(n&&o.style.transition==="transform 0.3s")return!1;const a=o.style.transform;let{x:c,y:h}=we(a);const d=r.getBoundingClientRect(),u=l.getBoundingClientRect(),p=(d.left+d.right)/2,m=(d.top+d.bottom)/2;return e>0?e=Math.min(e,Math.max(0,p-u.left)):e<0&&(e=Math.max(e,Math.min(0,p-u.right))),t>0?t=Math.min(t,Math.max(0,m-u.top)):t<0&&(t=Math.max(t,Math.min(0,m-u.bottom))),e===0&&t===0?!1:(c+=e,h+=t,n&&(o.style.transition="transform 0.3s",setTimeout(()=>{o.style.transition="none"},300)),o.style.transform=`translate3d(${c}px, ${h}px, 0) scale(${s})`,i.fire("move",{dx:e,dy:t}),!0)},Ne=(e,t=!1)=>{const{container:n,map:o,nodes:s}=e;let i,r;if(e.alignment==="nodes"||t||e.direction===3)i=(n.offsetWidth-s.offsetWidth)/2,r=(n.offsetHeight-s.offsetHeight)/2,o.style.transformOrigin="50% 50%";else{const l=o.querySelector("me-root"),a=l.offsetTop,c=l.offsetLeft,h=l.offsetWidth,d=l.offsetHeight;i=n.offsetWidth/2-c-h/2,r=n.offsetHeight/2-a-d/2,o.style.transformOrigin=`${c+h/2}px 50%`}return{dx:i,dy:r}},pn=Object.freeze(Object.defineProperty({__proto__:null,cancelFocus:function(){this.isFocusMode=!1,this.tempDirection!==null&&(this.nodeData=this.nodeDataBackup,this.direction=this.tempDirection,this.tempDirection=null,this.refresh(),this.toCenter())},clearSelection:rn,disableEdit:dn,enableEdit:an,expandNode:function(e,t){const n=e.nodeObj;typeof t=="boolean"?n.expanded=t:n.expanded!==!1?n.expanded=!1:n.expanded=!0;const o=e.getBoundingClientRect(),s={x:o.left,y:o.top},i=e.parentNode,r=i.children[1];if(r.expanded=n.expanded,r.className=n.expanded?"minus":"",J(e),n.expanded){const d=this.createChildren(n.children.map(u=>this.createWrapper(u).grp));i.parentNode.appendChild(d)}else i.parentNode.children[1].remove();this.linkDiv(e.closest("me-main > me-wrapper"));const l=e.getBoundingClientRect(),a={x:l.left,y:l.top},c=s.x-a.x,h=s.y-a.y;this.move(c,h),this.bus.fire("expandNode",n)},expandNodeAll:function(e,t){const n=e.nodeObj,o=e.getBoundingClientRect(),s={x:o.left,y:o.top};K(n,t??!n.expanded),this.refresh();const i=this.findEle(n.id).getBoundingClientRect(),r={x:i.left,y:i.top},l=s.x-r.x,a=s.y-r.y;this.move(l,a)},focusNode:function(e){e.nodeObj.parent&&(this.clearSelection(),this.tempDirection===null&&(this.tempDirection=this.direction),this.isFocusMode||(this.nodeDataBackup=this.nodeData,this.isFocusMode=!0),this.nodeData=e.nodeObj,this.initRight(),this.toCenter())},getData:cn,getDataString:ln,initDown:function(){this.direction=3,this.refresh(),this.toCenter(),this.bus.fire("changeDirection",this.direction)},initLeft:function(){this.direction=0,this.refresh(),this.toCenter(),this.bus.fire("changeDirection",this.direction)},initRight:function(){this.direction=1,this.refresh(),this.toCenter(),this.bus.fire("changeDirection",this.direction)},initSide:function(){this.direction=2,this.refresh(),this.toCenter(),this.bus.fire("changeDirection",this.direction)},install:function(e){e(this)},move:un,refresh:function(e){this.clearSelection(),e&&(e=JSON.parse(JSON.stringify(e)),this.nodeData=e.nodeData,this.arrows=e.arrows||[],this.summaries=e.summaries||[],e.meta&&(this.meta=e.meta)),W(this.nodeData),this.layout(),this.linkDiv()},scale:hn,scaleFit:fn,scrollIntoView:tn,selectNode:nn,selectNodes:on,stringifyData:Se,toCenter:function(){const{map:e,container:t}=this,{dx:n,dy:o}=Ne(this);t.scrollTop=0,t.scrollLeft=0,e.style.transform=`translate3d(${n}px, ${o}px, 0) scale(${this.scaleVal})`},unselectNodes:sn},Symbol.toStringTag,{value:"Module"})),Ve="MIND-ELIXIR-WAIT-COPY",gn=40,mn=10,yn=({deltaMode:e,deltaY:t,viewportHeight:n})=>e===WheelEvent.DOM_DELTA_LINE?t*gn:e===WheelEvent.DOM_DELTA_PAGE?t*n:t,bn=({deltaMode:e,deltaY:t,scaleSensitivity:n,viewportHeight:o})=>{const i=-yn({deltaMode:e,deltaY:t,viewportHeight:o})/mn*n;return Math.max(-n,Math.min(n,i))},Ge=(e,t,n)=>{t!==0&&e.scale(e.scaleVal+t,n)},vn=(e,t)=>{const n=e.map.querySelectorAll(`.${t}>me-wrapper>me-parent>me-tpc`);n.length!==0&&e.selectNode(n[Math.ceil(n.length/2)-1])},ze=e=>{e.selectNode(e.map.querySelector("me-root>me-tpc"))},qe=function(e,t){const n=t.parentElement.parentElement.parentElement.previousSibling;if(n){const o=n.firstChild;e.selectNode(o)}},Ue=function(e,t){const n=t.parentElement.nextSibling;if(n&&n.firstChild){const o=n.firstChild.firstChild.firstChild;e.selectNode(o)}},Je=function(e,t){const n=e.currentNode||e.currentNodes?.[0];if(!n)return;const o=n.nodeObj,s=n.offsetParent.offsetParent.parentElement;o.parent?s.className===t?Ue(e,n):o.parent?.parent?qe(e,n):ze(e):vn(e,t)},ce=function(e,t){const n=e.currentNode;if(!n||!n.nodeObj.parent)return;const s=t+"Sibling",i=n.parentElement.parentElement[s];i?e.selectNode(i.firstChild.firstChild):e.selectNode(n)},wn=function(e,t){const n=t.nodeObj;n.parent&&(n.parent.parent?qe(e,t):ze(e))},xn=function(e,t){if(t.nodeObj.parent)Ue(e,t);else{const o=e.map.querySelectorAll(".down>me-wrapper>me-parent>me-tpc");if(o.length===0)return;e.selectNode(o[Math.ceil(o.length/2)-1])}},Ze=function(e,t,n){const o=t==="in"?e.scaleSensitivity:-e.scaleSensitivity;Ge(e,o,n)},En=(e,t)=>{const n=bn({deltaMode:t.deltaMode,deltaY:t.deltaY,scaleSensitivity:e.scaleSensitivity,viewportHeight:e.container.clientHeight||window.innerHeight});Ge(e,n,{x:t.clientX,y:t.clientY})};function Cn(e,t){t=t===!0?{}:t;const n=()=>{e.currentArrow?e.removeArrow():e.currentSummary?e.removeSummary(e.currentSummary.summaryObj.id):e.currentNodes&&e.removeNodes(e.currentNodes)};let o=!1,s=null;const i=()=>{o=!1,s&&(clearTimeout(s),s=null),e.container.removeEventListener("keydown",r)},r=c=>{if(["Control","Meta","Shift","Alt"].includes(c.key))return;const h=e.nodeData;if(!h.children?.length){i();return}let d=!0;if(c.key==="0")for(const u of h.children)K(u,!1);else if(c.key==="=")for(const u of h.children)K(u,!0);else if(["1","2","3","4","5","6","7","8","9"].includes(c.key))for(const u of h.children)K(u,!0,Number(c.key)-1);else d=!1;d&&(e.refresh(),e.toCenter()),i()},l={Enter:c=>{c.shiftKey?e.insertSibling("before"):c.ctrlKey||c.metaKey?e.insertParent():e.insertSibling("after")},Tab:()=>{e.addChild()},F1:()=>{e.toCenter()},F2:()=>{e.currentSummary?e.editSummary(e.currentSummary):e.currentArrow?e.editArrowLabel(e.currentArrow):e.beginEdit()},ArrowUp:c=>{if(c.altKey)e.moveUpNode();else{if(c.metaKey||c.ctrlKey)return e.initSide();if(e.direction===3){const h=e.currentNode||e.currentNodes?.[0];h&&wn(e,h)}else ce(e,"previous")}},ArrowDown:c=>{if(c.altKey)e.moveDownNode();else if(e.direction===3){const h=e.currentNode||e.currentNodes?.[0];h&&xn(e,h)}else ce(e,"next")},ArrowLeft:c=>{if(c.metaKey||c.ctrlKey)return e.initLeft();e.direction===3?ce(e,"previous"):Je(e,L.LHS)},ArrowRight:c=>{if(c.metaKey||c.ctrlKey)return e.initRight();e.direction===3?ce(e,"next"):Je(e,L.RHS)},PageUp:()=>e.moveUpNode(),PageDown:()=>{e.moveDownNode()},"=":c=>{(c.metaKey||c.ctrlKey)&&Ze(e,"in")},"-":c=>{(c.metaKey||c.ctrlKey)&&Ze(e,"out")},0:c=>{if(c.metaKey||c.ctrlKey){if(o)return;e.scale(1)}},k:c=>{(c.metaKey||c.ctrlKey)&&(i(),o=!0,s=window.setTimeout(()=>{s=null,i()},2e3),e.container.addEventListener("keydown",r))},Delete:n,Backspace:n,...t};e.container.onkeydown=c=>{if((c.ctrlKey||c.metaKey)&&["c","v","x"].includes(c.key)||c.preventDefault(),!e.editable)return;const d=l[c.key];d&&d(c)};const a=c=>{if(c.target instanceof HTMLElement&&c.target.id==="input-box"||e.currentNodes.length===0)return!1;if(c.clipboardData){const h=ve(e.currentNodes).map(u=>u.nodeObj),d=Se({magic:Ve,data:h});return c.clipboardData.setData("text/plain",d),c.preventDefault(),!0}return!1};e.container.addEventListener("copy",a),e.container.addEventListener("cut",c=>{a(c)&&n()}),e.container.addEventListener("paste",c=>{const h=c.clipboardData?.getData("text/plain");if(h)try{const d=JSON.parse(h);if(d&&d.magic===Ve&&Array.isArray(d.data)){const u=d.data,p=u.map(m=>({nodeObj:m}));u.length>0&&e.currentNode&&(e.copyNodes(p,e.currentNode),c.preventDefault());return}}catch{}e.pasteHandler&&e.pasteHandler(c)})}function Sn(e){const{panHelper:t,container:n}=e;let o=null;e.spacePressed=!1;const s={lastTap:0,lastTapTarget:null,DOUBLE_CLICK_THRESHOLD:300,detect(f,b){if(f.button!==0){this.clear();return}const x=new Date().getTime(),E=x-this.lastTap,S=E<this.DOUBLE_CLICK_THRESHOLD&&E>0&&this.lastTapTarget===f.target;this.lastTap=x,this.lastTapTarget=f.target,S&&b(f)},clear(){this.lastTap=0,this.lastTapTarget=null}},i={Idle:0,Pinch:1,DragWait:2,Drag:3,Pan:4,BoxSelect:5};e.ptState=i.Idle;const r={lastDistance:null,activePointers:new Map,handlePointerDown(f){if(f.pointerType!=="touch")return!1;if(this.activePointers.set(f.pointerId,{x:f.clientX,y:f.clientY}),this.activePointers.size>=2){const[b,x]=Array.from(this.activePointers.values());return this.lastDistance=Pe(b,x),!0}return!1},handlePointerMove(f){if(f.pointerType!=="touch"||!this.activePointers.has(f.pointerId))return!1;if(this.activePointers.set(f.pointerId,{x:f.clientX,y:f.clientY}),this.activePointers.size>=2){const[b,x]=Array.from(this.activePointers.values()),E=Pe(b,x);if(this.lastDistance!==null&&this.lastDistance>0){const S=E/this.lastDistance;e.scale(e.scaleVal*S,{x:(b.x+x.x)/2,y:(b.y+x.y)/2})}return this.lastDistance=E,!0}return!1},handlePointerUp(f){f.pointerType==="touch"&&(this.activePointers.delete(f.pointerId),this.activePointers.size<2&&(this.lastDistance=null))},clear(){this.activePointers.clear(),this.lastDistance=null}},l=Dt(e),a={timer:null,startPos:null,pointerId:null,DURATION:500,MOVE_THRESHOLD:10,clear(){this.timer!==null&&(clearTimeout(this.timer),this.timer=null,this.startPos=null,this.pointerId=null)},start(f,b){this.timer=window.setTimeout(()=>{b(f),this.timer=null,this.startPos=null,this.pointerId=null},this.DURATION),this.startPos={x:f.clientX,y:f.clientY},this.pointerId=f.pointerId},handleMove(f){if(this.timer!==null&&this.startPos!==null&&f.pointerId===this.pointerId){const b=f.clientX-this.startPos.x,x=f.clientY-this.startPos.y;Math.sqrt(b*b+x*x)>this.MOVE_THRESHOLD&&this.clear()}}},c=(f,b)=>{if(f.closest("#input-box"))return!1;const x=f.closest(".svg-label"),E=f.closest(".topiclinks, .summary"),S=x?{type:x.dataset.type,element:document.getElementById(x.dataset.svgId)}:E?{type:E.classList.contains("topiclinks")?"arrow":"summary",element:f.closest("g")}:null;if(!S?.type||!S?.element)return!1;const{type:_,element:N}=S;return e.clearSelection(),_==="arrow"?b?e.editArrowLabel(N):e.selectArrow(N):b?e.editSummary(N):e.selectSummary(N),!0},h=f=>{if(f.pointerType==="mouse"&&f.button!==0)return;if(e.helper1?.moved){e.helper1.clear();return}if(e.helper2?.moved){e.helper2.clear();return}if(t.moved){t.clear();return}if(l?.isDragging)return;const b=f.target;b.tagName==="ME-EPD"&&(f.ctrlKey||f.metaKey?e.expandNodeAll(b.previousSibling):e.expandNode(b.previousSibling))},d=f=>{if(!e.editable)return;const b=f.target;if(se(b)){e.selectNode(b),e.beginEdit(b);return}c(b,!0)},u=f=>{if(f.pointerType==="touch"&&r.handlePointerDown(f)){e.ptState=i.Pinch,a.clear(),t.clear(),(l.isDragging||l.pointerId!==null)&&je(e,l);return}if(e.ptState===i.Pinch)return;const b=f.target;if(e.editable&&b.className==="map-container"&&f.button===0&&f.pointerType==="mouse"){e.ptState=i.BoxSelect;return}if(t.handlePointerDown(f),t.mousedown&&(e.ptState=i.Pan),f.button===0||f.pointerType==="touch")if(se(b)){e.selection?.cancel();const E=e.currentNodes||[];if(f.ctrlKey||f.metaKey||e.mobileMultiSelect?E.includes(b)?o=b:((e.currentArrow||e.currentSummary)&&e.clearSelection(),e.selection?.select(b)):E.includes(b)||e.selectNode(b),!e.editable)return;f.pointerType==="touch"?(e.ptState=i.DragWait,a.start(f,_=>{$e(e,l,_,!0)&&(e.ptState=i.Drag,b.setPointerCapture(_.pointerId))})):$e(e,l,f,!1)&&(e.ptState=i.Drag,b.setPointerCapture(f.pointerId))}else c(b,!1)},p=f=>{switch(e.ptState){case i.Pinch:r.handlePointerMove(f);break;case i.DragWait:a.handleMove(f),a.timer===null&&(e.ptState=i.Pan,t.handlePointerMove(f));break;case i.Drag:_t(e,l,f);break;case i.Pan:t.handlePointerMove(f);break}},m=f=>{f.preventDefault(),window.removeEventListener("contextmenu",m,!0)},w=f=>{f.pointerType==="touch"&&r.handlePointerUp(f);const b=l.isDragging,x=t.moved;switch(e.ptState){case i.DragWait:a.clear();break;case i.Drag:Lt(e,l,f);break;case i.Pan:t.handlePointerUp(f),t.moved&&f.button===2&&f.pointerType==="mouse"&&(window.addEventListener("contextmenu",m,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("contextmenu",m,!0),300));break}s.detect(f,d),(e.ptState!==i.Pinch||r.activePointers.size<2)&&(e.ptState=i.Idle),o&&(!b&&!x&&e.selection?.deselect(o),o=null)},y=()=>{r.clear(),a.clear(),t.clear(),s.clear(),(l.isDragging||l.pointerId!==null)&&je(e,l),e.ptState=i.Idle,o=null},g=f=>{f.preventDefault(),f.button===2&&e.editable&&setTimeout(()=>{if(e.panHelper.moved||e.ptState!==i.Idle&&e.ptState!==i.Pan)return;const b=f.target;se(b)&&!b.classList.contains("selected")&&e.selectNode(b),e.bus.fire("showContextMenu",f)},200)},v=f=>{if(f.ctrlKey||f.metaKey)return f.stopPropagation(),f.preventDefault(),En(e,f);(f.shiftKey?e.move(-f.deltaY,0):e.move(-f.deltaX,-f.deltaY))&&(f.stopPropagation(),f.preventDefault())},C=f=>{f.code==="Space"&&(e.spacePressed=!0,e.container.classList.add("space-pressed"))},T=f=>{f.code==="Space"&&(e.spacePressed=!1,e.container.classList.remove("space-pressed"))};return Ae([{dom:n,evt:"pointerdown",func:u},{dom:n,evt:"pointermove",func:p},{dom:n,evt:"pointerup",func:w},{dom:n,evt:"pointercancel",func:y},{dom:n,evt:"click",func:h},{dom:n,evt:"contextmenu",func:g},{dom:n,evt:"wheel",func:typeof e.handleWheel=="function"?e.handleWheel:v},{dom:n,evt:"blur",func:y},{dom:n,evt:"keydown",func:C},{dom:n,evt:"keyup",func:T}])}function Nn(){return{handlers:{},addListener:function(e,t){this.handlers[e]===void 0&&(this.handlers[e]=[]),this.handlers[e].push(t)},fire:function(e,...t){if(this.handlers[e]instanceof Array){const n=this.handlers[e];for(let o=0;o<n.length;o++)n[o](...t)}},removeListener:function(e,t){if(!this.handlers[e])return;const n=this.handlers[e];if(!t)n.length=0;else if(n.length)for(let o=0;o<n.length;o++)n[o]===t&&this.handlers[e].splice(o,1)}}}const H="http://www.w3.org/2000/svg",ae=function(e){const t=e.clientWidth,n=e.clientHeight,o=e.dataset,s=Number(o.x),i=Number(o.y),r=o.anchor;let l=s;r==="middle"?l=s-t/2:r==="end"&&(l=s-t),e.style.left=`${l}px`,e.style.top=`${i-n/2}px`,e.style.visibility="visible"},de=function(e,t,n,o){const{anchor:s="middle",color:i,dataType:r,svgId:l}=o,a=document.createElement("div");a.className="svg-label",a.style.color=i||"#666";const c="label-"+l;return a.id=c,a.innerHTML=e,a.dataset.type=r,a.dataset.svgId=l,a.dataset.x=t.toString(),a.dataset.y=n.toString(),a.dataset.anchor=s,a},Qe=function(e,t,n){const o=document.createElementNS(H,"path");return M(o,{d:e,stroke:t||"#666",fill:"none","stroke-width":n}),o},Q=function(e){const t=document.createElementNS(H,"svg");return t.setAttribute("class",e),t.setAttribute("overflow","visible"),t},et=function(){const e=document.createElementNS(H,"line");return e.setAttribute("stroke","#4dc4ff"),e.setAttribute("fill","none"),e.setAttribute("stroke-width","2"),e.setAttribute("opacity","0.45"),e},Tn=function(e,t,n,o){const s=document.createElementNS(H,"g");return[{name:"line",d:e},{name:"arrow1",d:t},{name:"arrow2",d:n}].forEach((r,l)=>{const a=r.d,c=document.createElementNS(H,"path"),h={d:a,stroke:o?.stroke||"rgb(227, 125, 116)",fill:"none","stroke-width":String(o?.strokeWidth||"2")};o?.opacity!==void 0&&(h.opacity=String(o.opacity)),M(c,h),l===0&&c.setAttribute("stroke-dasharray",o?.strokeDasharray||"8,2");const d=document.createElementNS(H,"path");M(d,{d:a,stroke:"transparent",fill:"none","stroke-width":"15"}),s.appendChild(d),s.appendChild(c),s[r.name]=c}),s},tt=function(e,t,n){if(!t)return;const o=n.label;t.style.opacity="0";const s=t.cloneNode(!0);e.nodes.appendChild(s),s.id="input-box",s.textContent=o,s.contentEditable="plaintext-only",s.spellcheck=!1,s.style.cssText=`
left:${t.style.left};
top:${t.style.top};
max-width: 200px;
`,Be(s),e.scrollIntoView(s),s.addEventListener("keydown",i=>{if(i.stopPropagation(),i.isComposing)return;const r=i.key;if(r==="Enter"||r==="Tab"){if(i.shiftKey)return;i.preventDefault(),s.blur(),e.container.focus()}}),s.addEventListener("blur",()=>{if(!s)return;const i=s.innerText?.trim()||"";i===""?n.label=o:n.label=i,t.style.opacity="1",s.remove(),i!==o&&(e.markdown?t.innerHTML=e.markdown(n.label,n):t.textContent=n.label,ae(t),"parent"in n?e.bus.fire("operation",{name:"finishEditSummary",obj:n}):e.bus.fire("operation",{name:"finishEditArrowLabel",obj:n}))})},Dn=function(e){const t=this.map.querySelector("me-root"),n=t.offsetTop,o=t.offsetLeft,s=t.offsetWidth,i=t.offsetHeight,r=this.map.querySelectorAll("me-main > me-wrapper");this.lines.innerHTML="";for(let l=0;l<r.length;l++){const a=r[l],c=a.querySelector("me-tpc"),{offsetLeft:h,offsetTop:d}=P(this.nodes,c),u=c.offsetWidth,p=c.offsetHeight,m=a.parentNode.className,w=this.generateMainBranch({pT:n,pL:o,pW:s,pH:i,cT:d,cL:h,cW:u,cH:p,direction:m,containerHeight:this.nodes.offsetHeight,containerWidth:this.nodes.offsetWidth}),y=this.theme.palette,g=c.nodeObj.branchColor||y[l%y.length];if(c.style.borderColor=g,this.lines.appendChild(Qe(w,g,"3")),e&&e!==a)continue;const v=Q("subLines"),C=a.lastChild;C.tagName==="svg"&&C.remove(),a.appendChild(v),nt(this,v,g,a,m,!0)}this.labelContainer.innerHTML="",this.renderArrow(),this.renderSummary(),this.bus.fire("linkDiv")},nt=function(e,t,n,o,s,i){const r=o.firstChild,l=o.children[1].children;if(l.length===0)return;const a=r.offsetTop,c=r.offsetLeft,h=r.offsetWidth,d=r.offsetHeight;for(let u=0;u<l.length;u++){const p=l[u],m=p.firstChild,w=m.offsetTop,y=m.offsetLeft,g=m.offsetWidth,v=m.offsetHeight,C=m.firstChild.nodeObj.branchColor||n,T=e.generateSubBranch({pT:a,pL:c,pW:h,pH:d,cT:w,cL:y,cW:g,cH:v,direction:s,isFirst:i});t.appendChild(Qe(T,C,"2"));const D=m.children[1];if(D){if(!D.expanded)continue}else continue;nt(e,t,C,p,s)}},Mn={addChild:"Add child",addParent:"Add parent",addSibling:"Add sibling",removeNode:"Remove node",focus:"Focus Mode",cancelFocus:"Cancel Focus Mode",moveUp:"Move up",moveDown:"Move down",link:"Link",linkBidirectional:"Bidirectional Link",clickTips:"Please click the target node",summary:"Summary"};function _n(e,t){const n={focus:!0,link:!0,locale:Mn};t=t===!0?n:Object.assign(n,t);const o=f=>{const b=document.createElement("div");return b.innerText=f,b.className="tips",b},s=(f,b,x)=>{const E=document.createElement("li");return E.id=f,E.innerHTML=`<span>${ye(b)}</span><span ${x?'class="key"':""}>${ye(x)}</span>`,E},i=t.locale,r=s("cm-add_child",i.addChild,"Tab"),l=s("cm-add_parent",i.addParent,"Ctrl + Enter"),a=s("cm-add_sibling",i.addSibling,"Enter"),c=s("cm-remove_child",i.removeNode,"Delete"),h=s("cm-fucus",i.focus,""),d=s("cm-unfucus",i.cancelFocus,""),u=s("cm-up",i.moveUp,"PgUp"),p=s("cm-down",i.moveDown,"Pgdn"),m=s("cm-link",i.link,""),w=s("cm-link-bidirectional",i.linkBidirectional,""),y=s("cm-summary",i.summary,""),g=document.createElement("ul");if(g.className="menu-list",g.appendChild(r),g.appendChild(l),g.appendChild(a),g.appendChild(c),t.focus&&(g.appendChild(h),g.appendChild(d)),g.appendChild(u),g.appendChild(p),g.appendChild(y),t.link&&(g.appendChild(m),g.appendChild(w)),t&&t.extend)for(let f=0;f<t.extend.length;f++){const b=t.extend[f],x=s(b.name,b.name,b.key||"");g.appendChild(x),x.onclick=E=>{b.onclick(E)}}const v=document.createElement("div");v.className="context-menu",v.appendChild(g),v.hidden=!0,e.container.append(v);let C=!0;const T=f=>{const b=f.target;if(se(b)){b.parentElement.tagName==="ME-ROOT"?C=!0:C=!1,C?(h.className="disabled",u.className="disabled",p.className="disabled",l.className="disabled",a.className="disabled",c.className="disabled"):(h.className="",u.className="",p.className="",l.className="",a.className="",c.className=""),v.hidden=!1,g.style.top="",g.style.bottom="",g.style.left="",g.style.right="";const x=g.offsetHeight,E=g.offsetWidth,S=g.getBoundingClientRect(),_=f.clientY-S.top,N=f.clientX-S.left;x+_>window.innerHeight?(g.style.top="",g.style.bottom="0px"):(g.style.bottom="",g.style.top=_+15+"px"),E+N>window.innerWidth?(g.style.left="",g.style.right="0px"):(g.style.right="",g.style.left=N+10+"px")}};e.bus.addListener("showContextMenu",T),v.onclick=f=>{f.target===v&&(v.hidden=!0)},r.onclick=()=>{e.addChild(),v.hidden=!0},l.onclick=()=>{e.insertParent(),v.hidden=!0},a.onclick=()=>{C||(e.insertSibling("after"),v.hidden=!0)},c.onclick=()=>{C||(e.removeNodes(e.currentNodes||[]),v.hidden=!0)},h.onclick=()=>{C||(e.focusNode(e.currentNode),v.hidden=!0)},d.onclick=()=>{e.cancelFocus(),v.hidden=!0},u.onclick=()=>{C||(e.moveUpNode(),v.hidden=!0)},p.onclick=()=>{C||(e.moveDownNode(),v.hidden=!0)};const D=f=>{v.hidden=!0;const b=e.currentNode,x=o(i.clickTips);e.container.appendChild(x),e.map.addEventListener("click",E=>{E.preventDefault(),x.remove();const S=E.target;(S.parentElement.tagName==="ME-PARENT"||S.parentElement.tagName==="ME-ROOT")&&e.createArrow(b,S,f)},{once:!0})};return m.onclick=()=>D(),w.onclick=()=>D({bidirectional:!0}),y.onclick=()=>{v.hidden=!0,e.createSummary(),e.unselectNodes(e.currentNodes)},()=>{r.onclick=null,l.onclick=null,a.onclick=null,c.onclick=null,h.onclick=null,d.onclick=null,u.onclick=null,p.onclick=null,m.onclick=null,y.onclick=null,v.onclick=null,e.container.oncontextmenu=null}}const Ln=function(e){return["createSummary","removeSummary","finishEditSummary"].includes(e.name)?{type:"summary",value:e.obj.id}:["createArrow","removeArrow","finishEditArrowLabel","reshapeArrow"].includes(e.name)?{type:"arrow",value:e.obj.id}:["removeNodes","copyNodes","moveNodeBefore","moveNodeAfter","moveNodeIn"].includes(e.name)?{type:"nodes",value:e.objs.map(t=>t.id)}:{type:"nodes",value:[e.obj.id]}};function kn(e){let t=[],n=-1,o=e.getData(),s=[];e.undo=function(){if(n>-1){const a=t[n];o=a.prev,e.refresh(a.prev);try{a.currentTarget.type==="nodes"&&(a.operation==="removeNodes"?e.selectNodes(a.currentTarget.value.map(c=>this.findEle(c))):e.selectNodes(a.currentSelected.map(c=>this.findEle(c))))}catch{}finally{n--}}},e.redo=function(){if(n<t.length-1){n++;const a=t[n];o=a.next,e.refresh(a.next);try{a.currentTarget.type==="nodes"&&(a.operation==="removeNodes"?e.selectNodes(a.currentSelected.map(c=>this.findEle(c))):e.selectNodes(a.currentTarget.value.map(c=>this.findEle(c))))}catch{}}},e.clearHistory=function(){t=[],n=-1,o=e.getData(),e.clearSelection()};const i=function(a){if(a.name==="beginEdit")return;t=t.slice(0,n+1);const c=e.getData(),h={prev:o,operation:a.name,currentSelected:s.map(d=>d.id),currentTarget:Ln(a),next:c};t.push(h),o=c,n=t.length-1},r=function(a){e.editable&&(!a.metaKey&&!a.ctrlKey||(a.code==="KeyZ"?a.shiftKey?e.redo():e.undo():a.code==="KeyY"&&e.redo()))},l=function(){s=e.currentNodes.map(a=>a.nodeObj)};return e.bus.addListener("operation",i),e.bus.addListener("selectNodes",l),e.bus.addListener("unselectNodes",l),e.container.addEventListener("keydown",r),()=>{e.bus.removeListener("operation",i),e.bus.removeListener("selectNodes",l),e.bus.removeListener("unselectNodes",l),e.container.removeEventListener("keydown",r)}}const An={side:'<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1750169394918" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2021" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M851.91168 328.45312c-59.97056 0-108.6208 48.47104-108.91264 108.36992l-137.92768 38.4a109.14304 109.14304 0 0 0-63.46752-46.58688l1.39264-137.11872c47.29344-11.86816 82.31936-54.66624 82.31936-105.64096 0-60.15488-48.76288-108.91776-108.91776-108.91776s-108.91776 48.76288-108.91776 108.91776c0 49.18784 32.60928 90.75712 77.38368 104.27392l-1.41312 138.87488a109.19936 109.19936 0 0 0-63.50336 48.55808l-138.93632-39.48544 0.01024-0.72704c0-60.15488-48.76288-108.91776-108.91776-108.91776s-108.91776 48.75776-108.91776 108.91776c0 60.15488 48.76288 108.91264 108.91776 108.91264 39.3984 0 73.91232-20.92032 93.03552-52.2496l139.19232 39.552-0.00512 0.2304c0 25.8304 9.00096 49.5616 24.02816 68.23424l-90.14272 132.63872a108.7488 108.7488 0 0 0-34.2528-5.504c-60.15488 0-108.91776 48.768-108.91776 108.91776 0 60.16 48.76288 108.91776 108.91776 108.91776 60.16 0 108.92288-48.75776 108.92288-108.91776 0-27.14624-9.9328-51.968-26.36288-71.04l89.04704-131.03104a108.544 108.544 0 0 0 37.6832 6.70208 108.672 108.672 0 0 0 36.48512-6.272l93.13792 132.57216a108.48256 108.48256 0 0 0-24.69888 69.0688c0 60.16 48.768 108.92288 108.91776 108.92288 60.16 0 108.91776-48.76288 108.91776-108.92288 0-60.14976-48.75776-108.91776-108.91776-108.91776a108.80512 108.80512 0 0 0-36.69504 6.3488l-93.07136-132.48a108.48768 108.48768 0 0 0 24.79616-72.22784l136.09984-37.888c18.99008 31.93856 53.84192 53.3504 93.69088 53.3504 60.16 0 108.92288-48.75776 108.92288-108.91264-0.00512-60.15488-48.77312-108.92288-108.92288-108.92288z" p-id="2022"></path></svg>',left:'<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1750169375313" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1775" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M639 463.30000001L639 285.1c0-36.90000001-26.4-68.5-61.3-68.5l-150.2 0c-1.5 0-3 0.1-4.5 0.3-10.2-38.7-45.5-67.3-87.5-67.3-50 0-90.5 40.5-90.5 90.5s40.5 90.5 90.5 90.5c42 0 77.3-28.6 87.5-67.39999999 1.4 0.3 2.9 0.4 4.5 0.39999999L577.7 263.6c6.8 0 14.3 8.9 14.3 21.49999999l0 427.00000001c0 12.7-7.40000001 21.5-14.30000001 21.5l-150.19999999 0c-1.5 0-3 0.2-4.5 0.4-10.2-38.8-45.5-67.3-87.5-67.3-50 0-90.5 40.5-90.5 90.4 0 49.9 40.5 90.6 90.5 90.59999999 42 0 77.3-28.6 87.5-67.39999999 1.4 0.2 2.9 0.4 4.49999999 0.4L577.7 780.7c34.80000001 0 61.3-31.6 61.3-68.50000001L639 510.3l79.1 0c10.4 38.5 45.49999999 67 87.4 67 50 0 90.5-40.5 90.5-90.5s-40.5-90.5-90.5-90.5c-41.79999999 0-77.00000001 28.4-87.4 67L639 463.30000001z" fill="currentColor" p-id="1776"></path></svg>',right:'<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1750169667709" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3037" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M385 560.69999999L385 738.9c0 36.90000001 26.4 68.5 61.3 68.5l150.2 0c1.5 0 3-0.1 4.5-0.3 10.2 38.7 45.5 67.3 87.5 67.3 50 0 90.5-40.5 90.5-90.5s-40.5-90.5-90.5-90.5c-42 0-77.3 28.6-87.5 67.39999999-1.4-0.3-2.9-0.4-4.5-0.39999999L446.3 760.4c-6.8 0-14.3-8.9-14.3-21.49999999l0-427.00000001c0-12.7 7.40000001-21.5 14.30000001-21.5l150.19999999 0c1.5 0 3-0.2 4.5-0.4 10.2 38.8 45.5 67.3 87.5 67.3 50 0 90.5-40.5 90.5-90.4 0-49.9-40.5-90.6-90.5-90.59999999-42 0-77.3 28.6-87.5 67.39999999-1.4-0.2-2.9-0.4-4.49999999-0.4L446.3 243.3c-34.80000001 0-61.3 31.6-61.3 68.50000001L385 513.7l-79.1 0c-10.4-38.5-45.49999999-67-87.4-67-50 0-90.5 40.5-90.5 90.5s40.5 90.5 90.5 90.5c41.79999999 0 77.00000001-28.4 87.4-67L385 560.69999999z" fill="currentColor" p-id="3038"></path></svg>',full:'<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1750169402629" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2170" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M639.328 416c8.032 0 16.096-3.008 22.304-9.056l202.624-197.184-0.8 143.808c-0.096 17.696 14.144 32.096 31.808 32.192 0.064 0 0.128 0 0.192 0 17.6 0 31.904-14.208 32-31.808l1.248-222.208c0-0.672-0.352-1.248-0.384-1.92 0.032-0.512 0.288-0.896 0.288-1.408 0.032-17.664-14.272-32-31.968-32.032L671.552 96l-0.032 0c-17.664 0-31.968 14.304-32 31.968C639.488 145.632 653.824 160 671.488 160l151.872 0.224-206.368 200.8c-12.672 12.32-12.928 32.608-0.64 45.248C622.656 412.736 630.976 416 639.328 416z" p-id="2171"></path><path d="M896.032 639.552 896.032 639.552c-17.696 0-32 14.304-32.032 31.968l-0.224 151.872-200.832-206.4c-12.32-12.64-32.576-12.96-45.248-0.64-12.672 12.352-12.928 32.608-0.64 45.248l197.184 202.624-143.808-0.8c-0.064 0-0.128 0-0.192 0-17.6 0-31.904 14.208-32 31.808-0.096 17.696 14.144 32.096 31.808 32.192l222.24 1.248c0.064 0 0.128 0 0.192 0 0.64 0 1.12-0.32 1.76-0.352 0.512 0.032 0.896 0.288 1.408 0.288l0.032 0c17.664 0 31.968-14.304 32-31.968L928 671.584C928.032 653.952 913.728 639.584 896.032 639.552z" p-id="2172"></path><path d="M209.76 159.744l143.808 0.8c0.064 0 0.128 0 0.192 0 17.6 0 31.904-14.208 32-31.808 0.096-17.696-14.144-32.096-31.808-32.192L131.68 95.328c-0.064 0-0.128 0-0.192 0-0.672 0-1.248 0.352-1.888 0.384-0.448 0-0.8-0.256-1.248-0.256 0 0-0.032 0-0.032 0-17.664 0-31.968 14.304-32 31.968L96 352.448c-0.032 17.664 14.272 32 31.968 32.032 0 0 0.032 0 0.032 0 17.664 0 31.968-14.304 32-31.968l0.224-151.936 200.832 206.4c6.272 6.464 14.624 9.696 22.944 9.696 8.032 0 16.096-3.008 22.304-9.056 12.672-12.32 12.96-32.608 0.64-45.248L209.76 159.744z" p-id="2173"></path><path d="M362.368 617.056l-202.624 197.184 0.8-143.808c0.096-17.696-14.144-32.096-31.808-32.192-0.064 0-0.128 0-0.192 0-17.