UNPKG

mind-elixir

Version:

Mind elixir is a free open source mind map core.

15 lines 85.2 kB
var MindElixir=(function(){"use strict";const fe={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-color":"#444446","--main-bgcolor":"#ffffff","--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"}},ue={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-color":"#ffffff","--main-bgcolor":"#4c4f69","--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 pe(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/"/g,"&quot;")}const Z=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=Z(e,t.children[n]);if(o)return o}return null}else return null},O=(e,t)=>{if(e.parent=t,e.children)for(let n=0;n<e.children.length;n++)O(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 ge(e){if(e.id=I(),e.children)for(let t=0;t<e.children.length;t++)ge(e.children[t])}function Q(e,t,n,o){const s=o-t,i=e-n;let l=Math.atan(Math.abs(s)/Math.abs(i))/3.14*180;if(isNaN(l))return;i<0&&s>0&&(l=180-l),i<0&&s<0&&(l=180+l),i>0&&s<0&&(l=360-l);const r=12,c=30,a=l+c,h=l-c;return{x1:n+Math.cos(Math.PI*a/180)*r,y1:o-Math.sin(Math.PI*a/180)*r,x2:n+Math.cos(Math.PI*h/180)*r,y2:o-Math.sin(Math.PI*h/180)*r}}function I(){return(new Date().getTime().toString(16)+Math.random().toString(16).substr(2)).substr(2,16)}const ft=function(){const e=I();return{topic:this.newTopicName,id:e}};function me(e){return JSON.parse(JSON.stringify(e,(n,o)=>{if(n!=="parent")return o}))}const $=(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}},k=(e,t)=>{for(const n in t)e.setAttribute(n,t[n])},ye=e=>e?e.tagName==="ME-TPC":!1,ee=e=>e.filter(t=>t.nodeObj.parent).filter((t,n,o)=>{for(let s=0;s<o.length;s++){if(t===o[s])continue;const{parent:i}=t.nodeObj;if(i===o[s].nodeObj)return!1}return!0}),Le=e=>{const t=/translate\(([^,]+),\s*([^)]+)\)/,n=e.match(t);return n?{x:parseFloat(n[1]),y:parseFloat(n[2])}:{x:0,y:0}},ve=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)}}},D={LHS:"lhs",RHS:"rhs"},ut=e=>{const t=e.map.querySelectorAll(".lhs>me-wrapper>me-parent>me-tpc");e.selectNode(t[Math.ceil(t.length/2)-1])},pt=e=>{const t=e.map.querySelectorAll(".rhs>me-wrapper>me-parent>me-tpc");e.selectNode(t[Math.ceil(t.length/2)-1])},gt=e=>{e.selectNode(e.map.querySelector("me-root>me-tpc"))},mt=function(e,t){const n=t.parentElement.parentElement.parentElement.previousSibling;if(n){const o=n.firstChild;e.selectNode(o)}},yt=function(e,t){const n=t.parentElement.nextSibling;if(n&&n.firstChild){const o=n.firstChild.firstChild.firstChild;e.selectNode(o)}},Ae=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?yt(e,n):o.parent?.parent?mt(e,n):gt(e):t===D.LHS?ut(e):pt(e)},Me=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)},te=function(e,t,n){const{scaleVal:o,scaleSensitivity:s}=e;switch(t){case"in":e.scale(o+s,n);break;case"out":e.scale(o-s,n)}};function vt(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=r=>{const c=e.nodeData;if(r.key==="0")for(const a of c.children)K(a,!1);if(r.key==="=")for(const a of c.children)K(a,!0);if(["1","2","3","4","5","6","7","8","9"].includes(r.key))for(const a of c.children)K(a,!0,Number(r.key)-1);e.refresh(),e.toCenter(),o=!1,s&&(clearTimeout(s),s=null,e.container.removeEventListener("keydown",i))},l={Enter:r=>{r.shiftKey?e.insertSibling("before"):r.ctrlKey||r.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:r=>{if(r.altKey)e.moveUpNode();else{if(r.metaKey||r.ctrlKey)return e.initSide();Me(e,"previous")}},ArrowDown:r=>{r.altKey?e.moveDownNode():Me(e,"next")},ArrowLeft:r=>{if(r.metaKey||r.ctrlKey)return e.initLeft();Ae(e,D.LHS)},ArrowRight:r=>{if(r.metaKey||r.ctrlKey)return e.initRight();Ae(e,D.RHS)},PageUp:()=>e.moveUpNode(),PageDown:()=>{e.moveDownNode()},c:r=>{(r.metaKey||r.ctrlKey)&&(e.waitCopy=e.currentNodes)},x:r=>{(r.metaKey||r.ctrlKey)&&(e.waitCopy=e.currentNodes,n())},v:r=>{!e.waitCopy||!e.currentNode||(r.metaKey||r.ctrlKey)&&(e.waitCopy.length===1?e.copyNode(e.waitCopy[0],e.currentNode):e.copyNodes(e.waitCopy,e.currentNode))},"=":r=>{(r.metaKey||r.ctrlKey)&&te(e,"in")},"-":r=>{(r.metaKey||r.ctrlKey)&&te(e,"out")},0:r=>{if(r.metaKey||r.ctrlKey){if(o)return;e.scale(1)}},k:r=>{(r.metaKey||r.ctrlKey)&&(o=!0,s&&(clearTimeout(s),e.container.removeEventListener("keydown",i)),s=window.setTimeout(()=>{o=!1,s=null},2e3),e.container.addEventListener("keydown",i))},Delete:n,Backspace:n,...t};e.container.onkeydown=r=>{if(r.preventDefault(),!e.editable)return;const c=l[r.key];c&&c(r)}}function bt(e){const{dragMoveHelper:t}=e;let n=0;e.spacePressed=!1;const o=d=>{if(d.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}const f=d.target;if(f.tagName==="ME-EPD")d.ctrlKey||d.metaKey?e.expandNodeAll(f.previousSibling):e.expandNode(f.previousSibling);else if(f.tagName==="ME-TPC"&&e.currentNodes.length>1)e.selectNode(f);else if(!e.editable)return;const y=f.closest(".svg-label");if(y){const E=y.dataset.svgId,x=y.dataset.type,b=document.getElementById(E);if(b){if(x==="arrow"){e.selectArrow(b);return}else if(x==="summary"){e.selectSummary(b);return}}}if(f.closest(".topiclinks")){const E=f.closest("g");if(E){e.selectArrow(E);return}}if(f.closest(".summary")){const E=f.closest("g");if(E){e.selectSummary(E);return}}},s=d=>{if(!e.editable)return;const f=d.target;ye(f)&&e.beginEdit(f);const y=f.closest(".svg-label");if(y){const E=y.dataset.svgId,x=y.dataset.type,b=document.getElementById(E);if(b){if(x==="arrow"){e.editArrowLabel(b);return}else if(x==="summary"){e.editSummary(b);return}}}if(f.closest(".topiclinks")){const E=f.closest("g");if(E){e.editArrowLabel(E);return}}if(f.closest(".summary")){const E=f.closest("g");if(E){e.editSummary(E);return}}},i=d=>{if(d.pointerType==="mouse")return;const f=new Date().getTime(),y=f-n;y<300&&y>0&&s(d),n=f},l=d=>{d.code==="Space"&&(e.spacePressed=!0,e.container.classList.add("space-pressed"))},r=d=>{d.code==="Space"&&(e.spacePressed=!1,e.container.classList.remove("space-pressed"))},c=d=>{t.moved=!1;const f=e.spacePressed&&d.button===0&&d.pointerType==="mouse",y=e.mouseSelectionButton===0?2:0,w=d.button===y&&d.pointerType==="mouse"||d.pointerType==="touch";if(!f&&!w)return;t.x=d.clientX,t.y=d.clientY;const S=d.target;(f||S.className!=="circle"&&S.contentEditable!=="plaintext-only")&&(t.mousedown=!0,S.setPointerCapture(d.pointerId))},a=d=>{if(d.target.contentEditable!=="plaintext-only"||e.spacePressed&&t.mousedown){const f=d.clientX-t.x,y=d.clientY-t.y;t.onMove(f,y)}t.x=d.clientX,t.y=d.clientY},h=d=>{if(!t.mousedown)return;const f=d.target;f.hasPointerCapture&&f.hasPointerCapture(d.pointerId)&&f.releasePointerCapture(d.pointerId),t.clear()},u=()=>{t.mousedown&&t.clear()},g=d=>{if(d.preventDefault(),d.button!==2||!e.editable)return;const f=d.target;ye(f)&&!f.classList.contains("selected")&&e.selectNode(f),setTimeout(()=>{e.dragMoveHelper.moved||e.bus.fire("showContextMenu",d)},200)},v=d=>{d.stopPropagation(),d.preventDefault(),d.ctrlKey||d.metaKey?d.deltaY<0?te(e,"in",e.dragMoveHelper):e.scaleVal-e.scaleSensitivity>0&&te(e,"out",e.dragMoveHelper):d.shiftKey?e.move(-d.deltaY,0):e.move(-d.deltaX,-d.deltaY)},{container:m}=e;return ve([{dom:m,evt:"pointerdown",func:c},{dom:m,evt:"pointermove",func:a},{dom:m,evt:"pointerup",func:h},{dom:m,evt:"pointerup",func:i},{dom:m,evt:"click",func:o},{dom:m,evt:"dblclick",func:s},{dom:m,evt:"contextmenu",func:g},{dom:m,evt:"wheel",func:typeof e.handleWheel=="function"?e.handleWheel:v},{dom:m,evt:"blur",func:u},{dom:m,evt:"keydown",func:l},{dom:m,evt:"keyup",func:r}])}function wt(){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 ne=document,xt=function(){this.nodes.innerHTML="";const e=this.createTopic(this.nodeData);be.call(this,e,this.nodeData),e.draggable=!1;const t=ne.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)})}Et(this,n,t)},Et=function(e,t,n){const o=ne.createElement("me-main");o.className=D.LHS;const s=ne.createElement("me-main");s.className=D.RHS;for(let i=0;i<t.length;i++){const l=t[i],{grp:r}=e.createWrapper(l);e.direction===2?l.direction===0?o.appendChild(r):s.appendChild(r):e.direction===0?o.appendChild(r):s.appendChild(r)}e.nodes.appendChild(o),e.nodes.appendChild(n),e.nodes.appendChild(s),e.nodes.appendChild(e.lines),e.nodes.appendChild(e.labelContainer)},Ct=function(e,t){const n=ne.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},_=document,De=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},be=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=_.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=_.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=_.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=_.createElement("span");n.className="icons",n.innerHTML=t.icons.map(o=>`<span>${pe(o)}</span>`).join(""),e.appendChild(n),e.icons=n}else e.icons&&(e.icons=void 0);if(t.tags&&t.tags.length){const n=_.createElement("div");n.className="tags",t.tags.forEach(o=>{const s=_.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)},St=function(e,t){const n=_.createElement("me-wrapper"),{p:o,tpc:s}=this.createParent(e);if(n.appendChild(o),!t&&e.children&&e.children.length>0){const i=we(e.expanded);if(o.appendChild(i),e.expanded!==!1){const l=Ct(this,e.children);n.appendChild(l)}}return{grp:n,top:o,tpc:s}},Nt=function(e){const t=_.createElement("me-parent"),n=this.createTopic(e);return be.call(this,n,e),t.appendChild(n),{p:t,tpc:n}},kt=function(e){const t=_.createElement("me-children");return t.append(...e),t},_t=function(e){const t=_.createElement("me-tpc");return t.nodeObj=e,t.dataset.nodeid="me"+e.id,t.draggable=this.draggable,t};function Pe(e){const t=_.createRange();t.selectNodeContents(e);const n=window.getSelection();n&&(n.removeAllRanges(),n.addRange(t))}const Tt=function(e){if(!e)return;const t=_.createElement("div"),n=e.nodeObj,o=n.topic,{offsetLeft:s,offsetTop:i}=$(this.nodes,e);this.nodes.appendChild(t),t.id="input-box",t.textContent=o,t.contentEditable="plaintext-only",t.spellcheck=!1;const l=getComputedStyle(e);t.style.cssText=` left: ${s}px; top: ${i}px; min-width:${e.offsetWidth-8}px; color:${l.color}; font-size:${l.fontSize}; padding:${l.padding}; margin:${l.margin}; background-color:${l.backgroundColor!=="rgba(0, 0, 0, 0)"&&l.backgroundColor}; border: ${l.border}; border-radius:${l.borderRadius}; `,this.direction===0&&(t.style.right="0"),Pe(t),this.bus.fire("operation",{name:"beginEdit",obj:e.nodeObj}),t.addEventListener("keydown",r=>{r.stopPropagation();const c=r.key;if(c==="Enter"||c==="Tab"){if(r.shiftKey)return;r.preventDefault(),t.blur(),this.container.focus()}}),t.addEventListener("blur",()=>{if(!t)return;t.remove();const r=t.textContent?.trim()||"";r===o||r===""||(n.topic=r,this.markdown?e.text.innerHTML=this.markdown(n.topic,n):e.text.textContent=r,this.linkDiv(),this.bus.fire("operation",{name:"finishEdit",obj:n,origin:o}))})},we=function(e){const t=_.createElement("me-epd");return t.expanded=e!==!1,t.className=e!==!1?"minus":"",t},G=document,P="http://www.w3.org/2000/svg",oe=function(e){const t=e.clientWidth,n=e.clientHeight,o=e.dataset,s=Number(o.x),i=Number(o.y),l=o.anchor;let r=s;l==="middle"?r=s-t/2:l==="end"&&(r=s-t),e.style.left=`${r}px`,e.style.top=`${i-n/2}px`,e.style.visibility="visible"},xe=function(e,t,n,o){const{anchor:s="middle",color:i,dataType:l,svgId:r}=o,c=document.createElement("div");c.className="svg-label",c.style.color=i||"#666";const a="label-"+r;return c.id=a,c.innerHTML=e,c.dataset.type=l,c.dataset.svgId=r,c.dataset.x=t.toString(),c.dataset.y=n.toString(),c.dataset.anchor=s,c},$e=function(e,t,n){const o=G.createElementNS(P,"path");return k(o,{d:e,stroke:t||"#666",fill:"none","stroke-width":n}),o},X=function(e){const t=G.createElementNS(P,"svg");return t.setAttribute("class",e),t.setAttribute("overflow","visible"),t},Oe=function(){const e=G.createElementNS(P,"line");return e.setAttribute("stroke","#4dc4ff"),e.setAttribute("fill","none"),e.setAttribute("stroke-width","2"),e.setAttribute("opacity","0.45"),e},Lt=function(e,t,n,o){const s=G.createElementNS(P,"g");return[{name:"line",d:e},{name:"arrow1",d:t},{name:"arrow2",d:n}].forEach((l,r)=>{const c=l.d,a=G.createElementNS(P,"path"),h={d:c,stroke:o?.stroke||"rgb(227, 125, 116)",fill:"none","stroke-linecap":o?.strokeLinecap||"cap","stroke-width":String(o?.strokeWidth||"2")};o?.opacity!==void 0&&(h.opacity=String(o.opacity)),k(a,h),r===0&&a.setAttribute("stroke-dasharray",o?.strokeDasharray||"8,2");const u=G.createElementNS(P,"path");k(u,{d:c,stroke:"transparent",fill:"none","stroke-width":"15"}),s.appendChild(u),s.appendChild(a),s[l.name]=a}),s},je=function(e,t,n){if(!t)return;const o=n.label,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; `,Pe(s),e.scrollIntoView(s),s.addEventListener("keydown",i=>{i.stopPropagation();const l=i.key;if(l==="Enter"||l==="Tab"){if(i.shiftKey)return;i.preventDefault(),s.blur(),e.container.focus()}}),s.addEventListener("blur",()=>{if(!s)return;const i=s.textContent?.trim()||"";i===""?n.label=o:n.label=i,s.remove(),i!==o&&(e.markdown?t.innerHTML=e.markdown(n.label,n):t.textContent=n.label,oe(t),"parent"in n?e.bus.fire("operation",{name:"finishEditSummary",obj:n}):e.bus.fire("operation",{name:"finishEditArrowLabel",obj:n}))})},At=function(e){const t=this.map.querySelector("me-root"),n=t.offsetTop,o=t.offsetLeft,s=t.offsetWidth,i=t.offsetHeight,l=this.map.querySelectorAll("me-main > me-wrapper");this.lines.innerHTML="";for(let r=0;r<l.length;r++){const c=l[r],a=c.querySelector("me-tpc"),{offsetLeft:h,offsetTop:u}=$(this.nodes,a),g=a.offsetWidth,v=a.offsetHeight,m=c.parentNode.className,p=this.generateMainBranch({pT:n,pL:o,pW:s,pH:i,cT:u,cL:h,cW:g,cH:v,direction:m,containerHeight:this.nodes.offsetHeight}),d=this.theme.palette,f=a.nodeObj.branchColor||d[r%d.length];if(a.style.borderColor=f,this.lines.appendChild($e(p,f,"3")),e&&e!==c)continue;const y=X("subLines"),w=c.lastChild;w.tagName==="svg"&&w.remove(),c.appendChild(y),He(this,y,f,c,m,!0)}this.labelContainer.innerHTML="",this.renderArrow(),this.renderSummary(),this.bus.fire("linkDiv")},He=function(e,t,n,o,s,i){const l=o.firstChild,r=o.children[1].children;if(r.length===0)return;const c=l.offsetTop,a=l.offsetLeft,h=l.offsetWidth,u=l.offsetHeight;for(let g=0;g<r.length;g++){const v=r[g],m=v.firstChild,p=m.offsetTop,d=m.offsetLeft,f=m.offsetWidth,y=m.offsetHeight,w=m.firstChild.nodeObj.branchColor||n,S=e.generateSubBranch({pT:c,pL:a,pW:h,pH:u,cT:p,cL:d,cW:f,cH:y,direction:s,isFirst:i});t.appendChild($e(S,w,"2"));const E=m.children[1];if(E){if(!E.expanded)continue}else continue;He(e,t,w,v,s)}},Be={addChild:"插入子节点",addParent:"插入父节点",addSibling:"插入同级节点",removeNode:"删除节点",focus:"专注",cancelFocus:"取消专注",moveUp:"上移",moveDown:"下移",link:"连接",linkBidirectional:"双向连接",clickTips:"请点击目标节点",summary:"摘要"},Re={cn:Be,zh_CN:Be,zh_TW:{addChild:"插入子節點",addParent:"插入父節點",addSibling:"插入同級節點",removeNode:"刪除節點",focus:"專注",cancelFocus:"取消專注",moveUp:"上移",moveDown:"下移",link:"連接",linkBidirectional:"雙向連接",clickTips:"請點擊目標節點",summary:"摘要"},en:{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"},ru:{addChild:"Добавить дочерний элемент",addParent:"Добавить родительский элемент",addSibling:"Добавить на этом уровне",removeNode:"Удалить узел",focus:"Режим фокусировки",cancelFocus:"Отменить режим фокусировки",moveUp:"Поднять выше",moveDown:"Опустить ниже",link:"Ссылка",linkBidirectional:"Двунаправленная ссылка",clickTips:"Пожалуйста, нажмите на целевой узел",summary:"Описание"},ja:{addChild:"子ノードを追加する",addParent:"親ノードを追加します",addSibling:"兄弟ノードを追加する",removeNode:"ノードを削除",focus:"集中",cancelFocus:"集中解除",moveUp:"上へ移動",moveDown:"下へ移動",link:"コネクト",linkBidirectional:"双方向リンク",clickTips:"ターゲットノードをクリックしてください",summary:"概要"},pt:{addChild:"Adicionar item filho",addParent:"Adicionar item pai",addSibling:"Adicionar item irmao",removeNode:"Remover item",focus:"Modo Foco",cancelFocus:"Cancelar Modo Foco",moveUp:"Mover para cima",moveDown:"Mover para baixo",link:"Link",linkBidirectional:"Link bidirecional",clickTips:"Favor clicar no item alvo",summary:"Resumo"},it:{addChild:"Aggiungi figlio",addParent:"Aggiungi genitore",addSibling:"Aggiungi fratello",removeNode:"Rimuovi nodo",focus:"Modalità Focus",cancelFocus:"Annulla Modalità Focus",moveUp:"Sposta su",moveDown:"Sposta giù",link:"Collega",linkBidirectional:"Collegamento bidirezionale",clickTips:"Si prega di fare clic sul nodo di destinazione",summary:"Unisci nodi"},es:{addChild:"Agregar hijo",addParent:"Agregar padre",addSibling:"Agregar hermano",removeNode:"Eliminar nodo",focus:"Modo Enfoque",cancelFocus:"Cancelar Modo Enfoque",moveUp:"Mover hacia arriba",moveDown:"Mover hacia abajo",link:"Enlace",linkBidirectional:"Enlace bidireccional",clickTips:"Por favor haga clic en el nodo de destino",summary:"Resumen"},fr:{addChild:"Ajout enfant",addParent:"Ajout parent",addSibling:"Ajout voisin",removeNode:"Supprimer",focus:"Cibler",cancelFocus:"Retour",moveUp:"Monter",moveDown:"Descendre",link:"Lier",linkBidirectional:"Lien bidirectionnel",clickTips:"Cliquer sur le noeud cible",summary:"Annoter"},ko:{addChild:"자식 추가",addParent:"부모 추가",addSibling:"형제 추가",removeNode:"노드 삭제",focus:"포커스 모드",cancelFocus:"포커스 모드 취소",moveUp:"위로 이동",moveDown:"아래로 이동",link:"연결",linkBidirectional:"양방향 연결",clickTips:"대상 노드를 클릭하십시오",summary:"요약"}};function Mt(e,t){t=t===!0?{focus:!0,link:!0}:t;const n=x=>{const b=document.createElement("div");return b.innerText=x,b.className="tips",b},o=(x,b,C)=>{const N=document.createElement("li");return N.id=x,N.innerHTML=`<span>${pe(b)}</span><span ${C?'class="key"':""}>${pe(C)}</span>`,N},s=Re[e.locale]?e.locale:"en",i=Re[s],l=o("cm-add_child",i.addChild,"Tab"),r=o("cm-add_parent",i.addParent,"Ctrl + Enter"),c=o("cm-add_sibling",i.addSibling,"Enter"),a=o("cm-remove_child",i.removeNode,"Delete"),h=o("cm-fucus",i.focus,""),u=o("cm-unfucus",i.cancelFocus,""),g=o("cm-up",i.moveUp,"PgUp"),v=o("cm-down",i.moveDown,"Pgdn"),m=o("cm-link",i.link,""),p=o("cm-link-bidirectional",i.linkBidirectional,""),d=o("cm-summary",i.summary,""),f=document.createElement("ul");if(f.className="menu-list",f.appendChild(l),f.appendChild(r),f.appendChild(c),f.appendChild(a),t.focus&&(f.appendChild(h),f.appendChild(u)),f.appendChild(g),f.appendChild(v),f.appendChild(d),t.link&&(f.appendChild(m),f.appendChild(p)),t&&t.extend)for(let x=0;x<t.extend.length;x++){const b=t.extend[x],C=o(b.name,b.name,b.key||"");f.appendChild(C),C.onclick=N=>{b.onclick(N)}}const y=document.createElement("div");y.className="context-menu",y.appendChild(f),y.hidden=!0,e.container.append(y);let w=!0;const S=x=>{const b=x.target;if(ye(b)){b.parentElement.tagName==="ME-ROOT"?w=!0:w=!1,w?(h.className="disabled",g.className="disabled",v.className="disabled",r.className="disabled",c.className="disabled",a.className="disabled"):(h.className="",g.className="",v.className="",r.className="",c.className="",a.className=""),y.hidden=!1,f.style.top="",f.style.bottom="",f.style.left="",f.style.right="";const C=f.getBoundingClientRect(),N=f.offsetHeight,M=f.offsetWidth,B=x.clientY-C.top,R=x.clientX-C.left;N+B>window.innerHeight?(f.style.top="",f.style.bottom="0px"):(f.style.bottom="",f.style.top=B+15+"px"),M+R>window.innerWidth?(f.style.left="",f.style.right="0px"):(f.style.right="",f.style.left=R+10+"px")}};e.bus.addListener("showContextMenu",S),y.onclick=x=>{x.target===y&&(y.hidden=!0)},l.onclick=()=>{e.addChild(),y.hidden=!0},r.onclick=()=>{e.insertParent(),y.hidden=!0},c.onclick=()=>{w||(e.insertSibling("after"),y.hidden=!0)},a.onclick=()=>{w||(e.removeNodes(e.currentNodes||[]),y.hidden=!0)},h.onclick=()=>{w||(e.focusNode(e.currentNode),y.hidden=!0)},u.onclick=()=>{e.cancelFocus(),y.hidden=!0},g.onclick=()=>{w||(e.moveUpNode(),y.hidden=!0)},v.onclick=()=>{w||(e.moveDownNode(),y.hidden=!0)};const E=x=>{y.hidden=!0;const b=e.currentNode,C=n(i.clickTips);e.container.appendChild(C),e.map.addEventListener("click",N=>{N.preventDefault(),C.remove();const M=N.target;(M.parentElement.tagName==="ME-PARENT"||M.parentElement.tagName==="ME-ROOT")&&e.createArrow(b,M,x)},{once:!0})};return m.onclick=()=>E(),p.onclick=()=>E({bidirectional:!0}),d.onclick=()=>{y.hidden=!0,e.createSummary(),e.unselectNodes(e.currentNodes)},()=>{l.onclick=null,r.onclick=null,c.onclick=null,a.onclick=null,h.onclick=null,u.onclick=null,g.onclick=null,v.onclick=null,m.onclick=null,d.onclick=null,y.onclick=null,e.container.oncontextmenu=null}}const Ee=document,Dt=function(e,t){if(!t)return Ce(e),e;let n=e.querySelector(".insert-preview");const o=`insert-preview ${t} show`;return n||(n=Ee.createElement("div"),e.appendChild(n)),n.className=o,e},Ce=function(e){if(!e)return;const t=e.querySelectorAll(".insert-preview");for(const n of t||[])n.remove()},Ie=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},Pt=function(e){const t=document.createElement("div");return t.className="mind-elixir-ghost",e.container.appendChild(t),t};class $t{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,clearInterval(this.interval)}}function Ot(e){let t=null,n=null;const o=Pt(e),s=new $t(e),i=a=>{if(e.spacePressed){a.preventDefault();return}e.selection.cancel();const h=a.target;if(h?.tagName!=="ME-TPC"){a.preventDefault();return}let u=e.currentNodes;u?.includes(h)||(e.selectNode(h),u=e.currentNodes),e.dragged=u,u.length>1?o.innerHTML=u.length+"":o.innerHTML=h.innerHTML;for(const g of u)g.parentElement.parentElement.style.opacity="0.5";a.dataTransfer.setDragImage(o,0,0),a.dataTransfer.dropEffect="move",e.dragMoveHelper.clear()},l=a=>{const{dragged:h}=e;if(!h)return;s.stop();for(const g of h)g.parentElement.parentElement.style.opacity="1";const u=a.target;u.style.opacity="",n&&(Ce(n),t==="before"?e.moveNodeBefore(h,n):t==="after"?e.moveNodeAfter(h,n):t==="in"&&e.moveNodeIn(h,n),e.dragged=null,o.innerHTML="")},r=a=>{a.preventDefault();const h=12*e.scaleVal,{dragged:u}=e;if(!u)return;const g=e.container.getBoundingClientRect();a.clientX<g.x+50?s.move(1,0):a.clientX>g.x+g.width-50?s.move(-1,0):a.clientY<g.y+50?s.move(0,1):a.clientY>g.y+g.height-50?s.move(0,-1):s.stop(),Ce(n);const v=Ee.elementFromPoint(a.clientX,a.clientY-h);if(Ie(v,u)){n=v;const m=v.getBoundingClientRect(),p=m.y;a.clientY>p+m.height?t="after":t="in"}else{const m=Ee.elementFromPoint(a.clientX,a.clientY+h),p=m.getBoundingClientRect();if(Ie(m,u)){n=m;const d=p.y;a.clientY<d?t="before":t="in"}else t=n=null}n&&Dt(n,t)};return ve([{dom:e.map,evt:"dragstart",func:i},{dom:e.map,evt:"dragend",func:l},{dom:e.map,evt:"dragover",func:r}])}const jt=function(e){return["createSummary","removeSummary","finishEditSummary"].includes(e.name)?{type:"summary",value:e.obj.id}:["createArrow","removeArrow","finishEditArrowLabel"].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 Ht(e){let t=[],n=-1,o=e.getData(),s=[];e.undo=function(){if(n>-1){const c=t[n];o=c.prev,e.refresh(c.prev);try{c.currentTarget.type==="nodes"&&(c.operation==="removeNodes"?e.selectNodes(c.currentTarget.value.map(a=>this.findEle(a))):e.selectNodes(c.currentSelected.map(a=>this.findEle(a))))}catch{}finally{n--}}},e.redo=function(){if(n<t.length-1){n++;const c=t[n];o=c.next,e.refresh(c.next);try{c.currentTarget.type==="nodes"&&(c.operation==="removeNodes"?e.selectNodes(c.currentSelected.map(a=>this.findEle(a))):e.selectNodes(c.currentTarget.value.map(a=>this.findEle(a))))}catch{}}};const i=function(c){if(c.name==="beginEdit")return;t=t.slice(0,n+1);const a=e.getData(),h={prev:o,operation:c.name,currentSelected:s.map(u=>u.id),currentTarget:jt(c),next:a};t.push(h),o=a,n=t.length-1},l=function(c){(c.metaKey||c.ctrlKey)&&(c.shiftKey&&c.key==="Z"||c.key==="y")?e.redo():(c.metaKey||c.ctrlKey)&&c.key==="z"&&e.undo()},r=function(){s=e.currentNodes.map(c=>c.nodeObj)};return e.bus.addListener("operation",i),e.bus.addListener("selectNodes",r),e.container.addEventListener("keydown",l),()=>{e.bus.removeListener("operation",i),e.bus.removeListener("selectNodes",r),e.container.removeEventListener("keydown",l)}}const Bt={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.6 0-31.904 14.208-32 31.808l-1.248 222.24c0 0.704 0.352 1.312 0.384 2.016 0 0.448-0.256 0.832-0.256 1.312-0.032 17.664 14.272 32 31.968 32.032L352.448 928c0 0 0.032 0 0.032 0 17.664 0 31.968-14.304 32-31.968s-14.272-32-31.968-32.032l-151.936-0.224 206.4-200.832c12.672-12.352 12.96-32.608 0.64-45.248S375.008 604.704 362.368 617.056z" p-id="2174"></path></svg>',living:'<?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="1750169573443" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2883" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M514.133333 488.533333m-106.666666 0a106.666667 106.666667 0 1 0 213.333333 0 106.666667 106.666667 0 1 0-213.333333 0Z" fill="currentColor" p-id="2884"></path><path d="M512 64C264.533333 64 64 264.533333 64 512c0 236.8 183.466667 428.8 416 445.866667v-134.4c-53.333333-59.733333-200.533333-230.4-200.533333-334.933334 0-130.133333 104.533333-234.666667 234.666666-234.666666s234.666667 104.533333 234.666667 234.666666c0 61.866667-49.066667 153.6-145.066667 270.933334l-59.733333 68.266666V960C776.533333 942.933333 960 748.8 960 512c0-247.466667-200.533333-448-448-448z" fill="currentColor" p-id="2885"></path></svg>',zoomin:'<?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="1750169419447" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2480" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M863.328 482.56l-317.344-1.12L545.984 162.816c0-17.664-14.336-32-32-32s-32 14.336-32 32l0 318.4L159.616 480.064c-0.032 0-0.064 0-0.096 0-17.632 0-31.936 14.24-32 31.904C127.424 529.632 141.728 544 159.392 544.064l322.592 1.152 0 319.168c0 17.696 14.336 32 32 32s32-14.304 32-32l0-318.944 317.088 1.12c0.064 0 0.096 0 0.128 0 17.632 0 31.936-14.24 32-31.904C895.264 496.992 880.96 482.624 863.328 482.56z" p-id="2481"></path></svg>',zoomout:'<?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="1750169426515" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2730" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M863.744 544 163.424 544c-17.664 0-32-14.336-32-32s14.336-32 32-32l700.32 0c17.696 0 32 14.336 32 32S881.44 544 863.744 544z" p-id="2731"></path></svg>'},F=(e,t)=>{const n=document.createElement("span");return n.id=e,n.innerHTML=Bt[t],n};function Rt(e){const t=document.createElement("div"),n=F("fullscreen","full"),o=F("toCenter","living"),s=F("zoomout","zoomout"),i=F("zoomin","zoomin"),l=document.createElement("span");return l.innerText="100%",t.appendChild(n),t.appendChild(o),t.appendChild(s),t.appendChild(i),t.className="mind-elixir-toolbar rb",n.onclick=()=>{document.fullscreenElement===e.el?document.exitFullscreen():e.el.requestFullscreen()},o.onclick=()=>{e.toCenter()},s.onclick=()=>{e.scale(e.scaleVal-e.scaleSensitivity)},i.onclick=()=>{e.scale(e.scaleVal+e.scaleSensitivity)},t}function It(e){const t=document.createElement("div"),n=F("tbltl","left"),o=F("tbltr","right"),s=F("tblts","side");return t.appendChild(n),t.appendChild(o),t.appendChild(s),t.className="mind-elixir-toolbar lt",n.onclick=()=>{e.initLeft()},o.onclick=()=>{e.initRight()},s.onclick=()=>{e.initSide()},t}function Ft(e){e.container.append(Rt(e)),e.container.append(It(e))}class Wt{_listeners=new Map;addEventListener(t,n){const o=this._listeners.get(t)??new Set;return this._listeners.set(t,o),o.add(n),this}removeEventListener(t,n){return this._listeners.get(t)?.delete(n),this}dispatchEvent(t,...n){let o=!0;for(const s of this._listeners.get(t)??[])o=s(...n)!==!1&&o;return o}unbindAllListeners(){this._listeners.clear()}on=this.addEventListener;off=this.removeEventListener;emit=this.dispatchEvent}const Fe=(e,t="px")=>typeof e=="number"?e+t:e,j=({style:e},t,n)=>{if(typeof t=="object")for(const[o,s]of Object.entries(t))s!==void 0&&(e[o]=Fe(s));else n!==void 0&&(e[t]=Fe(n))},We=(e=0,t=0,n=0,o=0)=>{const s={x:e,y:t,width:n,height:o,top:t,left:e,right:e+n,bottom:t+o};return{...s,toJSON:()=>JSON.stringify(s)}},Kt=e=>{let t,n=-1,o=!1;return{next:(...s)=>{t=s,o||(o=!0,n=requestAnimationFrame(()=>{e(...t),o=!1}))},cancel:()=>{cancelAnimationFrame(n),o=!1}}},Ke=(e,t,n="touch")=>{switch(n){case"center":{const o=t.left+t.width/2,s=t.top+t.height/2;return o>=e.left&&o<=e.right&&s>=e.top&&s<=e.bottom}case"cover":return t.left>=e.left&&t.top>=e.top&&t.right<=e.right&&t.bottom<=e.bottom;case"touch":return e.right>=t.left&&e.left<=t.right&&e.bottom>=t.top&&e.top<=t.bottom}},Gt=()=>matchMedia("(hover: none), (pointer: coarse)").matches,Yt=()=>"safari"in window,Se=e=>Array.isArray(e)?e:[e],Ge=e=>(t,n,o,s={})=>{(t instanceof HTMLCollection||t instanceof NodeList)&&(t=Array.from(t)),n=Se(n),t=Se(t);for(const i of t)if(i)for(const l of n)i[e](l,o,{capture:!1,...s})},H=Ge("addEventListener"),L=Ge("removeEventListener"),se=e=>{const{clientX:t,clientY:n,target:o}=e.touches?.[0]??e;return{x:t,y:n,target:o}},Y=(e,t=document)=>Se(e).map(n=>typeof n=="string"?Array.from(t.querySelectorAll(n)):n instanceof Element?n:null).flat().filter(Boolean),zt=(e,t)=>t.some(n=>typeof n=="number"?e.button===n:typeof n=="object"?n.button!==e.button?!1:n.modifiers.every(o=>{switch(o){case"alt":return e.altKey;case"ctrl":return e.ctrlKey||e.metaKey;case"shift":return e.shiftKey}}):!1),{abs:W,max:Ye,min:ze,ceil:qe}=Math,Ve=(e=[])=>({stored:e,selected:[],touched:[],changed:{added:[],removed:[]}});class qt extends Wt{static version="mind-elixir-fork";_options;_selection=Ve();_area;_clippingElement;_targetElement;_targetBoundary;_targetBoundaryScrolled=!0;_targetRect;_selectables=[];_latestElement;_areaLocation={y1:0,x2:0,y2:0,x1:0};_areaRect=We();_singleClick=!0;_frame;_scrollAvailable=!0;_scrollingActive=!1;_scrollSpeed={x:0,y:0};_scrollDelta={x:0,y:0};_lastMousePosition={x:0,y:0};constructor(t){super(),this._options={selectionAreaClass:"selection-area",selectionContainerClass:void 0,selectables:[],document:window.document,startAreas:["html"],boundaries:["html"],container:"body",mindElixirInstance:void 0,...t,behaviour:{overlap:"invert",intersect:"touch",triggers:[0],...t.behaviour,startThreshold:t.behaviour?.startThreshold?typeof t.behaviour.startThreshold=="number"?t.behaviour.startThreshold:{x:10,y:10,...t.behaviour.startThreshold}:{x:10,y:10},scrolling:{speedDivider:10,manualSpeed:750,...t.behaviour?.scrolling,startScrollMargins:{x:0,y:0,...t.behaviour?.scrolling?.startScrollMargins}}},features:{range:!0,touch:!0,deselectOnBlur:!1,...t.features,singleTap:{allow:!0,intersect:"native",...t.features?.singleTap}}};for(const i of Object.getOwnPropertyNames(Object.getPrototypeOf(this)))typeof this[i]=="function"&&(this[i]=this[i].bind(this));const{document:n,selectionAreaClass:o,selectionContainerClass:s}=this._options;this._area=n.createElement("div"),this._clippingElement=n.createElement("div"),this._clippingElement.appendChild(this._area),this._area.classList.add(o),s&&this._clippingElement.classList.add(s),j(this._area,{willChange:"top, left, bottom, right, width, height",top:0,left:0,position:"fixed"}),j(this._clippingElement,{overflow:"hidden",position:"fixed",transform:"translate3d(0, 0, 0)",pointerEvents:"none",zIndex:"1"}),this._frame=Kt(i=>{this._recalculateSelectionAreaRect(),this._updateElementSelection(),this._emitEvent("move",i),this._redrawSelectionArea()}),this.enable()}_toggleStartEvents(t=!0){const{document:n,features:o}=this._options,s=t?H:L;s(n,"mousedown",this._onTapStart),o.touch&&s(n,"touchstart",this._onTapStart,{passive:!1})}_onTapStart(t,n=!1){const{x:o,y:s,target:i}=se(t),{document:l,startAreas:r,boundaries:c,features:a,behaviour:h}=this._options,u=i.getBoundingClientRect();if(t instanceof MouseEvent&&!zt(t,h.triggers))return;const g=Y(r,l),v=Y(c,l);this._targetElement=v.find(f=>Ke(f.getBoundingClientRect(),u));const m=t.composedPath(),p=g.find(f=>m.includes(f));if(this._targetBoundary=v.find(f=>m.includes(f)),!this._targetElement||!p||!this._targetBoundary||!n&&this._emitEvent("beforestart",t)===!1)return;this._areaLocation={x1:o,y1:s,x2:0,y2:0};const d=l.scrollingElement??l.body;this._scrollDelta={x:d.scrollLeft,y:d.scrollTop},this._singleClick=!0,this.clearSelection(!1,!0),H(l,["touchmove","mousemove"],this._delayedTapMove,{passive:!1}),H(l,["mouseup","touchcancel","touchend"],this._onTapStop),H(l,"scroll",this._onScroll),a.deselectOnBlur&&(this._targetBoundaryScrolled=!1,H(this._targetBoundary,"scroll",this._onStartAreaScroll))}_onSingleTap(t){const{singleTap:{intersect:n},range:o}=this._options.features,s=se(t);let i;if(n==="native")i=s.target;else if(n==="touch"){this.resolveSelectables();const{x:r,y:c}=s;i=this._selectables.find(a=>{const{right:h,left:u,top:g,bottom:v}=a.getBoundingClientRect();return r<h&&r>u&&c<v&&c>g})}if(!i)return;for(this.resolveSelectables();!this._selectables.includes(i);)if(i.parentElement)i=i.parentElement;else{this._targetBoundaryScrolled||this.clearSelection();return}const{stored:l}=this._selection;if(this._emitEvent("start",t),t.shiftKey&&o&&this._latestElement){const r=this._latestElement,[c,a]=r.compareDocumentPosition(i)&4?[i,r]:[r,i],h=[...this._selectables.filter(u=>u.compareDocumentPosition(c)&4&&u.compareDocumentPosition(a)&2),c,a];this.select(h),this._latestElement=r}else l.includes(i)&&(l.length===1||t.ctrlKey||l.every(r=>this._selection.stored.includes(r)))?this.deselect(i):(this.select(i),this._latestElement=i)}_delayedTapMove(t){const{container:n,document:o,behaviour:{startThreshold:s}}=this._options,{x1:i,y1:l}=this._areaLocation,{x:r,y:c}=se(t);if(typeof s=="number"&&W(r+c-(i+l))>=s||typeof s=="object"&&W(r-i)>=s.x||W(c-l)>=s.y){if(L(o,["mousemove","touchmove"],this._delayedTapMove,{passive:!1}),this._emitEvent("beforedrag",t)===!1){L(o,["mouseup","touchcancel","touchend"],this._onTapStop);return}H(o,["mousemove","touchmove"],this._onTapMove,{passive:!1}),j(this._area,"display","block"),Y(n,o)[0].appendChild(this._clippingElement),this.resolveSelectables(),this._singleClick=!1,this._targetRect=this._targetElement.getBoundingClientRect(),this._scrollAvailable=this._targetElement.scrollHeight!==this._targetElement.clientHeight||this._targetElement.scrollWidth!==this._targetElement.clientWidth,this._scrollAvailable&&(H(this._targetElement,"wheel",this._wheelScroll,{passive:!1}),H(this._options.document,"keydown",this._keyboardScroll,{passive:!1}),this._selectables=this._selectables.filter(a=>this._targetElement.contains(a))),this._setupSelectionArea(),this._emitEvent("start",t),this._onTapMove(t)}this._handleMoveEvent(t)}_setupSelectionArea(){const{_clippingElement:t,_targetElement:n,_area:o}=this,s=this._targetRect=n.getBoundingClientRect();this._scrollAvailable?(j(t,{top:s.top,left:s.left,width:s.width,height:s.height}),j(o,{marginTop:-s.top,marginLeft:-s.left})):(j(t,{top:0,left:0,width:"100%",height:"100%"}),j(o,{marginTop:0,marginLeft:0}))}_onTapMove(t){const{_scrollSpeed:n,_areaLocation:o,_options:s,_frame:i}=this,{speedDivider:l}=s.behaviour.scrolling;this._targetElement;const{x:r,y:c}=se(t);if(o.x2=r,o.y2=c,this._lastMousePosition.x=r,this._lastMousePosition.y=c,this._scrollAvailable&&!this._scrollingActive&&(n.y||n.x)){this._scrollingActive=!0;const a=()=>{if(!n.x&&!n.y){this._scrollingActive=!1;return}const h=this._options.mindElixirInstance;if(h&&h.move){const u=n.x?qe(n.x/l):0,g=n.y?qe(n.y/l):0;(u||g)&&(h.move(-u,-g),o.x1-=u,o.y1-=g)}i.next(t),requestAnimationFrame(a)};requestAnimationFrame(a)}else i.next(t);this._handleMoveEvent(t)}_handleMoveEvent(t){const{features:n}=this._options;(n.touch&&Gt()||this._scrollAvailable&&Yt())&&t.preventDefault()}_onScroll(){const{_scrollDelta:t,_options:{document:n}}=this,{scrollTop:o,scrollLeft:s}=n.scrollingElement??n.body;this._areaLocation.x1+=t.x-s,this._areaLocation.y1+=t.y-o,t.x=s,t.y=o,this._setupSelectionArea(),this._frame.next(null)}_onStartAreaScroll(){this._targetBoundaryScrolled=!0,L(this._targetElement,"scroll",this._onStartAreaScroll)}_wheelScroll(t){const{manualSpeed:n}=this._options.behaviour.scrolling,o=t.deltaY?t.deltaY>0?1:-1:0,s=t.deltaX?t.deltaX>0?1:-1:0;this._scrollSpeed.y+=o*n,this._scrollSpeed.x+=s*n,this._onTapMove(t),t.preventDefault()}_keyboardScroll(t){const{manualSpeed:n}=this._options.behaviour.scrolling,o=t.key==="ArrowLeft"?-1:t.key==="ArrowRight"?1:0,s=t.key==="ArrowUp"?-1:t.key==="ArrowDown"?1:0;this._scrollSpeed.x+=Math.sign(o)*n,this._scrollSpeed.y+=Math.sign(s)*n,t.preventDefault(),this._onTapMove({clientX:this._lastMousePosition.x,clientY:this._lastMousePosition.y,preventDefault:()=>{}})}_recalculateSelectionAreaRect(){const{_scrollSpeed:t,_areaLocation:n,_targetElement:o,_options:s}=this,i=this._targetRect,{x1:l,y1:r}=n;let{x2:c,y2:a}=n;const{behaviour:{scrolling:{startScrollMargins:h}}}=s;c<i.left+h.x?(t.x=-W(i.left-c+h.x),c=c<i.left?i.left:c):c>i.right-h.x?(t.x=W(i.left+i.width-c-h.x),c=c>i.right?i.right:c):t.x=0,a<i.top+h.y?(t.y=-W(i.top-a+h.y),a=a<i.top?i.top:a):a>i.bottom-h.y?(t.y=W(i.top+i.height-a-h.y),a=a>i.bottom?i.bottom:a):t.y=0;const u=ze(l,c),g=ze(r,a),v=Ye(l,c),m=Ye(r,a);this._areaRect=We(u,g,v-u,m-g)}_redrawSelectionArea(){const{x:t,y:n,width:o,height:s}=this._areaRect,{style:i}=this._area;i.left=`${t}px`,i.top=`${n}px`,i.width=`${o}px`,i.height=`${s}px`}_onTapStop(t,n){const{document:o,features:s}=this._options,{_singleClick:i}=this;L(this._targetElement,"scroll",this._onStartAreaScroll),L(o,["mousemove","touchmove"],this._delayedTapMove),L(o,["touchmove","mousemove"],this._onTapMove),L(o,["mouseup","touchcancel","touchend"],this._onTapStop),L(o,"scroll",this._onScroll),this._keepSelection(),t&&i&&s.singleTap.allow?this._onSingleTap(t):!i&&!n&&(this._updateElementSelection(),this._emitEvent("stop",t)),this._scrollSpeed.x=0,this._scrollSpeed.y=0,L(this._targetElement,"wheel",this._wheelScroll,{passive:!0}),L(this._options.document,"keydown",this._keyboardScroll,{passive:!0}),this._clippingElement.remove(),this._frame?.cancel(),j(this._area,"display","none")}_updateElementSelection(){const{_selectables:t,_options:n,_selection:o,_areaRect:s}=this,{stored:i,selected:l,touched:r}=o,{intersect:c,overlap:a}=n.behaviour,h=a==="invert",u=[],g=[],v=[];for(let p=0;p<t.length;p++){const d=t[p];if(Ke(s,d.getBoundingClientRect(),c)){if(l.includes(d))i.includes(d)&&!r.includes(d)&&r.push(d);else if(h&&i.includes(d)){v.push(d);continue}else g.push(d);u.push(d)}}h&&g.push(...i.filter(p=>!l.includes(p)));const m=a==="keep";for(let p=0;p<l.length;p++){const d=l[p];!u.includes(d)&&!(m&&i.includes(d))&&v.push(d)}o.selected=u,o.changed={added:g,removed:v},this._latestElement=void 0}_emitEvent(t,n){return this.emit(t,{event:n,store:this._selection,selection:this})}_keepSelection(){const{_options:t,_selection:n}=this,{selected:o,changed:s,touched:i,stored:l}=n,r=o.filter(c=>!l.includes(c));switch(t.behaviour.overlap){case"drop":{n.stored=[...r,...l.filter(c=>!i.includes(c))];break}case"invert":{n.stored=[...r,...l.filter(c=>!s.removed.includes(c))];break}case"keep":{n.stored=[...l,...o.filter(c=>!l.includes(c))];break}}}trigger(t,n=!0){this._onTapStart(t,n)}resolveSelectables(){this._selectables=Y(this._options.selectables,this._options.document)}clearSelection(t=!0,n=!1){const{selected:o,stored:s,changed:i}=this._selection;i.added=[],i.removed.push(...o,...t?s:[]),n||(this._emitEvent("move",null),this._emitEvent("stop",null)),this._selection=Ve(t?[]:s)}getSelection(){return this._selection.stored}getSelectionArea(){return this._area}getSelectables(){return this._selectables}setAreaLocation(t){Objec