1 | (function(){"use strict";try{if(typeof document<"u"){var i=document.createElement("style");i.appendChild(document.createTextNode(".mind-elixir{--gap: 30px;--root-radius: 30px;--main-radius: 20px;--root-color: #ffffff;--root-bgcolor: #4c4f69;--main-color: #444446;--main-bgcolor: #ffffff;--topic-padding: 3px;--color: #777777;--bgcolor: #f6f6f6;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif}.mind-elixir .hyper-link{text-decoration:none}.map-container{-webkit-user-select:none;user-select:none;height:100%;width:100%;overflow:scroll;font-size:15px}.map-container::-webkit-scrollbar{width:0px;height:0px}.map-container .selected{box-shadow:0 0 0 2px #4dc4ff}.map-container .lhs{direction:rtl}.map-container .lhs me-tpc{direction:ltr}.map-container .map-canvas{height:20000px;width:20000px;position:relative;-webkit-user-select:none;user-select:none;transition:transform .3s;transform:scale(1);background-color:var(--bgcolor)}.map-container .map-canvas me-nodes{position:absolute;display:flex;justify-content:center;align-items:center;height:fit-content;width:fit-content}.map-container .map-canvas me-root{padding:10px var(--gap);color:var(--root-color);background-color:var(--root-bgcolor);border-radius:var(--root-radius)}.map-container .map-canvas me-root me-tpc{display:block;font-size:25px;white-space:pre-wrap}.map-container .map-canvas me-root me-tpc #input-box{padding:10px var(--gap)}.map-container me-main>me-wrapper{position:relative;margin:20px 65px}.map-container me-main>me-wrapper>me-parent{margin:var(--gap);background-color:var(--main-bgcolor);border:2px solid var(--main-color);border-radius:var(--main-radius);padding:0}.map-container me-main>me-wrapper>me-parent>me-tpc{border-radius:var(--main-radius);color:var(--main-color);padding:8px var(--gap)}.map-container me-main>me-wrapper>me-parent>me-tpc #input-box{padding:8px var(--gap)}.map-container me-wrapper{display:block;pointer-events:none}.map-container me-children,.map-container me-parent{display:inline-block;vertical-align:middle}.map-container me-parent{position:relative;cursor:pointer;padding:6px var(--gap);margin-top:10px}.map-container me-parent me-tpc{position:relative;display:block;border-radius:3px;color:var(--color);pointer-events:all;max-width:800px;white-space:pre-wrap;padding:var(--topic-padding);line-height:1.2}.map-container me-parent me-tpc>div,.map-container me-parent me-tpc>span,.map-container me-parent me-tpc>img{pointer-events:none}.map-container me-parent me-tpc .insert-preview{position:absolute;width:100%;left:0;z-index:9}.map-container me-parent me-tpc .show{background:#7ad5ff;pointer-events:none;opacity:.7}.map-container me-parent me-tpc .before{height:14px;top:-14px}.map-container me-parent me-tpc .in{height:100%;top:0}.map-container me-parent me-tpc .after{height:14px;bottom:-14px}.map-container me-parent me-epd{position:absolute;height:18px;width:18px;opacity:.8;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdD0iMTY1NjY1NDcxNzI0MiIgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgICA8cGF0aCBkPSJNNTEyIDc0LjY2NjY2N0MyNzAuOTMzMzMzIDc0LjY2NjY2NyA3NC42NjY2NjcgMjcwLjkzMzMzMyA3NC42NjY2NjcgNTEyUzI3MC45MzMzMzMgOTQ5LjMzMzMzMyA1MTIgOTQ5LjMzMzMzMyA5NDkuMzMzMzMzIDc1My4wNjY2NjcgOTQ5LjMzMzMzMyA1MTIgNzUzLjA2NjY2NyA3NC42NjY2NjcgNTEyIDc0LjY2NjY2N3oiIHN0cm9rZS13aWR0aD0iNTQiIHN0cm9rZT0nYmxhY2snIGZpbGw9J3doaXRlJyA+PC9wYXRoPgogICAgPHBhdGggZD0iTTY4Mi42NjY2NjcgNDgwaC0xMzguNjY2NjY3VjM0MS4zMzMzMzNjMC0xNy4wNjY2NjctMTQuOTMzMzMzLTMyLTMyLTMycy0zMiAxNC45MzMzMzMtMzIgMzJ2MTM4LjY2NjY2N0gzNDEuMzMzMzMzYy0xNy4wNjY2NjcgMC0zMiAxNC45MzMzMzMtMzIgMzJzMTQuOTMzMzMzIDMyIDMyIDMyaDEzOC42NjY2NjdWNjgyLjY2NjY2N2MwIDE3LjA2NjY2NyAxNC45MzMzMzMgMzIgMzIgMzJzMzItMTQuOTMzMzMzIDMyLTMydi0xMzguNjY2NjY3SDY4Mi42NjY2NjdjMTcuMDY2NjY3IDAgMzItMTQuOTMzMzMzIDMyLTMycy0xNC45MzMzMzMtMzItMzItMzJ6Ij48L3BhdGg+Cjwvc3ZnPg==);background-repeat:no-repeat;background-size:contain;background-position:center;pointer-events:all;z-index:9}.map-container me-parent me-epd.minus{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdD0iMTY1NjY1NTU2NDk4NSIgY2xhc3M9Imljb24iIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIHZlcnNpb249IjEuMSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CiAgICA8cGF0aCBkPSJNNTEyIDc0LjY2NjY2N0MyNzAuOTMzMzMzIDc0LjY2NjY2NyA3NC42NjY2NjcgMjcwLjkzMzMzMyA3NC42NjY2NjcgNTEyUzI3MC45MzMzMzMgOTQ5LjMzMzMzMyA1MTIgOTQ5LjMzMzMzMyA5NDkuMzMzMzMzIDc1My4wNjY2NjcgOTQ5LjMzMzMzMyA1MTIgNzUzLjA2NjY2NyA3NC42NjY2NjcgNTEyIDc0LjY2NjY2N3oiIHN0cm9rZS13aWR0aD0iNTQiIHN0cm9rZT0nYmxhY2snIGZpbGw9J3doaXRlJyA+PC9wYXRoPgogICAgPHBhdGggZD0iTTY4Mi42NjY2NjcgNTQ0SDM0MS4zMzMzMzNjLTE3LjA2NjY2NyAwLTMyLTE0LjkzMzMzMy0zMi0zMnMxNC45MzMzMzMtMzIgMzItMzJoMzQxLjMzMzMzNGMxNy4wNjY2NjcgMCAzMiAxNC45MzMzMzMgMzIgMzJzLTE0LjkzMzMzMyAzMi0zMiAzMnoiPjwvcGF0aD4KPC9zdmc+)!important;transition:opacity .3s;opacity:0}.map-container me-parent me-epd.minus:hover{opacity:.8}.map-container .icon{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden}.map-container .lines,.map-container .subLines,.map-container .topiclinks,.map-container .linkcontroller{position:absolute;height:102%;width:100%;top:0;left:0}.map-container .topiclinks,.map-container .linkcontroller{pointer-events:none}.map-container .topiclinks g,.map-container .linkcontroller g{pointer-events:all}.map-container .lines,.map-container .subLines{pointer-events:none;z-index:-1}.map-container .topiclinks *,.map-container .linkcontroller *{z-index:100}.map-container .topiclinks g{cursor:pointer}.map-container #input-box{position:absolute;top:0;left:0;padding:var(--topic-padding);background-color:#fff;color:#666;width:max-content;max-width:800px;z-index:11;direction:ltr;-webkit-user-select:auto;user-select:auto}.map-container me-tpc>img{pointer-events:none;display:block;margin-top:8px}.map-container .circle{position:absolute;height:10px;width:10px;margin-top:-5px;margin-left:-5px;border-radius:100%;background:#aaa;cursor:pointer}.map-container .tags{direction:ltr}.map-container .tags span{display:inline-block;border-radius:3px;padding:2px 4px;background:#d6f0f8;color:#276f86;margin:2px 3px 0 0;font-size:12px;line-height:16px}.map-container .icons{display:inline-block;direction:ltr;margin-right:10px}.map-container .mind-elixir-ghost{position:fixed;top:-100%;left:-100%;box-sizing:content-box;opacity:.5;background-color:#f6f6f6;max-width:200px;width:fit-content;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:8px 16px;border-radius:6px;border:#666666 2px solid}.mind-elixir .context-menu{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99}.mind-elixir .context-menu .menu-list{position:fixed;list-style:none;margin:0;padding:0;font:300 15px Roboto,sans-serif;color:#333;box-shadow:0 12px 15px #0003}.mind-elixir .context-menu .menu-list *{transition:color .4s,background-color .4s}.mind-elixir .context-menu .menu-list li{min-width:150px;overflow:hidden;white-space:nowrap;padding:6px 10px;background-color:#fff;border-bottom:1px solid #ecf0f1}.mind-elixir .context-menu .menu-list li a{color:#333;text-decoration:none}.mind-elixir .context-menu .menu-list li.disabled{color:#5e5e5e;background-color:#f7f7f7}.mind-elixir .context-menu .menu-list li.disabled:hover{cursor:default;background-color:#f7f7f7}.mind-elixir .context-menu .menu-list li:hover{cursor:pointer;background-color:#ecf0f1}.mind-elixir .context-menu .menu-list li:first-child{border-radius:5px 5px 0 0}.mind-elixir .context-menu .menu-list li:last-child{border-bottom:0;border-radius:0 0 5px 5px}.mind-elixir .context-menu .menu-list li span:last-child{float:right}.mind-elixir .mobile-menu{position:absolute;left:20px;bottom:70px;z-index:99;margin:0;padding:0;color:#333;border-radius:5px;box-shadow:0 12px 15px #0003;overflow:hidden}.mind-elixir .mobile-menu *{transition:color .4s,background-color .4s}.mind-elixir .mobile-menu div{float:left;text-align:center;width:30px;overflow:hidden;white-space:nowrap;padding:8px;background-color:#fff;border-bottom:1px solid #ecf0f1}.mind-elixir .mobile-menu div a{color:#333;text-decoration:none}.mind-elixir .mobile-menu div.disabled{color:#5e5e5e;background-color:#f7f7f7}.mind-elixir .mobile-menu div.disabled:hover{cursor:default;background-color:#f7f7f7}.mind-elixir .mobile-menu div:hover{cursor:pointer;background-color:#ecf0f1}@media (prefers-color-scheme: dark){.mind-elixir-toolbar{background:#2d3748!important;color:#fff!important}}.mind-elixir-toolbar{font-family:iconfont;position:absolute;background:#fff;padding:10px;border-radius:5px;box-shadow:0 1px 2px #0003}.mind-elixir-toolbar svg{display:inline-block}.mind-elixir-toolbar span:active{opacity:.5}.mind-elixir-toolbar.rb{right:20px;bottom:20px}.mind-elixir-toolbar.rb span+span{margin-left:10px}.mind-elixir-toolbar.lt{font-size:20px;left:20px;top:20px}.mind-elixir-toolbar.lt span{display:block}.mind-elixir-toolbar.lt span+span{margin-top:10px}")),document.head.appendChild(i)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
|
2 | (function(e) {
|
3 | var t, n, i, o, s, r, a = '<svg><symbol id="icon-edit" viewBox="0 0 1024 1024"><path d="M423.765333 128a42.666667 42.666667 0 0 1 3.2 85.205333L423.765333 213.333333H234.666667a64 64 0 0 0-63.872 60.245334L170.666667 277.333333v512a64 64 0 0 0 60.245333 63.872L234.666667 853.333333h512a64 64 0 0 0 63.872-60.245333L810.666667 789.333333v-189.098666a42.666667 42.666667 0 0 1 85.205333-3.2l0.128 3.2V789.333333a149.333333 149.333333 0 0 1-144.213333 149.248L746.666667 938.666667h-512a149.333333 149.333333 0 0 1-149.248-144.213334L85.333333 789.333333v-512a149.333333 149.333333 0 0 1 144.213334-149.248L234.666667 128h189.098666z m324.949334-53.248a42.666667 42.666667 0 0 1 60.330666 0l150.869334 150.869333a42.666667 42.666667 0 0 1 0 60.330667l-329.386667 329.386667a42.666667 42.666667 0 0 1-29.44 12.458666l-153.386667 2.517334a42.666667 42.666667 0 0 1-43.349333-43.349334l2.56-153.386666a42.666667 42.666667 0 0 1 12.458667-29.44z m30.165333 90.496L491.946667 452.266667l-1.493334 91.989333 92.032-1.493333 286.976-286.976-90.538666-90.538667z" ></path></symbol><symbol id="icon-rising" viewBox="0 0 1024 1024"><path d="M553.173333 803.84h-64l0.021334-474.581333-224.021334 224-45.269333-45.226667L521.6 206.293333l301.717333 301.696-45.269333 45.269334-224.853333-224.896v475.477333z" ></path></symbol><symbol id="icon-falling" viewBox="0 0 1024 1024"><path d="M553.173333 238.314667h-64l0.021334 474.602666-224.021334-224-45.269333 45.226667L521.6 835.861333l301.717333-301.717333-45.269333-45.226667-224.853333 224.853334V238.336z" ></path></symbol><symbol id="icon-shanchu2" viewBox="0 0 1024 1024"><path d="M516.60601807 107.93026734c-82.64382935 0-149.71865844 65.51751709-152.5729065 147.77160644H171.37136841c-21.40603638 0-38.92044068 17.38504028-38.92044068 38.92126465 0 21.40686036 17.38504028 38.92208862 38.92126466 38.92208862h42.94308471v435.40136719c0 81.73498536 55.39828492 148.55026245 123.90106201 148.55026245h348.99444581c68.37341309 0 123.90106201-66.42553711 123.901062-148.55026245V333.80477906h38.92126465c21.40686036 0 38.92126464-17.38586426 38.92126465-38.92208863 0-21.40686036-17.38504028-38.92126464-38.92126465-38.92126465H668.91854859C666.45321656 173.44860839 599.24902344 107.93109131 516.60601807 107.93109131z m-79.65939331 147.77160644c2.85424805-42.16442872 37.2354126-74.85809326 79.78875732-74.85809326s76.93450927 32.82302857 79.39984131 74.85809326H436.94662476z m-98.86047364 589.01165771c-24.2611084 0-50.98754883-31.13717651-50.98754883-75.76693725V333.80477906h450.97036744V769.33551026c0 44.50039673-26.72644043 75.76776123-50.98754884 75.76776122H338.08615112v-0.38973999z m0 0" ></path><path d="M390.37063599 751.17263794c17.77313232 0 32.43411255-17.7739563 32.43411255-40.08883667V482.35504151c0-22.31488037-14.53079224-40.08966065-32.43411255-40.08966065-17.77478027 0-32.43493653 17.77478027-32.43493653 40.08966065v228.72875976c0 22.18469239 14.27124023 40.08883667 32.43493653 40.08883667z m117.41308594 0c17.7739563 0 32.43411255-17.7739563 32.43411255-40.08883667V482.35504151c0-22.31488037-14.53079224-40.08966065-32.43411255-40.08966065-17.7739563 0-32.43493653 17.77478027-32.43493653 40.08966065v228.72875976c0 22.18469239 14.66098023 40.08883667 32.43493653 40.08883667z m123.51049804 0c17.7739563 0 32.43493653-17.7739563 32.43493652-40.08883667V482.35504151c0-22.31488037-14.53079224-40.08966065-32.43493652-40.08966065-17.7739563 0-32.43411255 17.77478027-32.43411255 40.08966065v228.72875976c0 22.18469239 14.14105224 40.08883667 32.43411255 40.08883667z m0 0" ></path></symbol><symbol id="icon-zijiedian" viewBox="0 0 1024 1024"><path d="M312.208 472c19.568-157.856 153.432-280 315.656-280 175.68 0 318.112 143.272 318.112 320S803.552 832 627.864 832c-162.224 0-296.08-122.144-315.656-280H120a40 40 0 0 1 0-80h192.208zM632 752c132.552 0 240-107.448 240-240 0-132.552-107.448-240-240-240-132.552 0-240 107.448-240 240 0 132.552 107.448 240 240 240z m-40-280v-80a40 40 0 0 1 80 0v80h80a40 40 0 0 1 0 80h-80v80a40 40 0 0 1-80 0v-80h-80a40 40 0 0 1 0-80h80z" ></path></symbol><symbol id="icon-tongjijiedian-" viewBox="0 0 1024 1024"><path d="M803.84 131.626667H410.24A59.733333 59.733333 0 0 0 350.506667 192v45.226667H199.68a51.626667 51.626667 0 0 0-51.626667 51.626666v465.92a51.626667 51.626667 0 0 0 51.626667 51.626667h187.52v-55.466667h-162.133333a21.333333 21.333333 0 0 1-21.333334-21.333333V313.386667a21.333333 21.333333 0 0 1 21.333334-21.333334h125.653333v64a59.733333 59.733333 0 0 0 59.733333 59.733334h393.386667a59.733333 59.733333 0 0 0 59.733333-59.733334V192a59.733333 59.733333 0 0 0-59.733333-60.373333z m4.266667 224.64a4.266667 4.266667 0 0 1-4.266667 4.266666H410.24a4.266667 4.266667 0 0 1-4.266667-4.266666V192a4.266667 4.266667 0 0 1 4.266667-4.266667h393.6a4.266667 4.266667 0 0 1 4.266667 4.266667zM716.16 749.44h-81.28v-81.493333a27.733333 27.733333 0 0 0-55.466667 0v81.28h-81.493333a27.733333 27.733333 0 1 0 0 55.466666h81.28v81.28a27.733333 27.733333 0 1 0 55.466667 0v-81.066666h81.28a27.733333 27.733333 0 0 0 0-55.466667z" ></path></symbol><symbol id="icon-close" viewBox="0 0 1024 1024"><path d="M557.312 513.248l265.28-263.904c12.544-12.48 12.608-32.704 0.128-45.248-12.512-12.576-32.704-12.608-45.248-0.128L512.128 467.904l-263.04-263.84c-12.448-12.48-32.704-12.544-45.248-0.064-12.512 12.48-12.544 32.736-0.064 45.28l262.976 263.776L201.6 776.8c-12.544 12.48-12.608 32.704-0.128 45.248a31.937 31.937 0 0 0 22.688 9.44c8.16 0 16.32-3.104 22.56-9.312l265.216-263.808 265.44 266.24c6.24 6.272 14.432 9.408 22.656 9.408a31.94 31.94 0 0 0 22.592-9.344c12.512-12.48 12.544-32.704 0.064-45.248L557.312 513.248z" fill="" ></path></symbol><symbol id="icon-menu" viewBox="0 0 1024 1024"><path d="M109.714 292.571h804.572c21.943 0 36.571-21.942 36.571-43.885 0-14.629-14.628-29.257-36.571-29.257H109.714c-21.943 0-36.571 14.628-36.571 36.571 0 14.629 14.628 36.571 36.571 36.571zM914.286 512H109.714c-21.943 0-36.571 14.629-36.571 36.571 0 14.629 14.628 36.572 36.571 36.572h804.572c21.943 0 36.571-21.943 36.571-43.886 0-14.628-14.628-29.257-36.571-29.257z m0 292.571H109.714c-21.943 0-36.571 14.629-36.571 36.572s14.628 36.571 36.571 36.571h804.572c21.943 0 36.571-21.943 36.571-36.571 0-21.943-14.628-36.572-36.571-36.572z" ></path></symbol><symbol id="icon-right" viewBox="0 0 1024 1024"><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="" ></path></symbol><symbol id="icon-left" viewBox="0 0 1024 1024"><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="" ></path></symbol><symbol id="icon-side" viewBox="0 0 1024 1024"><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" ></path></symbol><symbol id="icon-B" viewBox="0 0 1024 1024"><path d="M98.067692 65.457231H481.28c75.854769 0 132.411077 3.150769 169.668923 9.452307 37.336615 6.301538 70.656 19.534769 100.036923 39.620924 29.459692 20.007385 53.956923 46.710154 73.570462 80.029538 19.692308 33.398154 29.459692 70.734769 29.459692 112.167385 0 44.898462-12.130462 86.094769-36.233846 123.588923a224.886154 224.886154 0 0 1-98.461539 84.283077c58.368 17.092923 103.266462 46.08 134.695385 87.04 31.350154 40.96 47.025231 89.088 47.025231 144.462769 0 43.638154-10.082462 86.016-30.404923 127.212308-20.243692 41.196308-47.891692 74.043077-83.02277 98.697846-35.052308 24.654769-78.296615 39.778462-129.732923 45.449846-32.295385 3.465846-110.119385 5.671385-233.472 6.537846H98.067692V65.457231z m193.536 159.507692V446.621538h126.818462c75.460923 0 122.328615-1.024 140.603077-3.229538 33.083077-3.938462 59.155692-15.36 78.139077-34.343385 18.904615-18.904615 28.435692-43.874462 28.435692-74.830769 0-29.696-8.192-53.720615-24.497231-72.310154-16.384-18.510769-40.644923-29.696-72.940307-33.634461-19.140923-2.205538-74.279385-3.308308-165.415385-3.308308h-111.064615z m0 381.243077v256.315077h179.2c69.710769 0 113.979077-1.969231 132.726154-5.907692 28.750769-5.198769 52.145231-17.959385 70.262154-38.281847 18.116923-20.243692 27.096615-47.340308 27.096615-81.368615 0-28.750769-6.931692-53.169231-20.873846-73.255385a118.232615 118.232615 0 0 0-60.494769-43.795692c-26.387692-9.137231-83.574154-13.705846-171.638154-13.705846H291.603692z" ></path></symbol><symbol id="icon-a" viewBox="0 0 1024 1024"><path d="M757.76 665.6q0 20.48 1.536 34.304t7.68 22.016 18.944 12.288 34.304 4.096q-3.072 25.6-15.36 44.032-11.264 16.384-33.28 29.696t-62.976 13.312q-11.264 0-20.48-0.512t-17.408-2.56l-6.144-2.048-1.024 0q-4.096-1.024-10.24-4.096-2.048-2.048-4.096-2.048-1.024-1.024-2.048-1.024-14.336-8.192-23.552-17.408t-14.336-17.408q-6.144-10.24-9.216-20.48-63.488 75.776-178.176 75.776-48.128 0-88.064-15.36t-69.12-44.032-45.056-68.096-15.872-88.576 16.896-89.088 47.616-67.584 74.24-42.496 96.768-14.848q48.128 0 88.576 17.408t66.048 49.152q0-8.192 0.512-16.384t0.512-15.36q0-71.68-39.936-104.448t-128-32.768q-43.008 0-84.992 6.656t-84.992 17.92q14.336-28.672 25.088-47.616t24.064-29.184q30.72-24.576 158.72-24.576 79.872 0 135.168 13.824t90.624 43.52 51.2 75.264 15.872 108.032l0 200.704zM487.424 743.424q50.176 0 79.872-33.28t29.696-95.744q0-61.44-28.672-93.696t-76.8-32.256q-52.224 0-82.944 33.28t-30.72 94.72q0 58.368 31.744 92.672t77.824 34.304z" ></path></symbol><symbol id="icon-full" viewBox="0 0 1024 1024"><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" ></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" ></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" ></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" ></path></symbol><symbol id="icon-add" viewBox="0 0 1024 1024"><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" ></path></symbol><symbol id="icon-move" viewBox="0 0 1024 1024"><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" ></path></symbol><symbol id="icon-living" viewBox="0 0 1024 1024"><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="" ></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="" ></path></symbol></svg>', l = (l = document.getElementsByTagName("script"))[l.length - 1].getAttribute("data-injectcss");
|
4 | if (l && !e.__iconfont__svg__cssinject__) {
|
5 | e.__iconfont__svg__cssinject__ = !0;
|
6 | try {
|
7 | document.write(
|
8 | "<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>"
|
9 | );
|
10 | } catch (c) {
|
11 | console && console.log(c);
|
12 | }
|
13 | }
|
14 | function u() {
|
15 | s || (s = !0, i());
|
16 | }
|
17 | t = function() {
|
18 | var c, h, d, p;
|
19 | (p = document.createElement("div")).innerHTML = a, a = null, (d = p.getElementsByTagName("svg")[0]) && (d.setAttribute("aria-hidden", "true"), d.style.position = "absolute", d.style.width = 0, d.style.height = 0, d.style.overflow = "hidden", c = d, (h = document.body).firstChild ? (p = c, (d = h.firstChild).parentNode.insertBefore(p, d)) : h.appendChild(c));
|
20 | }, document.addEventListener ? ~["complete", "loaded", "interactive"].indexOf(document.readyState) ? setTimeout(t, 0) : (n = function() {
|
21 | document.removeEventListener("DOMContentLoaded", n, !1), t();
|
22 | }, document.addEventListener("DOMContentLoaded", n, !1)) : document.attachEvent && (i = t, o = e.document, s = !1, (r = function() {
|
23 | try {
|
24 | o.documentElement.doScroll("left");
|
25 | } catch {
|
26 | return void setTimeout(r, 50);
|
27 | }
|
28 | u();
|
29 | })(), o.onreadystatechange = function() {
|
30 | o.readyState == "complete" && (o.onreadystatechange = null, u());
|
31 | });
|
32 | })(window);
|
33 | const x = 0, P = 1, _ = 2, M = 30, w = 8, le = {
|
34 | name: "Latte",
|
35 | palette: ["#dd7878", "#ea76cb", "#8839ef", "#e64553", "#fe640b", "#df8e1d", "#40a02b", "#209fb5", "#1e66f5", "#7287fd"],
|
36 | cssVar: {
|
37 | "--main-color": "#444446",
|
38 | "--main-bgcolor": "#ffffff",
|
39 | "--color": "#777777",
|
40 | "--bgcolor": "#f6f6f6"
|
41 | }
|
42 | }, ce = {
|
43 | name: "Dark",
|
44 | palette: ["#848FA0", "#748BE9", "#D2F9FE", "#4145A5", "#789AFA", "#706CF4", "#EF987F", "#775DD5", "#FCEECF", "#DA7FBC"],
|
45 | cssVar: {
|
46 | "--main-color": "#ffffff",
|
47 | "--main-bgcolor": "#4c4f69",
|
48 | "--color": "#cccccc",
|
49 | "--bgcolor": "#252526"
|
50 | }
|
51 | };
|
52 | function q(e) {
|
53 | return e.replace(/&/g, "&").replace(/</g, "<").replace(/"/g, """);
|
54 | }
|
55 | const Ce = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), ae = function(e, t) {
|
56 | if (t.id === e)
|
57 | return t;
|
58 | if (t.children && t.children.length) {
|
59 | for (let n = 0; n < t.children.length; n++) {
|
60 | const i = ae(e, t.children[n]);
|
61 | if (i)
|
62 | return i;
|
63 | }
|
64 | return null;
|
65 | } else
|
66 | return null;
|
67 | }, L = (e, t) => {
|
68 | if (e.parent = t, e.children)
|
69 | for (let n = 0; n < e.children.length; n++)
|
70 | L(e.children[n], e);
|
71 | };
|
72 | function de(e) {
|
73 | if (e.id = I(), e.children)
|
74 | for (let t = 0; t < e.children.length; t++)
|
75 | de(e.children[t]);
|
76 | }
|
77 | const Ee = (e, t) => {
|
78 | let n = Date.now();
|
79 | return function(...i) {
|
80 | Date.now() - n >= t && (e(...i), n = Date.now());
|
81 | };
|
82 | };
|
83 | function he(e, t, n, i) {
|
84 | const o = i - t, s = e - n;
|
85 | let r = Math.atan(Math.abs(o) / Math.abs(s)) / 3.14 * 180;
|
86 | s < 0 && o > 0 && (r = 180 - r), s < 0 && o < 0 && (r = 180 + r), s > 0 && o < 0 && (r = 360 - r);
|
87 | const a = 20, l = 30, u = r + l, c = r - l;
|
88 | return {
|
89 | x1: n + Math.cos(Math.PI * u / 180) * a,
|
90 | y1: i - Math.sin(Math.PI * u / 180) * a,
|
91 | x2: n + Math.cos(Math.PI * c / 180) * a,
|
92 | y2: i - Math.sin(Math.PI * c / 180) * a
|
93 | };
|
94 | }
|
95 | function U(e, t, n) {
|
96 | let i, o;
|
97 | const s = (e.cy - n) / (t - e.cx);
|
98 | return s > e.h / e.w || s < -e.h / e.w ? e.cy - n < 0 ? (i = e.cx - e.h / 2 / s, o = e.cy + e.h / 2) : (i = e.cx + e.h / 2 / s, o = e.cy - e.h / 2) : e.cx - t < 0 ? (i = e.cx + e.w / 2, o = e.cy - e.w * s / 2) : (i = e.cx - e.w / 2, o = e.cy + e.w * s / 2), {
|
99 | x: i,
|
100 | y: o
|
101 | };
|
102 | }
|
103 | function G(e, t, n) {
|
104 | let i, o;
|
105 | const s = (e.cy - n) / (t - e.cx);
|
106 | return s > e.h / e.w || s < -e.h / e.w ? e.cy - n < 0 ? (i = e.cx - e.h / 2 / s, o = e.cy + e.h / 2) : (i = e.cx + e.h / 2 / s, o = e.cy - e.h / 2) : e.cx - t < 0 ? (i = e.cx + e.w / 2, o = e.cy - e.w * s / 2) : (i = e.cx - e.w / 2, o = e.cy + e.w * s / 2), {
|
107 | x: i,
|
108 | y: o
|
109 | };
|
110 | }
|
111 | function I() {
|
112 | return (( new Date()).getTime().toString(16) + Math.random().toString(16).substr(2)).substr(2, 16);
|
113 | }
|
114 | const ke = function() {
|
115 | const e = I();
|
116 | return {
|
117 | topic: this.newTopicName,
|
118 | id: e
|
119 | };
|
120 | };
|
121 | function xe(e, t) {
|
122 | let n = !0;
|
123 | for (; t.parent; ) {
|
124 | if (t.parent === e) {
|
125 | n = !1;
|
126 | break;
|
127 | }
|
128 | t = t.parent;
|
129 | }
|
130 | return n;
|
131 | }
|
132 | const T = (e) => {
|
133 | var i;
|
134 | const t = (i = e.parent) == null ? void 0 : i.children, n = t.indexOf(e);
|
135 | return { siblings: t, index: n };
|
136 | };
|
137 | function we(e) {
|
138 | const { siblings: t, index: n } = T(e), i = t[n];
|
139 | n === 0 ? (t[n] = t[t.length - 1], t[t.length - 1] = i) : (t[n] = t[n - 1], t[n - 1] = i);
|
140 | }
|
141 | function Me(e) {
|
142 | const { siblings: t, index: n } = T(e), i = t[n];
|
143 | n === t.length - 1 ? (t[n] = t[0], t[0] = i) : (t[n] = t[n + 1], t[n + 1] = i);
|
144 | }
|
145 | function Y(e) {
|
146 | const { siblings: t, index: n } = T(e);
|
147 | return t.splice(n, 1), t.length;
|
148 | }
|
149 | function Le(e, t) {
|
150 | const { siblings: n, index: i } = T(e);
|
151 | n.splice(i + 1, 0, t);
|
152 | }
|
153 | function $e(e, t) {
|
154 | const { siblings: n, index: i } = T(e);
|
155 | n.splice(i, 0, t);
|
156 | }
|
157 | function Se(e, t) {
|
158 | const { siblings: n, index: i } = T(e);
|
159 | n[i] = t, t.children = [e];
|
160 | }
|
161 | function Te(e, t) {
|
162 | Y(e), t.children ? t.children.push(e) : t.children = [e];
|
163 | }
|
164 | function Pe(e, t) {
|
165 | Y(e);
|
166 | const { siblings: n, index: i } = T(t);
|
167 | n.splice(i, 0, e);
|
168 | }
|
169 | function Oe(e, t) {
|
170 | Y(e);
|
171 | const { siblings: n, index: i } = T(t);
|
172 | n.splice(i + 1, 0, e);
|
173 | }
|
174 | function ue(e) {
|
175 | return JSON.parse(
|
176 | JSON.stringify(e, (n, i) => {
|
177 | if (n !== "parent")
|
178 | return i;
|
179 | })
|
180 | );
|
181 | }
|
182 | const j = {
|
183 | afterMoving: !1,
|
184 |
|
185 | mousedown: !1,
|
186 | lastX: 0,
|
187 | lastY: 0,
|
188 | onMove(e, t) {
|
189 | if (this.mousedown) {
|
190 | if (this.afterMoving = !0, !this.lastX) {
|
191 | this.lastX = e.pageX, this.lastY = e.pageY;
|
192 | return;
|
193 | }
|
194 | const n = this.lastX - e.pageX, i = this.lastY - e.pageY;
|
195 | t.scrollTo(t.scrollLeft + n, t.scrollTop + i), this.lastX = e.pageX, this.lastY = e.pageY;
|
196 | }
|
197 | },
|
198 | clear() {
|
199 | this.afterMoving = !1, this.mousedown = !1, this.lastX = 0, this.lastY = 0;
|
200 | }
|
201 | }, Z = (e) => e.tagName === "ME-TPC";
|
202 | function Ae(e) {
|
203 | e.map.addEventListener("click", (t) => {
|
204 | var i;
|
205 | const n = t.target;
|
206 | if (n.tagName === "ME-EPD")
|
207 | e.expandNode(n.previousSibling);
|
208 | else if (e.editable)
|
209 | Z(n) ? e.selectNode(n, !1, t) : n.tagName === "path" ? ((i = n == null ? void 0 : n.parentElement) == null ? void 0 : i.tagName) === "g" && e.selectLink(n.parentElement) : n.className === "circle" || (e.unselectNode(), e.hideLinkController && e.hideLinkController());
|
210 | else
|
211 | return;
|
212 | }), e.map.addEventListener("dblclick", (t) => {
|
213 | if (t.preventDefault(), !e.editable)
|
214 | return;
|
215 | const n = t.target;
|
216 | Z(n) && e.beginEdit(n);
|
217 | }), e.map.addEventListener("mousemove", (t) => {
|
218 | t.target.contentEditable !== "true" && j.onMove(t, e.container);
|
219 | }), e.map.addEventListener("mousedown", (t) => {
|
220 | t.target.contentEditable !== "true" && (j.afterMoving = !1, j.mousedown = !0);
|
221 | }), e.map.addEventListener("mouseleave", () => {
|
222 | j.clear();
|
223 | }), e.map.addEventListener("mouseup", () => {
|
224 | j.clear();
|
225 | });
|
226 | }
|
227 | const De = {
|
228 | create() {
|
229 | return {
|
230 | handlers: {},
|
231 | showHandler: function() {
|
232 | console.log(this.handlers);
|
233 | },
|
234 | addListener: function(e, t) {
|
235 | this.handlers[e] === void 0 && (this.handlers[e] = []), this.handlers[e].push(t);
|
236 | },
|
237 | fire: function(e, ...t) {
|
238 | if (this.handlers[e] instanceof Array) {
|
239 | const n = this.handlers[e];
|
240 | for (let i = 0; i < n.length; i++)
|
241 | n[i](...t);
|
242 | }
|
243 | },
|
244 | removeListener: function(e, t) {
|
245 | if (!this.handlers[e])
|
246 | return;
|
247 | const n = this.handlers[e];
|
248 | if (!t)
|
249 | n.length = 0;
|
250 | else if (n.length)
|
251 | for (let i = 0; i < n.length; i++)
|
252 | n[i] === t && this.handlers[e].splice(i, 1);
|
253 | }
|
254 | };
|
255 | }
|
256 | }, R = document, je = function() {
|
257 | console.time("layout"), this.nodes.innerHTML = "";
|
258 | const e = this.createTopic(this.nodeData);
|
259 | Q(e, this.nodeData), e.draggable = !1;
|
260 | const t = R.createElement("me-root");
|
261 | t.appendChild(e);
|
262 | const n = this.nodeData.children || [];
|
263 | if (this.direction === _) {
|
264 | let i = 0, o = 0;
|
265 | n.map((s) => {
|
266 | s.direction === x ? i += 1 : s.direction === P ? o += 1 : i <= o ? (s.direction = x, i += 1) : (s.direction = P, o += 1);
|
267 | });
|
268 | }
|
269 | He(this, n, t), console.timeEnd("layout");
|
270 | }, He = function(e, t, n) {
|
271 | const i = R.createElement("me-main");
|
272 | i.className = "lhs";
|
273 | const o = R.createElement("me-main");
|
274 | o.className = "rhs";
|
275 | for (let s = 0; s < t.length; s++) {
|
276 | const r = t[s], { grp: a } = e.createWrapper(r);
|
277 | e.direction === _ ? r.direction === x ? i.appendChild(a) : o.appendChild(a) : e.direction === x ? i.appendChild(a) : o.appendChild(a);
|
278 | }
|
279 | e.nodes.appendChild(i), e.nodes.appendChild(n), e.nodes.appendChild(o), e.nodes.appendChild(e.lines);
|
280 | }, Be = function(e, t) {
|
281 | const n = R.createElement("me-children");
|
282 | for (let i = 0; i < t.length; i++) {
|
283 | const o = t[i], { grp: s } = e.createWrapper(o);
|
284 | n.appendChild(s);
|
285 | }
|
286 | return n;
|
287 | }, k = document, E = (e, t) => (t ? t.mindElixirBox : k).querySelector(`[data-nodeid=me${e}]`), Q = function(e, t) {
|
288 | if (e.textContent = t.topic, t.style && (e.style.color = t.style.color || "", e.style.background = t.style.background || "", e.style.fontSize = t.style.fontSize + "px", e.style.fontWeight = t.style.fontWeight || "normal"), t.image) {
|
289 | const n = t.image;
|
290 | if (n.url && n.width && n.height) {
|
291 | const i = k.createElement("img");
|
292 | i.src = n.url, i.style.width = n.width + "px", i.style.height = n.height + "px", e.appendChild(i), e.image = i;
|
293 | } else
|
294 | console.warn("image url/width/height are required");
|
295 | }
|
296 | if (t.hyperLink) {
|
297 | const n = k.createElement("a");
|
298 | n.className = "hyper-link", n.target = "_blank", n.innerText = "🔗", n.href = t.hyperLink, e.appendChild(n), e.linkContainer = n, console.log(n);
|
299 | } else
|
300 | e.linkContainer && (e.linkContainer.remove(), e.linkContainer = null);
|
301 | if (t.icons && t.icons.length) {
|
302 | const n = k.createElement("span");
|
303 | n.className = "icons", n.innerHTML = t.icons.map((i) => `<span>${q(i)}</span>`).join(""), e.appendChild(n), e.icons = n;
|
304 | }
|
305 | if (t.tags && t.tags.length) {
|
306 | const n = k.createElement("div");
|
307 | n.className = "tags", n.innerHTML = t.tags.map((i) => `<span>${q(i)}</span>`).join(""), e.appendChild(n), e.tags = n;
|
308 | }
|
309 | t.branchColor && (e.style.borderColor = t.branchColor);
|
310 | }, _e = function(e, t) {
|
311 | const n = k.createElement("me-wrapper"), { p: i, tpc: o } = this.createParent(e);
|
312 | if (n.appendChild(i), !t && e.children && e.children.length > 0) {
|
313 | const s = X(e.expanded);
|
314 | if (i.appendChild(s), e.expanded !== !1) {
|
315 | const r = Be(this, e.children);
|
316 | n.appendChild(r);
|
317 | }
|
318 | }
|
319 | return { grp: n, top: i, tpc: o };
|
320 | }, ze = function(e) {
|
321 | const t = k.createElement("me-parent"), n = this.createTopic(e);
|
322 | return Q(n, e), t.appendChild(n), { p: t, tpc: n };
|
323 | }, Ve = function(e) {
|
324 | const t = k.createElement("me-children");
|
325 | return t.append(...e), t;
|
326 | }, Fe = function(e) {
|
327 | const t = k.createElement("me-tpc");
|
328 | return t.nodeObj = e, t.dataset.nodeid = "me" + e.id, t.draggable = this.draggable, t;
|
329 | };
|
330 | function qe(e) {
|
331 | const t = k.createRange();
|
332 | t.selectNodeContents(e);
|
333 | const n = window.getSelection();
|
334 | n && (n.removeAllRanges(), n.addRange(t));
|
335 | }
|
336 | const Re = function(e) {
|
337 | if (console.time("createInputDiv"), !e)
|
338 | return;
|
339 | const t = k.createElement("div"), n = e.childNodes[0].textContent;
|
340 | e.appendChild(t), t.id = "input-box", t.textContent = n, t.contentEditable = "true", t.spellcheck = !1, t.style.cssText = `min-width:${e.offsetWidth - 8}px;`, this.direction === x && (t.style.right = "0"), t.focus(), qe(t), this.inputDiv = t, this.bus.fire("operation", {
|
341 | name: "beginEdit",
|
342 | obj: e.nodeObj
|
343 | }), t.addEventListener("keydown", (i) => {
|
344 | var s;
|
345 | i.stopPropagation();
|
346 | const o = i.key;
|
347 | if (o === "Enter" || o === "Tab") {
|
348 | if (i.shiftKey)
|
349 | return;
|
350 | i.preventDefault(), (s = this.inputDiv) == null || s.blur(), this.map.focus();
|
351 | }
|
352 | }), t.addEventListener("blur", () => {
|
353 | var s;
|
354 | if (!t)
|
355 | return;
|
356 | const i = e.nodeObj, o = ((s = t.textContent) == null ? void 0 : s.trim()) || "";
|
357 | console.log(o), o === "" ? i.topic = n : i.topic = o, t.remove(), this.inputDiv = null, o !== n && (e.childNodes[0].textContent = i.topic, this.linkDiv(), this.bus.fire("operation", {
|
358 | name: "finishEdit",
|
359 | obj: i,
|
360 | origin: n
|
361 | }));
|
362 | }), console.timeEnd("createInputDiv");
|
363 | }, X = function(e) {
|
364 | const t = k.createElement("me-epd");
|
365 | return t.expanded = e !== !1, t.className = e !== !1 ? "minus" : "", t;
|
366 | }, A = document, D = "http://www.w3.org/2000/svg", Ie = function(e, t) {
|
367 | const n = A.createElementNS(D, "path");
|
368 | return n.setAttribute("d", e), n.setAttribute("stroke", t || "#666"), n.setAttribute("fill", "none"), n.setAttribute("stroke-width", "3"), n;
|
369 | }, F = function(e) {
|
370 | const t = A.createElementNS(D, "svg");
|
371 | return t.setAttribute("class", e), t;
|
372 | }, ee = function(e, t, n, i) {
|
373 | const o = A.createElementNS(D, "line");
|
374 | return o.setAttribute("x1", String(e)), o.setAttribute("y1", String(t)), o.setAttribute("x2", String(n)), o.setAttribute("y2", String(i)), o.setAttribute("stroke", "#bbb"), o.setAttribute("fill", "none"), o.setAttribute("stroke-width", "2"), o;
|
375 | }, Ye = function(e, t) {
|
376 | const n = A.createElementNS(D, "path");
|
377 | return n.setAttribute("d", e), n.setAttribute("stroke", t || "#555"), n.setAttribute("fill", "none"), n.setAttribute("stroke-linecap", "square"), n.setAttribute("stroke-width", "2"), n;
|
378 | }, Xe = function(e, t) {
|
379 | const n = A.createElementNS(D, "g"), i = A.createElementNS(D, "path"), o = A.createElementNS(D, "path");
|
380 | return o.setAttribute("d", t), o.setAttribute("stroke", "rgb(235, 95, 82)"), o.setAttribute("fill", "none"), o.setAttribute("stroke-linecap", "cap"), o.setAttribute("stroke-width", "2"), i.setAttribute("d", e), i.setAttribute("stroke", "rgb(235, 95, 82)"), i.setAttribute("fill", "none"), i.setAttribute("stroke-linecap", "cap"), i.setAttribute("stroke-width", "2"), n.appendChild(i), n.appendChild(o), n;
|
381 | }, We = (e, t) => {
|
382 | let n = 0, i = 0;
|
383 | for (; t && t !== e; )
|
384 | n += t.offsetLeft, i += t.offsetTop, t = t.offsetParent;
|
385 | return { offsetLeft: n, offsetTop: i };
|
386 | };
|
387 | let fe = me;
|
388 | const Ue = function(e) {
|
389 | console.time("linkDiv");
|
390 | const t = this.map.querySelector("me-root");
|
391 | this.nodes.style.top = `${1e4 - this.nodes.offsetHeight / 2}px`, this.nodes.style.left = `${1e4 - t.offsetLeft - t.offsetWidth / 2}px`;
|
392 | const n = this.map.querySelectorAll("me-main > me-wrapper");
|
393 | this.lines.innerHTML = "", fe = this.subLinkStyle === 2 ? Je : me;
|
394 | for (let i = 0; i < n.length; i++) {
|
395 | const o = n[i], s = o.querySelector("me-tpc"), r = o.firstChild, a = o.parentNode.className;
|
396 | let l = t.offsetLeft + t.offsetWidth / 2;
|
397 | const u = t.offsetTop + t.offsetHeight / 2;
|
398 | let c;
|
399 | const h = this.theme.palette, d = s.nodeObj.branchColor || h[i % h.length], { offsetLeft: p, offsetTop: g } = We(this.nodes, r);
|
400 | a === "lhs" ? c = p + r.offsetWidth : c = p;
|
401 | const f = g + r.offsetHeight / 2;
|
402 | let m = "";
|
403 | if (this.mainLinkStyle === 2)
|
404 | this.direction === _ && (a === "lhs" ? l = l - t.offsetWidth / 6 : l = l + t.offsetWidth / 6), m = Ge({ x1: l, y1: u, x2: c, y2: f });
|
405 | else {
|
406 | const y = (1 - Math.abs(f - o.parentElement.offsetTop - o.parentElement.offsetHeight / 2) / o.parentElement.offsetHeight) * 0.25 * (t.offsetWidth / 2);
|
407 | a === "lhs" ? l = l - t.offsetWidth / 10 - y : l = l + t.offsetWidth / 10 + y, m = Ke({ x1: l, y1: u, x2: c, y2: f });
|
408 | }
|
409 | this.lines.appendChild(Ie(m, d));
|
410 | const b = o.children[0].children[1];
|
411 | if (b && (b.style.top = (b.parentNode.offsetHeight - b.offsetHeight) / 2 + "px", a === "lhs" ? b.style.left = "-10px" : b.style.right = "-10px"), !(e && e !== o) && o.childElementCount) {
|
412 | const v = F("subLines"), y = o.lastChild;
|
413 | y.tagName === "svg" && y.remove(), o.appendChild(v);
|
414 | const N = o.firstChild, C = o.children[1].children, H = pe(C, N, a, !0);
|
415 | v.appendChild(Ye(H, d));
|
416 | }
|
417 | }
|
418 | this.linkSvgGroup.innerHTML = "";
|
419 | for (const i in this.linkData) {
|
420 | const o = this.linkData[i];
|
421 | this.createLink(E(o.from), E(o.to), !0, o);
|
422 | }
|
423 | console.timeEnd("linkDiv");
|
424 | }, pe = function(e, t, n, i) {
|
425 | let o = "";
|
426 | const s = t.offsetTop, r = t.offsetLeft, a = t.offsetWidth, l = t.offsetHeight;
|
427 | for (let u = 0; u < e.length; u++) {
|
428 | const c = e[u], h = c.firstChild, d = h.offsetTop, p = h.offsetLeft, g = h.offsetWidth, f = h.offsetHeight;
|
429 | o += fe({ pT: s, pL: r, pW: a, pH: l, cT: d, cL: p, cW: g, cH: f, direction: n, isFirst: i });
|
430 | const m = h.children[1];
|
431 | if (m) {
|
432 | if (m.style.bottom = -(m.offsetHeight / 2) + "px", n === "lhs" ? m.style.left = "10px" : n === "rhs" && (m.style.right = "10px"), !m.expanded)
|
433 | continue;
|
434 | } else
|
435 | continue;
|
436 | const b = c.children[1].children;
|
437 | b.length > 0 && (o += pe(b, h, n));
|
438 | }
|
439 | return o;
|
440 | };
|
441 | function Ge({ x1: e, y1: t, x2: n, y2: i }) {
|
442 | return `M ${e} ${t} V ${i > t ? i - 20 : i + 20} C ${e} ${i} ${e} ${i} ${n > e ? e + 20 : e - 20} ${i} H ${n}`;
|
443 | }
|
444 | function Ke({ x1: e, y1: t, x2: n, y2: i }) {
|
445 | return `M ${e} ${t} Q ${e} ${i} ${n} ${i}`;
|
446 | }
|
447 | function Je({ pT: e, pL: t, pW: n, pH: i, cT: o, cL: s, cW: r, cH: a, direction: l, isFirst: u }) {
|
448 | let c;
|
449 | u ? c = e + i / 2 : c = e + i;
|
450 | const h = o + a;
|
451 | let d = 0, p = 0, g = 0;
|
452 | return l === "lhs" ? (d = t + M, p = s, g = s + r) : l === "rhs" && (d = t + n - M, p = s + r, g = s), h < c + 50 && h > c - 50 ? `M ${d} ${c} H ${g} V ${h} H ${p}` : h >= c ? `M ${d} ${c} H ${g} V ${h - w} A ${w} ${w} 0 0 ${d > p ? 1 : 0} ${d > p ? g - w : g + w} ${h} H ${p}` : `M ${d} ${c} H ${g} V ${h + w} A ${w} ${w} 0 0 ${d > p ? 0 : 1} ${d > p ? g - w : g + w} ${h} H ${p}`;
|
453 | }
|
454 | function me({ pT: e, pL: t, pW: n, pH: i, cT: o, cL: s, cW: r, cH: a, direction: l, isFirst: u }) {
|
455 | let c = 0, h = 0;
|
456 | u ? c = e + i / 2 : c = e + i;
|
457 | const d = o + a;
|
458 | let p = 0, g = 0, f = 0;
|
459 | const m = Math.min(Math.abs(c - d) / 800, 1.2) * M;
|
460 | return l === "lhs" ? (f = t, p = f + M, g = f - M, h = s + M, `M ${p} ${c} C ${f} ${c} ${f + m} ${d} ${g} ${d} H ${h}`) : (f = t + n, p = f - M, g = f + M, h = s + r - M, `M ${p} ${c} C ${f} ${c} ${f - m} ${d} ${g} ${d} H ${h}`);
|
461 | }
|
462 | const te = {
|
463 | addChild: "插入子节点",
|
464 | addParent: "插入父节点",
|
465 | addSibling: "插入同级节点",
|
466 | removeNode: "删除节点",
|
467 | focus: "专注",
|
468 | cancelFocus: "取消专注",
|
469 | moveUp: "上移",
|
470 | moveDown: "下移",
|
471 | link: "连接",
|
472 | clickTips: "请点击目标节点"
|
473 | }, ne = {
|
474 | cn: te,
|
475 | zh_CN: te,
|
476 | zh_TW: {
|
477 | addChild: "插入子節點",
|
478 | addParent: "插入父節點",
|
479 | addSibling: "插入同級節點",
|
480 | removeNode: "刪除節點",
|
481 | focus: "專注",
|
482 | cancelFocus: "取消專注",
|
483 | moveUp: "上移",
|
484 | moveDown: "下移",
|
485 | link: "連接",
|
486 | clickTips: "請點擊目標節點"
|
487 | },
|
488 | en: {
|
489 | addChild: "Add child",
|
490 | addParent: "Add parent",
|
491 | addSibling: "Add sibling",
|
492 | removeNode: "Remove node",
|
493 | focus: "Focus Mode",
|
494 | cancelFocus: "Cancel Focus Mode",
|
495 | moveUp: "Move up",
|
496 | moveDown: "Move down",
|
497 | link: "Link",
|
498 | clickTips: "Please click the target node"
|
499 | },
|
500 | ru: {
|
501 | addChild: "Добавить дочерний элемент",
|
502 | addParent: "Добавить родительский элемент",
|
503 | addSibling: "Добавить на этом уровне",
|
504 | removeNode: "Удалить узел",
|
505 | focus: "Режим фокусировки",
|
506 | cancelFocus: "Отменить режим фокусировки",
|
507 | moveUp: "Поднять выше",
|
508 | moveDown: "Опустить ниже",
|
509 | link: "Ссылка",
|
510 | clickTips: "Пожалуйста, нажмите на целевой узел"
|
511 | },
|
512 | ja: {
|
513 | addChild: "子ノードを追加する",
|
514 | addParent: "親ノードを追加します",
|
515 | addSibling: "兄弟ノードを追加する",
|
516 | removeNode: "ノードを削除",
|
517 | focus: "集中",
|
518 | cancelFocus: "集中解除",
|
519 | moveUp: "上へ移動",
|
520 | moveDown: "下へ移動",
|
521 | link: "コネクト",
|
522 | clickTips: "ターゲットノードをクリックしてください"
|
523 | },
|
524 | pt: {
|
525 | addChild: "Adicionar item filho",
|
526 | addParent: "Adicionar item pai",
|
527 | addSibling: "Adicionar item irmao",
|
528 | removeNode: "Remover item",
|
529 | focus: "Modo Foco",
|
530 | cancelFocus: "Cancelar Modo Foco",
|
531 | moveUp: "Mover para cima",
|
532 | moveDown: "Mover para baixo",
|
533 | link: "Link",
|
534 | clickTips: "Favor clicar no item alvo"
|
535 | }
|
536 | };
|
537 | function Qe(e, t) {
|
538 | const n = (v) => {
|
539 | const y = document.createElement("div");
|
540 | return y.innerText = v, y.style.cssText = "position:absolute;bottom:20px;left:50%;transform:translateX(-50%);", y;
|
541 | }, i = (v, y, N) => {
|
542 | const C = document.createElement("li");
|
543 | return C.id = v, C.innerHTML = `<span>${q(y)}</span><span>${q(N)}</span>`, C;
|
544 | }, o = ne[e.locale] ? e.locale : "en", s = ne[o], r = i("cm-add_child", s.addChild, "tab"), a = i("cm-add_parent", s.addParent, ""), l = i("cm-add_sibling", s.addSibling, "enter"), u = i("cm-remove_child", s.removeNode, "delete"), c = i("cm-fucus", s.focus, ""), h = i("cm-unfucus", s.cancelFocus, ""), d = i("cm-up", s.moveUp, "PgUp"), p = i("cm-down", s.moveDown, "Pgdn"), g = i("cm-down", s.link, ""), f = document.createElement("ul");
|
545 | if (f.className = "menu-list", f.appendChild(r), f.appendChild(a), f.appendChild(l), f.appendChild(u), (!t || t.focus) && (f.appendChild(c), f.appendChild(h)), f.appendChild(d), f.appendChild(p), (!t || t.link) && f.appendChild(g), t && t.extend)
|
546 | for (let v = 0; v < t.extend.length; v++) {
|
547 | const y = t.extend[v], N = i(y.name, y.name, y.key || "");
|
548 | f.appendChild(N), N.onclick = (C) => {
|
549 | y.onclick(C);
|
550 | };
|
551 | }
|
552 | const m = document.createElement("div");
|
553 | m.className = "context-menu", m.appendChild(f), m.hidden = !0, e.container.append(m);
|
554 | let b = !0;
|
555 | e.container.oncontextmenu = function(v) {
|
556 | if (v.preventDefault(), !e.editable)
|
557 | return;
|
558 | const y = v.target;
|
559 | if (y.tagName === "ME-TPC") {
|
560 | y.parentElement.tagName === "ME-ROOT" ? b = !0 : b = !1, b ? (c.className = "disabled", d.className = "disabled", p.className = "disabled", l.className = "disabled", u.className = "disabled") : (c.className = "", d.className = "", p.className = "", l.className = "", u.className = ""), e.selectNode(y), m.hidden = !1;
|
561 | const N = f.offsetHeight, C = f.offsetWidth;
|
562 | N + v.clientY > window.innerHeight ? (f.style.top = "", f.style.bottom = "0px") : (f.style.bottom = "", f.style.top = v.clientY + 15 + "px"), C + v.clientX > window.innerWidth ? (f.style.left = "", f.style.right = "0px") : (f.style.right = "", f.style.left = v.clientX + 10 + "px");
|
563 | }
|
564 | }, m.onclick = (v) => {
|
565 | v.target === m && (m.hidden = !0);
|
566 | }, r.onclick = () => {
|
567 | e.addChild(), m.hidden = !0;
|
568 | }, a.onclick = () => {
|
569 | e.insertParent(), m.hidden = !0;
|
570 | }, l.onclick = () => {
|
571 | b || (e.insertSibling(), m.hidden = !0);
|
572 | }, u.onclick = () => {
|
573 | b || (e.removeNode(), m.hidden = !0);
|
574 | }, c.onclick = () => {
|
575 | b || (e.focusNode(e.currentNode), m.hidden = !0);
|
576 | }, h.onclick = () => {
|
577 | e.cancelFocus(), m.hidden = !0;
|
578 | }, d.onclick = () => {
|
579 | b || (e.moveUpNode(), m.hidden = !0);
|
580 | }, p.onclick = () => {
|
581 | b || (e.moveDownNode(), m.hidden = !0);
|
582 | }, g.onclick = () => {
|
583 | m.hidden = !0;
|
584 | const v = e.currentNode, y = n(s.clickTips);
|
585 | e.container.appendChild(y), e.map.addEventListener(
|
586 | "click",
|
587 | (N) => {
|
588 | N.preventDefault(), y.remove();
|
589 | const C = N.target;
|
590 | C.parentElement.tagName === "ME-PARENT" || C.parentElement.tagName === "ME-ROOT" ? e.createLink(v, e.currentNode) : console.log("link cancel");
|
591 | },
|
592 | {
|
593 | once: !0
|
594 | }
|
595 | );
|
596 | };
|
597 | }
|
598 | const Ze = (e) => {
|
599 | const t = e.map.querySelectorAll(".lhs>me-wrapper>me-parent>me-tpc");
|
600 | e.selectNode(t[Math.ceil(t.length / 2) - 1]);
|
601 | }, et = (e) => {
|
602 | const t = e.map.querySelectorAll(".rhs>me-wrapper>me-parent>me-tpc");
|
603 | e.selectNode(t[Math.ceil(t.length / 2) - 1]);
|
604 | }, ie = (e) => {
|
605 | e.selectNode(e.map.querySelector("me-root>me-tpc"));
|
606 | };
|
607 | function tt(e) {
|
608 | const t = {
|
609 | 13: () => {
|
610 | e.insertSibling();
|
611 | },
|
612 | 9: () => {
|
613 | e.addChild();
|
614 | },
|
615 | 113: () => {
|
616 | e.beginEdit();
|
617 | },
|
618 | 38: () => {
|
619 | e.selectPrevSibling();
|
620 | },
|
621 | 40: () => {
|
622 | e.selectNextSibling();
|
623 | },
|
624 | 37: () => {
|
625 | var o;
|
626 | if (!e.currentNode)
|
627 | return;
|
628 | const n = e.currentNode.nodeObj, i = e.currentNode.offsetParent.offsetParent.parentElement;
|
629 | e.currentNode.nodeObj.root ? Ze(e) : i.className === "rhs" ? (o = n.parent) != null && o.root ? ie(e) : e.selectParent() : i.className === "lhs" && e.selectFirstChild();
|
630 | },
|
631 | 39: () => {
|
632 | var o;
|
633 | if (!e.currentNode)
|
634 | return;
|
635 | const n = e.currentNode.nodeObj, i = e.currentNode.offsetParent.offsetParent.parentElement;
|
636 | n.root ? et(e) : i.className === "lhs" ? (o = n.parent) != null && o.root ? ie(e) : e.selectParent() : i.className === "rhs" && e.selectFirstChild();
|
637 | },
|
638 | 33() {
|
639 | e.moveUpNode();
|
640 | },
|
641 | 34() {
|
642 | e.moveDownNode();
|
643 | },
|
644 | 67: (n) => {
|
645 | (n.metaKey || n.ctrlKey) && (e.waitCopy = e.currentNode);
|
646 | },
|
647 | 86: (n) => {
|
648 | !e.waitCopy || !e.currentNode || (n.metaKey || n.ctrlKey) && (e.copyNode(e.waitCopy, e.currentNode), e.waitCopy = null);
|
649 | },
|
650 |
|
651 | 187: (n) => {
|
652 | if (n.metaKey || n.ctrlKey) {
|
653 | if (e.scaleVal > 1.6)
|
654 | return;
|
655 | e.scale(e.scaleVal += 0.2);
|
656 | }
|
657 | },
|
658 |
|
659 | 189: (n) => {
|
660 | if (n.metaKey || n.ctrlKey) {
|
661 | if (e.scaleVal < 0.6)
|
662 | return;
|
663 | e.scale(e.scaleVal -= 0.2);
|
664 | }
|
665 | }
|
666 | };
|
667 | e.map.onkeydown = (n) => {
|
668 | if (n.preventDefault(), !!e.editable && n.target === n.currentTarget)
|
669 | if (n.keyCode === 8 || n.keyCode === 46)
|
670 | e.currentLink ? e.removeLink() : e.removeNode();
|
671 | else {
|
672 | const i = t[n.keyCode];
|
673 | i && i(n);
|
674 | }
|
675 | };
|
676 | }
|
677 | function nt(e, t) {
|
678 | const n = (d, p) => {
|
679 | const g = document.createElement("div");
|
680 | return g.id = d, g.innerHTML = `<svg class="icon" aria-hidden="true">
|
681 | <use xlink:href="#icon-${p}"></use>
|
682 | </svg>`, g;
|
683 | }, i = n("cm-add_child", "zijiedian"), o = n("cm-add_sibling", "tongjijiedian-"), s = n("cm-remove_child", "shanchu2"), r = n("cm-up", "rising"), a = n("cm-down", "falling"), l = n("cm-edit", "edit"), u = document.createElement("ul");
|
684 | if (u.className = "menu-list", t && t.extend)
|
685 | for (let d = 0; d < t.extend.length; d++) {
|
686 | const p = t.extend[d], g = n(p.name, p.name);
|
687 | u.appendChild(g), g.onclick = (f) => {
|
688 | p.onclick(f);
|
689 | };
|
690 | }
|
691 | const c = document.createElement("mmenu");
|
692 | c.className = "mobile-menu", c.appendChild(i), c.appendChild(o), c.appendChild(s), c.appendChild(r), c.appendChild(a), c.appendChild(l), c.hidden = !0, e.container.append(c);
|
693 | let h = !0;
|
694 | e.bus.addListener("unselectNode", function() {
|
695 | c.hidden = !0;
|
696 | }), e.bus.addListener("selectNode", function(d) {
|
697 | c.hidden = !1, d.root ? h = !0 : h = !1;
|
698 | }), c.onclick = (d) => {
|
699 | d.target === c && (c.hidden = !0);
|
700 | }, i.onclick = () => {
|
701 | e.addChild();
|
702 | }, o.onclick = () => {
|
703 | h || e.insertSibling();
|
704 | }, s.onclick = () => {
|
705 | h || e.removeNode();
|
706 | }, r.onclick = (d) => {
|
707 | h || e.moveUpNode();
|
708 | }, a.onclick = (d) => {
|
709 | h || e.moveDownNode();
|
710 | }, l.onclick = (d) => {
|
711 | e.beginEdit();
|
712 | };
|
713 | }
|
714 | const K = document, it = function(e, t) {
|
715 | if (!t)
|
716 | return J(e), e;
|
717 | const n = e.getElementsByClassName("insert-preview"), i = `insert-preview ${t} show`;
|
718 | if (n.length > 0)
|
719 | n[0].className = i;
|
720 | else {
|
721 | const o = K.createElement("div");
|
722 | o.className = i, e.appendChild(o);
|
723 | }
|
724 | return e;
|
725 | }, J = function(e) {
|
726 | if (!e)
|
727 | return;
|
728 | const t = e.getElementsByClassName("insert-preview");
|
729 | for (const n of t || [])
|
730 | n.remove();
|
731 | }, oe = function(e, t) {
|
732 | const n = t.parentElement.parentElement.contains(e);
|
733 | return e && e.tagName === "ME-TPC" && e !== t && !n && e.nodeObj.root !== !0;
|
734 | }, ot = function(e) {
|
735 | const t = document.createElement("div");
|
736 | return t.className = "mind-elixir-ghost", e.map.appendChild(t), t;
|
737 | };
|
738 | function st(e) {
|
739 | let t = null, n = null, i = null;
|
740 | const o = ot(e), s = 12;
|
741 | e.map.addEventListener("dragstart", (r) => {
|
742 | var a;
|
743 | t = r.target, t.parentElement.parentElement.style.opacity = "0.5", o.innerHTML = t.innerHTML, (a = r.dataTransfer) == null || a.setDragImage(o, 0, 0), j.clear();
|
744 | }), e.map.addEventListener("dragend", async (r) => {
|
745 | if (!t)
|
746 | return;
|
747 | t.parentElement.parentElement.style.opacity = "1";
|
748 | const a = r.target;
|
749 | if (a.style.opacity = "", !i)
|
750 | return;
|
751 | J(i);
|
752 | const l = t.nodeObj;
|
753 | switch (n) {
|
754 | case "before":
|
755 | e.moveNodeBefore(t, i), e.selectNode(E(l.id));
|
756 | break;
|
757 | case "after":
|
758 | e.moveNodeAfter(t, i), e.selectNode(E(l.id));
|
759 | break;
|
760 | case "in":
|
761 | e.moveNode(t, i);
|
762 | break;
|
763 | }
|
764 | t = null;
|
765 | }), e.map.addEventListener(
|
766 | "dragover",
|
767 | Ee(function(r) {
|
768 | if (!t)
|
769 | return;
|
770 | J(i);
|
771 | const a = K.elementFromPoint(r.clientX, r.clientY - s);
|
772 | if (oe(a, t)) {
|
773 | i = a;
|
774 | const l = a.getBoundingClientRect().y;
|
775 | r.clientY > l + a.clientHeight ? n = "after" : r.clientY > l + a.clientHeight / 2 && (n = "in");
|
776 | } else {
|
777 | const l = K.elementFromPoint(r.clientX, r.clientY + s);
|
778 | if (oe(l, t)) {
|
779 | i = l;
|
780 | const u = l.getBoundingClientRect().y;
|
781 | r.clientY < u ? n = "before" : r.clientY < u + l.clientHeight / 2 && (n = "in");
|
782 | } else
|
783 | n = i = null;
|
784 | }
|
785 | i && it(i, n);
|
786 | }, 200)
|
787 | );
|
788 | }
|
789 | function rt(e) {
|
790 | let t = [], n = -1, i = e.getData();
|
791 | e.bus.addListener("operation", (o) => {
|
792 | if (o.name === "beginEdit")
|
793 | return;
|
794 | t = t.slice(0, n + 1);
|
795 | const s = e.getData();
|
796 | t.push({ prev: i, currentNodeId: o.obj.id, next: s }), i = s, n = t.length - 1, console.log("operation", o.obj.id, t);
|
797 | }), e.undo = function() {
|
798 | if (n > -1) {
|
799 | const o = t[n];
|
800 | i = o.prev, e.refresh(o.prev), e.selectNode(E(o.currentNodeId)), n--, console.log("current", i);
|
801 | }
|
802 | }, e.redo = function() {
|
803 | if (n < t.length - 1) {
|
804 | n++;
|
805 | const o = t[n];
|
806 | i = o.next, e.refresh(o.next), e.selectNode(E(o.currentNodeId));
|
807 | }
|
808 | }, e.map.addEventListener("keydown", (o) => {
|
809 | (o.metaKey || o.ctrlKey) && o.shiftKey && o.key === "Z" ? e.redo() : (o.metaKey || o.ctrlKey) && o.key === "z" && e.undo();
|
810 | });
|
811 | }
|
812 | const O = (e, t) => {
|
813 | const n = document.createElement("span");
|
814 | return n.id = e, n.innerHTML = `<svg class="icon" aria-hidden="true">
|
815 | <use xlink:href="#icon-${t}"></use>
|
816 | </svg>`, n;
|
817 | };
|
818 | function lt(e) {
|
819 | const t = document.createElement("div"), n = O("fullscreen", "full"), i = O("toCenter", "living"), o = O("zoomout", "move"), s = O("zoomin", "add"), r = document.createElement("span");
|
820 | return r.innerText = "100%", t.appendChild(n), t.appendChild(i), t.appendChild(o), t.appendChild(s), t.className = "mind-elixir-toolbar rb", n.onclick = () => {
|
821 | e.container.requestFullscreen();
|
822 | }, i.onclick = () => {
|
823 | e.toCenter();
|
824 | }, o.onclick = () => {
|
825 | e.scaleVal < 0.6 || e.scale(e.scaleVal -= 0.2);
|
826 | }, s.onclick = () => {
|
827 | e.scaleVal > 1.6 || e.scale(e.scaleVal += 0.2);
|
828 | }, t;
|
829 | }
|
830 | function ct(e) {
|
831 | const t = document.createElement("div"), n = O("tbltl", "left"), i = O("tbltr", "right"), o = O("tblts", "side");
|
832 | return t.appendChild(n), t.appendChild(i), t.appendChild(o), t.className = "mind-elixir-toolbar lt", n.onclick = () => {
|
833 | e.initLeft();
|
834 | }, i.onclick = () => {
|
835 | e.initRight();
|
836 | }, o.onclick = () => {
|
837 | e.initSide();
|
838 | }, t;
|
839 | }
|
840 | function at(e) {
|
841 | e.container.append(lt(e)), e.container.append(ct(e));
|
842 | }
|
843 | const dt = function(e, t = !0) {
|
844 | this.theme = e;
|
845 | const n = this.theme.cssVar, i = Object.keys(n);
|
846 | for (let o = 0; o < i.length; o++) {
|
847 | const s = i[o];
|
848 | this.mindElixirBox.style.setProperty(s, n[s]);
|
849 | }
|
850 | t && this.refresh();
|
851 | };
|
852 | function ge(e) {
|
853 | return {
|
854 | nodeData: e.isFocusMode ? e.nodeDataBackup : e.nodeData,
|
855 | linkData: e.linkData,
|
856 | direction: e.direction,
|
857 | theme: e.theme
|
858 | };
|
859 | }
|
860 | const ht = function(e, t, n) {
|
861 | if (e) {
|
862 | if (console.time("selectNode"), typeof e == "string") {
|
863 | const i = E(e);
|
864 | return i ? this.selectNode(i) : void 0;
|
865 | }
|
866 | 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");
|
867 | }
|
868 | }, ut = function() {
|
869 | this.currentNode && (this.currentNode.className = ""), this.currentNode = null, this.bus.fire("unselectNode");
|
870 | }, ft = function() {
|
871 | if (!this.currentNode || this.currentNode.dataset.nodeid === "meroot")
|
872 | return !1;
|
873 | const e = this.currentNode.parentElement.parentElement.nextSibling;
|
874 | let t;
|
875 | if (e)
|
876 | t = e.firstChild.firstChild;
|
877 | else
|
878 | return !1;
|
879 | return this.selectNode(t), !0;
|
880 | }, pt = function() {
|
881 | if (!this.currentNode || this.currentNode.dataset.nodeid === "meroot")
|
882 | return !1;
|
883 | const e = this.currentNode.parentElement.parentElement.previousSibling;
|
884 | let t;
|
885 | if (e)
|
886 | t = e.firstChild.firstChild;
|
887 | else
|
888 | return !1;
|
889 | return this.selectNode(t), !0;
|
890 | }, mt = function() {
|
891 | if (!this.currentNode)
|
892 | return;
|
893 | const e = this.currentNode.parentElement.nextSibling;
|
894 | if (e && e.firstChild) {
|
895 | const t = e.firstChild.firstChild.firstChild;
|
896 | this.selectNode(t);
|
897 | }
|
898 | }, gt = function() {
|
899 | if (!this.currentNode || this.currentNode.dataset.nodeid === "meroot")
|
900 | return;
|
901 | const e = this.currentNode.parentElement.parentElement.parentElement.previousSibling;
|
902 | if (e) {
|
903 | const t = e.firstChild;
|
904 | this.selectNode(t);
|
905 | }
|
906 | }, bt = function() {
|
907 | const e = ge(this);
|
908 | return JSON.stringify(e, (t, n) => {
|
909 | if (t !== "parent")
|
910 | return t === "from" || t === "to" ? n.nodeObj.id : n;
|
911 | });
|
912 | }, vt = function() {
|
913 | return JSON.parse(this.getDataString());
|
914 | }, yt = function() {
|
915 | const e = ge(this).nodeData;
|
916 | let t = "# " + e.topic + `
|
917 |
|
918 | `;
|
919 | function n(i, o) {
|
920 | for (let s = 0; s < i.length; s++)
|
921 | o <= 6 ? t += "".padStart(o, "#") + " " + i[s].topic + `
|
922 |
|
923 | ` : t += "".padStart(o - 7, " ") + "- " + i[s].topic + `
|
924 | `, i[s].children && n(i[s].children || [], o + 1);
|
925 | }
|
926 | return n(e.children || [], 2), t;
|
927 | }, Nt = function() {
|
928 | this.editable = !0;
|
929 | }, Ct = function() {
|
930 | this.editable = !1;
|
931 | }, Et = function(e) {
|
932 | this.scaleVal = e, this.map.style.transform = "scale(" + e + ")";
|
933 | }, kt = function() {
|
934 | this.container.scrollTo(1e4 - this.container.offsetWidth / 2, 1e4 - this.container.offsetHeight / 2);
|
935 | }, xt = function(e) {
|
936 | e(this);
|
937 | }, wt = function(e) {
|
938 | e.nodeObj.root || (this.tempDirection === null && (this.tempDirection = this.direction), this.isFocusMode || (this.nodeDataBackup = this.nodeData, this.isFocusMode = !0), this.nodeData = e.nodeObj, this.nodeData.root = !0, this.initRight(), this.toCenter());
|
939 | }, Mt = function() {
|
940 | this.isFocusMode = !1, this.tempDirection !== null && (delete this.nodeData.root, this.nodeData = this.nodeDataBackup, this.direction = this.tempDirection, this.tempDirection = null, this.refresh(), this.toCenter());
|
941 | }, Lt = function() {
|
942 | this.direction = 0, this.refresh();
|
943 | }, $t = function() {
|
944 | this.direction = 1, this.refresh();
|
945 | }, St = function() {
|
946 | this.direction = 2, this.refresh();
|
947 | }, Tt = function(e) {
|
948 | this.locale = e, this.refresh();
|
949 | }, Pt = function(e, t) {
|
950 | const n = e.nodeObj;
|
951 | typeof t == "boolean" ? n.expanded = t : n.expanded !== !1 ? n.expanded = !1 : n.expanded = !0, this.layout(), this.linkDiv(), this.bus.fire("expandNode", n);
|
952 | }, Ot = function(e) {
|
953 | e = JSON.parse(JSON.stringify(e)), e && (this.nodeData = e.nodeData, this.linkData = e.linkData || {}), L(this.nodeData), this.layout(), this.linkDiv();
|
954 | }, At = Object.freeze( Object.defineProperty({
|
955 | __proto__: null,
|
956 | cancelFocus: Mt,
|
957 | disableEdit: Ct,
|
958 | enableEdit: Nt,
|
959 | expandNode: Pt,
|
960 | focusNode: wt,
|
961 | getData: vt,
|
962 | getDataMd: yt,
|
963 | getDataString: bt,
|
964 | initLeft: Lt,
|
965 | initRight: $t,
|
966 | initSide: St,
|
967 | install: xt,
|
968 | refresh: Ot,
|
969 | scale: Et,
|
970 | selectFirstChild: mt,
|
971 | selectNextSibling: ft,
|
972 | selectNode: ht,
|
973 | selectParent: gt,
|
974 | selectPrevSibling: pt,
|
975 | setLocale: Tt,
|
976 | toCenter: kt,
|
977 | unselectNode: ut
|
978 | }, Symbol.toStringTag, { value: "Module" })), W = function(e) {
|
979 | const n = e.parentElement.parentElement.lastElementChild;
|
980 | (n == null ? void 0 : n.tagName) === "svg" && (n == null || n.remove());
|
981 | }, be = function(e, t) {
|
982 | var n, i;
|
983 | if (e === x)
|
984 | return x;
|
985 | if (e === P)
|
986 | return P;
|
987 | if (e === _) {
|
988 | const o = ((n = document.querySelector(".lhs")) == null ? void 0 : n.childElementCount) || 0, s = ((i = document.querySelector(".rhs")) == null ? void 0 : i.childElementCount) || 0;
|
989 | return o <= s ? (t.direction = x, x) : (t.direction = P, P);
|
990 | }
|
991 | }, Dt = function(e, t) {
|
992 | console.log(t);
|
993 | const n = e.nodeObj, i = ue(n);
|
994 | i.style && t.style && (t.style = Object.assign(i.style, t.style));
|
995 | const o = Object.assign(n, t);
|
996 | Q(e, o), this.linkDiv(), this.bus.fire("operation", {
|
997 | name: "reshapeNode",
|
998 | obj: o,
|
999 | origin: i
|
1000 | });
|
1001 | }, jt = function(e, t) {
|
1002 | const n = e || this.currentNode;
|
1003 | if (!n)
|
1004 | return;
|
1005 | const i = n.nodeObj;
|
1006 | if (i.root === !0) {
|
1007 | this.addChild();
|
1008 | return;
|
1009 | }
|
1010 | const o = t || this.generateNewObj();
|
1011 | Le(i, o), L(this.nodeData);
|
1012 | const s = n.parentElement;
|
1013 | console.time("insertSibling_DOM");
|
1014 | const { grp: r, top: a } = this.createWrapper(o);
|
1015 | s.parentNode.parentNode.insertBefore(r, s.parentNode.nextSibling), this.linkDiv(r.offsetParent), t || this.createInputDiv(a.firstChild), this.selectNode(a.firstChild, !0), console.timeEnd("insertSibling_DOM"), this.bus.fire("operation", {
|
1016 | name: "insertSibling",
|
1017 | obj: o
|
1018 | });
|
1019 | }, Ht = function(e, t) {
|
1020 | const n = e || this.currentNode;
|
1021 | if (!n)
|
1022 | return;
|
1023 | const i = n.nodeObj;
|
1024 | if (i.root === !0) {
|
1025 | this.addChild();
|
1026 | return;
|
1027 | }
|
1028 | const o = t || this.generateNewObj();
|
1029 | $e(i, o), L(this.nodeData);
|
1030 | const s = n.parentElement;
|
1031 | console.time("insertSibling_DOM");
|
1032 | const { grp: r, top: a } = this.createWrapper(o);
|
1033 | s.parentNode.parentNode.insertBefore(r, s.parentNode), this.linkDiv(r.offsetParent), t || this.createInputDiv(a.firstChild), this.selectNode(a.firstChild, !0), console.timeEnd("insertSibling_DOM"), this.bus.fire("operation", {
|
1034 | name: "insertBefore",
|
1035 | obj: o
|
1036 | });
|
1037 | }, Bt = function(e, t) {
|
1038 | const n = e || this.currentNode;
|
1039 | if (!n)
|
1040 | return;
|
1041 | W(n);
|
1042 | const i = n.nodeObj;
|
1043 | if (i.root === !0)
|
1044 | return;
|
1045 | const o = t || this.generateNewObj();
|
1046 | Se(i, o), L(this.nodeData);
|
1047 | const s = n.parentElement.parentElement;
|
1048 | console.time("insertParent_DOM");
|
1049 | const { grp: r, top: a } = this.createWrapper(o, !0);
|
1050 | a.appendChild(X(!0)), s.insertAdjacentElement("afterend", r);
|
1051 | const l = this.createChildren([s]);
|
1052 | a.insertAdjacentElement("afterend", l), this.linkDiv(), t || this.createInputDiv(a.firstChild), this.selectNode(a.firstChild, !0), console.timeEnd("insertParent_DOM"), this.bus.fire("operation", {
|
1053 | name: "insertParent",
|
1054 | obj: o
|
1055 | });
|
1056 | }, ve = function(e, t) {
|
1057 | var a, l;
|
1058 | if (!e)
|
1059 | return null;
|
1060 | const n = e.nodeObj;
|
1061 | n.expanded === !1 && (this.expandNode(e, !0), e = E(n.id));
|
1062 | const i = t || this.generateNewObj();
|
1063 | n.children ? n.children.push(i) : n.children = [i], L(this.nodeData);
|
1064 | const o = e.parentElement, { grp: s, top: r } = this.createWrapper(i);
|
1065 | if (o.tagName === "ME-PARENT") {
|
1066 | if (o.children[1])
|
1067 | o.nextSibling.appendChild(s);
|
1068 | else {
|
1069 | const u = this.createChildren([s]);
|
1070 | o.appendChild(X(!0)), o.insertAdjacentElement("afterend", u);
|
1071 | }
|
1072 | this.linkDiv(s.offsetParent);
|
1073 | } else
|
1074 | o.tagName === "ME-ROOT" && (be(this.direction, i) === x ? (a = document.querySelector(".lhs")) == null || a.appendChild(s) : (l = document.querySelector(".rhs")) == null || l.appendChild(s), this.linkDiv());
|
1075 | return { newTop: r, newNodeObj: i };
|
1076 | }, _t = function(e, t) {
|
1077 | console.time("addChild");
|
1078 | const n = e || this.currentNode;
|
1079 | if (!n)
|
1080 | return;
|
1081 | const i = ve.call(this, n, t);
|
1082 | if (!i)
|
1083 | return;
|
1084 | const { newTop: o, newNodeObj: s } = i;
|
1085 | this.bus.fire("operation", {
|
1086 | name: "addChild",
|
1087 | obj: s
|
1088 | }), console.timeEnd("addChild"), t || this.createInputDiv(o.firstChild), this.selectNode(o.firstChild, !0);
|
1089 | }, zt = function(e, t) {
|
1090 | console.time("copyNode");
|
1091 | const n = ue(e.nodeObj);
|
1092 | de(n);
|
1093 | const i = ve.call(this, t, n);
|
1094 | if (!i)
|
1095 | return;
|
1096 | const { newNodeObj: o } = i;
|
1097 | console.timeEnd("copyNode"), this.bus.fire("operation", {
|
1098 | name: "copyNode",
|
1099 | obj: o
|
1100 | });
|
1101 | }, Vt = function(e) {
|
1102 | const t = e || this.currentNode;
|
1103 | if (!t)
|
1104 | return;
|
1105 | const n = t.parentNode.parentNode, i = t.nodeObj;
|
1106 | we(i), n.parentNode.insertBefore(n, n.previousSibling), this.linkDiv(), this.bus.fire("operation", {
|
1107 | name: "moveUpNode",
|
1108 | obj: i
|
1109 | });
|
1110 | }, Ft = function(e) {
|
1111 | const t = e || this.currentNode;
|
1112 | if (!t)
|
1113 | return;
|
1114 | const n = t.parentNode.parentNode, i = t.nodeObj;
|
1115 | Me(i), n.nextSibling ? n.nextSibling.insertAdjacentElement("afterend", n) : n.parentNode.prepend(n), this.linkDiv(), this.bus.fire("operation", {
|
1116 | name: "moveDownNode",
|
1117 | obj: i
|
1118 | });
|
1119 | }, qt = function(e) {
|
1120 | var u;
|
1121 | const t = e || this.currentNode;
|
1122 | if (!t)
|
1123 | return;
|
1124 | console.log("removeNode", t);
|
1125 | const n = t.nodeObj;
|
1126 | if (n.root === !0)
|
1127 | throw new Error("Can not remove root node");
|
1128 | const i = n.parent.children, o = i.findIndex((c) => c === n), s = i[o + 1], r = s && s.id, a = Y(n), l = t.parentNode;
|
1129 | if (a === 0) {
|
1130 | const c = l.parentNode.parentNode;
|
1131 | c.tagName !== "ME-MAIN" && c.previousSibling.children[1].remove(), this.selectParent();
|
1132 | } else
|
1133 | this.selectPrevSibling() || this.selectNextSibling();
|
1134 | for (const c in this.linkData) {
|
1135 | const h = this.linkData[c];
|
1136 | if (h.from === n.id || h.to === n.id) {
|
1137 | const d = this.mindElixirBox.querySelector(`[data-linkid=${this.linkData[c].id}]`);
|
1138 | this.removeLink(d);
|
1139 | }
|
1140 | }
|
1141 | l.parentNode.remove(), this.linkDiv(), this.bus.fire("operation", {
|
1142 | name: "removeNode",
|
1143 | obj: n,
|
1144 | originSiblingId: r,
|
1145 | originParentId: (u = n == null ? void 0 : n.parent) == null ? void 0 : u.id
|
1146 | });
|
1147 | }, Rt = function(e, t) {
|
1148 | var a;
|
1149 | const n = e.nodeObj, i = t.nodeObj, o = (a = n == null ? void 0 : n.parent) == null ? void 0 : a.id;
|
1150 | if (i.expanded === !1 && (this.expandNode(t, !0), e = E(n.id), t = E(i.id)), !xe(n, i)) {
|
1151 | console.warn("Invalid move");
|
1152 | return;
|
1153 | }
|
1154 | console.time("moveNode"), Te(n, i), L(this.nodeData);
|
1155 | const s = e.parentElement, r = t.parentElement;
|
1156 | if (r.tagName === "ME-PARENT")
|
1157 | if (W(e), r.children[1])
|
1158 | r.nextSibling.appendChild(s.parentElement);
|
1159 | else {
|
1160 | const l = this.createChildren([s.parentElement]);
|
1161 | r.appendChild(X(!0)), r.parentElement.insertBefore(l, r.nextSibling);
|
1162 | }
|
1163 | else
|
1164 | r.tagName === "ME-ROOT" && (be(this.direction, n), r.nextSibling.appendChild(s.parentElement));
|
1165 | this.linkDiv(), this.bus.fire("operation", {
|
1166 | name: "moveNode",
|
1167 | obj: n,
|
1168 | toObj: i,
|
1169 | originParentId: o
|
1170 | }), console.timeEnd("moveNode");
|
1171 | }, It = function(e, t) {
|
1172 | var u;
|
1173 | const n = e.nodeObj, i = t.nodeObj, o = (u = n.parent) == null ? void 0 : u.id;
|
1174 | Pe(n, i), L(this.nodeData), W(e);
|
1175 | const r = e.parentElement.parentNode;
|
1176 | t.parentElement.parentNode.insertAdjacentElement("beforebegin", r), this.linkDiv(), this.bus.fire("operation", {
|
1177 | name: "moveNodeBefore",
|
1178 | obj: n,
|
1179 | toObj: i,
|
1180 | originParentId: o
|
1181 | });
|
1182 | }, Yt = function(e, t) {
|
1183 | var u;
|
1184 | const n = e.nodeObj, i = t.nodeObj, o = (u = n.parent) == null ? void 0 : u.id;
|
1185 | Oe(n, i), L(this.nodeData), W(e);
|
1186 | const r = e.parentElement.parentElement;
|
1187 | t.parentElement.parentElement.insertAdjacentElement("afterend", r), this.linkDiv(), this.bus.fire("operation", {
|
1188 | name: "moveNodeAfter",
|
1189 | obj: n,
|
1190 | toObj: i,
|
1191 | originParentId: o
|
1192 | });
|
1193 | }, Xt = function(e) {
|
1194 | const t = e || this.currentNode;
|
1195 | t && this.createInputDiv(t);
|
1196 | }, Wt = function(e, t) {
|
1197 | e.childNodes[0].textContent = t, e.nodeObj.topic = t, this.linkDiv();
|
1198 | }, ye = Object.freeze( Object.defineProperty({
|
1199 | __proto__: null,
|
1200 | addChild: _t,
|
1201 | beginEdit: Xt,
|
1202 | copyNode: zt,
|
1203 | insertBefore: Ht,
|
1204 | insertParent: Bt,
|
1205 | insertSibling: jt,
|
1206 | moveDownNode: Ft,
|
1207 | moveNode: Rt,
|
1208 | moveNodeAfter: Yt,
|
1209 | moveNodeBefore: It,
|
1210 | moveUpNode: Vt,
|
1211 | removeNode: qt,
|
1212 | reshapeNode: Dt,
|
1213 | setNodeTopic: Wt
|
1214 | }, Symbol.toStringTag, { value: "Module" })), Ut = function(e) {
|
1215 | return {
|
1216 | dom: e,
|
1217 | mousedown: !1,
|
1218 | lastX: 0,
|
1219 | lastY: 0,
|
1220 | handleMouseMove(t) {
|
1221 | if (t.stopPropagation(), this.mousedown) {
|
1222 | if (!this.lastX) {
|
1223 | this.lastX = t.pageX, this.lastY = t.pageY;
|
1224 | return;
|
1225 | }
|
1226 | const n = this.lastX - t.pageX, i = this.lastY - t.pageY;
|
1227 | this.cb && this.cb(n, i), this.lastX = t.pageX, this.lastY = t.pageY;
|
1228 | }
|
1229 | },
|
1230 | handleMouseDown(t) {
|
1231 | t.stopPropagation(), this.mousedown = !0;
|
1232 | },
|
1233 | handleClear(t) {
|
1234 | t.stopPropagation(), this.clear();
|
1235 | },
|
1236 | cb: null,
|
1237 | init(t, n) {
|
1238 | 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);
|
1239 | },
|
1240 | destory(t) {
|
1241 | t.removeEventListener("mousemove", this.handleMouseMove), t.removeEventListener("mouseleave", this.handleClear), t.removeEventListener("mouseup", this.handleClear), this.dom.removeEventListener("mousedown", this.handleMouseDown);
|
1242 | },
|
1243 | clear() {
|
1244 | this.mousedown = !1, this.lastX = 0, this.lastY = 0;
|
1245 | }
|
1246 | };
|
1247 | }, se = {
|
1248 | create: Ut
|
1249 | }, Gt = function(e, t, n, i) {
|
1250 | const o = this.map.getBoundingClientRect();
|
1251 | if (!e || !t)
|
1252 | return;
|
1253 | const s = e.getBoundingClientRect(), r = t.getBoundingClientRect(), a = (s.x + s.width / 2 - o.x) / this.scaleVal, l = (s.y + s.height / 2 - o.y) / this.scaleVal, u = (r.x + r.width / 2 - o.x) / this.scaleVal, c = (r.y + r.height / 2 - o.y) / this.scaleVal;
|
1254 | let h, d, p, g;
|
1255 | n && i ? (h = a + i.delta1.x, d = l + i.delta1.y, p = u + i.delta2.x, g = c + i.delta2.y) : (l + c) / 2 - l <= s.height / 2 ? (h = (s.x + s.width - o.x) / this.scaleVal + 100, d = l, p = (r.x + r.width - o.x) / this.scaleVal + 100, g = c) : (h = (a + u) / 2, d = (l + c) / 2, p = (a + u) / 2, g = (l + c) / 2);
|
1256 | const f = {
|
1257 | cx: a,
|
1258 | cy: l,
|
1259 | w: s.width,
|
1260 | h: s.height
|
1261 | }, m = {
|
1262 | cx: u,
|
1263 | cy: c,
|
1264 | w: r.width,
|
1265 | h: r.height
|
1266 | }, b = U(f, h, d), v = b.x, y = b.y, N = G(m, p, g), C = N.x, H = N.y, z = he(p, g, C, H), S = {
|
1267 | id: "",
|
1268 | label: "",
|
1269 | from: e.nodeObj.id,
|
1270 | to: t.nodeObj.id,
|
1271 | delta1: {
|
1272 | x: h - a,
|
1273 | y: d - l
|
1274 | },
|
1275 | delta2: {
|
1276 | x: p - u,
|
1277 | y: g - c
|
1278 | }
|
1279 | }, V = Xe(
|
1280 | `M ${v} ${y} C ${h} ${d} ${p} ${g} ${C} ${H}`,
|
1281 | `M ${z.x1} ${z.y1} L ${C} ${H} L ${z.x2} ${z.y2}`
|
1282 | );
|
1283 | n && i ? (S.id = i.id, this.linkData[i.id] = S) : (S.id = I(), this.linkData[S.id] = S, this.currentLink = V), V.linkObj = S, V.dataset.linkid = S.id, this.linkSvgGroup.appendChild(V), n || this.showLinkController(h, d, p, g, S, f, m);
|
1284 | }, Kt = function(e) {
|
1285 | let t;
|
1286 | if (e ? t = e : t = this.currentLink, !t)
|
1287 | return;
|
1288 | console.log(t), this.hideLinkController();
|
1289 | const n = t.linkObj.id;
|
1290 | console.log(n), delete this.linkData[n], t.remove(), t = null;
|
1291 | }, Jt = function(e) {
|
1292 | this.currentLink = e;
|
1293 | const t = e.linkObj;
|
1294 | if (!t)
|
1295 | return;
|
1296 | const n = t.from, i = t.to, o = this.map.getBoundingClientRect(), s = E(n).getBoundingClientRect(), r = E(i).getBoundingClientRect(), a = (s.x + s.width / 2 - o.x) / this.scaleVal, l = (s.y + s.height / 2 - o.y) / this.scaleVal, u = (r.x + r.width / 2 - o.x) / this.scaleVal, c = (r.y + r.height / 2 - o.y) / this.scaleVal, h = {
|
1297 | cx: a,
|
1298 | cy: l,
|
1299 | w: s.width,
|
1300 | h: s.height
|
1301 | }, d = {
|
1302 | cx: u,
|
1303 | cy: c,
|
1304 | w: r.width,
|
1305 | h: r.height
|
1306 | }, p = a + t.delta1.x, g = l + t.delta1.y, f = u + t.delta2.x, m = c + t.delta2.y;
|
1307 | this.showLinkController(p, g, f, m, t, h, d);
|
1308 | }, Qt = function() {
|
1309 | this.linkController.style.display = "none", this.P2.style.display = "none", this.P3.style.display = "none";
|
1310 | }, Zt = function(e, t, n, i, o, s, r) {
|
1311 | this.linkController.style.display = "initial", this.P2.style.display = "initial", this.P3.style.display = "initial";
|
1312 | const a = U(s, e, t);
|
1313 | let l = a.x, u = a.y;
|
1314 | const c = G(r, n, i);
|
1315 | let h = c.x, d = c.y;
|
1316 | this.P2.style.cssText = `top:${t}px;left:${e}px;`, this.P3.style.cssText = `top:${i}px;left:${n}px;`, this.line1.setAttribute("x1", l), 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", d), this.helper1 && (this.helper1.destory(this.map), this.helper2.destory(this.map)), this.helper1 = se.create(this.P2), this.helper2 = se.create(this.P3), this.helper1.init(this.map, (p, g) => {
|
1317 | var m;
|
1318 | e = e - p / this.scaleVal, t = t - g / this.scaleVal;
|
1319 | const f = U(s, e, t);
|
1320 | l = f.x, u = f.y, this.P2.style.top = t + "px", this.P2.style.left = e + "px", (m = this.currentLink) == null || m.children[0].setAttribute("d", `M ${l} ${u} C ${e} ${t} ${n} ${i} ${h} ${d}`), this.line1.setAttribute("x1", l), this.line1.setAttribute("y1", u), this.line1.setAttribute("x2", e), this.line1.setAttribute("y2", t), o.delta1.x = e - s.cx, o.delta1.y = t - s.cy;
|
1321 | }), this.helper2.init(this.map, (p, g) => {
|
1322 | var b, v;
|
1323 | n = n - p / this.scaleVal, i = i - g / this.scaleVal;
|
1324 | const f = G(r, n, i);
|
1325 | h = f.x, d = f.y;
|
1326 | const m = he(n, i, h, d);
|
1327 | this.P3.style.top = i + "px", this.P3.style.left = n + "px", (b = this.currentLink) == null || b.children[0].setAttribute("d", `M ${l} ${u} C ${e} ${t} ${n} ${i} ${h} ${d}`), (v = this.currentLink) == null || v.children[1].setAttribute("d", `M ${m.x1} ${m.y1} L ${h} ${d} L ${m.x2} ${m.y2}`), this.line2.setAttribute("x1", n), this.line2.setAttribute("y1", i), this.line2.setAttribute("x2", h), this.line2.setAttribute("y2", d), o.delta2.x = n - r.cx, o.delta2.y = i - r.cy;
|
1328 | });
|
1329 | }, en = Object.freeze( Object.defineProperty({
|
1330 | __proto__: null,
|
1331 | createLink: Gt,
|
1332 | hideLinkController: Qt,
|
1333 | removeLink: Kt,
|
1334 | selectLink: Jt,
|
1335 | showLinkController: Zt
|
1336 | }, Symbol.toStringTag, { value: "Module" }));
|
1337 | function tn(e, t) {
|
1338 | return async function(...n) {
|
1339 | const i = this.before[t];
|
1340 | i && !await i.apply(this, n) || e.apply(this, n);
|
1341 | };
|
1342 | }
|
1343 | const re = Object.keys(ye), Ne = {};
|
1344 | for (let e = 0; e < re.length; e++) {
|
1345 | const t = re[e];
|
1346 | Ne[t] = tn(ye[t], t);
|
1347 | }
|
1348 | const nn = {
|
1349 | getObjById: ae,
|
1350 | generateNewObj: ke,
|
1351 | layout: je,
|
1352 | linkDiv: Ue,
|
1353 | createInputDiv: Re,
|
1354 | createWrapper: _e,
|
1355 | createParent: ze,
|
1356 | createChildren: Ve,
|
1357 | createTopic: Fe,
|
1358 | findEle: E,
|
1359 | changeTheme: dt,
|
1360 | ...At,
|
1361 | ...Ne,
|
1362 | ...en,
|
1363 | init(e) {
|
1364 | if (!e || !e.nodeData)
|
1365 | return new Error("MindElixir: `data` is required");
|
1366 | e.direction !== void 0 && (this.direction = e.direction), this.changeTheme(e.theme || this.theme, !1), this.nodeData = e.nodeData, L(this.nodeData), this.linkData = e.linkData || {}, this.toolBar && at(this), this.keypress && tt(this), Ce() && this.mobileMenu ? nt(this) : this.contextMenu && Qe(this, this.contextMenuOption), this.draggable && st(this), this.allowUndo && rt(this), this.toCenter(), this.layout(), this.linkDiv();
|
1367 | }
|
1368 | }, B = document;
|
1369 | function $({
|
1370 | el: e,
|
1371 | direction: t,
|
1372 | locale: n,
|
1373 | draggable: i,
|
1374 | editable: o,
|
1375 | contextMenu: s,
|
1376 | contextMenuOption: r,
|
1377 | toolBar: a,
|
1378 | keypress: l,
|
1379 | before: u,
|
1380 | newTopicName: c,
|
1381 | allowUndo: h,
|
1382 | mainLinkStyle: d,
|
1383 | subLinkStyle: p,
|
1384 | overflowHidden: g,
|
1385 | mobileMenu: f,
|
1386 | theme: m
|
1387 | }) {
|
1388 | console.log("ME_version " + $.version, this);
|
1389 | let b = null;
|
1390 | const v = Object.prototype.toString.call(e);
|
1391 | if (v === "[object HTMLDivElement]" ? b = e : v === "[object String]" && (b = document.querySelector(e)), !b)
|
1392 | throw new Error("MindElixir: el is not a valid element");
|
1393 | b.className += " mind-elixir", b.innerHTML = "", b.style.setProperty("--gap", M + "px"), this.mindElixirBox = b, this.before = u || {}, this.locale = n || "en", this.contextMenuOption = r, this.contextMenu = s === void 0 ? !0 : s, this.toolBar = a === void 0 ? !0 : a, this.keypress = l === void 0 ? !0 : l, this.mobileMenu = f || !1, this.direction = typeof t == "number" ? t : 1, this.draggable = i === void 0 ? !0 : i, this.newTopicName = c || "new node", this.editable = o === void 0 ? !0 : o, this.allowUndo = h === void 0 ? !1 : h, this.currentNode = null, this.currentLink = null, this.inputDiv = null, this.scaleVal = 1, this.tempDirection = null, this.mainLinkStyle = d || 0, this.subLinkStyle = p || 0, this.overflowHidden = g || !1, this.bus = De.create(), this.container = B.createElement("div"), this.container.className = "map-container";
|
1394 | const y = window.matchMedia("(prefers-color-scheme: dark)");
|
1395 | this.theme = m || (y.matches ? ce : le);
|
1396 | const N = B.createElement("div");
|
1397 | N.className = "map-canvas", this.map = N, this.map.setAttribute("tabindex", "0"), this.container.appendChild(this.map), this.mindElixirBox.appendChild(this.container), this.nodes = B.createElement("me-nodes"), this.nodes.className = "main-node-container", this.lines = F("lines"), this.linkController = F("linkcontroller"), this.P2 = B.createElement("div"), this.P3 = B.createElement("div"), this.P2.className = this.P3.className = "circle", this.P2.style.display = this.P3.style.display = "none", this.line1 = ee(0, 0, 0, 0), this.line2 = ee(0, 0, 0, 0), this.linkController.appendChild(this.line1), this.linkController.appendChild(this.line2), this.linkSvgGroup = F("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" : Ae(this);
|
1398 | }
|
1399 | $.prototype = nn;
|
1400 | $.LEFT = x;
|
1401 | $.RIGHT = P;
|
1402 | $.SIDE = _;
|
1403 | $.THEME = le;
|
1404 | $.DARK_THEME = ce;
|
1405 | $.version = "3.0.0";
|
1406 | $.E = E;
|
1407 | $.new = (e) => ({
|
1408 | nodeData: {
|
1409 | id: I(),
|
1410 | topic: e || "new topic",
|
1411 | root: !0,
|
1412 | children: []
|
1413 | },
|
1414 | linkData: {}
|
1415 | });
|
1416 | export {
|
1417 | $ as default,
|
1418 | nn as methods
|
1419 | };
|