ts-mind
Version:
A web-mind lib write in typescript.Sound apis and friendly plug-in mechanism in this lib.
16 lines (14 loc) • 65.6 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("TSMind",[],t):"object"==typeof exports?exports.TSMind=t():e.TSMind=t()}(window,function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=12)}([function(e,t,n){"use strict";function i(e){return"function"==typeof e}function o(e){if(!e||"[object Object]"!==toString.call(e)||e.nodeType||e.setInterval)return!1;if(e.constructor&&!t.$hasOwnProperty.call(e,"constructor")&&!t.$hasOwnProperty.call(e.constructor.prototype,"isPrototypeOf"))return!1;var n;for(n in e);return void 0===n||t.$hasOwnProperty.call(e,n)}t.__esModule=!0,t.$noop=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},t.$logger=console||{log:t.$noop,debug:t.$noop,error:t.$noop,warn:t.$noop,info:t.$noop},t.$doc=window.document,t.$elByID=function(e){return t.$doc.getElementById(e)},t.$pushText=function(e,n){e.hasChildNodes()?e.firstChild.nodeValue=n:e.appendChild(t.$doc.createTextNode(n))},t.$pushChild=function(e,t){t instanceof HTMLElement?(e.innerHTML="",e.appendChild(t)):e.innerHTML=t},t.$isEl=function(e){return"nodeType"in e},t.$startWith=function(e,t){return e.slice(0,t.length)===t},t.$isFunc=i,t.$hasOwnProperty=Object.prototype.hasOwnProperty,t.$isPlainObject=o,t.$extend=function e(){var t,n,r,a,d,s,l=arguments[0]||{},_=1,u=arguments.length,c=!1;for("boolean"==typeof l&&(c=l,l=arguments[_]||{},_++),"object"==typeof l||i(l)||(l={}),_===u&&(l=this||{},_--);_<u;_++)if(null!==(t=arguments[_]))for(n in t)if(n){if(l===(a=t[n]))continue;d=Array.isArray(a),c&&a&&(o(a)||d)?(r=l[n],s=d&&!Array.isArray(r)?[]:d||o(r)?r:{},d=!1,l[n]=e(c,s,a)):void 0!==a&&(l[n]=a)}return l},t.$debounce=function(e,t){void 0===t&&(t=10);var n=null;function i(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];var r=this;n||(n=setTimeout(function(){e.apply(r,i),n=null},t))}return i.clear=function(){clearTimeout(n),n=null},i}},function(e,t,n){"use strict";t.__esModule=!0;var i=n(2),o=n(0),r=n(14),a=n(20),d=n(21),s=n(7),l=n(9),_=n(22),u=n(23);t.use=u.globalUse,t.TSMindDirectionMap={left:-1,center:0,right:1},t.TSMindEventTypeMap={show:1,resize:2,edit:3,select:4};var c=function(){function e(e){var n=this;if(this.options={container:""},this.mind=null,this.initialized=!1,this.event_handles=[],this._plugins={},this.plugins={},this.use=function(e,t){n._plugins[e]=t},this.init_plugins=function(e,t){var i=o.$extend({},n._plugins,u.GLOBAl_PLUGIN_LIST);setTimeout(function(){for(var o in i)o&&(n.plugins[o]=new i[o](e,t))},0)},this.enable_edit=function(){return n.options.editable=!0},this.disable_edit=function(){return n.options.editable=!1},this.enable_event_handle=function(e){n.options.default_event_handle["enable_"+e+"_handle"]=!0},this.disable_event_handle=function(e){n.options.default_event_handle["enable_"+e+"_handle"]=!1},this.get_editable=function(){return n.options.editable},this.set_theme=function(e){var t=n.options.theme;n.options.theme=e||"primary",t!==n.options.theme&&(n.view_provider.reset_theme(),n.view_provider.reset_custom_style())},this._event_bind=function(){n.view_provider.add_event(n,"mousedown",n.mousedown_handle),n.view_provider.add_event(n,"click",n.click_handle),n.view_provider.add_event(n,"dblclick",n.dblclick_handle)},this.mousedown_handle=function(e){if(void 0===e&&(e=event),n.options.default_event_handle.enable_mousedown_handle){var t=e.target||e.srcElement,i=n.view_provider.get_binded_nodeid(t);i?n.select_node(i):n.select_clear()}},this.click_handle=function(e){if(void 0===e&&(e=event),n.options.default_event_handle.enable_click_handle){var t=e.target||e.srcElement;if(n.view_provider.is_expander(t)){var i=n.view_provider.get_binded_nodeid(t);i&&n.toggle_node(i)}}},this.dblclick_handle=function(e){if(void 0===e&&(e=event),n.options.default_event_handle.enable_dblclick_handle&&n.get_editable()){var t=e.target||e.srcElement,i=n.view_provider.get_binded_nodeid(t);i&&n.begin_edit(i)}},this.begin_edit=function(e){if(!s.default.is_node(e)){var t=n.get_node(e);return t?n.begin_edit(t):(o.$logger.error("the node[id="+e+"] can not be found."),!1)}n.get_editable()?n.view_provider.edit_node_begin(e):o.$logger.error("fail, this mind map is not editable.")},this.end_edit=function(){n.view_provider.edit_node_end()},this.toggle_node=function(e){if(!s.default.is_node(e)){var t=n.get_node(e);return t?n.toggle_node(t):void o.$logger.error("the node[id="+e+"] can not be found.")}e.isroot||(n.view_provider.save_location(e),n.layout_provider.toggle_node(e),n.view_provider.relayout(),n.view_provider.restore_location(e))},this.expand_node=function(e){if(!s.default.is_node(e)){var t=n.get_node(e);return t?n.expand_node(t):void o.$logger.error("the node[id="+e+"] can not be found.")}e.isroot||(n.view_provider.save_location(e),n.layout_provider.expand_node(e),n.view_provider.relayout(),n.view_provider.restore_location(e))},this.collapse_node=function(e){if(!s.default.is_node(e)){var t=n.get_node(e);return t?n.collapse_node(t):void o.$logger.error("the node[id="+e+"] can not be found.")}e.isroot||(n.view_provider.save_location(e),n.layout_provider.collapse_node(e),n.view_provider.relayout(),n.view_provider.restore_location(e))},this.expand_all=function(){n.layout_provider.expand_all(),n.view_provider.relayout()},this.collapse_all=function(){n.layout_provider.collapse_all(),n.view_provider.relayout()},this.expand_to_depth=function(e){n.layout_provider.expand_to_depth(e),n.view_provider.relayout()},this._reset=function(){n.view_provider.reset(),n.layout_provider.reset(),n.data_provider.reset()},this._show=function(e){var i=e||l.node_array.example;n.mind=n.data_provider.load(i),n.mind?(o.$logger.debug("data.load ok"),n.view_provider.load(),o.$logger.debug("view.load ok"),n.layout_provider.layout(),o.$logger.debug("layout.layout ok"),n.view_provider.show(!0),o.$logger.debug("view.show ok"),n.invoke_event_handle(t.TSMindEventTypeMap.show,{data:[e]})):o.$logger.error("data.load error")},this.show=function(e){n._reset(),n._show(e)},this.get_meta=function(){return{name:n.mind.name,author:n.mind.author,version:n.mind.version}},this.get_data=function(e){return void 0===e&&(e="node_tree"),n.data_provider.get_data(e)},this.get_root=function(){return n.mind.root},this.get_node=function(e){return n.mind.get_node(e)},this.add_node=function(e,i,r,a){if(n.get_editable()){var d=n.mind.add_node(e,i,r,a);return d&&(n.view_provider.add_node(d),n.layout_provider.layout(),n.view_provider.show(!1),n.view_provider.reset_node_custom_style(d),n.expand_node(e),n.invoke_event_handle(t.TSMindEventTypeMap.edit,{evt:"add_node",data:[e.id,i,r,a],node:i})),d}return o.$logger.error("fail, this mind map is not editable"),null},this.insert_node_before=function(e,i,r,a){if(n.get_editable()){var d=s.default.is_node(e)?e.id:e,l=n.mind.insert_node_before(e,i,r,a);return l&&(n.view_provider.add_node(l),n.layout_provider.layout(),n.view_provider.show(!1),n.invoke_event_handle(t.TSMindEventTypeMap.edit,{evt:"insert_node_before",data:[d,i,r,a],node:i})),l}return o.$logger.error("fail, this mind map is not editable"),null},this.insert_node_after=function(e,i,r,a){if(n.get_editable()){var d=s.default.is_node(e)?e.id:e,l=n.mind.insert_node_after(e,i,r,a);return l&&(n.view_provider.add_node(l),n.layout_provider.layout(),n.view_provider.show(!1),n.invoke_event_handle(t.TSMindEventTypeMap.edit,{evt:"insert_node_after",data:[d,i,r,a],node:i})),l}return o.$logger.error("fail, this mind map is not editable"),null},this.remove_node=function(e){if(!s.default.is_node(e)){var i=n.get_node(e);return i?n.remove_node(i):(o.$logger.error("the node[id="+e+"] can not be found."),!1)}if(n.get_editable()){if(e.isroot)return o.$logger.error("fail, can not remove root node"),!1;var r=e.id,a=e.parent.id,d=n.get_node(a);return d&&n.view_provider.save_location(d),n.view_provider.remove_node(e),n.mind.remove_node(e),n.layout_provider.layout(),n.view_provider.show(!1),d&&n.view_provider.restore_location(d),n.invoke_event_handle(t.TSMindEventTypeMap.edit,{evt:"remove_node",data:[r],node:a}),!0}return o.$logger.error("fail, this mind map is not editable"),!1},this.update_node=function(e,i){if(n.get_editable())if(s.default.text.is_empty(i))o.$logger.warn("fail, topic can not be empty");else{var r=n.get_node(e);if(r){if(r.topic===i)return o.$logger.info("nothing changed"),void n.view_provider.update_node(r);r.topic=i,n.view_provider.update_node(r),n.layout_provider.layout(),n.view_provider.show(!1),n.invoke_event_handle(t.TSMindEventTypeMap.edit,{evt:"update_node",data:[e,i],node:e})}}else o.$logger.error("fail, this mind map is not editable")},this.move_node=function(e,i,r,a){if(n.get_editable()){var d=n.mind.move_node(e,i,r,a);d&&(n.view_provider.update_node(d),n.layout_provider.layout(),n.view_provider.show(!1),n.invoke_event_handle(t.TSMindEventTypeMap.edit,{evt:"move_node",data:[e,i,r,a],node:e}))}else o.$logger.error("fail, this mind map is not editable")},this.select_node=function(e){if(!s.default.is_node(e)){var t=n.get_node(e);return t?n.select_node(t):void o.$logger.error("the node[id="+e+"] can not be found.")}n.layout_provider.is_visible(e)&&(n.mind.selected=e,n.view_provider.select_node(e))},this.get_selected_node=function(){return n.mind?n.mind.selected:null},this.select_clear=function(){n.mind&&(n.mind.selected=null,n.view_provider.select_clear())},this.is_node_visible=function(e){return n.layout_provider.is_visible(e)},this.find_node_before=function(e){if(!s.default.is_node(e)){var t=n.get_node(e);return t?n.find_node_before(t):(o.$logger.error("the node[id="+e+"] can not be found."),null)}if(e.isroot)return null;var i=null;if(e.parent.isroot)for(var r=null,a=0,d=e.parent.children;a<d.length;a++){var l=d[a];e.direction===l.direction&&(e.id===l.id&&(i=r),r=l)}else i=n.mind.get_node_before(e);return i},this.find_node_after=function(e){if(!s.default.is_node(e)){var t=n.get_node(e);return t?n.find_node_after(t):void o.$logger.error("the node[id="+e+"] can not be found.")}if(e.isroot)return null;var i=null;if(e.parent.isroot)for(var r=!1,a=0,d=e.parent.children;a<d.length;a++){var l=d[a];if(e.direction===l.direction){if(r){i=l;break}e.id===l.id&&(r=!0)}}else i=n.mind.get_node_after(e);return i},this.set_node_color=function(e,t,i){if(n.get_editable()){var r=n.mind.get_node(e);if(r)return t&&(r.data["background-color"]=t),i&&(r.data["foreground-color"]=i),n.view_provider.reset_node_custom_style(r),!0}else o.$logger.error("fail, this mind map is not editable");return!1},this.set_node_font_style=function(e,t,i,r){if(n.get_editable()){var a=n.mind.get_node(e);if(a)return t&&(a.data["font-size"]=t),i&&(a.data["font-weight"]=i),r&&(a.data["font-style"]=r),n.view_provider.reset_node_custom_style(a),n.view_provider.update_node(a),n.layout_provider.layout(),n.view_provider.show(!1),!0}else o.$logger.error("fail, this mind map is not editable");return!1},this.set_node_background_image=function(e,t,i,r,a){if(n.get_editable()){var d=n.mind.get_node(e);if(d)return t&&(d.data["background-image"]=t),i&&(d.data.width=i),r&&(d.data.height=r),a&&(d.data["background-rotation"]=a),n.view_provider.reset_node_custom_style(d),n.view_provider.update_node(d),n.layout_provider.layout(),n.view_provider.show(!1),!0}else o.$logger.error("fail, this mind map is not editable");return!1},this.set_node_background_rotation=function(e,t){if(n.get_editable()){var i=n.mind.get_node(e);if(i)return i.data["background-image"]?(i.data["background-rotation"]=t,n.view_provider.reset_node_custom_style(i),n.view_provider.update_node(i),n.layout_provider.layout(),n.view_provider.show(!1),!0):(o.$logger.error("fail, only can change rotation angle of node with background image"),!1)}else o.$logger.error("fail, this mind map is not editable");return!1},this.resize=function(){n.view_provider.resize()},this.add_event_listener=function(e){void 0===e&&(e=function(){}),"function"==typeof e&&n.event_handles.push(e)},this.invoke_event_handle=function(e,t){var i=n;window.setTimeout(function(){i._invoke_event_handle(e,t)},0)},this._invoke_event_handle=function(e,t){for(var i=n.event_handles.length,o=0;o<i;o++)n.event_handles[o](e,t)},!e.container)throw Error("the options.container should not be null or empty.");if(this.options=o.$extend(!0,i.DEFAULT_OPTIONS,e),!this.initialized){this.initialized=!0;var c=this.options,h={mode:c.mode,hspace:c.layout.hspace,vspace:c.layout.vspace,pspace:c.layout.pspace},f={container:c.container,support_html:c.support_html,hmargin:c.view.hmargin,vmargin:c.view.vmargin,line_width:c.view.line_width,line_color:c.view.line_color};this.data_provider=new r.data_provider(this),this.layout_provider=new a.default(this,h),this.view_provider=new d.default(this,f),this.shortcut_provider=new _.default(this,c.shortcut),this._event_bind(),this.init_plugins(this,e)}}return e.version=i.__version__,e.direction=t.TSMindDirectionMap,e.event_type=t.TSMindEventTypeMap,e}();t.TSMind=c,t.default=c},function(e,t,n){"use strict";t.__esModule=!0,t.__name__="TSMind",t.__version__="0.5.0",t.__authores__=["1071115676@qq.com","hizzgdev@163.com"],t.DEFAULT_OPTIONS={container:"",editable:!1,theme:"primary",mode:"full",support_html:!0,view:{hmargin:100,vmargin:50,line_width:2,line_color:"#555"},layout:{hspace:30,vspace:20,pspace:13},default_event_handle:{enable_mousedown_handle:!0,enable_click_handle:!0,enable_dblclick_handle:!0},shortcut:{enable:!0,handles:{},mapping:{addchild:45,addbrother:13,editnode:113,delnode:46,toggle:32,left:37,up:38,right:39,down:40}}},t.TSM_Node_Names={nodes:"tsmnodes",node:"tsmnode",fold:"tsmfold"}},function(e,t,n){"use strict";t.__esModule=!0;var i=n(1),o=function(){function e(e,t,n,o,r,a,d,s){void 0===o&&(o={}),void 0===d&&(d=i.TSMindDirectionMap.right),void 0===s&&(s=!0);var l=this;this.id="",this.index=0,this.topic="",this.data={},this.isroot=!0,this.direction=i.TSMindDirectionMap.left,this.expanded=!0,this.children=[],this.expands={},this.width=0,this.height=0,this.view_data={element:null,expander:null,abs_x:0,abs_y:0,width:0,height:0,_saved_location:{x:0,y:0}},this.layout_data={direction:i.TSMindDirectionMap.right,side_index:0,offset_x:0,offset_y:0,outer_height:0,left_nodes:[],right_nodes:[],outer_height_left:0,outer_height_right:0,visible:!0,_offset_:{x:0,y:0}},this.get_location=function(){var e=l.view_data;return{x:e.abs_x||0,y:e.abs_y||0}},this.get_size=function(){var e=l.view_data;return{w:e.width||0,h:e.height||0}},this.id=e,this.index=t,this.topic=n,this.data=o,this.isroot=r,this.parent=a,this.direction=d,this.expanded=s}return e.inherited=function(e,t){if(e&&t){if(e.id===t.id)return!0;if(e.isroot)return!0;for(var n=e.id,i=t;!i.isroot;)if((i=i.parent).id===n)return!0}return!1},e.compare=function(e,t){var n=e.index,i=t.index;return n>=0&&i>=0?n-i:-1===n&&-1===i?0:-1===n?1:-1===i?-1:0},e}();t.TSM_node=o},function(e,t,n){"use strict";t.__esModule=!0,t.dom={add_event:function(e,t,n){e.addEventListener(t,n,!1)},css:function(e,t){return e.getPropertyValue(t)},is_visible:function(e){var n=t.dom.css(e,"visibility"),i=t.dom.css(e,"display");return t.dom.css(e,"backface-visibility"),"hidden"!==n&&"none"!==i}}},function(e,t,n){"use strict";t.__esModule=!0,t.canvas={bezierto:function(e,t,n,i,o){e.beginPath(),e.moveTo(t,n),e.bezierCurveTo(t+2*(i-t)/3,n,t,o,i,o),e.stroke()},lineto:function(e,t,n,i,o){e.beginPath(),e.moveTo(t,n),e.lineTo(i,o),e.stroke()},clear:function(e,t,n,i,o){e.clearRect(t,n,i,o)},rect:function(e,t,n,i,o,r){i<2*r&&(r=i/2),o<2*r&&(r=o/2),e.moveTo(t+r,n),e.arcTo(t+i,n,t+i,n+o,r),e.arcTo(t+i,n+o,t,n+o,r),e.arcTo(t,n+o,t,n,r),e.arcTo(t,n,t+i,n,r)},text_multiline:function(e,t,n,i,o,r,a){var d="",s=t.length,l=t.split(""),_=null;e.textAlign="left",e.textBaseline="top";for(var u=0;u<s;u++)_=d+l[u],e.measureText(_).width>o&&u>0?(e.fillText(d,n,i),d=l[u],i+=a):d=_;e.fillText(d,n,i)},text_ellipsis:function(e,n,i,o,r,a){var d=o+a/2;n=t.canvas.fittingString(e,n,r),e.textAlign="left",e.textBaseline="middle",e.fillText(n,i,d,r)},fittingString:function(e,t,n){var i=e.measureText(t).width,o=e.measureText("…").width;if(i<=n||i<=o)return t;for(var r=t.length;i>=n-o&&r-- >0;)t=t.substring(0,r),i=e.measureText(t).width;return t+"…"},image:function(e,n,i,o,r,a,d,s,l){void 0===l&&(l=function(){});var _=new Image;_.onload=function(){e.save(),e.translate(i,o),e.save(),e.beginPath(),t.canvas.rect(e,0,0,r,a,d),e.closePath(),e.clip(),e.translate(r/2,a/2),e.rotate(s*Math.PI/180),e.drawImage(_,-r/2,-a/2),e.restore(),e.restore(),l()},_.src=n}}},function(e,t,n){"use strict";t.__esModule=!0;var i=n(0),o=n(7),r=n(3),a=n(1),d=function(){return function(){var e=this;this.name=null,this.author=null,this.version=null,this.root=null,this.selected=null,this.nodes={},this.get_node=function(t){return t in e.nodes?e.nodes[t]:(i.$logger.warn("the node[id="+t+"] can not be found"),null)},this.set_root=function(t,n,o){null==e.root?(e.root=new r.TSM_node(t,0,n,o,!0),e._put_node(e.root)):i.$logger.error("root node is already exist")},this.add_node=function(t,n,d,s,l,_,u){if(void 0===l&&(l=-1),!o.default.is_node(t)){var c=e.get_node(t);return c?e.add_node(c,n,d,s,l,_,u):(i.$logger.error("the parent_node[id="+t+"] can not be found."),null)}var h=l,f=null;if((t=t).isroot){var v=a.default.direction.right;if(isNaN(_)){for(var p=t.children,g=p.length,m=0,y=0;y<g;y++)p[y].direction===a.default.direction.left?m--:m++;v=g>1&&m>0?a.default.direction.left:a.default.direction.right}else v=_!==a.default.direction.left?a.default.direction.right:a.default.direction.left;f=new r.TSM_node(n,h,d,s,!1,t,v,u)}else f=new r.TSM_node(n,h,d,s,!1,t,t.direction,u);return e._put_node(f)?(t.children.push(f),e._reindex(t)):(i.$logger.error("fail, the nodeid '"+f.id+"' has been already exist."),f=null),f},this.insert_node_before=function(t,n,r,a){if(!o.default.is_node(t)){var d=e.get_node(t);return d?e.insert_node_before(d,n,r,a):(i.$logger.error("the node_before[id="+t+"] can not be found."),null)}var s=(t=t).index-.5;return t.parent?e.add_node(t.parent,n,r,a,s):null},this.get_node_before=function(t){if("string"==typeof t){var n=e.get_node(t);return n?e.get_node_before(n):(i.$logger.error("the node[id="+t+"] can not be found."),null)}if(t.isroot)return null;var o=t.index-2;return o>=0&&t.parent.children[o]||null},this.insert_node_after=function(t,n,o,r){if("string"==typeof t){var a=e.get_node(t);return a?e.insert_node_after(a,n,o,r):(i.$logger.error("the node_after[id="+t+"] can not be found."),null)}var d=t.index+.5;return t.parent?e.add_node(t.parent,n,o,r,d):null},this.get_node_after=function(t){if("string"==typeof t){var n=e.get_node(t);return n?e.get_node_after(n):(i.$logger.error("the node[id="+t+"] can not be found."),null)}if(t.isroot)return null;var o=t.index;return(t.parent.children||null).length>=o&&t.parent.children[o]||null},this.move_node=function(t,n,o,r){if("string"==typeof t){var a=e.get_node(t);return a?e.move_node(a,n,o,r):(i.$logger.error("the node[id="+t+"] can not be found."),null)}return o||(o=t.parent.id),e._move_node(t,n,o,r)},this._flow_node_direction=function(t,n){void 0===n?n=t.direction:t.direction=n;for(var i=t.children.length;i--;)e._flow_node_direction(t.children[i],n)},this._move_node_internal=function(t,n){if(t&&n)if("_last_"===n)t.index=-1,e._reindex(t.parent);else if("_first_"===n)t.index=0,e._reindex(t.parent);else{var i=n?e.get_node(n):null;null!=i&&null!=i.parent&&i.parent.id===t.parent.id&&(t.index=i.index-.5,e._reindex(t.parent))}return t},this._move_node=function(t,n,i,o){if(t&&i){if(t.parent.id!==i){for(var r=t.parent.children,d=r.length;d--;)if(r[d].id===t.id){r.splice(d,1);break}var s=e.get_node(i);s&&(t.parent=s,t.parent.children.push(t))}t.parent.isroot?o===a.default.direction.left?t.direction=o:t.direction=a.default.direction.right:t.direction=t.parent.direction,e._move_node_internal(t,n),e._flow_node_direction(t)}return t},this.remove_node=function(t){if("string"==typeof t){var n=e.get_node(t);return n?e.remove_node(n):(i.$logger.error("the node[id="+t+"] can not be found."),!1)}if(!t)return i.$logger.error("fail, the node can not be found"),!1;if(t.isroot)return i.$logger.error("fail, can not remove root node"),!1;null!==e.selected&&e.selected.id===t.id&&(e.selected=null);for(var o=t.children,r=o.length;r--;)e.remove_node(o[r]);o.length=0;for(var a=t.parent.children||[],d=a.length;d--;)if(a[d].id===t.id){a.splice(d,1);break}return delete e.nodes[t.id],Object.keys(t).map(function(e){delete t[e]}),t=null,!0},this._put_node=function(t){return t.id in e.nodes?(i.$logger.warn("the nodeid '"+t.id+"' has been already exist."),!1):(e.nodes[t.id]=t,!0)},this._reindex=function(e){if(e instanceof r.TSM_node){e.children.sort(r.TSM_node.compare);for(var t=0;t<e.children.length;t++)e.children[t].index=t+1}}}}();t.TSM_mind=d},function(e,t,n){"use strict";t.__esModule=!0;var i=n(3),o=n(5),r=n(15),a=n(10),d=n(16),s=n(4),l=n(17),_=n(11),u=n(8);t.util={is_node:function(e){return e instanceof i.TSM_node},ajax:d.ajax,dom:s.dom,canvas:o.canvas,file:r.file,json:a.json,uuid:l.uuid,text:_.text,array:u},t.default=t.util},function(e,t,n){"use strict";t.__esModule=!0,t._slice=Array.prototype.slice},function(e,t,n){"use strict";t.__esModule=!0;var i=n(2),o=n(6),r=n(0),a=n(3),d=n(1);t.node_array={example:{meta:{name:i.__name__,author:i.__authores__,version:i.__version__},format:"node_array",data:[{id:"root",topic:"jsMind Example",isroot:!0}]},get_mind:function(e){var n=t.node_array,i=new o.TSM_mind;return i.name=e.meta.name,i.author=e.meta.author,i.version=e.meta.version,n._parse(i,e.data),i},get_data:function(e){var n=[];return t.node_array._array(e,n),{meta:{name:e.name,author:e.author,version:e.version},format:"node_array",data:n}},_parse:function(e,n){var i=t.node_array,o=n.slice(0);o.reverse();var a=i._extract_root(e,o);a?i._extract_subnode(e,a,o):r.$logger.error("root node can not be found")},_extract_root:function(e,n){for(var i=t.node_array,o=n.length;o--;)if("isroot"in n[o]&&n[o].isroot){var r=n[o],a=i._extract_data(r);return e.set_root(r.id,r.topic,a),n.splice(o,1),r.id}return null},_extract_subnode:function(e,n,i){for(var o=t.node_array,r=i.length,a=null,s=null,l=0;r--;)if((a=i[r]).parentid===n){s=o._extract_data(a);var _=a.direction;e.add_node(n,a.id,a.topic,s,void 0,_?"left"===_?d.default.direction.left:d.default.direction.right:void 0,a.expanded),i.splice(r,1),l++;var u=o._extract_subnode(e,a.id,i);u>0&&(r=i.length,l+=u)}return l},_extract_data:function(e){var t={};for(var n in e)"id"!==n&&"topic"!==n&&"parentid"!==n&&"isroot"!==n&&"direction"!==n&&"expanded"!==n&&(t[n]=e[n]);return t},_array:function(e,n){var i=t.node_array;e.root&&i._array_node(e.root,n)},_array_node:function(e,n){var i=t.node_array;if(e instanceof a.TSM_node){var o={id:e.id,topic:e.topic,expanded:e.expanded,children:[],width:0,height:0};if(e.parent&&(o.parentid=e.parent.id),e.isroot&&(o.isroot=!0),e.parent&&e.parent.isroot&&(o.direction=e.direction===d.default.direction.left?"left":"right"),null!=e.data){var r=e.data;Object.keys(r).map(function(e){o[e]=r[e]})}n.push(o);for(var s=e.children.length,l=0;l<s;l++)i._array_node(e.children[l],n)}}}},function(e,t,n){"use strict";t.__esModule=!0;var i=n(0);t.json={json2string:function(e){if(JSON)try{return JSON.stringify(e)}catch(e){return i.$logger.warn(e),i.$logger.warn("can not convert to string"),null}return null},string2json:function(e){if(JSON)try{return JSON.parse(e)}catch(e){return i.$logger.warn(e),i.$logger.warn("can not parse to json"),null}},merge:function(e,t){return i.$extend(e,t)}}},function(e,t,n){"use strict";t.__esModule=!0,t.text={is_empty:function(e){return!e||0===e.replace(/\s*/,"").length}}},function(e,t,n){"use strict";t.__esModule=!0,n(13).__exportStar(n(1),t)},function(e,t,n){"use strict";n.r(t),n.d(t,"__extends",function(){return o}),n.d(t,"__assign",function(){return r}),n.d(t,"__rest",function(){return a}),n.d(t,"__decorate",function(){return d}),n.d(t,"__param",function(){return s}),n.d(t,"__metadata",function(){return l}),n.d(t,"__awaiter",function(){return _}),n.d(t,"__generator",function(){return u}),n.d(t,"__exportStar",function(){return c}),n.d(t,"__values",function(){return h}),n.d(t,"__read",function(){return f}),n.d(t,"__spread",function(){return v}),n.d(t,"__await",function(){return p}),n.d(t,"__asyncGenerator",function(){return g}),n.d(t,"__asyncDelegator",function(){return m}),n.d(t,"__asyncValues",function(){return y}),n.d(t,"__makeTemplateObject",function(){return w}),n.d(t,"__importStar",function(){return b}),n.d(t,"__importDefault",function(){return x});
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
var i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function o(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var r=function(){return(r=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function a(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&(n[i[o]]=e[i[o]])}return n}function d(e,t,n,i){var o,r=arguments.length,a=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var d=e.length-1;d>=0;d--)(o=e[d])&&(a=(r<3?o(a):r>3?o(t,n,a):o(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a}function s(e,t){return function(n,i){t(n,i,e)}}function l(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function _(e,t,n,i){return new(n||(n=Promise))(function(o,r){function a(e){try{s(i.next(e))}catch(e){r(e)}}function d(e){try{s(i.throw(e))}catch(e){r(e)}}function s(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(a,d)}s((i=i.apply(e,t||[])).next())})}function u(e,t){var n,i,o,r,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:d(0),throw:d(1),return:d(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function d(r){return function(d){return function(r){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,i&&(o=2&r[0]?i.return:r[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return a.label++,{value:r[1],done:!1};case 5:a.label++,i=r[1],r=[0];continue;case 7:r=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){a=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]<o[3])){a.label=r[1];break}if(6===r[0]&&a.label<o[1]){a.label=o[1],o=r;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(r);break}o[2]&&a.ops.pop(),a.trys.pop();continue}r=t.call(e,a)}catch(e){r=[6,e],i=0}finally{n=o=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}([r,d])}}}function c(e,t){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}function h(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}function f(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,o,r=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function v(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(f(arguments[t]));return e}function p(e){return this instanceof p?(this.v=e,this):new p(e)}function g(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,o=n.apply(e,t||[]),r=[];return i={},a("next"),a("throw"),a("return"),i[Symbol.asyncIterator]=function(){return this},i;function a(e){o[e]&&(i[e]=function(t){return new Promise(function(n,i){r.push([e,t,n,i])>1||d(e,t)})})}function d(e,t){try{(n=o[e](t)).value instanceof p?Promise.resolve(n.value.v).then(s,l):_(r[0][2],n)}catch(e){_(r[0][3],e)}var n}function s(e){d("next",e)}function l(e){d("throw",e)}function _(e,t){e(t),r.shift(),r.length&&d(r[0][0],r[0][1])}}function m(e){var t,n;return t={},i("next"),i("throw",function(e){throw e}),i("return"),t[Symbol.iterator]=function(){return this},t;function i(i,o){t[i]=e[i]?function(t){return(n=!n)?{value:p(e[i](t)),done:"return"===i}:o?o(t):t}:o}}function y(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=h(e),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(n){t[n]=e[n]&&function(t){return new Promise(function(i,o){(function(e,t,n,i){Promise.resolve(i).then(function(t){e({value:t,done:n})},t)})(i,o,(t=e[n](t)).done,t.value)})}}}function w(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function b(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function x(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";t.__esModule=!0;var i=n(0),o=n(9),r=n(18),a=n(19),d=function(){return function(e){var t=this;this.reset=function(){i.$logger.debug("data.reset")},this.load=function(e){var t=null,n=null;return"node_array"===(t="object"==typeof e?e.format?e.format:"node_tree":"freemind")?n=o.node_array.get_mind(e):"node_tree"===t?n=r.node_tree.get_mind(e):"freemind"===t?n=a.freemind.get_mind(e):i.$logger.warn("unsupported format"),n},this.get_data=function(e){var n=null;return t.tsm.mind?("node_array"===e?n=o.node_array.get_data(t.tsm.mind):"node_tree"===e?n=r.node_tree.get_data(t.tsm.mind):"freemind"===e?n=a.freemind.get_data(t.tsm.mind):i.$logger.error("unsupported "+e+" format"),n):n},this.tsm=e,i.$logger.debug("data.init")}}();t.data_provider=d},function(e,t,n){"use strict";t.__esModule=!0;var i=n(0);t.file={read:function(e,t){var n=new FileReader;n.onload=function(){"function"==typeof t&&t(this.result,e.name)},n.readAsText(e)},save:function(e,t,n){var o,r=window;if("function"==typeof r.Blob)o=new Blob([e],{type:t});else{var a=new(r.BlobBuilder||r.MozBlobBuilder||r.WebKitBlobBuilder||r.MSBlobBuilder);a.append(e),o=a.getBlob(t)}if(navigator.msSaveBlob)navigator.msSaveBlob(o,n);else{var d=(r.URL||r.webkitURL).createObjectURL(o),s=i.$doc.createElement("a");if("download"in s){s.style.visibility="hidden",s.href=d,s.download=n,i.$doc.body.appendChild(s);var l=i.$doc.createEvent("MouseEvents");l.initEvent("click",!0,!0),s.dispatchEvent(l),i.$doc.body.removeChild(s)}else location.href=d}}}},function(e,t,n){"use strict";t.__esModule=!0;var i=n(10),o=n(0);t.ajax={_xhr:function(){var e=null;if("XMLHttpRequest"in window)e=new XMLHttpRequest;else try{e=new window.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}return e},_eurl:function(e){return encodeURIComponent(e)},request:function(e,n,r,a,d){void 0===n&&(n={}),void 0===r&&(r="GET"),void 0===a&&(a=o.$noop),void 0===d&&(d=o.$noop);var s=t.ajax,l=null,_=[];Object.keys(n).map(function(e){_.push(s._eurl(e)+"="+s._eurl(n[e]))}),_.length>0&&(l=_.join("&"));var u=s._xhr();u&&(u.onreadystatechange=function(){if(4===u.readyState)if(200===u.status||0===u.status){var e=i.json.string2json(u.responseText);a(null!=e?e:u.responseText)}else d(u),o.$logger.error("xhr request failed.",u)},r=r||"GET",u.open(r,e,!0),u.setRequestHeader("If-Modified-Since","0"),"POST"===r?(u.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8"),u.send(l)):u.send())},get:function(e,n){return t.ajax.request(e,{},"GET",n)},post:function(e,n,i){return t.ajax.request(e,n,"POST",i)}}},function(e,t,n){"use strict";t.__esModule=!0,t.uuid={newid:function(){return((new Date).getTime().toString(16)+Math.random().toString(16).substr(2)).substr(2,16)}}},function(e,t,n){"use strict";t.__esModule=!0;var i=n(2),o=n(6),r=n(1),a=n(3);t.node_tree={example:{meta:{name:i.__name__,author:i.__authores__,version:i.__version__},format:"node_tree",data:{id:"root",topic:"jsMind Example"}},get_mind:function(e){var n=t.node_tree,i=new o.TSM_mind;return i.name=e.meta.name,i.author=e.meta.author,i.version=e.meta.version,n._parse(i,e.data),i},get_data:function(e){var n=t.node_tree;return{meta:{name:e.name,author:e.author,version:e.version},format:"node_tree",data:n._buildnode(e.root)}},_parse:function(e,n){var i=t.node_tree,o=i._extract_data(n);if(e.set_root(n.id,n.topic,o),"children"in n)for(var r=0,a=n.children;r<a.length;r++){var d=a[r];i._extract_subnode(e,e.root,d)}},_extract_data:function(e){var t={};for(var n in e)"id"!==n&&"topic"!==n&&"children"!==n&&"direction"!==n&&"expanded"!==n&&(t[n]=e[n]);return t},_extract_subnode:function(e,n,i){var o=t.node_tree,a=o._extract_data(i),d=r.TSMindDirectionMap.right;n.isroot&&(d=r.TSMindDirectionMap[i.direction]);var s=e.add_node(n,i.id,i.topic,a,void 0,d,i.expanded);if("children"in i)for(var l=0,_=i.children;l<_.length;l++){var u=_[l];o._extract_subnode(e,s,u)}},_buildnode:function(e){var n=t.node_tree;if(e instanceof a.TSM_node){var i={id:e.id,topic:e.topic,expanded:e.expanded};if(e.parent&&e.parent.isroot&&(i.direction=e.direction===r.TSMindDirectionMap.left?"left":"right"),null!=e.data){var o=e.data;for(var d in o)d&&(i[d]=o[d])}var s=e.children;if(s.length>0){i.children=[];for(var l=0,_=s;l<_.length;l++){var u=_[l];i.children.push(n._buildnode(u))}}return i}}}},function(e,t,n){"use strict";t.__esModule=!0;var i=n(2),o=n(6),r=n(1),a=n(8);t.freemind={example:{meta:{name:i.__name__,author:i.__authores__,version:i.__version__},format:"freemind",data:'<map version="'+i.__version__+'"><node ID="root" TEXT="freemind Example"/></map>'},get_mind:function(e){var n=t.freemind,i=new o.TSM_mind;i.name=e.meta.name,i.author=e.meta.author,i.version=e.meta.version;var r=e.data,a=n._parse_xml(r),d=n._find_root(a);return n._load_node(i,null,d),i},get_data:function(e){var n=t.freemind,o={meta:{name:e.name,author:e.author,version:e.version},format:"freemind",data:""},r=[];return r.push('<map version="'+i.__version__+'">'),n._buildmap(e.root,r),r.push("</map>"),o.data=r.join(" "),o},_parse_xml:function(e){var t=null;DOMParser?t=(new DOMParser).parseFromString(e,"text/xml"):((t=new window.ActiveXObject("Microsoft.XMLDOM")).async=!1,t.loadXML(e));return t},_find_root:function(e){for(var t=null,n=0,i=a._slice.call(e.childNodes);n<i.length;n++){if(1===(s=i[n]).nodeType&&"map"===s.tagName){t=s;break}}if(t){var o=a._slice.call(t.childNodes);t=null;for(var r=0,d=o;r<d.length;r++){var s;if(1===(s=d[r]).nodeType&&"node"===s.tagName){t=s;break}}}return t},_load_node:function(e,n,i){var o=t.freemind,d=i.getAttribute("ID");if(d){var s=i.getAttribute("TEXT");if(null==s)for(var l=0,_=a._slice.call(i.childNodes);l<_.length;l++){var u=_[l];if(1===u.nodeType&&"richcontent"===u.tagName){s=u.textContent;break}}var c=o._load_attributes(i),h=!("expanded"in c)||"true"===c.expanded;delete c.expanded;var f=i.getAttribute("POSITION"),v=f?r.default.direction[f]:void 0;n?e.add_node(n,d,s,c,void 0,v,h):e.set_root(d,s,c);for(var p=0,g=a._slice.call(i.childNodes);p<g.length;p++){var m=g[p];1===m.nodeType&&"node"===m.tagName&&o._load_node(e,d,m)}}},_load_attributes:function(e){for(var t={},n=0,i=a._slice.call(e.childNodes);n<i.length;n++){var o=i[n];1===o.nodeType&&"attribute"===o.tagName&&(t[o.getAttribute("NAME")]=o.getAttribute("VALUE"))}return t},_buildmap:function(e,n){if(e){var i=t.freemind,o=null;e.parent&&e.parent.isroot&&(o=e.direction===r.default.direction.left?"left":"right"),n.push("<node"),n.push('ID="'+e.id+'"'),o&&n.push('POSITION="'+o+'"'),n.push('TEXT="'+e.topic+'">'),n.push('<attribute NAME="expanded" VALUE="'+e.expanded+'"/>'),e.data&&Object.keys(e.data).map(function(t){n.push('<attribute NAME="'+t+'" VALUE="'+e.data[t]+'"/>')});for(var a=0,d=e.children;a<d.length;a++){var s=d[a];i._buildmap(s,n)}n.push("</node>")}}}},function(e,t,n){"use strict";t.__esModule=!0;var i=n(1),o=n(0),r=function(){return function(e,t){var n=this;this.bounds={n:0,s:0,w:0,e:0},this.reset=function(){o.$logger.debug("layout.reset"),n.bounds={n:0,s:0,w:0,e:0}},this.layout=function(){o.$logger.debug("layout.layout"),n.layout_direction(),n.layout_offset()},this.layout_direction=function(){n._layout_direction_root()},this._layout_direction_root=function(){var e=n.tsm.mind.root;if(e){var t=e.children,o=t.length;if(e.layout_data.direction=i.default.direction.center,e.layout_data.side_index=0,n.isside)for(var r=o;r--;)n._layout_direction_side(t[r],i.default.direction.right,r);else{r=o;for(var a=null;r--;)(a=t[r]).direction===i.default.direction.left?n._layout_direction_side(a,i.default.direction.left,r):n._layout_direction_side(a,i.default.direction.right,r)}}},this._layout_direction_side=function(e,t,i){var o=e.layout_data,r=e.children,a=r.length;o.direction=t,o.side_index=i;for(var d=a;d--;)n._layout_direction_side(r[d],t,d)},this.layout_offset=function(){var e=n.tsm.mind.root;if(e){var t=e.layout_data;if(t){for(var o=e.children,r=o.length,a=[],d=[],s=null;r--;)(s=o[r]).layout_data.direction===i.default.direction.right?d.unshift(s):a.unshift(s);t.left_nodes=a,t.right_nodes=d,t.outer_height_left=n._layout_offset_subnodes(a),t.outer_height_right=n._layout_offset_subnodes(d),n.bounds.e=(e.view_data.width||0)/2,n.bounds.w=0-n.bounds.e,n.bounds.n=0,n.bounds.s=Math.max(t.outer_height_left,t.outer_height_right)}}},this._layout_offset_subnodes=function(e){for(var t=0,i=e.length,o=i,r=null,a=0,d=0,s=null;o--;){var l=(r=e[o]).layout_data;null==s&&(s=r.parent),a=n._layout_offset_subnodes(r.children),r.expanded||(a=0,n.set_visible(r.children,!1)),a=Math.max(r.view_data.height||0,a),l.outer_height=a,l.offset_y=d-a/2,l.offset_x=n.opts.hspace*l.direction+s.view_data.width*(s.layout_data.direction+l.direction)/2,r.parent.isroot||(l.offset_x+=n.opts.pspace*l.direction),d=d-a-n.opts.vspace,t+=a}i>1&&(t+=n.opts.vspace*(i-1)),o=i;for(var _=t/2;o--;)(r=e[o]).layout_data.offset_y+=_;return t},this._layout_offset_subnodes_height=function(e){for(var t=0,i=e.length,o=i,r=null,a=0,d=null,s=0;o--;)d=(r=e[o]).layout_data,a=n._layout_offset_subnodes_height(r.children),r.expanded||(a=0),a=Math.max(r.view_data.height,a),d.outer_height=a,d.offset_y=s-a/2,s=s-a-n.opts.vspace,t+=a;i>1&&(t+=n.opts.vspace*(i-1)),o=i;for(var l=t/2;o--;)(r=e[o]).layout_data.offset_y+=l;return t},this.get_node_offset=function(e){var t=e.layout_data,i={x:-1,y:-1};if("_offset_"in t&&n.cache_valid?i=t._offset_:t._offset_=i,-1===i.x||-1===i.y){var o=t.offset_x,r=t.offset_y;if(!e.isroot){var a=n.get_node_offset(e.parent);o+=a.x,r+=a.y}i.x=o,i.y=r}return i},this.get_node_point=function(e){var t=n.get_node_offset(e);return o.$logger.debug(t),{x:t.x+e.view_data.width*(e.layout_data.direction-1)/2,y:t.y-e.view_data.height/2}},this.get_node_point_in=function(e){return n.get_node_offset(e)},this.get_node_point_out=function(e){var t={x:-1,y:-1};if(-1===t.x||-1===t.y)if(e.isroot)t.x=0,t.y=0;else{var i=n.get_node_offset(e);t.x=i.x+(e.view_data.width+n.opts.pspace)*e.layout_data.direction,t.y=i.y}return t},this.get_expander_point=function(e){var t=n.get_node_point_out(e),o={x:0,y:0};return e.layout_data.direction===i.default.direction.right?o.x=t.x-n.opts.pspace:o.x=t.x,o.y=t.y-Math.ceil(n.opts.pspace/2),o},this.get_min_size=function(){var e=n.tsm.mind.nodes;if(e){var t=null,i=null;for(var o in e)o&&(t=e[o],(i=n.get_node_point_out(t)).x>n.bounds.e&&(n.bounds.e=i.x),i.x<n.bounds.w&&(n.bounds.w=i.x));return{w:n.bounds.e-n.bounds.w,h:n.bounds.s-n.bounds.n}}},this.toggle_node=function(e){e.isroot||(e.expanded?n.collapse_node(e):n.expand_node(e))},this.expand_node=function(e){e.expanded=!0,n.part_layout(e),n.set_visible(e.children,!0)},this.collapse_node=function(e){e.expanded=!1,n.part_layout(e),n.set_visible(e.children,!1)},this.expand_all=function(){var e=n.tsm.mind.nodes;if(e){var t,i=0;for(var o in e)o&&((t=e[o]).expanded||(t.expanded=!0,i++));if(i>0){var r=n.tsm.mind.root;if(!r)return;n.part_layout(r),n.set_visible(r.children,!0)}}},this.collapse_all=function(){var e,t=n.tsm.mind.nodes,i=0;for(var o in t)o&&(e=t[o]).expanded&&!e.isroot&&(e.expanded=!1,i++);if(i>0){var r=n.tsm.mind.root;if(!r)return;n.part_layout(r),n.set_visible(r.children,!0)}},this.expand_to_depth=function(e,t,i){if(void 0===t&&(t=n.tsm.mind.root.children),void 0===i&&(i=1),!(e<1))for(var o=t.length,r=null;o--;)r=t[o],i<e&&(r.expanded||n.expand_node(r),n.expand_to_depth(e,r.children,i+1)),i===e&&r.expanded&&n.collapse_node(r)},this.part_layout=function(e){var t=n.tsm.mind.root;if(t){var r=t.layout_data;if(!r)return;e.isroot?(r.right_nodes&&(r.outer_height_right=n._layout_offset_subnodes_height(r.right_nodes)),r.left_nodes&&(r.outer_height_left=n._layout_offset_subnodes_height(r.left_nodes))):e.layout_data.direction===i.default.direction.right?r.right_nodes&&(r.outer_height_right=n._layout_offset_subnodes_height(r.right_nodes)):r.left_nodes&&(r.outer_height_left=n._layout_offset_subnodes_height(r.left_nodes)),n.bounds.s=Math.max(r.outer_height_left,r.outer_height_right),n.cache_valid=!1}else o.$logger.warn("can not found root node")},this.set_visible=function(e,t){for(var i=e.length,o=null;i--;)(o=e[i]).expanded?n.set_visible(o.children,t):n.set_visible(o.children,!1),o.isroot||(o.layout_data.visible=t)},this.is_expand=function(e){return e.expanded},this.is_visible=function(e){return!!e.layout_data.visible},this.opts=t,this.tsm=e,this.isside="side"===this.opts.mode,this.cache_valid=!1,o.$logger.debug("layout.init")}}();t.default=r},function(e,t,n){"use strict";t.__esModule=!0;var i=n(0),o=n(4),r=n(1),a=n(11),d=n(8),s=n(5),l=n(2),_=function(){function e(e,t){var n=this;if(this.e_panel=i.$doc.createElement("div"),this.e_nodes=i.$doc.createElement(l.TSM_Node_Names.nodes),this.e_canvas=i.$doc.createElement("canvas"),this.e_editor=i.$doc.createElement("input"),this.canvas_ctx=this.e_canvas.getContext("2d"),this.size={w:0,h:0},this.selected_node=null,this.editing_node=null,this.actualZoom=1,this.zoomStep=.1,this.minZoom=.5,this.maxZoom=2,this.add_event=function(e,t,i){n.e_nodes&&o.dom.add_event(n.e_nodes,t,function(t){var n=t||event;i.call(e,n)})},this.is_expander=function(e){return e.tagName.toLowerCase()===l.TSM_Node_Names.fold},this.reset=function(){i.$logger.debug("view.reset"),n.selected_node=null,n.clear_lines(),n.clear_nodes(),n.reset_theme()},this.reset_theme=function(){var e=n.tsm.options.theme;n.e_nodes.className=e?"theme-"+e:""},this.reset_custom_style=function(){var e=n.tsm.mind.nodes;for(var t in e)t&&n.reset_node_custom_style(e[t])},this.load=function(){i.$logger.debug("view.load"),n.init_nodes()},this.expand_size=function(){var e=n.layout.get_min_size();if(e){var t=e.h+2*n.opts.vmargin,i=e.w+2*n.opts.hmargin,o=n.e_panel.clientWidth||0,r=n.e_panel.clientHeight||0;o<i&&(o=i),r<t&&(r=t),n.size.w=o,n.size.h=r}},this.init_nodes_size=function(e){e.view_data.element&&(e.view_data.width=e.view_data.element.clientWidth,e.view_data.height=e.view_data.element.clientHeight)},this.init_nodes=function(){var e=n.tsm.mind.nodes,t=i.$doc.createDocumentFragment();for(var o in e)o&&n.create_node_element(e[o],t);for(var o in n.e_nodes.appendChild(t),e)o&&n.init_nodes_size(e[o])},this.add_node=function(e){n.create_node_element(e,n.e_nodes),n.init_nodes_size(e)},this.create_node_element=function(e,t){var o=i.$doc.createElement(l.TSM_Node_Names.node);if(e.isroot)o.className="root";else{var r=i.$doc.createElement(l.TSM_Node_Names.fold);i.$pushText(r,"-"),r.setAttribute("nodeid",e.id),r.style.visibility="hidden",t.appendChild(r),e.view_data.expander=r}e.topic&&(n.opts.support_html?i.$pushChild(o,e.topic):i.$pushText(o,e.topic)),o.setAttribute("nodeid",e.id),n._reset_node_custom_style(o,e.data),t.appendChild(o),e.view_data.element=o},this.remove_node=function(e){null!=n.selected_node&&n.selected_node.id===e.id&&(n.selected_node=null),null!==n.editing_node&&n.editing_node.id===e.id&&e.view_data.element&&(e.view_data.element.removeChild(n.e_editor),n.editing_node=null);for(var t=e.children,i=t.length;i--;)n.remove_node(t[i]);var o=e.view_data.element,r=e.view_data.expander;n.e_nodes&&(o&&n.e_nodes.removeChild(o),r&&n.e_nodes.removeChild(r),e.view_data.element=null,e.view_data.expander=null)},this.update_node=function(e){var t=e.view_data.element;e.topic&&(n.opts.support_html?i.$pushChild(t,e.topic):i.$pushText(t,e.topic)),e.view_data.width=t.clientWidth,e.view_data.height=t.clientHeight},this.select_node=function(e){if(e&&n.selected_node){var t=n.selected_node.view_data.element,i=e.view_data.element;t&&(t.className=t.className.replace(/\s*selected\b/i,""),n.reset_node_custom_style(n.selected_node)),e&&i&&(n.selected_node=e,i.className+=" selected",n.clear_node_custom_style(e))}},this.select_clear=function(){n.select_node(null)},this.get_editing_node=function(){return n.editing_node},this.is_editing=function(){return!!n.editing_node},this.edit_node_begin=function(e){if(e.topic){null!=n.editing_node&&n.edit_node_end(),n.editing_node=e;var t=e.view_data.element;if(t){var o=e.topic,r=getComputedStyle(t);n.e_editor.value=o,n.e_editor.style.width=t.clientWidth-parseInt(r.getPropertyValue("padding-left"),10)-parseInt(r.getPropertyValue("padding-right"),10)+"px",t.innerHTML="",t.appendChild(n.e_editor),t.style.zIndex="5",n.e_editor.focus(),n.e_editor.select()}}else i.$logger.warn("don't edit image nodes")},this.edit_node_end=function(){if(null!=n.editing_node){var e=n.editing_node;n.editing_node=null;var t=e.view_data.element,o=n.e_editor.value;t.style.zIndex="auto",t.removeChild(n.e_editor),a.text.is_empty(o)||e.topic===o?n.opts.support_html?i.$pushChild(t,e.topic):i.$pushText(t,e.topic):n.tsm.update_node(e.id,o)}},this.get_view_offset=function(){var e=n.layout.bounds;return{x:(n.size.w-e.e-e.w)/2,y:n.size.h/2}},this.resize=function(){n.e_canvas.width=1,n.e_canvas.height=1,n.e_nodes.style.width="1px",n.e_nodes.style.height="1px",n.expand_size(),n._show()},this._show=function(){n.e_canvas.width=n.size.w,n.e_canvas.height=n.size.h,n.e_nodes.style.width=n.size.w+"px",n.e_nodes.style.height=n.size.h+"px",n.show_nodes(),n.show_lines(),n.tsm.invoke_event_handle(r.TSMindEventTypeMap.resize,{data:[]})},this.zoomIn=function(){return n.setZoom(n.actualZoom+n.zoomStep)},this.zoomOut=function(){return n.setZoom(n.actualZoom-n.zoomStep)},this.setZoom=function(e){if(e<n.minZoom||e>n.maxZoom)return!1;n.actualZoom=e;for(var t=0,i=d._slice.call(n.e_panel.children);t<i.length;t++){i[t].style.transform="scale("+e+")"}return n.show(!0),!0},this._center_root=function(){var e=n.e_panel.clientWidth,t=n.e_panel.clientHeight;if(n.size.w>e){var i=n.get_view_offset();n.e_panel.scrollLeft=i.x-e/2}n.size.h>t&&(n.e_panel.scrollTop=(n.size.h-t)/2)},this.show=function(e){i.$logger.debug("view.show"),n.expand_size(),n._show(),e&&n._center_root()},this.relayout=function(){n.expand_size(),n._show()},this.save_location=function(e){var t=e.view_data;t&&(t._saved_location={x:Number(t.element.style.left)-n.e_panel.scrollLeft,y:Number(t.element.style.top)-n.e_panel.scrollTop})},this.restore_location=function(e){var t=e.view_data;if(t&&t.element){var i=t.element;n.e_panel.scrollLeft=Number(i.style.left)-t._saved_location.x,n.e_panel.scrollTop=Number(t.element.style.top)-t._saved_location.y}},this.clear_nodes=function(){var e=n.tsm.mind;if(null!=e){var t=e.nodes,i=null;for(var o in t)o&&((i=t[o]).view_data.element=null,i.view_data.expander=null);n.e_nodes.innerHTML=""}},this.show_nodes=function(){var e=n.tsm.mind.nodes,t=n.get_view_offset();for(var o in e)if(o){var r=e[o];i.$logger.log(r);var a=r.view_data.element,d=r.view_data.expander;if(a)if(n.layout.is_visible(r)){n.reset_node_custom_style(r);var s=n.layout.get_node_point(r);if(r.view_data.abs_x=t.x+s.x,r.view_data.abs_y=t.y+s.y,a.style.left=r.view_data.abs_x+"px",a.style.top=r.view_data.abs_y+"px",a.style.display="",a.style.visibility="visible",!r.isroot&&r.children.length>0){var l=r.expanded?"-":"+",_=n.layout.get_expander_point(r);d&&(d.style.left=t.x+_.x+"px",d.style.top=t.y+_.y+"px",d.style.display="",d.style.visibility="visible",i.$pushText(d,l))}!r.isroot&&0===r.children.length&&d&&(d.style.display="none",d.style.visibility="hidden")}else a.style.display="none",d.style.display="none"}},this.reset_node_custom_style=function(e){