mind-elixir 3.1.1 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,4 +8,4 @@ var MindElixir=function(){"use strict";const sn="";(function(e){var t,n,i,s,o,r,
8
8
  `;function n(i,s){for(let o=0;o<i.length;o++)s<=6?t+="".padStart(s,"#")+" "+i[o].topic+`
9
9
 
10
10
  `:t+="".padStart(s-7," ")+"- "+i[o].topic+`
11
- `,i[o].children&&n(i[o].children||[],s+1)}return n(e.children||[],2),t},getDataString:function(){const e=Oe(this);return JSON.stringify(e,(t,n)=>{if(t!=="parent")return t==="from"||t==="to"?n.nodeObj.id:n})},initLeft:function(){this.direction=0,this.refresh()},initRight:function(){this.direction=1,this.refresh()},initSide:function(){this.direction=2,this.refresh()},install:function(e){e(this)},refresh:function(e){e&&(e=JSON.parse(JSON.stringify(e)),this.nodeData=e.nodeData,this.linkData=e.linkData||{}),$(this.nodeData),this.layout(),this.linkDiv()},scale:function(e){this.scaleVal=e,this.map.style.transform="scale("+e+")"},selectFirstChild:function(){if(!this.currentNode)return;const e=this.currentNode.parentElement.nextSibling;if(e&&e.firstChild){const t=e.firstChild.firstChild.firstChild;this.selectNode(t)}},selectNextSibling:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return!1;const e=this.currentNode.parentElement.parentElement.nextSibling;let t;if(e)t=e.firstChild.firstChild;else return!1;return this.selectNode(t),!0},selectNode:function(e,t,n){if(e){if(console.time("selectNode"),typeof e=="string"){const i=C(e);return i?this.selectNode(i):void 0}this.currentNode&&(this.currentNode.className=""),e.className="selected",e.scrollIntoView({block:"nearest",inline:"nearest"}),this.currentNode=e,t?this.bus.fire("selectNewNode",e.nodeObj):this.bus.fire("selectNode",e.nodeObj,n),console.timeEnd("selectNode")}},selectNodes:function(e){if(e){console.time("selectNodes");for(const t of e)t.className="selected";this.currentNodes=e,this.bus.fire("selectNodes",e.map(t=>t.nodeObj)),console.timeEnd("selectNodes")}},selectParent:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return;const e=this.currentNode.parentElement.parentElement.parentElement.previousSibling;if(e){const t=e.firstChild;this.selectNode(t)}},selectPrevSibling:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return!1;const e=this.currentNode.parentElement.parentElement.previousSibling;let t;if(e)t=e.firstChild.firstChild;else return!1;return this.selectNode(t),!0},setLocale:function(e){this.locale=e,this.refresh()},toCenter:function(){this.container.scrollTo(1e4-this.container.offsetWidth/2,1e4-this.container.offsetHeight/2)},unselectNode:function(){this.currentNode&&(this.currentNode.className=""),this.currentNode=null,this.bus.fire("unselectNode")},unselectNodes:function(){if(this.currentNodes)for(const e of this.currentNodes)e.classList.remove("selected");this.currentNodes=null,this.bus.fire("unselectNodes")}},Symbol.toStringTag,{value:"Module"})),ee=function(e){const n=e.parentElement.parentElement.lastElementChild;(n==null?void 0:n.tagName)==="svg"&&(n==null||n.remove())},Pe=function(e,t){var n,i;if(e===S)return S;if(e===D)return D;if(e===W){const s=((n=document.querySelector(".lhs"))==null?void 0:n.childElementCount)||0,o=((i=document.querySelector(".rhs"))==null?void 0:i.childElementCount)||0;return s<=o?(t.direction=S,S):(t.direction=D,D)}},zt=function(e,t){console.log(t);const n=e.nodeObj,i=pe(n);i.style&&t.style&&(t.style=Object.assign(i.style,t.style));const s=Object.assign(n,t);re(e,s),this.linkDiv(),this.bus.fire("operation",{name:"reshapeNode",obj:s,origin:i})},Vt=function(e,t){var u,d,h;const n=e||this.currentNode;if(!n)return;const i=n.nodeObj;if(i.root===!0){this.addChild();return}else if(((u=i.parent)==null?void 0:u.root)===!0&&((h=(d=i.parent)==null?void 0:d.children)==null?void 0:h.length)===1){this.addChild(C(i.parent.id));return}const s=t||this.generateNewObj();Ge(i,s),$(this.nodeData);const o=n.parentElement;console.time("insertSibling_DOM");const{grp:r,top:l}=this.createWrapper(s);o.parentNode.parentNode.insertBefore(r,o.parentNode.nextSibling),this.linkDiv(r.offsetParent),t||this.editTopic(l.firstChild),this.selectNode(l.firstChild,!0),console.timeEnd("insertSibling_DOM"),this.bus.fire("operation",{name:"insertSibling",obj:s})},Ft=function(e,t){const n=e||this.currentNode;if(!n)return;const i=n.nodeObj;if(i.root===!0){this.addChild();return}const s=t||this.generateNewObj();Je(i,s),$(this.nodeData);const o=n.parentElement;console.time("insertSibling_DOM");const{grp:r,top:l}=this.createWrapper(s);o.parentNode.parentNode.insertBefore(r,o.parentNode),this.linkDiv(r.offsetParent),t||this.editTopic(l.firstChild),this.selectNode(l.firstChild,!0),console.timeEnd("insertSibling_DOM"),this.bus.fire("operation",{name:"insertBefore",obj:s})},qt=function(e,t){const n=e||this.currentNode;if(!n)return;ee(n);const i=n.nodeObj;if(i.root===!0)return;const s=t||this.generateNewObj();Qe(i,s),$(this.nodeData);const o=n.parentElement.parentElement;console.time("insertParent_DOM");const{grp:r,top:l}=this.createWrapper(s,!0);l.appendChild(Q(!0)),o.insertAdjacentElement("afterend",r);const c=this.createChildren([o]);l.insertAdjacentElement("afterend",c),this.linkDiv(),t||this.editTopic(l.firstChild),this.selectNode(l.firstChild,!0),console.timeEnd("insertParent_DOM"),this.bus.fire("operation",{name:"insertParent",obj:s})},je=function(e,t){var l,c;if(!e)return null;const n=e.nodeObj;n.expanded===!1&&(this.expandNode(e,!0),e=C(n.id));const i=t||this.generateNewObj();n.children?n.children.push(i):n.children=[i],$(this.nodeData);const s=e.parentElement,{grp:o,top:r}=this.createWrapper(i);if(s.tagName==="ME-PARENT"){if(s.children[1])s.nextSibling.appendChild(o);else{const u=this.createChildren([o]);s.appendChild(Q(!0)),s.insertAdjacentElement("afterend",u)}this.linkDiv(o.offsetParent)}else s.tagName==="ME-ROOT"&&(Pe(this.direction,i)===S?(l=document.querySelector(".lhs"))==null||l.appendChild(o):(c=document.querySelector(".rhs"))==null||c.appendChild(o),this.linkDiv());return{newTop:r,newNodeObj:i}},De=Object.freeze(Object.defineProperty({__proto__:null,addChild:function(e,t){console.time("addChild");const n=e||this.currentNode;if(!n)return;const i=je.call(this,n,t);if(!i)return;const{newTop:s,newNodeObj:o}=i;this.bus.fire("operation",{name:"addChild",obj:o}),console.timeEnd("addChild"),t||this.editTopic(s.firstChild),this.selectNode(s.firstChild,!0)},beginEdit:function(e){const t=e||this.currentNode;t&&this.editTopic(t)},copyNode:function(e,t){console.time("copyNode");const n=pe(e.nodeObj);ue(n);const i=je.call(this,t,n);if(!i)return;const{newNodeObj:s}=i;console.timeEnd("copyNode"),this.bus.fire("operation",{name:"copyNode",obj:s})},insertBefore:Ft,insertParent:qt,insertSibling:Vt,moveDownNode:function(e){const t=e||this.currentNode;if(!t)return;const n=t.parentNode.parentNode,i=t.nodeObj;Ue(i),n.nextSibling?n.nextSibling.insertAdjacentElement("afterend",n):n.parentNode.prepend(n),this.linkDiv(),this.bus.fire("operation",{name:"moveDownNode",obj:i})},moveNode:function(e,t){var l;const n=e.nodeObj,i=t.nodeObj,s=(l=n==null?void 0:n.parent)==null?void 0:l.id;if(i.expanded===!1&&(this.expandNode(t,!0),e=C(n.id),t=C(i.id)),!Ie(n,i)){console.warn("Invalid move");return}console.time("moveNode"),Ze(n,i),$(this.nodeData);const o=e.parentElement,r=t.parentElement;if(r.tagName==="ME-PARENT")if(ee(e),r.children[1])r.nextSibling.appendChild(o.parentElement);else{const c=this.createChildren([o.parentElement]);r.appendChild(Q(!0)),r.parentElement.insertBefore(c,r.nextSibling)}else r.tagName==="ME-ROOT"&&(Pe(this.direction,n),r.nextSibling.appendChild(o.parentElement));this.linkDiv(),this.bus.fire("operation",{name:"moveNode",obj:n,toObj:i,originParentId:s}),console.timeEnd("moveNode")},moveNodeAfter:function(e,t){var u;const n=e.nodeObj,i=t.nodeObj,s=(u=n.parent)==null?void 0:u.id;tt(n,i),$(this.nodeData),ee(e);const r=e.parentElement.parentElement;t.parentElement.parentElement.insertAdjacentElement("afterend",r),this.linkDiv(),this.bus.fire("operation",{name:"moveNodeAfter",obj:n,toObj:i,originParentId:s})},moveNodeBefore:function(e,t){var u;const n=e.nodeObj,i=t.nodeObj,s=(u=n.parent)==null?void 0:u.id;et(n,i),$(this.nodeData),ee(e);const r=e.parentElement.parentNode;t.parentElement.parentNode.insertAdjacentElement("beforebegin",r),this.linkDiv(),this.bus.fire("operation",{name:"moveNodeBefore",obj:n,toObj:i,originParentId:s})},moveUpNode:function(e){const t=e||this.currentNode;if(!t)return;const n=t.parentNode.parentNode,i=t.nodeObj;Ke(i),n.parentNode.insertBefore(n,n.previousSibling),this.linkDiv(),this.bus.fire("operation",{name:"moveUpNode",obj:i})},removeNode:function(e){var l;const t=e||this.currentNode;if(!t)return;const n=t.nodeObj;if(n.root===!0)throw new Error("Can not remove root node");const i=n.parent.children,s=i.findIndex(c=>c===n),o=G(n),r=t.parentNode;if(o===0){const c=r.parentNode.parentNode;c.tagName!=="ME-MAIN"&&c.previousSibling.children[1].remove()}if(i.length!==0){const c=i[s]||i[s-1];this.selectNode(C(c.id))}else this.selectNode(C(n.parent.id));for(const c in this.linkData){const u=this.linkData[c];if(u.from===n.id||u.to===n.id){const d=this.mindElixirBox.querySelector(`[data-linkid=${this.linkData[c].id}]`);this.removeLink(d)}}r.parentNode.remove(),this.linkDiv(),this.bus.fire("operation",{name:"removeNode",obj:n,originIndex:s,originParentId:(l=n==null?void 0:n.parent)==null?void 0:l.id})},reshapeNode:zt,setNodeTopic:function(e,t){e.childNodes[0].textContent=t,e.nodeObj.topic=t,this.linkDiv()}},Symbol.toStringTag,{value:"Module"})),He={create:function(e){return{dom:e,mousedown:!1,lastX:0,lastY:0,handleMouseMove(t){if(t.stopPropagation(),this.mousedown){if(!this.lastX){this.lastX=t.pageX,this.lastY=t.pageY;return}const n=this.lastX-t.pageX,i=this.lastY-t.pageY;this.cb&&this.cb(n,i),this.lastX=t.pageX,this.lastY=t.pageY}},handleMouseDown(t){t.stopPropagation(),this.mousedown=!0},handleClear(t){t.stopPropagation(),this.clear()},cb:null,init(t,n){this.cb=n,this.handleClear=this.handleClear.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),t.addEventListener("mousemove",this.handleMouseMove),t.addEventListener("mouseleave",this.handleClear),t.addEventListener("mouseup",this.handleClear),this.dom.addEventListener("mousedown",this.handleMouseDown)},destory(t){t.removeEventListener("mousemove",this.handleMouseMove),t.removeEventListener("mouseleave",this.handleClear),t.removeEventListener("mouseup",this.handleClear),this.dom.removeEventListener("mousedown",this.handleMouseDown)},clear(){this.mousedown=!1,this.lastX=0,this.lastY=0}}}},Yt=Object.freeze(Object.defineProperty({__proto__:null,createLink:function(e,t,n,i){const s=this.map.getBoundingClientRect();if(!e||!t)return;const o=e.getBoundingClientRect(),r=t.getBoundingClientRect(),l=(o.x+o.width/2-s.x)/this.scaleVal,c=(o.y+o.height/2-s.y)/this.scaleVal,u=(r.x+r.width/2-s.x)/this.scaleVal,d=(r.y+r.height/2-s.y)/this.scaleVal;let h,a,p,g;n&&i?(h=l+i.delta1.x,a=c+i.delta1.y,p=u+i.delta2.x,g=d+i.delta2.y):(c+d)/2-c<=o.height/2?(h=(o.x+o.width-s.x)/this.scaleVal+100,a=c,p=(r.x+r.width-s.x)/this.scaleVal+100,g=d):(h=(l+u)/2,a=(c+d)/2,p=(l+u)/2,g=(c+d)/2);const m={cx:l,cy:c,w:o.width,h:o.height},f={cx:u,cy:d,w:r.width,h:r.height},b=ie(m,h,a),N=b.x,v=b.y,y=se(f,p,g),x=y.x,_=y.y,V=fe(p,g,x,_),w={id:"",label:"",from:e.nodeObj.id,to:t.nodeObj.id,delta1:{x:h-l,y:a-c},delta2:{x:p-u,y:g-d}},F=pt(`M ${N} ${v} C ${h} ${a} ${p} ${g} ${x} ${_}`,`M ${V.x1} ${V.y1} L ${x} ${_} L ${V.x2} ${V.y2}`);n&&i?(w.id=i.id,this.linkData[i.id]=w):(w.id=X(),this.linkData[w.id]=w,this.currentLink=F),F.linkObj=w,F.dataset.linkid=w.id,this.linkSvgGroup.appendChild(F),n||this.showLinkController(h,a,p,g,w,m,f)},hideLinkController:function(){this.linkController.style.display="none",this.P2.style.display="none",this.P3.style.display="none"},removeLink:function(e){let t;if(e?t=e:t=this.currentLink,!t)return;console.log(t),this.hideLinkController();const n=t.linkObj.id;console.log(n),delete this.linkData[n],t.remove(),t=null},selectLink:function(e){this.currentLink=e;const t=e.linkObj;if(!t)return;const n=t.from,i=t.to,s=this.map.getBoundingClientRect(),o=C(n).getBoundingClientRect(),r=C(i).getBoundingClientRect(),l=(o.x+o.width/2-s.x)/this.scaleVal,c=(o.y+o.height/2-s.y)/this.scaleVal,u=(r.x+r.width/2-s.x)/this.scaleVal,d=(r.y+r.height/2-s.y)/this.scaleVal,h={cx:l,cy:c,w:o.width,h:o.height},a={cx:u,cy:d,w:r.width,h:r.height},p=l+t.delta1.x,g=c+t.delta1.y,m=u+t.delta2.x,f=d+t.delta2.y;this.showLinkController(p,g,m,f,t,h,a)},showLinkController:function(e,t,n,i,s,o,r){this.linkController.style.display="initial",this.P2.style.display="initial",this.P3.style.display="initial";const l=ie(o,e,t);let c=l.x,u=l.y;const d=se(r,n,i);let h=d.x,a=d.y;this.P2.style.cssText=`top:${t}px;left:${e}px;`,this.P3.style.cssText=`top:${i}px;left:${n}px;`,this.line1.setAttribute("x1",c),this.line1.setAttribute("y1",u),this.line1.setAttribute("x2",e),this.line1.setAttribute("y2",t),this.line2.setAttribute("x1",n),this.line2.setAttribute("y1",i),this.line2.setAttribute("x2",h),this.line2.setAttribute("y2",a),this.helper1&&(this.helper1.destory(this.map),this.helper2.destory(this.map)),this.helper1=He.create(this.P2),this.helper2=He.create(this.P3),this.helper1.init(this.map,(p,g)=>{var f;e=e-p/this.scaleVal,t=t-g/this.scaleVal;const m=ie(o,e,t);c=m.x,u=m.y,this.P2.style.top=t+"px",this.P2.style.left=e+"px",(f=this.currentLink)==null||f.children[0].setAttribute("d",`M ${c} ${u} C ${e} ${t} ${n} ${i} ${h} ${a}`),this.line1.setAttribute("x1",c),this.line1.setAttribute("y1",u),this.line1.setAttribute("x2",e),this.line1.setAttribute("y2",t),s.delta1.x=e-o.cx,s.delta1.y=t-o.cy}),this.helper2.init(this.map,(p,g)=>{var b,N;n=n-p/this.scaleVal,i=i-g/this.scaleVal;const m=se(r,n,i);h=m.x,a=m.y;const f=fe(n,i,h,a);this.P3.style.top=i+"px",this.P3.style.left=n+"px",(b=this.currentLink)==null||b.children[0].setAttribute("d",`M ${c} ${u} C ${e} ${t} ${n} ${i} ${h} ${a}`),(N=this.currentLink)==null||N.children[1].setAttribute("d",`M ${f.x1} ${f.y1} L ${h} ${a} L ${f.x2} ${f.y2}`),this.line2.setAttribute("x1",n),this.line2.setAttribute("y1",i),this.line2.setAttribute("x2",h),this.line2.setAttribute("y2",a),s.delta2.x=n-r.cx,s.delta2.y=i-r.cy})}},Symbol.toStringTag,{value:"Module"})),Wt=function(e){var c,u;if(e.length===0)throw new Error("No selected node.");if(e.length===1){const d=e[0].nodeObj,h=e[0].nodeObj.parent;if(!h)throw new Error("Can not select root node.");const a=h.children.findIndex(p=>d===p);return{parent:h.id,start:a,end:a}}let t=0;const n=e.map(d=>{let h=d.nodeObj;const a=[];for(;h.parent;){const p=h.parent,g=p.children,m=g==null?void 0:g.indexOf(h);h=p,a.unshift({node:h,index:m})}return a.length>t&&(t=a.length),a});let i=0;e:for(;i<t;i++){const d=(c=n[0][i])==null?void 0:c.node;for(let h=1;h<n.length;h++)if(((u=n[h][i])==null?void 0:u.node)!==d)break e}const s=n.map(d=>d[i-1].index).sort(),o=s[0]||0,r=s[s.length-1]||0,l=n[0][i-1].node;if(l.root)throw new Error("Please select nodes in the same main topic.");return{parent:l.id,start:o,end:r}},Xt=function(e){const t=document.createElementNS("http://www.w3.org/2000/svg","g");return t.setAttribute("id",e),t},Be=function(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","path");return oe(n,{d:e,stroke:t||"#666",fill:"none","stroke-linecap":"round","stroke-width":"2"}),n},Re=function(e,t,n,i,s){const o=document.createElementNS("http://www.w3.org/2000/svg","text");return oe(o,{"text-anchor":i,x:t+"",y:n+"",fill:s||"#666"}),o.innerHTML=e,o},It=e=>C(e).parentElement.parentElement,ze=function(e,t){var _,V;const{id:n,text:i,parent:s,start:o,end:r}=t,l=e.nodes,c=C(s),u=(_=c.closest("me-main"))==null?void 0:_.className,d=c.nodeObj;let h=1/0,a=0,p=0,g=0;for(let w=o;w<=r;w++){const F=(V=d.children)==null?void 0:V[w];if(!F)return console.warn("Child not found"),e.removeSummary(n),null;const te=It(F.id),{offsetLeft:ne,offsetTop:qe}=me(l,te);w===o&&(p=qe),w===r&&(g=qe+te.offsetHeight),ne<h&&(h=ne),te.offsetWidth+ne>a&&(a=te.offsetWidth+ne)}let m,f;const b=p+10,N=g+10,v=(b+N)/2,y=e.theme.cssVar["--color"];u==="lhs"?(m=Be(`M ${h+10} ${b} c -5 0 -10 5 -10 10 L ${h} ${N-10} c 0 5 5 10 10 10 M ${h} ${v} h -10`,y),f=Re(i,h-20,v+6,"end",y)):(m=Be(`M ${a-10} ${b} c 5 0 10 5 10 10 L ${a} ${N-10} c 0 5 -5 10 -10 10 M ${a} ${v} h 10`,y),f=Re(i,a+20,v+6,"start",y));const x=Xt("s-"+n);return x.appendChild(m),x.appendChild(f),x.summaryObj=t,e.summarySvg.appendChild(x),x},Kt=function(){let e=[];this.currentNode?e=[this.currentNode]:this.currentNodes&&(e=this.currentNodes);const{parent:t,start:n,end:i}=Wt(e),s={id:X(),parent:t,start:n,end:i,text:"summary"},o=ze(this,s);this.summaries.push(s),this.editSummary(o)},Ut=function(e){var n;const t=this.summaries.findIndex(i=>i.id===e);t>-1&&(this.summaries.splice(t,1),(n=document.querySelector("#s-"+e))==null||n.remove())},Gt=function(e){const t=e.children[1].getBBox(),n=6,i=3,s=document.createElementNS("http://www.w3.org/2000/svg","rect");oe(s,{x:t.x-n+"",y:t.y-n+"",width:t.width+n*2+"",height:t.height+n*2+"",rx:i+"",stroke:this.theme.cssVar["--selected"]||"#4dc4ff","stroke-width":"2",fill:"none"}),s.classList.add("selected"),e.appendChild(s),this.currentSummary=e},Jt=function(){var e,t;(t=(e=this.currentSummary)==null?void 0:e.querySelector("rect"))==null||t.remove(),this.currentSummary=null},Qt=function(){this.summarySvg.innerHTML="",this.summaries.forEach(e=>{ze(this,e)}),this.nodes.insertAdjacentElement("beforeend",this.summarySvg)},Zt=function(e){var t;return(t=C(e).closest("me-main"))==null?void 0:t.className},en=Object.freeze(Object.defineProperty({__proto__:null,createSummary:Kt,editSummary:function(e){if(console.time("editSummary"),!e)return;const t=e.childNodes[1],n=document.createElement("div");this.nodes.appendChild(n);const i=t.innerHTML;n.id="input-box",n.textContent=i,n.contentEditable="true",n.spellcheck=!1;const s=t.getAttribute("x")+"px",o=t.getAttribute("y")+"px";n.style.cssText=`min-width:${100-8}px;position:absolute;left:${s};top:${o};`,Zt(e.summaryObj.parent)==="lhs"?n.style.cssText+="transform: translate(-100%, -100%);":n.style.cssText+="transform: translate(0, -100%);",n.focus(),be(n),n.addEventListener("keydown",r=>{r.stopPropagation();const l=r.key;if(l==="Enter"||l==="Tab"){if(r.shiftKey)return;r.preventDefault(),n.blur(),this.map.focus()}}),n.addEventListener("blur",()=>{var c;if(!n)return;const r=e.summaryObj,l=((c=n.textContent)==null?void 0:c.trim())||"";l===""?r.text=i:r.text=l,n.remove(),l!==i&&(t.innerHTML=r.text,this.linkDiv(),this.bus.fire("operation",{name:"finishEditSummary",obj:r,origin:i}))}),console.timeEnd("editSummary")},removeSummary:Ut,renderSummary:Qt,selectSummary:Gt,unselectSummary:Jt},Symbol.toStringTag,{value:"Module"}));function tn(e,t){return async function(...n){const i=this.before[t];i&&!await i.apply(this,n)||e.apply(this,n)}}const Ve=Object.keys(De),Fe={};for(let e=0;e<Ve.length;e++){const t=Ve[e];Fe[t]=tn(De[t],t)}const nn={getObjById:he,generateNewObj:Xe,layout:st,linkDiv:mt,editTopic:ht,createWrapper:lt,createParent:ct,createChildren:at,createTopic:dt,findEle:C,changeTheme:Bt,...Rt,...Fe,...Yt,...en,init(e){if(!e||!e.nodeData)return new Error("MindElixir: `data` is required");e.direction!==void 0&&(this.direction=e.direction),this.changeTheme(e.theme||this.theme,!1),this.nodeData=e.nodeData,$(this.nodeData),this.linkData=e.linkData||{},this.summaries=e.summaries||[],this.toolBar&&Tt(this),this.keypress&&xt(this),Ye()&&this.mobileMenu?Ct(this):this.contextMenu&&yt(this,this.contextMenuOption),this.draggable&&kt(this),this.allowUndo&&St(this),Ht(this),this.toCenter(),this.layout(),this.linkDiv()}},K=document;function M({el:e,direction:t,locale:n,draggable:i,editable:s,contextMenu:o,contextMenuOption:r,toolBar:l,keypress:c,before:u,newTopicName:d,allowUndo:h,mainLinkStyle:a,subLinkStyle:p,overflowHidden:g,mobileMenu:m,theme:f}){console.log("ME_version "+M.version,this);let b=null;const N=Object.prototype.toString.call(e);if(N==="[object HTMLDivElement]"?b=e:N==="[object String]"&&(b=document.querySelector(e)),!b)throw new Error("MindElixir: el is not a valid element");b.className+=" mind-elixir",b.innerHTML="",b.style.setProperty("--gap",L+"px"),this.mindElixirBox=b,this.before=u||{},this.locale=n||"en",this.contextMenuOption=r,this.contextMenu=o===void 0?!0:o,this.toolBar=l===void 0?!0:l,this.keypress=c===void 0?!0:c,this.mobileMenu=m||!1,this.direction=typeof t=="number"?t:1,this.draggable=i===void 0?!0:i,this.newTopicName=d||"new node",this.editable=s===void 0?!0:s,this.allowUndo=h===void 0?!1:h,this.currentNode=null,this.currentLink=null,this.scaleVal=1,this.tempDirection=null,this.mainLinkStyle=a||0,this.subLinkStyle=p||0,this.overflowHidden=g||!1,this.bus=it.create(),this.container=K.createElement("div"),this.container.className="map-container";const v=window.matchMedia("(prefers-color-scheme: dark)");this.theme=f||(v.matches?de:ae);const y=K.createElement("div");y.className="map-canvas",this.map=y,this.map.setAttribute("tabindex","0"),this.container.appendChild(this.map),this.mindElixirBox.appendChild(this.container),this.nodes=K.createElement("me-nodes"),this.nodes.className="main-node-container",this.lines=I("lines"),this.summarySvg=I("summary"),this.linkController=I("linkcontroller"),this.P2=K.createElement("div"),this.P3=K.createElement("div"),this.P2.className=this.P3.className="circle",this.P2.style.display=this.P3.style.display="none",this.line1=ve(0,0,0,0),this.line2=ve(0,0,0,0),this.linkController.appendChild(this.line1),this.linkController.appendChild(this.line2),this.linkSvgGroup=I("topiclinks"),this.map.appendChild(this.nodes),this.map.appendChild(this.linkController),this.map.appendChild(this.linkSvgGroup),this.map.appendChild(this.P2),this.map.appendChild(this.P3),this.overflowHidden?this.container.style.overflow="hidden":nt(this)}return M.prototype=nn,M.LEFT=S,M.RIGHT=D,M.SIDE=W,M.THEME=ae,M.DARK_THEME=de,M.version="3.1.1",M.E=C,M.new=e=>({nodeData:{id:X(),topic:e||"new topic",root:!0,children:[]},linkData:{}}),M}();
11
+ `,i[o].children&&n(i[o].children||[],s+1)}return n(e.children||[],2),t},getDataString:function(){const e=Oe(this);return JSON.stringify(e,(t,n)=>{if(!(t==="parent"&&typeof n!="string"))return t==="from"||t==="to"?n.nodeObj.id:n})},initLeft:function(){this.direction=0,this.refresh()},initRight:function(){this.direction=1,this.refresh()},initSide:function(){this.direction=2,this.refresh()},install:function(e){e(this)},refresh:function(e){e&&(e=JSON.parse(JSON.stringify(e)),this.nodeData=e.nodeData,this.linkData=e.linkData||{}),$(this.nodeData),this.layout(),this.linkDiv()},scale:function(e){this.scaleVal=e,this.map.style.transform="scale("+e+")"},selectFirstChild:function(){if(!this.currentNode)return;const e=this.currentNode.parentElement.nextSibling;if(e&&e.firstChild){const t=e.firstChild.firstChild.firstChild;this.selectNode(t)}},selectNextSibling:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return!1;const e=this.currentNode.parentElement.parentElement.nextSibling;let t;if(e)t=e.firstChild.firstChild;else return!1;return this.selectNode(t),!0},selectNode:function(e,t,n){if(e){if(console.time("selectNode"),typeof e=="string"){const i=C(e);return i?this.selectNode(i):void 0}this.currentNode&&(this.currentNode.className=""),e.className="selected",e.scrollIntoView({block:"nearest",inline:"nearest"}),this.currentNode=e,t?this.bus.fire("selectNewNode",e.nodeObj):this.bus.fire("selectNode",e.nodeObj,n),console.timeEnd("selectNode")}},selectNodes:function(e){if(e){console.time("selectNodes");for(const t of e)t.className="selected";this.currentNodes=e,this.bus.fire("selectNodes",e.map(t=>t.nodeObj)),console.timeEnd("selectNodes")}},selectParent:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return;const e=this.currentNode.parentElement.parentElement.parentElement.previousSibling;if(e){const t=e.firstChild;this.selectNode(t)}},selectPrevSibling:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return!1;const e=this.currentNode.parentElement.parentElement.previousSibling;let t;if(e)t=e.firstChild.firstChild;else return!1;return this.selectNode(t),!0},setLocale:function(e){this.locale=e,this.refresh()},toCenter:function(){this.container.scrollTo(1e4-this.container.offsetWidth/2,1e4-this.container.offsetHeight/2)},unselectNode:function(){this.currentNode&&(this.currentNode.className=""),this.currentNode=null,this.bus.fire("unselectNode")},unselectNodes:function(){if(this.currentNodes)for(const e of this.currentNodes)e.classList.remove("selected");this.currentNodes=null,this.bus.fire("unselectNodes")}},Symbol.toStringTag,{value:"Module"})),ee=function(e){const n=e.parentElement.parentElement.lastElementChild;(n==null?void 0:n.tagName)==="svg"&&(n==null||n.remove())},Pe=function(e,t){var n,i;if(e===S)return S;if(e===D)return D;if(e===W){const s=((n=document.querySelector(".lhs"))==null?void 0:n.childElementCount)||0,o=((i=document.querySelector(".rhs"))==null?void 0:i.childElementCount)||0;return s<=o?(t.direction=S,S):(t.direction=D,D)}},zt=function(e,t){console.log(t);const n=e.nodeObj,i=pe(n);i.style&&t.style&&(t.style=Object.assign(i.style,t.style));const s=Object.assign(n,t);re(e,s),this.linkDiv(),this.bus.fire("operation",{name:"reshapeNode",obj:s,origin:i})},Vt=function(e,t){var u,d,h;const n=e||this.currentNode;if(!n)return;const i=n.nodeObj;if(i.root===!0){this.addChild();return}else if(((u=i.parent)==null?void 0:u.root)===!0&&((h=(d=i.parent)==null?void 0:d.children)==null?void 0:h.length)===1){this.addChild(C(i.parent.id));return}const s=t||this.generateNewObj();Ge(i,s),$(this.nodeData);const o=n.parentElement;console.time("insertSibling_DOM");const{grp:r,top:l}=this.createWrapper(s);o.parentNode.parentNode.insertBefore(r,o.parentNode.nextSibling),this.linkDiv(r.offsetParent),t||this.editTopic(l.firstChild),this.selectNode(l.firstChild,!0),console.timeEnd("insertSibling_DOM"),this.bus.fire("operation",{name:"insertSibling",obj:s})},Ft=function(e,t){const n=e||this.currentNode;if(!n)return;const i=n.nodeObj;if(i.root===!0){this.addChild();return}const s=t||this.generateNewObj();Je(i,s),$(this.nodeData);const o=n.parentElement;console.time("insertSibling_DOM");const{grp:r,top:l}=this.createWrapper(s);o.parentNode.parentNode.insertBefore(r,o.parentNode),this.linkDiv(r.offsetParent),t||this.editTopic(l.firstChild),this.selectNode(l.firstChild,!0),console.timeEnd("insertSibling_DOM"),this.bus.fire("operation",{name:"insertBefore",obj:s})},qt=function(e,t){const n=e||this.currentNode;if(!n)return;ee(n);const i=n.nodeObj;if(i.root===!0)return;const s=t||this.generateNewObj();Qe(i,s),$(this.nodeData);const o=n.parentElement.parentElement;console.time("insertParent_DOM");const{grp:r,top:l}=this.createWrapper(s,!0);l.appendChild(Q(!0)),o.insertAdjacentElement("afterend",r);const c=this.createChildren([o]);l.insertAdjacentElement("afterend",c),this.linkDiv(),t||this.editTopic(l.firstChild),this.selectNode(l.firstChild,!0),console.timeEnd("insertParent_DOM"),this.bus.fire("operation",{name:"insertParent",obj:s})},je=function(e,t){var l,c;if(!e)return null;const n=e.nodeObj;n.expanded===!1&&(this.expandNode(e,!0),e=C(n.id));const i=t||this.generateNewObj();n.children?n.children.push(i):n.children=[i],$(this.nodeData);const s=e.parentElement,{grp:o,top:r}=this.createWrapper(i);if(s.tagName==="ME-PARENT"){if(s.children[1])s.nextSibling.appendChild(o);else{const u=this.createChildren([o]);s.appendChild(Q(!0)),s.insertAdjacentElement("afterend",u)}this.linkDiv(o.offsetParent)}else s.tagName==="ME-ROOT"&&(Pe(this.direction,i)===S?(l=document.querySelector(".lhs"))==null||l.appendChild(o):(c=document.querySelector(".rhs"))==null||c.appendChild(o),this.linkDiv());return{newTop:r,newNodeObj:i}},De=Object.freeze(Object.defineProperty({__proto__:null,addChild:function(e,t){console.time("addChild");const n=e||this.currentNode;if(!n)return;const i=je.call(this,n,t);if(!i)return;const{newTop:s,newNodeObj:o}=i;this.bus.fire("operation",{name:"addChild",obj:o}),console.timeEnd("addChild"),t||this.editTopic(s.firstChild),this.selectNode(s.firstChild,!0)},beginEdit:function(e){const t=e||this.currentNode;t&&this.editTopic(t)},copyNode:function(e,t){console.time("copyNode");const n=pe(e.nodeObj);ue(n);const i=je.call(this,t,n);if(!i)return;const{newNodeObj:s}=i;console.timeEnd("copyNode"),this.bus.fire("operation",{name:"copyNode",obj:s})},insertBefore:Ft,insertParent:qt,insertSibling:Vt,moveDownNode:function(e){const t=e||this.currentNode;if(!t)return;const n=t.parentNode.parentNode,i=t.nodeObj;Ue(i),n.nextSibling?n.nextSibling.insertAdjacentElement("afterend",n):n.parentNode.prepend(n),this.linkDiv(),this.bus.fire("operation",{name:"moveDownNode",obj:i})},moveNode:function(e,t){var l;const n=e.nodeObj,i=t.nodeObj,s=(l=n==null?void 0:n.parent)==null?void 0:l.id;if(i.expanded===!1&&(this.expandNode(t,!0),e=C(n.id),t=C(i.id)),!Ie(n,i)){console.warn("Invalid move");return}console.time("moveNode"),Ze(n,i),$(this.nodeData);const o=e.parentElement,r=t.parentElement;if(r.tagName==="ME-PARENT")if(ee(e),r.children[1])r.nextSibling.appendChild(o.parentElement);else{const c=this.createChildren([o.parentElement]);r.appendChild(Q(!0)),r.parentElement.insertBefore(c,r.nextSibling)}else r.tagName==="ME-ROOT"&&(Pe(this.direction,n),r.nextSibling.appendChild(o.parentElement));this.linkDiv(),this.bus.fire("operation",{name:"moveNode",obj:n,toObj:i,originParentId:s}),console.timeEnd("moveNode")},moveNodeAfter:function(e,t){var u;const n=e.nodeObj,i=t.nodeObj,s=(u=n.parent)==null?void 0:u.id;tt(n,i),$(this.nodeData),ee(e);const r=e.parentElement.parentElement;t.parentElement.parentElement.insertAdjacentElement("afterend",r),this.linkDiv(),this.bus.fire("operation",{name:"moveNodeAfter",obj:n,toObj:i,originParentId:s})},moveNodeBefore:function(e,t){var u;const n=e.nodeObj,i=t.nodeObj,s=(u=n.parent)==null?void 0:u.id;et(n,i),$(this.nodeData),ee(e);const r=e.parentElement.parentNode;t.parentElement.parentNode.insertAdjacentElement("beforebegin",r),this.linkDiv(),this.bus.fire("operation",{name:"moveNodeBefore",obj:n,toObj:i,originParentId:s})},moveUpNode:function(e){const t=e||this.currentNode;if(!t)return;const n=t.parentNode.parentNode,i=t.nodeObj;Ke(i),n.parentNode.insertBefore(n,n.previousSibling),this.linkDiv(),this.bus.fire("operation",{name:"moveUpNode",obj:i})},removeNode:function(e){var l;const t=e||this.currentNode;if(!t)return;const n=t.nodeObj;if(n.root===!0)throw new Error("Can not remove root node");const i=n.parent.children,s=i.findIndex(c=>c===n),o=G(n),r=t.parentNode;if(o===0){const c=r.parentNode.parentNode;c.tagName!=="ME-MAIN"&&c.previousSibling.children[1].remove()}if(i.length!==0){const c=i[s]||i[s-1];this.selectNode(C(c.id))}else this.selectNode(C(n.parent.id));for(const c in this.linkData){const u=this.linkData[c];if(u.from===n.id||u.to===n.id){const d=this.mindElixirBox.querySelector(`[data-linkid=${this.linkData[c].id}]`);this.removeLink(d)}}r.parentNode.remove(),this.linkDiv(),this.bus.fire("operation",{name:"removeNode",obj:n,originIndex:s,originParentId:(l=n==null?void 0:n.parent)==null?void 0:l.id})},reshapeNode:zt,setNodeTopic:function(e,t){e.childNodes[0].textContent=t,e.nodeObj.topic=t,this.linkDiv()}},Symbol.toStringTag,{value:"Module"})),He={create:function(e){return{dom:e,mousedown:!1,lastX:0,lastY:0,handleMouseMove(t){if(t.stopPropagation(),this.mousedown){if(!this.lastX){this.lastX=t.pageX,this.lastY=t.pageY;return}const n=this.lastX-t.pageX,i=this.lastY-t.pageY;this.cb&&this.cb(n,i),this.lastX=t.pageX,this.lastY=t.pageY}},handleMouseDown(t){t.stopPropagation(),this.mousedown=!0},handleClear(t){t.stopPropagation(),this.clear()},cb:null,init(t,n){this.cb=n,this.handleClear=this.handleClear.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),t.addEventListener("mousemove",this.handleMouseMove),t.addEventListener("mouseleave",this.handleClear),t.addEventListener("mouseup",this.handleClear),this.dom.addEventListener("mousedown",this.handleMouseDown)},destory(t){t.removeEventListener("mousemove",this.handleMouseMove),t.removeEventListener("mouseleave",this.handleClear),t.removeEventListener("mouseup",this.handleClear),this.dom.removeEventListener("mousedown",this.handleMouseDown)},clear(){this.mousedown=!1,this.lastX=0,this.lastY=0}}}},Yt=Object.freeze(Object.defineProperty({__proto__:null,createLink:function(e,t,n,i){const s=this.map.getBoundingClientRect();if(!e||!t)return;const o=e.getBoundingClientRect(),r=t.getBoundingClientRect(),l=(o.x+o.width/2-s.x)/this.scaleVal,c=(o.y+o.height/2-s.y)/this.scaleVal,u=(r.x+r.width/2-s.x)/this.scaleVal,d=(r.y+r.height/2-s.y)/this.scaleVal;let h,a,p,g;n&&i?(h=l+i.delta1.x,a=c+i.delta1.y,p=u+i.delta2.x,g=d+i.delta2.y):(c+d)/2-c<=o.height/2?(h=(o.x+o.width-s.x)/this.scaleVal+100,a=c,p=(r.x+r.width-s.x)/this.scaleVal+100,g=d):(h=(l+u)/2,a=(c+d)/2,p=(l+u)/2,g=(c+d)/2);const m={cx:l,cy:c,w:o.width,h:o.height},f={cx:u,cy:d,w:r.width,h:r.height},b=ie(m,h,a),N=b.x,v=b.y,y=se(f,p,g),x=y.x,_=y.y,V=fe(p,g,x,_),w={id:"",label:"",from:e.nodeObj.id,to:t.nodeObj.id,delta1:{x:h-l,y:a-c},delta2:{x:p-u,y:g-d}},F=pt(`M ${N} ${v} C ${h} ${a} ${p} ${g} ${x} ${_}`,`M ${V.x1} ${V.y1} L ${x} ${_} L ${V.x2} ${V.y2}`);n&&i?(w.id=i.id,this.linkData[i.id]=w):(w.id=X(),this.linkData[w.id]=w,this.currentLink=F),F.linkObj=w,F.dataset.linkid=w.id,this.linkSvgGroup.appendChild(F),n||this.showLinkController(h,a,p,g,w,m,f)},hideLinkController:function(){this.linkController.style.display="none",this.P2.style.display="none",this.P3.style.display="none"},removeLink:function(e){let t;if(e?t=e:t=this.currentLink,!t)return;console.log(t),this.hideLinkController();const n=t.linkObj.id;console.log(n),delete this.linkData[n],t.remove(),t=null},selectLink:function(e){this.currentLink=e;const t=e.linkObj;if(!t)return;const n=t.from,i=t.to,s=this.map.getBoundingClientRect(),o=C(n).getBoundingClientRect(),r=C(i).getBoundingClientRect(),l=(o.x+o.width/2-s.x)/this.scaleVal,c=(o.y+o.height/2-s.y)/this.scaleVal,u=(r.x+r.width/2-s.x)/this.scaleVal,d=(r.y+r.height/2-s.y)/this.scaleVal,h={cx:l,cy:c,w:o.width,h:o.height},a={cx:u,cy:d,w:r.width,h:r.height},p=l+t.delta1.x,g=c+t.delta1.y,m=u+t.delta2.x,f=d+t.delta2.y;this.showLinkController(p,g,m,f,t,h,a)},showLinkController:function(e,t,n,i,s,o,r){this.linkController.style.display="initial",this.P2.style.display="initial",this.P3.style.display="initial";const l=ie(o,e,t);let c=l.x,u=l.y;const d=se(r,n,i);let h=d.x,a=d.y;this.P2.style.cssText=`top:${t}px;left:${e}px;`,this.P3.style.cssText=`top:${i}px;left:${n}px;`,this.line1.setAttribute("x1",c),this.line1.setAttribute("y1",u),this.line1.setAttribute("x2",e),this.line1.setAttribute("y2",t),this.line2.setAttribute("x1",n),this.line2.setAttribute("y1",i),this.line2.setAttribute("x2",h),this.line2.setAttribute("y2",a),this.helper1&&(this.helper1.destory(this.map),this.helper2.destory(this.map)),this.helper1=He.create(this.P2),this.helper2=He.create(this.P3),this.helper1.init(this.map,(p,g)=>{var f;e=e-p/this.scaleVal,t=t-g/this.scaleVal;const m=ie(o,e,t);c=m.x,u=m.y,this.P2.style.top=t+"px",this.P2.style.left=e+"px",(f=this.currentLink)==null||f.children[0].setAttribute("d",`M ${c} ${u} C ${e} ${t} ${n} ${i} ${h} ${a}`),this.line1.setAttribute("x1",c),this.line1.setAttribute("y1",u),this.line1.setAttribute("x2",e),this.line1.setAttribute("y2",t),s.delta1.x=e-o.cx,s.delta1.y=t-o.cy}),this.helper2.init(this.map,(p,g)=>{var b,N;n=n-p/this.scaleVal,i=i-g/this.scaleVal;const m=se(r,n,i);h=m.x,a=m.y;const f=fe(n,i,h,a);this.P3.style.top=i+"px",this.P3.style.left=n+"px",(b=this.currentLink)==null||b.children[0].setAttribute("d",`M ${c} ${u} C ${e} ${t} ${n} ${i} ${h} ${a}`),(N=this.currentLink)==null||N.children[1].setAttribute("d",`M ${f.x1} ${f.y1} L ${h} ${a} L ${f.x2} ${f.y2}`),this.line2.setAttribute("x1",n),this.line2.setAttribute("y1",i),this.line2.setAttribute("x2",h),this.line2.setAttribute("y2",a),s.delta2.x=n-r.cx,s.delta2.y=i-r.cy})}},Symbol.toStringTag,{value:"Module"})),Wt=function(e){var c,u;if(e.length===0)throw new Error("No selected node.");if(e.length===1){const d=e[0].nodeObj,h=e[0].nodeObj.parent;if(!h)throw new Error("Can not select root node.");const a=h.children.findIndex(p=>d===p);return{parent:h.id,start:a,end:a}}let t=0;const n=e.map(d=>{let h=d.nodeObj;const a=[];for(;h.parent;){const p=h.parent,g=p.children,m=g==null?void 0:g.indexOf(h);h=p,a.unshift({node:h,index:m})}return a.length>t&&(t=a.length),a});let i=0;e:for(;i<t;i++){const d=(c=n[0][i])==null?void 0:c.node;for(let h=1;h<n.length;h++)if(((u=n[h][i])==null?void 0:u.node)!==d)break e}const s=n.map(d=>d[i-1].index).sort(),o=s[0]||0,r=s[s.length-1]||0,l=n[0][i-1].node;if(l.root)throw new Error("Please select nodes in the same main topic.");return{parent:l.id,start:o,end:r}},Xt=function(e){const t=document.createElementNS("http://www.w3.org/2000/svg","g");return t.setAttribute("id",e),t},Be=function(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","path");return oe(n,{d:e,stroke:t||"#666",fill:"none","stroke-linecap":"round","stroke-width":"2"}),n},Re=function(e,t,n,i,s){const o=document.createElementNS("http://www.w3.org/2000/svg","text");return oe(o,{"text-anchor":i,x:t+"",y:n+"",fill:s||"#666"}),o.innerHTML=e,o},It=e=>C(e).parentElement.parentElement,ze=function(e,t){var _,V;const{id:n,text:i,parent:s,start:o,end:r}=t,l=e.nodes,c=C(s),u=(_=c.closest("me-main"))==null?void 0:_.className,d=c.nodeObj;let h=1/0,a=0,p=0,g=0;for(let w=o;w<=r;w++){const F=(V=d.children)==null?void 0:V[w];if(!F)return console.warn("Child not found"),e.removeSummary(n),null;const te=It(F.id),{offsetLeft:ne,offsetTop:qe}=me(l,te);w===o&&(p=qe),w===r&&(g=qe+te.offsetHeight),ne<h&&(h=ne),te.offsetWidth+ne>a&&(a=te.offsetWidth+ne)}let m,f;const b=p+10,N=g+10,v=(b+N)/2,y=e.theme.cssVar["--color"];u==="lhs"?(m=Be(`M ${h+10} ${b} c -5 0 -10 5 -10 10 L ${h} ${N-10} c 0 5 5 10 10 10 M ${h} ${v} h -10`,y),f=Re(i,h-20,v+6,"end",y)):(m=Be(`M ${a-10} ${b} c 5 0 10 5 10 10 L ${a} ${N-10} c 0 5 -5 10 -10 10 M ${a} ${v} h 10`,y),f=Re(i,a+20,v+6,"start",y));const x=Xt("s-"+n);return x.appendChild(m),x.appendChild(f),x.summaryObj=t,e.summarySvg.appendChild(x),x},Kt=function(){let e=[];this.currentNode?e=[this.currentNode]:this.currentNodes&&(e=this.currentNodes);const{parent:t,start:n,end:i}=Wt(e),s={id:X(),parent:t,start:n,end:i,text:"summary"},o=ze(this,s);this.summaries.push(s),this.editSummary(o)},Ut=function(e){var n;const t=this.summaries.findIndex(i=>i.id===e);t>-1&&(this.summaries.splice(t,1),(n=document.querySelector("#s-"+e))==null||n.remove())},Gt=function(e){const t=e.children[1].getBBox(),n=6,i=3,s=document.createElementNS("http://www.w3.org/2000/svg","rect");oe(s,{x:t.x-n+"",y:t.y-n+"",width:t.width+n*2+"",height:t.height+n*2+"",rx:i+"",stroke:this.theme.cssVar["--selected"]||"#4dc4ff","stroke-width":"2",fill:"none"}),s.classList.add("selected"),e.appendChild(s),this.currentSummary=e},Jt=function(){var e,t;(t=(e=this.currentSummary)==null?void 0:e.querySelector("rect"))==null||t.remove(),this.currentSummary=null},Qt=function(){this.summarySvg.innerHTML="",this.summaries.forEach(e=>{ze(this,e)}),this.nodes.insertAdjacentElement("beforeend",this.summarySvg)},Zt=function(e){var t;return(t=C(e).closest("me-main"))==null?void 0:t.className},en=Object.freeze(Object.defineProperty({__proto__:null,createSummary:Kt,editSummary:function(e){if(console.time("editSummary"),!e)return;const t=e.childNodes[1],n=document.createElement("div");this.nodes.appendChild(n);const i=t.innerHTML;n.id="input-box",n.textContent=i,n.contentEditable="true",n.spellcheck=!1;const s=t.getAttribute("x")+"px",o=t.getAttribute("y")+"px";n.style.cssText=`min-width:${100-8}px;position:absolute;left:${s};top:${o};`,Zt(e.summaryObj.parent)==="lhs"?n.style.cssText+="transform: translate(-100%, -100%);":n.style.cssText+="transform: translate(0, -100%);",n.focus(),be(n),n.addEventListener("keydown",r=>{r.stopPropagation();const l=r.key;if(l==="Enter"||l==="Tab"){if(r.shiftKey)return;r.preventDefault(),n.blur(),this.map.focus()}}),n.addEventListener("blur",()=>{var c;if(!n)return;const r=e.summaryObj,l=((c=n.textContent)==null?void 0:c.trim())||"";l===""?r.text=i:r.text=l,n.remove(),l!==i&&(t.innerHTML=r.text,this.linkDiv(),this.bus.fire("operation",{name:"finishEditSummary",obj:r,origin:i}))}),console.timeEnd("editSummary")},removeSummary:Ut,renderSummary:Qt,selectSummary:Gt,unselectSummary:Jt},Symbol.toStringTag,{value:"Module"}));function tn(e,t){return async function(...n){const i=this.before[t];i&&!await i.apply(this,n)||e.apply(this,n)}}const Ve=Object.keys(De),Fe={};for(let e=0;e<Ve.length;e++){const t=Ve[e];Fe[t]=tn(De[t],t)}const nn={getObjById:he,generateNewObj:Xe,layout:st,linkDiv:mt,editTopic:ht,createWrapper:lt,createParent:ct,createChildren:at,createTopic:dt,findEle:C,changeTheme:Bt,...Rt,...Fe,...Yt,...en,init(e){if(!e||!e.nodeData)return new Error("MindElixir: `data` is required");e.direction!==void 0&&(this.direction=e.direction),this.changeTheme(e.theme||this.theme,!1),this.nodeData=e.nodeData,$(this.nodeData),this.linkData=e.linkData||{},this.summaries=e.summaries||[],this.toolBar&&Tt(this),this.keypress&&xt(this),Ye()&&this.mobileMenu?Ct(this):this.contextMenu&&yt(this,this.contextMenuOption),this.draggable&&kt(this),this.allowUndo&&St(this),Ht(this),this.toCenter(),this.layout(),this.linkDiv()}},K=document;function M({el:e,direction:t,locale:n,draggable:i,editable:s,contextMenu:o,contextMenuOption:r,toolBar:l,keypress:c,before:u,newTopicName:d,allowUndo:h,mainLinkStyle:a,subLinkStyle:p,overflowHidden:g,mobileMenu:m,theme:f}){console.log("ME_version "+M.version,this);let b=null;const N=Object.prototype.toString.call(e);if(N==="[object HTMLDivElement]"?b=e:N==="[object String]"&&(b=document.querySelector(e)),!b)throw new Error("MindElixir: el is not a valid element");b.className+=" mind-elixir",b.innerHTML="",b.style.setProperty("--gap",L+"px"),this.mindElixirBox=b,this.before=u||{},this.locale=n||"en",this.contextMenuOption=r,this.contextMenu=o===void 0?!0:o,this.toolBar=l===void 0?!0:l,this.keypress=c===void 0?!0:c,this.mobileMenu=m||!1,this.direction=typeof t=="number"?t:1,this.draggable=i===void 0?!0:i,this.newTopicName=d||"new node",this.editable=s===void 0?!0:s,this.allowUndo=h===void 0?!1:h,this.currentNode=null,this.currentLink=null,this.scaleVal=1,this.tempDirection=null,this.mainLinkStyle=a||0,this.subLinkStyle=p||0,this.overflowHidden=g||!1,this.bus=it.create(),this.container=K.createElement("div"),this.container.className="map-container";const v=window.matchMedia("(prefers-color-scheme: dark)");this.theme=f||(v.matches?de:ae);const y=K.createElement("div");y.className="map-canvas",this.map=y,this.map.setAttribute("tabindex","0"),this.container.appendChild(this.map),this.mindElixirBox.appendChild(this.container),this.nodes=K.createElement("me-nodes"),this.nodes.className="main-node-container",this.lines=I("lines"),this.summarySvg=I("summary"),this.linkController=I("linkcontroller"),this.P2=K.createElement("div"),this.P3=K.createElement("div"),this.P2.className=this.P3.className="circle",this.P2.style.display=this.P3.style.display="none",this.line1=ve(0,0,0,0),this.line2=ve(0,0,0,0),this.linkController.appendChild(this.line1),this.linkController.appendChild(this.line2),this.linkSvgGroup=I("topiclinks"),this.map.appendChild(this.nodes),this.map.appendChild(this.linkController),this.map.appendChild(this.linkSvgGroup),this.map.appendChild(this.P2),this.map.appendChild(this.P3),this.overflowHidden?this.container.style.overflow="hidden":nt(this)}return M.prototype=nn,M.LEFT=S,M.RIGHT=D,M.SIDE=W,M.THEME=ae,M.DARK_THEME=de,M.version="3.1.2",M.E=C,M.new=e=>({nodeData:{id:X(),topic:e||"new topic",root:!0,children:[]},linkData:{}}),M}();
@@ -1409,7 +1409,7 @@ const Rt = function(e, t, n) {
1409
1409
  }, It = function() {
1410
1410
  const e = Be(this);
1411
1411
  return JSON.stringify(e, (t, n) => {
1412
- if (t !== "parent")
1412
+ if (!(t === "parent" && typeof n != "string"))
1413
1413
  return t === "from" || t === "to" ? n.nodeObj.id : n;
1414
1414
  });
1415
1415
  }, Kt = function() {
@@ -2058,7 +2058,7 @@ $.RIGHT = R;
2058
2058
  $.SIDE = I;
2059
2059
  $.THEME = we;
2060
2060
  $.DARK_THEME = ke;
2061
- $.version = "3.1.1";
2061
+ $.version = "3.1.2";
2062
2062
  $.E = C;
2063
2063
  $.new = (e) => ({
2064
2064
  nodeData: {
@@ -6,4 +6,4 @@ var MindElixirLite=function(){"use strict";const me="";(function(e){var t,i,n,s,
6
6
  `;function i(n,s){for(let o=0;o<n.length;o++)s<=6?t+="".padStart(s,"#")+" "+n[o].topic+`
7
7
 
8
8
  `:t+="".padStart(s-7," ")+"- "+n[o].topic+`
9
- `,n[o].children&&i(n[o].children||[],s+1)}return i(e.children||[],2),t},getDataString:function(){const e=_t(this);return JSON.stringify(e,(t,i)=>{if(t!=="parent")return t==="from"||t==="to"?i.nodeObj.id:i})},initLeft:function(){this.direction=0,this.refresh()},initRight:function(){this.direction=1,this.refresh()},initSide:function(){this.direction=2,this.refresh()},install:function(e){e(this)},refresh:function(e){e&&(e=JSON.parse(JSON.stringify(e)),this.nodeData=e.nodeData,this.linkData=e.linkData||{}),J(this.nodeData),this.layout(),this.linkDiv()},scale:function(e){this.scaleVal=e,this.map.style.transform="scale("+e+")"},selectFirstChild:function(){if(!this.currentNode)return;const e=this.currentNode.parentElement.nextSibling;if(e&&e.firstChild){const t=e.firstChild.firstChild.firstChild;this.selectNode(t)}},selectNextSibling:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return!1;const e=this.currentNode.parentElement.parentElement.nextSibling;let t;if(e)t=e.firstChild.firstChild;else return!1;return this.selectNode(t),!0},selectNode:function(e,t,i){if(e){if(console.time("selectNode"),typeof e=="string"){const n=M(e);return n?this.selectNode(n):void 0}this.currentNode&&(this.currentNode.className=""),e.className="selected",e.scrollIntoView({block:"nearest",inline:"nearest"}),this.currentNode=e,t?this.bus.fire("selectNewNode",e.nodeObj):this.bus.fire("selectNode",e.nodeObj,i),console.timeEnd("selectNode")}},selectNodes:function(e){if(e){console.time("selectNodes");for(const t of e)t.className="selected";this.currentNodes=e,this.bus.fire("selectNodes",e.map(t=>t.nodeObj)),console.timeEnd("selectNodes")}},selectParent:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return;const e=this.currentNode.parentElement.parentElement.parentElement.previousSibling;if(e){const t=e.firstChild;this.selectNode(t)}},selectPrevSibling:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return!1;const e=this.currentNode.parentElement.parentElement.previousSibling;let t;if(e)t=e.firstChild.firstChild;else return!1;return this.selectNode(t),!0},setLocale:function(e){this.locale=e,this.refresh()},toCenter:function(){this.container.scrollTo(1e4-this.container.offsetWidth/2,1e4-this.container.offsetHeight/2)},unselectNode:function(){this.currentNode&&(this.currentNode.className=""),this.currentNode=null,this.bus.fire("unselectNode")},unselectNodes:function(){if(this.currentNodes)for(const e of this.currentNodes)e.classList.remove("selected");this.currentNodes=null,this.bus.fire("unselectNodes")}},Symbol.toStringTag,{value:"Module"})),Et={create:function(e){return{dom:e,mousedown:!1,lastX:0,lastY:0,handleMouseMove(t){if(t.stopPropagation(),this.mousedown){if(!this.lastX){this.lastX=t.pageX,this.lastY=t.pageY;return}const i=this.lastX-t.pageX,n=this.lastY-t.pageY;this.cb&&this.cb(i,n),this.lastX=t.pageX,this.lastY=t.pageY}},handleMouseDown(t){t.stopPropagation(),this.mousedown=!0},handleClear(t){t.stopPropagation(),this.clear()},cb:null,init(t,i){this.cb=i,this.handleClear=this.handleClear.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),t.addEventListener("mousemove",this.handleMouseMove),t.addEventListener("mouseleave",this.handleClear),t.addEventListener("mouseup",this.handleClear),this.dom.addEventListener("mousedown",this.handleMouseDown)},destory(t){t.removeEventListener("mousemove",this.handleMouseMove),t.removeEventListener("mouseleave",this.handleClear),t.removeEventListener("mouseup",this.handleClear),this.dom.removeEventListener("mousedown",this.handleMouseDown)},clear(){this.mousedown=!1,this.lastX=0,this.lastY=0}}}},se=Object.freeze(Object.defineProperty({__proto__:null,createLink:function(e,t,i,n){const s=this.map.getBoundingClientRect();if(!e||!t)return;const o=e.getBoundingClientRect(),l=t.getBoundingClientRect(),r=(o.x+o.width/2-s.x)/this.scaleVal,h=(o.y+o.height/2-s.y)/this.scaleVal,f=(l.x+l.width/2-s.x)/this.scaleVal,d=(l.y+l.height/2-s.y)/this.scaleVal;let a,c,u,g;i&&n?(a=r+n.delta1.x,c=h+n.delta1.y,u=f+n.delta2.x,g=d+n.delta2.y):(h+d)/2-h<=o.height/2?(a=(o.x+o.width-s.x)/this.scaleVal+100,c=h,u=(l.x+l.width-s.x)/this.scaleVal+100,g=d):(a=(r+f)/2,c=(h+d)/2,u=(r+f)/2,g=(h+d)/2);const m={cx:r,cy:h,w:o.width,h:o.height},p={cx:f,cy:d,w:l.width,h:l.height},v=U(m,a,c),y=v.x,x=v.y,_=Q(p,u,g),C=_.x,A=_.y,D=ot(u,g,C,A),E={id:"",label:"",from:e.nodeObj.id,to:t.nodeObj.id,delta1:{x:a-r,y:c-h},delta2:{x:u-f,y:g-d}},V=qt(`M ${y} ${x} C ${a} ${c} ${u} ${g} ${C} ${A}`,`M ${D.x1} ${D.y1} L ${C} ${A} L ${D.x2} ${D.y2}`);i&&n?(E.id=n.id,this.linkData[n.id]=E):(E.id=Z(),this.linkData[E.id]=E,this.currentLink=V),V.linkObj=E,V.dataset.linkid=E.id,this.linkSvgGroup.appendChild(V),i||this.showLinkController(a,c,u,g,E,m,p)},hideLinkController:function(){this.linkController.style.display="none",this.P2.style.display="none",this.P3.style.display="none"},removeLink:function(e){let t;if(e?t=e:t=this.currentLink,!t)return;console.log(t),this.hideLinkController();const i=t.linkObj.id;console.log(i),delete this.linkData[i],t.remove(),t=null},selectLink:function(e){this.currentLink=e;const t=e.linkObj;if(!t)return;const i=t.from,n=t.to,s=this.map.getBoundingClientRect(),o=M(i).getBoundingClientRect(),l=M(n).getBoundingClientRect(),r=(o.x+o.width/2-s.x)/this.scaleVal,h=(o.y+o.height/2-s.y)/this.scaleVal,f=(l.x+l.width/2-s.x)/this.scaleVal,d=(l.y+l.height/2-s.y)/this.scaleVal,a={cx:r,cy:h,w:o.width,h:o.height},c={cx:f,cy:d,w:l.width,h:l.height},u=r+t.delta1.x,g=h+t.delta1.y,m=f+t.delta2.x,p=d+t.delta2.y;this.showLinkController(u,g,m,p,t,a,c)},showLinkController:function(e,t,i,n,s,o,l){this.linkController.style.display="initial",this.P2.style.display="initial",this.P3.style.display="initial";const r=U(o,e,t);let h=r.x,f=r.y;const d=Q(l,i,n);let a=d.x,c=d.y;this.P2.style.cssText=`top:${t}px;left:${e}px;`,this.P3.style.cssText=`top:${n}px;left:${i}px;`,this.line1.setAttribute("x1",h),this.line1.setAttribute("y1",f),this.line1.setAttribute("x2",e),this.line1.setAttribute("y2",t),this.line2.setAttribute("x1",i),this.line2.setAttribute("y1",n),this.line2.setAttribute("x2",a),this.line2.setAttribute("y2",c),this.helper1&&(this.helper1.destory(this.map),this.helper2.destory(this.map)),this.helper1=Et.create(this.P2),this.helper2=Et.create(this.P3),this.helper1.init(this.map,(u,g)=>{var p;e=e-u/this.scaleVal,t=t-g/this.scaleVal;const m=U(o,e,t);h=m.x,f=m.y,this.P2.style.top=t+"px",this.P2.style.left=e+"px",(p=this.currentLink)==null||p.children[0].setAttribute("d",`M ${h} ${f} C ${e} ${t} ${i} ${n} ${a} ${c}`),this.line1.setAttribute("x1",h),this.line1.setAttribute("y1",f),this.line1.setAttribute("x2",e),this.line1.setAttribute("y2",t),s.delta1.x=e-o.cx,s.delta1.y=t-o.cy}),this.helper2.init(this.map,(u,g)=>{var v,y;i=i-u/this.scaleVal,n=n-g/this.scaleVal;const m=Q(l,i,n);a=m.x,c=m.y;const p=ot(i,n,a,c);this.P3.style.top=n+"px",this.P3.style.left=i+"px",(v=this.currentLink)==null||v.children[0].setAttribute("d",`M ${h} ${f} C ${e} ${t} ${i} ${n} ${a} ${c}`),(y=this.currentLink)==null||y.children[1].setAttribute("d",`M ${p.x1} ${p.y1} L ${a} ${c} L ${p.x2} ${p.y2}`),this.line2.setAttribute("x1",i),this.line2.setAttribute("y1",n),this.line2.setAttribute("x2",a),this.line2.setAttribute("y2",c),s.delta2.x=i-l.cx,s.delta2.y=n-l.cy})}},Symbol.toStringTag,{value:"Module"})),oe=function(e){var h,f;if(e.length===0)throw new Error("No selected node.");if(e.length===1){const d=e[0].nodeObj,a=e[0].nodeObj.parent;if(!a)throw new Error("Can not select root node.");const c=a.children.findIndex(u=>d===u);return{parent:a.id,start:c,end:c}}let t=0;const i=e.map(d=>{let a=d.nodeObj;const c=[];for(;a.parent;){const u=a.parent,g=u.children,m=g==null?void 0:g.indexOf(a);a=u,c.unshift({node:a,index:m})}return c.length>t&&(t=c.length),c});let n=0;t:for(;n<t;n++){const d=(h=i[0][n])==null?void 0:h.node;for(let a=1;a<i.length;a++)if(((f=i[a][n])==null?void 0:f.node)!==d)break t}const s=i.map(d=>d[n-1].index).sort(),o=s[0]||0,l=s[s.length-1]||0,r=i[0][n-1].node;if(r.root)throw new Error("Please select nodes in the same main topic.");return{parent:r.id,start:o,end:l}},le=function(e){const t=document.createElementNS("http://www.w3.org/2000/svg","g");return t.setAttribute("id",e),t},Ct=function(e,t){const i=document.createElementNS("http://www.w3.org/2000/svg","path");return tt(i,{d:e,stroke:t||"#666",fill:"none","stroke-linecap":"round","stroke-width":"2"}),i},wt=function(e,t,i,n,s){const o=document.createElementNS("http://www.w3.org/2000/svg","text");return tt(o,{"text-anchor":n,x:t+"",y:i+"",fill:s||"#666"}),o.innerHTML=e,o},re=e=>M(e).parentElement.parentElement,Lt=function(e,t){var A,D;const{id:i,text:n,parent:s,start:o,end:l}=t,r=e.nodes,h=M(s),f=(A=h.closest("me-main"))==null?void 0:A.className,d=h.nodeObj;let a=1/0,c=0,u=0,g=0;for(let E=o;E<=l;E++){const V=(D=d.children)==null?void 0:D[E];if(!V)return console.warn("Child not found"),e.removeSummary(i),null;const I=re(V.id),{offsetLeft:G,offsetTop:St}=lt(r,I);E===o&&(u=St),E===l&&(g=St+I.offsetHeight),G<a&&(a=G),I.offsetWidth+G>c&&(c=I.offsetWidth+G)}let m,p;const v=u+10,y=g+10,x=(v+y)/2,_=e.theme.cssVar["--color"];f==="lhs"?(m=Ct(`M ${a+10} ${v} c -5 0 -10 5 -10 10 L ${a} ${y-10} c 0 5 5 10 10 10 M ${a} ${x} h -10`,_),p=wt(n,a-20,x+6,"end",_)):(m=Ct(`M ${c-10} ${v} c 5 0 10 5 10 10 L ${c} ${y-10} c 0 5 -5 10 -10 10 M ${c} ${x} h 10`,_),p=wt(n,c+20,x+6,"start",_));const C=le("s-"+i);return C.appendChild(m),C.appendChild(p),C.summaryObj=t,e.summarySvg.appendChild(C),C},ce=function(){let e=[];this.currentNode?e=[this.currentNode]:this.currentNodes&&(e=this.currentNodes);const{parent:t,start:i,end:n}=oe(e),s={id:Z(),parent:t,start:i,end:n,text:"summary"},o=Lt(this,s);this.summaries.push(s),this.editSummary(o)},ae=function(e){var i;const t=this.summaries.findIndex(n=>n.id===e);t>-1&&(this.summaries.splice(t,1),(i=document.querySelector("#s-"+e))==null||i.remove())},he=function(e){const t=e.children[1].getBBox(),i=6,n=3,s=document.createElementNS("http://www.w3.org/2000/svg","rect");tt(s,{x:t.x-i+"",y:t.y-i+"",width:t.width+i*2+"",height:t.height+i*2+"",rx:n+"",stroke:this.theme.cssVar["--selected"]||"#4dc4ff","stroke-width":"2",fill:"none"}),s.classList.add("selected"),e.appendChild(s),this.currentSummary=e},de=function(){var e,t;(t=(e=this.currentSummary)==null?void 0:e.querySelector("rect"))==null||t.remove(),this.currentSummary=null},ue=function(){this.summarySvg.innerHTML="",this.summaries.forEach(e=>{Lt(this,e)}),this.nodes.insertAdjacentElement("beforeend",this.summarySvg)},fe=function(e){var t;return(t=M(e).closest("me-main"))==null?void 0:t.className},pe={getObjById:st,generateNewObj:Mt,layout:Nt,linkDiv:jt,editTopic:Dt,createWrapper:Ht,createParent:Pt,createChildren:Bt,createTopic:zt,findEle:M,changeTheme:ie,...ne,...{},...se,...Object.freeze(Object.defineProperty({__proto__:null,createSummary:ce,editSummary:function(e){if(console.time("editSummary"),!e)return;const t=e.childNodes[1],i=document.createElement("div");this.nodes.appendChild(i);const n=t.innerHTML;i.id="input-box",i.textContent=n,i.contentEditable="true",i.spellcheck=!1;const s=t.getAttribute("x")+"px",o=t.getAttribute("y")+"px";i.style.cssText=`min-width:${100-8}px;position:absolute;left:${s};top:${o};`,fe(e.summaryObj.parent)==="lhs"?i.style.cssText+="transform: translate(-100%, -100%);":i.style.cssText+="transform: translate(0, -100%);",i.focus(),at(i),i.addEventListener("keydown",l=>{l.stopPropagation();const r=l.key;if(r==="Enter"||r==="Tab"){if(l.shiftKey)return;l.preventDefault(),i.blur(),this.map.focus()}}),i.addEventListener("blur",()=>{var h;if(!i)return;const l=e.summaryObj,r=((h=i.textContent)==null?void 0:h.trim())||"";r===""?l.text=n:l.text=r,i.remove(),r!==n&&(t.innerHTML=l.text,this.linkDiv(),this.bus.fire("operation",{name:"finishEditSummary",obj:l,origin:n}))}),console.timeEnd("editSummary")},removeSummary:ae,renderSummary:ue,selectSummary:he,unselectSummary:de},Symbol.toStringTag,{value:"Module"})),init(e){if(!e||!e.nodeData)return new Error("MindElixir: `data` is required");e.direction!==void 0&&(this.direction=e.direction),this.changeTheme(e.theme||this.theme,!1),this.nodeData=e.nodeData,J(this.nodeData),this.linkData=e.linkData||{},this.summaries=e.summaries||[],this.toolBar&&Gt(this),ee(this),this.toCenter(),this.layout(),this.linkDiv()}},X=document;function k({el:e,direction:t,locale:i,draggable:n,editable:s,contextMenu:o,contextMenuOption:l,toolBar:r,keypress:h,before:f,newTopicName:d,allowUndo:a,mainLinkStyle:c,subLinkStyle:u,overflowHidden:g,mobileMenu:m,theme:p}){console.log("ME_version "+k.version,this);let v=null;const y=Object.prototype.toString.call(e);if(y==="[object HTMLDivElement]"?v=e:y==="[object String]"&&(v=document.querySelector(e)),!v)throw new Error("MindElixir: el is not a valid element");v.className+=" mind-elixir",v.innerHTML="",v.style.setProperty("--gap",L+"px"),this.mindElixirBox=v,this.before=f||{},this.locale=i||"en",this.contextMenuOption=l,this.contextMenu=o===void 0?!0:o,this.toolBar=r===void 0?!0:r,this.keypress=h===void 0?!0:h,this.mobileMenu=m||!1,this.direction=typeof t=="number"?t:1,this.draggable=n===void 0?!0:n,this.newTopicName=d||"new node",this.editable=s===void 0?!0:s,this.allowUndo=a===void 0?!1:a,this.currentNode=null,this.currentLink=null,this.scaleVal=1,this.tempDirection=null,this.mainLinkStyle=c||0,this.subLinkStyle=u||0,this.overflowHidden=g||!1,this.bus=$t.create(),this.container=X.createElement("div"),this.container.className="map-container";const x=window.matchMedia("(prefers-color-scheme: dark)");this.theme=p||(x.matches?it:et);const _=X.createElement("div");_.className="map-canvas",this.map=_,this.map.setAttribute("tabindex","0"),this.container.appendChild(this.map),this.mindElixirBox.appendChild(this.container),this.nodes=X.createElement("me-nodes"),this.nodes.className="main-node-container",this.lines=j("lines"),this.summarySvg=j("summary"),this.linkController=j("linkcontroller"),this.P2=X.createElement("div"),this.P3=X.createElement("div"),this.P2.className=this.P3.className="circle",this.P2.style.display=this.P3.style.display="none",this.line1=ht(0,0,0,0),this.line2=ht(0,0,0,0),this.linkController.appendChild(this.line1),this.linkController.appendChild(this.line2),this.linkSvgGroup=j("topiclinks"),this.map.appendChild(this.nodes),this.map.appendChild(this.linkController),this.map.appendChild(this.linkSvgGroup),this.map.appendChild(this.P2),this.map.appendChild(this.P3),this.overflowHidden?this.container.style.overflow="hidden":kt(this)}return k.prototype=pe,k.LEFT=R,k.RIGHT=K,k.SIDE=F,k.THEME=et,k.DARK_THEME=it,k.version="3.1.1",k.E=M,k}();
9
+ `,n[o].children&&i(n[o].children||[],s+1)}return i(e.children||[],2),t},getDataString:function(){const e=_t(this);return JSON.stringify(e,(t,i)=>{if(!(t==="parent"&&typeof i!="string"))return t==="from"||t==="to"?i.nodeObj.id:i})},initLeft:function(){this.direction=0,this.refresh()},initRight:function(){this.direction=1,this.refresh()},initSide:function(){this.direction=2,this.refresh()},install:function(e){e(this)},refresh:function(e){e&&(e=JSON.parse(JSON.stringify(e)),this.nodeData=e.nodeData,this.linkData=e.linkData||{}),J(this.nodeData),this.layout(),this.linkDiv()},scale:function(e){this.scaleVal=e,this.map.style.transform="scale("+e+")"},selectFirstChild:function(){if(!this.currentNode)return;const e=this.currentNode.parentElement.nextSibling;if(e&&e.firstChild){const t=e.firstChild.firstChild.firstChild;this.selectNode(t)}},selectNextSibling:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return!1;const e=this.currentNode.parentElement.parentElement.nextSibling;let t;if(e)t=e.firstChild.firstChild;else return!1;return this.selectNode(t),!0},selectNode:function(e,t,i){if(e){if(console.time("selectNode"),typeof e=="string"){const n=M(e);return n?this.selectNode(n):void 0}this.currentNode&&(this.currentNode.className=""),e.className="selected",e.scrollIntoView({block:"nearest",inline:"nearest"}),this.currentNode=e,t?this.bus.fire("selectNewNode",e.nodeObj):this.bus.fire("selectNode",e.nodeObj,i),console.timeEnd("selectNode")}},selectNodes:function(e){if(e){console.time("selectNodes");for(const t of e)t.className="selected";this.currentNodes=e,this.bus.fire("selectNodes",e.map(t=>t.nodeObj)),console.timeEnd("selectNodes")}},selectParent:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return;const e=this.currentNode.parentElement.parentElement.parentElement.previousSibling;if(e){const t=e.firstChild;this.selectNode(t)}},selectPrevSibling:function(){if(!this.currentNode||this.currentNode.dataset.nodeid==="meroot")return!1;const e=this.currentNode.parentElement.parentElement.previousSibling;let t;if(e)t=e.firstChild.firstChild;else return!1;return this.selectNode(t),!0},setLocale:function(e){this.locale=e,this.refresh()},toCenter:function(){this.container.scrollTo(1e4-this.container.offsetWidth/2,1e4-this.container.offsetHeight/2)},unselectNode:function(){this.currentNode&&(this.currentNode.className=""),this.currentNode=null,this.bus.fire("unselectNode")},unselectNodes:function(){if(this.currentNodes)for(const e of this.currentNodes)e.classList.remove("selected");this.currentNodes=null,this.bus.fire("unselectNodes")}},Symbol.toStringTag,{value:"Module"})),Et={create:function(e){return{dom:e,mousedown:!1,lastX:0,lastY:0,handleMouseMove(t){if(t.stopPropagation(),this.mousedown){if(!this.lastX){this.lastX=t.pageX,this.lastY=t.pageY;return}const i=this.lastX-t.pageX,n=this.lastY-t.pageY;this.cb&&this.cb(i,n),this.lastX=t.pageX,this.lastY=t.pageY}},handleMouseDown(t){t.stopPropagation(),this.mousedown=!0},handleClear(t){t.stopPropagation(),this.clear()},cb:null,init(t,i){this.cb=i,this.handleClear=this.handleClear.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),t.addEventListener("mousemove",this.handleMouseMove),t.addEventListener("mouseleave",this.handleClear),t.addEventListener("mouseup",this.handleClear),this.dom.addEventListener("mousedown",this.handleMouseDown)},destory(t){t.removeEventListener("mousemove",this.handleMouseMove),t.removeEventListener("mouseleave",this.handleClear),t.removeEventListener("mouseup",this.handleClear),this.dom.removeEventListener("mousedown",this.handleMouseDown)},clear(){this.mousedown=!1,this.lastX=0,this.lastY=0}}}},se=Object.freeze(Object.defineProperty({__proto__:null,createLink:function(e,t,i,n){const s=this.map.getBoundingClientRect();if(!e||!t)return;const o=e.getBoundingClientRect(),l=t.getBoundingClientRect(),r=(o.x+o.width/2-s.x)/this.scaleVal,h=(o.y+o.height/2-s.y)/this.scaleVal,f=(l.x+l.width/2-s.x)/this.scaleVal,d=(l.y+l.height/2-s.y)/this.scaleVal;let a,c,u,g;i&&n?(a=r+n.delta1.x,c=h+n.delta1.y,u=f+n.delta2.x,g=d+n.delta2.y):(h+d)/2-h<=o.height/2?(a=(o.x+o.width-s.x)/this.scaleVal+100,c=h,u=(l.x+l.width-s.x)/this.scaleVal+100,g=d):(a=(r+f)/2,c=(h+d)/2,u=(r+f)/2,g=(h+d)/2);const m={cx:r,cy:h,w:o.width,h:o.height},p={cx:f,cy:d,w:l.width,h:l.height},v=U(m,a,c),y=v.x,x=v.y,_=Q(p,u,g),C=_.x,A=_.y,D=ot(u,g,C,A),E={id:"",label:"",from:e.nodeObj.id,to:t.nodeObj.id,delta1:{x:a-r,y:c-h},delta2:{x:u-f,y:g-d}},V=qt(`M ${y} ${x} C ${a} ${c} ${u} ${g} ${C} ${A}`,`M ${D.x1} ${D.y1} L ${C} ${A} L ${D.x2} ${D.y2}`);i&&n?(E.id=n.id,this.linkData[n.id]=E):(E.id=Z(),this.linkData[E.id]=E,this.currentLink=V),V.linkObj=E,V.dataset.linkid=E.id,this.linkSvgGroup.appendChild(V),i||this.showLinkController(a,c,u,g,E,m,p)},hideLinkController:function(){this.linkController.style.display="none",this.P2.style.display="none",this.P3.style.display="none"},removeLink:function(e){let t;if(e?t=e:t=this.currentLink,!t)return;console.log(t),this.hideLinkController();const i=t.linkObj.id;console.log(i),delete this.linkData[i],t.remove(),t=null},selectLink:function(e){this.currentLink=e;const t=e.linkObj;if(!t)return;const i=t.from,n=t.to,s=this.map.getBoundingClientRect(),o=M(i).getBoundingClientRect(),l=M(n).getBoundingClientRect(),r=(o.x+o.width/2-s.x)/this.scaleVal,h=(o.y+o.height/2-s.y)/this.scaleVal,f=(l.x+l.width/2-s.x)/this.scaleVal,d=(l.y+l.height/2-s.y)/this.scaleVal,a={cx:r,cy:h,w:o.width,h:o.height},c={cx:f,cy:d,w:l.width,h:l.height},u=r+t.delta1.x,g=h+t.delta1.y,m=f+t.delta2.x,p=d+t.delta2.y;this.showLinkController(u,g,m,p,t,a,c)},showLinkController:function(e,t,i,n,s,o,l){this.linkController.style.display="initial",this.P2.style.display="initial",this.P3.style.display="initial";const r=U(o,e,t);let h=r.x,f=r.y;const d=Q(l,i,n);let a=d.x,c=d.y;this.P2.style.cssText=`top:${t}px;left:${e}px;`,this.P3.style.cssText=`top:${n}px;left:${i}px;`,this.line1.setAttribute("x1",h),this.line1.setAttribute("y1",f),this.line1.setAttribute("x2",e),this.line1.setAttribute("y2",t),this.line2.setAttribute("x1",i),this.line2.setAttribute("y1",n),this.line2.setAttribute("x2",a),this.line2.setAttribute("y2",c),this.helper1&&(this.helper1.destory(this.map),this.helper2.destory(this.map)),this.helper1=Et.create(this.P2),this.helper2=Et.create(this.P3),this.helper1.init(this.map,(u,g)=>{var p;e=e-u/this.scaleVal,t=t-g/this.scaleVal;const m=U(o,e,t);h=m.x,f=m.y,this.P2.style.top=t+"px",this.P2.style.left=e+"px",(p=this.currentLink)==null||p.children[0].setAttribute("d",`M ${h} ${f} C ${e} ${t} ${i} ${n} ${a} ${c}`),this.line1.setAttribute("x1",h),this.line1.setAttribute("y1",f),this.line1.setAttribute("x2",e),this.line1.setAttribute("y2",t),s.delta1.x=e-o.cx,s.delta1.y=t-o.cy}),this.helper2.init(this.map,(u,g)=>{var v,y;i=i-u/this.scaleVal,n=n-g/this.scaleVal;const m=Q(l,i,n);a=m.x,c=m.y;const p=ot(i,n,a,c);this.P3.style.top=n+"px",this.P3.style.left=i+"px",(v=this.currentLink)==null||v.children[0].setAttribute("d",`M ${h} ${f} C ${e} ${t} ${i} ${n} ${a} ${c}`),(y=this.currentLink)==null||y.children[1].setAttribute("d",`M ${p.x1} ${p.y1} L ${a} ${c} L ${p.x2} ${p.y2}`),this.line2.setAttribute("x1",i),this.line2.setAttribute("y1",n),this.line2.setAttribute("x2",a),this.line2.setAttribute("y2",c),s.delta2.x=i-l.cx,s.delta2.y=n-l.cy})}},Symbol.toStringTag,{value:"Module"})),oe=function(e){var h,f;if(e.length===0)throw new Error("No selected node.");if(e.length===1){const d=e[0].nodeObj,a=e[0].nodeObj.parent;if(!a)throw new Error("Can not select root node.");const c=a.children.findIndex(u=>d===u);return{parent:a.id,start:c,end:c}}let t=0;const i=e.map(d=>{let a=d.nodeObj;const c=[];for(;a.parent;){const u=a.parent,g=u.children,m=g==null?void 0:g.indexOf(a);a=u,c.unshift({node:a,index:m})}return c.length>t&&(t=c.length),c});let n=0;t:for(;n<t;n++){const d=(h=i[0][n])==null?void 0:h.node;for(let a=1;a<i.length;a++)if(((f=i[a][n])==null?void 0:f.node)!==d)break t}const s=i.map(d=>d[n-1].index).sort(),o=s[0]||0,l=s[s.length-1]||0,r=i[0][n-1].node;if(r.root)throw new Error("Please select nodes in the same main topic.");return{parent:r.id,start:o,end:l}},le=function(e){const t=document.createElementNS("http://www.w3.org/2000/svg","g");return t.setAttribute("id",e),t},Ct=function(e,t){const i=document.createElementNS("http://www.w3.org/2000/svg","path");return tt(i,{d:e,stroke:t||"#666",fill:"none","stroke-linecap":"round","stroke-width":"2"}),i},wt=function(e,t,i,n,s){const o=document.createElementNS("http://www.w3.org/2000/svg","text");return tt(o,{"text-anchor":n,x:t+"",y:i+"",fill:s||"#666"}),o.innerHTML=e,o},re=e=>M(e).parentElement.parentElement,Lt=function(e,t){var A,D;const{id:i,text:n,parent:s,start:o,end:l}=t,r=e.nodes,h=M(s),f=(A=h.closest("me-main"))==null?void 0:A.className,d=h.nodeObj;let a=1/0,c=0,u=0,g=0;for(let E=o;E<=l;E++){const V=(D=d.children)==null?void 0:D[E];if(!V)return console.warn("Child not found"),e.removeSummary(i),null;const I=re(V.id),{offsetLeft:G,offsetTop:St}=lt(r,I);E===o&&(u=St),E===l&&(g=St+I.offsetHeight),G<a&&(a=G),I.offsetWidth+G>c&&(c=I.offsetWidth+G)}let m,p;const v=u+10,y=g+10,x=(v+y)/2,_=e.theme.cssVar["--color"];f==="lhs"?(m=Ct(`M ${a+10} ${v} c -5 0 -10 5 -10 10 L ${a} ${y-10} c 0 5 5 10 10 10 M ${a} ${x} h -10`,_),p=wt(n,a-20,x+6,"end",_)):(m=Ct(`M ${c-10} ${v} c 5 0 10 5 10 10 L ${c} ${y-10} c 0 5 -5 10 -10 10 M ${c} ${x} h 10`,_),p=wt(n,c+20,x+6,"start",_));const C=le("s-"+i);return C.appendChild(m),C.appendChild(p),C.summaryObj=t,e.summarySvg.appendChild(C),C},ce=function(){let e=[];this.currentNode?e=[this.currentNode]:this.currentNodes&&(e=this.currentNodes);const{parent:t,start:i,end:n}=oe(e),s={id:Z(),parent:t,start:i,end:n,text:"summary"},o=Lt(this,s);this.summaries.push(s),this.editSummary(o)},ae=function(e){var i;const t=this.summaries.findIndex(n=>n.id===e);t>-1&&(this.summaries.splice(t,1),(i=document.querySelector("#s-"+e))==null||i.remove())},he=function(e){const t=e.children[1].getBBox(),i=6,n=3,s=document.createElementNS("http://www.w3.org/2000/svg","rect");tt(s,{x:t.x-i+"",y:t.y-i+"",width:t.width+i*2+"",height:t.height+i*2+"",rx:n+"",stroke:this.theme.cssVar["--selected"]||"#4dc4ff","stroke-width":"2",fill:"none"}),s.classList.add("selected"),e.appendChild(s),this.currentSummary=e},de=function(){var e,t;(t=(e=this.currentSummary)==null?void 0:e.querySelector("rect"))==null||t.remove(),this.currentSummary=null},ue=function(){this.summarySvg.innerHTML="",this.summaries.forEach(e=>{Lt(this,e)}),this.nodes.insertAdjacentElement("beforeend",this.summarySvg)},fe=function(e){var t;return(t=M(e).closest("me-main"))==null?void 0:t.className},pe={getObjById:st,generateNewObj:Mt,layout:Nt,linkDiv:jt,editTopic:Dt,createWrapper:Ht,createParent:Pt,createChildren:Bt,createTopic:zt,findEle:M,changeTheme:ie,...ne,...{},...se,...Object.freeze(Object.defineProperty({__proto__:null,createSummary:ce,editSummary:function(e){if(console.time("editSummary"),!e)return;const t=e.childNodes[1],i=document.createElement("div");this.nodes.appendChild(i);const n=t.innerHTML;i.id="input-box",i.textContent=n,i.contentEditable="true",i.spellcheck=!1;const s=t.getAttribute("x")+"px",o=t.getAttribute("y")+"px";i.style.cssText=`min-width:${100-8}px;position:absolute;left:${s};top:${o};`,fe(e.summaryObj.parent)==="lhs"?i.style.cssText+="transform: translate(-100%, -100%);":i.style.cssText+="transform: translate(0, -100%);",i.focus(),at(i),i.addEventListener("keydown",l=>{l.stopPropagation();const r=l.key;if(r==="Enter"||r==="Tab"){if(l.shiftKey)return;l.preventDefault(),i.blur(),this.map.focus()}}),i.addEventListener("blur",()=>{var h;if(!i)return;const l=e.summaryObj,r=((h=i.textContent)==null?void 0:h.trim())||"";r===""?l.text=n:l.text=r,i.remove(),r!==n&&(t.innerHTML=l.text,this.linkDiv(),this.bus.fire("operation",{name:"finishEditSummary",obj:l,origin:n}))}),console.timeEnd("editSummary")},removeSummary:ae,renderSummary:ue,selectSummary:he,unselectSummary:de},Symbol.toStringTag,{value:"Module"})),init(e){if(!e||!e.nodeData)return new Error("MindElixir: `data` is required");e.direction!==void 0&&(this.direction=e.direction),this.changeTheme(e.theme||this.theme,!1),this.nodeData=e.nodeData,J(this.nodeData),this.linkData=e.linkData||{},this.summaries=e.summaries||[],this.toolBar&&Gt(this),ee(this),this.toCenter(),this.layout(),this.linkDiv()}},X=document;function k({el:e,direction:t,locale:i,draggable:n,editable:s,contextMenu:o,contextMenuOption:l,toolBar:r,keypress:h,before:f,newTopicName:d,allowUndo:a,mainLinkStyle:c,subLinkStyle:u,overflowHidden:g,mobileMenu:m,theme:p}){console.log("ME_version "+k.version,this);let v=null;const y=Object.prototype.toString.call(e);if(y==="[object HTMLDivElement]"?v=e:y==="[object String]"&&(v=document.querySelector(e)),!v)throw new Error("MindElixir: el is not a valid element");v.className+=" mind-elixir",v.innerHTML="",v.style.setProperty("--gap",L+"px"),this.mindElixirBox=v,this.before=f||{},this.locale=i||"en",this.contextMenuOption=l,this.contextMenu=o===void 0?!0:o,this.toolBar=r===void 0?!0:r,this.keypress=h===void 0?!0:h,this.mobileMenu=m||!1,this.direction=typeof t=="number"?t:1,this.draggable=n===void 0?!0:n,this.newTopicName=d||"new node",this.editable=s===void 0?!0:s,this.allowUndo=a===void 0?!1:a,this.currentNode=null,this.currentLink=null,this.scaleVal=1,this.tempDirection=null,this.mainLinkStyle=c||0,this.subLinkStyle=u||0,this.overflowHidden=g||!1,this.bus=$t.create(),this.container=X.createElement("div"),this.container.className="map-container";const x=window.matchMedia("(prefers-color-scheme: dark)");this.theme=p||(x.matches?it:et);const _=X.createElement("div");_.className="map-canvas",this.map=_,this.map.setAttribute("tabindex","0"),this.container.appendChild(this.map),this.mindElixirBox.appendChild(this.container),this.nodes=X.createElement("me-nodes"),this.nodes.className="main-node-container",this.lines=j("lines"),this.summarySvg=j("summary"),this.linkController=j("linkcontroller"),this.P2=X.createElement("div"),this.P3=X.createElement("div"),this.P2.className=this.P3.className="circle",this.P2.style.display=this.P3.style.display="none",this.line1=ht(0,0,0,0),this.line2=ht(0,0,0,0),this.linkController.appendChild(this.line1),this.linkController.appendChild(this.line2),this.linkSvgGroup=j("topiclinks"),this.map.appendChild(this.nodes),this.map.appendChild(this.linkController),this.map.appendChild(this.linkSvgGroup),this.map.appendChild(this.P2),this.map.appendChild(this.P3),this.overflowHidden?this.container.style.overflow="hidden":kt(this)}return k.prototype=pe,k.LEFT=R,k.RIGHT=K,k.SIDE=F,k.THEME=et,k.DARK_THEME=it,k.version="3.1.2",k.E=M,k}();
@@ -973,7 +973,7 @@ const ne = function(e, t, i) {
973
973
  }, de = function() {
974
974
  const e = Lt(this);
975
975
  return JSON.stringify(e, (t, i) => {
976
- if (t !== "parent")
976
+ if (!(t === "parent" && typeof i != "string"))
977
977
  return t === "from" || t === "to" ? i.nodeObj.id : i;
978
978
  });
979
979
  }, ue = function() {
@@ -1367,7 +1367,7 @@ $.RIGHT = K;
1367
1367
  $.SIDE = G;
1368
1368
  $.THEME = ft;
1369
1369
  $.DARK_THEME = pt;
1370
- $.version = "3.1.1";
1370
+ $.version = "3.1.2";
1371
1371
  $.E = M;
1372
1372
  export {
1373
1373
  $ as default
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mind-elixir",
3
- "version": "3.1.1",
3
+ "version": "3.1.2",
4
4
  "type": "module",
5
5
  "description": "Mind elixir is a free open source mind map core.",
6
6
  "keywords": [