1234567891011 |
- /*!
- * ====================================================
- * kityminder-editor - v1.0.67 - 2022-05-25
- * https://github.com/fex-team/kityminder-editor
- * GitHub: https://github.com/fex-team/kityminder-editor
- * Copyright (c) 2022 ; Licensed
- * ====================================================
- */
- !function(){var d={r:function(e){if(d[e].inited)return d[e].value;if("function"!=typeof d[e].value)return d[e].inited=!0,d[e].value;var t={exports:{}},n=d[e].value(null,t.exports,t);if(d[e].inited=!0,void 0!==(d[e].value=n))return n;for(var i in t.exports)if(t.exports.hasOwnProperty(i))return d[e].inited=!0,d[e].value=t.exports,t.exports}};d[0]={value:function(e,t,n){var i=[];function r(e){i.push(e)}function o(e){this.selector=e;for(var t=0;t<i.length;t++)"function"==typeof i[t]&&i[t].call(this,this)}return(o.assemble=r)(d.r(7)),r(d.r(9)),r(d.r(14)),r(d.r(18)),r(d.r(11)),r(d.r(12)),r(d.r(5)),r(d.r(6)),r(d.r(8)),r(d.r(15)),r(d.r(10)),r(d.r(13)),r(d.r(16)),r(d.r(17)),n.exports=o}},d[1]={value:function(e,t,n){return n.exports=kityminder.Editor=d.r(0)}},d[2]={value:function(e,t,n){return n.exports=window.HotBox}},d[3]={value:function(e,t,n){}},d[4]={value:function(e,t,n){return n.exports=window.kityminder.Minder}},d[5]={value:function(e,t,n){function i(){var n="\ufeff",i={"application/km":""},r={"\ufeff":"SPLITOR","":"application/km"};function o(e,t){if(!this.isPureText(t)){if(!this.whichMimeType(t))throw new Error("unknow mimetype!");t=this.getPureText(t)}return!1===e?t:e+n+t}this.registMimeTypeProtocol=function(e,t){if(t&&r[t])throw new Error("sing has registed!");if(e&&i[e])throw new Error("mimetype has registed!");r[t]=e,i[e]=t},this.getMimeTypeProtocol=function(e,t){var n=i[e]||!1;return void 0===t?o.bind(this,n):o(n,t)},this.getSpitor=function(){return n},this.getMimeType=function(e){return void 0!==e?r[e]||null:i}}return i.prototype.isPureText=function(e){return!~e.indexOf(this.getSpitor())},i.prototype.getPureText=function(e){return this.isPureText(e)?e:e.split(this.getSpitor())[1]},i.prototype.whichMimeType=function(e){return this.isPureText(e)?null:this.getMimeType(e.split(this.getSpitor())[0])},n.exports=function(){this.minder.supportClipboardEvent&&!kity.Browser.gecko&&(this.MimeType=new i)}}},d[6]={value:function(e,t,n){return n.exports=function(){var c=this.minder,r=window.kityminder.data;if(c.supportClipboardEvent&&!kity.Browser.gecko){var d=this.fsm,u=this.receiver,s=this.MimeType,o=s.getMimeTypeProtocol("application/km"),m=r.getRegisterProtocol("json").decode,p=[];document.addEventListener("copy",function(e){if(document.activeElement==u.element){var t=e;switch(d.state()){case"input":break;case"normal":var n=[].concat(c.getSelectedNodes());if(n.length){var i;if(1<n.length&&(n.sort(function(e,t){return e.getLevel()-t.getLevel()}),(i=n[0].getLevel())!==n[n.length-1].getLevel())){var r,o=0,a=n.length,l=a-1;for(r=n[l];r.getLevel()!==i;){for(o=0;o<a&&n[o].getLevel()===i;){if(n[o].isAncestorOf(r)){n.splice(l,1);break}o++}r=n[--l]}}var s=g(n);t.clipboardData.setData("text/plain",s)}e.preventDefault()}}}),document.addEventListener("cut",function(e){if(document.activeElement==u.element){if("normal"!==c.getStatus())return void e.preventDefault();var t=e;switch(d.state()){case"input":break;case"normal":var n=c.getSelectedNodes();n.length&&(t.clipboardData.setData("text/plain",g(n)),c.execCommand("removenode")),e.preventDefault()}}}),document.addEventListener("paste",function(e){if(document.activeElement==u.element){if("normal"!==c.getStatus())return void e.preventDefault();var t=e,n=d.state(),i=t.clipboardData.getData("text/plain");switch(n){case"input":if(!s.isPureText(i))return void e.preventDefault();break;case"normal":var r=c.getSelectedNodes();if("application/km"===s.whichMimeType(i)){var o,a=m(s.getPureText(i));r.forEach(function(e){for(var t=a.length-1;0<=t;t--)o=c.createNode(null,e),c.importNode(o,a[t]),p.push(o),e.appendChild(o)}),c.select(p,!0),p=[],c.refresh()}else{if(t.clipboardData&&-1<t.clipboardData.items[0].type.indexOf("image")){var l=t.clipboardData.items[0].getAsFile();return angular.element(document.body).injector().get("server").uploadImage(l).then(function(e){var t=e.data;0===t.errno&&c.execCommand("image",t.data.url)})}r.forEach(function(e){c.Text2Children(e,i)})}e.preventDefault()}}})}function g(e){for(var t=[],n=0,i=e.length;n<i;n++)t.push(c.exportNode(e[n]));return o(r.getRegisterProtocol("json").encode(t))}}}},d[7]={value:function(e,t,n){return n.exports=function(){var e;if(!(e="string"==typeof this.selector?document.querySelector(this.selector):this.selector))throw new Error("Invalid selector: "+this.selector);e.classList.add("km-editor"),this.container=e}}},d[8]={value:function(e,t,n){var v=d.r(2);new(d.r(19))("drag");return n.exports=function(){var n,i,t=this.fsm,o=this.minder,r=this.hotbox;this.receiver.element,t.when("* -> drag",function(){}),t.when("drag -> *",function(e,t,n){});var a,l,s,c,d,u,m=1,p=!1,g=!1;function f(e,t){if(!e)return p=g=!1,u&&kity.releaseFrame(u),void(u=null);var n,i,r;u||(u=kity.requestFrame((n=e,i=t,r=o,function(e){switch(n){case"left":r._viewDragger.move({x:-i,y:0},0);break;case"top":r._viewDragger.move({x:0,y:-i},0);break;case"right":r._viewDragger.move({x:i,y:0},0);break;case"bottom":r._viewDragger.move({x:0,y:i},0);break;default:return}e.next()})))}o.on("mousedown",function(e){m=0;var t=o.getPaper().container.getBoundingClientRect();n=e.originEvent.clientX,i=e.originEvent.clientY,d=t.top,a=t.width,l=t.height}),o.on("mousemove",function(e){if("drag"===t.state()&&0==m&&o.getSelectedNode()&&(20<Math.abs(n-e.originEvent.clientX)||20<Math.abs(i-e.originEvent.clientY))&&(s=e.originEvent.clientX,c=e.originEvent.clientY-d,s<20?f("right",20-s):a-20<s?f("left",20+s-a):p=!0,c<20?f("bottom",c):l-20<c?f("top",20+c-l):g=!0,p&&g&&f(!1)),"drag"!==t.state()&&0===m&&o.getSelectedNode()&&(20<Math.abs(n-e.originEvent.clientX)||20<Math.abs(i-e.originEvent.clientY)))return"hotbox"===t.state()&&r.active(v.STATE_IDLE),t.jump("drag","user-drag")}),window.addEventListener("mouseup",function(){if(m=1,"drag"===t.state())return f(!1),t.jump("normal","drag-finish")},!1)}}},d[9]={value:function(e,t,n){var s=new(d.r(19))("fsm");function c(e,t,n,i){return e.when==t&&(("*"==e.enter||e.enter==i)&&("*"==e.exit||e.exit==n||void 0))}function i(e){var a=e,l=[];this.jump=function(e,t){if(!t)throw new Error("Please tell fsm the reason to jump");var n,i,r=a,o=[r,e].concat([].slice.call(arguments,1));for(n=0;n<l.length;n++)if(c((i=l[n]).condition,"before",r,e)&&i.apply(null,o))return;for(a=e,s.log("[{0}] {1} -> {2}",t,r,e),n=0;n<l.length;n++)c((i=l[n]).condition,"after",r,e)&&i.apply(null,o);return a},this.state=function(){return a},this.when=function(e,t){var n,i,r,o;if(1==arguments.length&&(t=e,e="* -> *"),2==(i=e.split(" - ")).length?n="before":2==(i=e.split(" -> ")).length&&(n="after"),!n)throw new Error("Illegal fsm condition: "+e);r=i[0],o=i[1],t.condition={when:n,exit:r,enter:o},l.push(t)}}return n.exports=function(){this.fsm=new i("normal")}}},d[10]={value:function(e,t,n){var g=d.r(22);return window.diff=g,n.exports=function(){var n,i,r,o,a=this.minder,e=this.hotbox,l=100;function t(){r=[],o=[],n=a.exportJson()}function s(){var e=a.exportJson(),t=g(e,n);if(t.length){for(r.push(t);r.length>l;)r.shift();return n=e,!0}}function c(){i=!0;var e,t=r.pop();t&&(a.applyPatches(t),e=a.exportJson(),o.push(g(e,n)),n=e),i=!1}function d(){i=!0;var e=o.pop();e&&(a.applyPatches(e),s()),i=!1}function u(){return!!r.length}function m(){return!!o.length}this.history={reset:t,undo:c,redo:d,hasUndo:u,hasRedo:m},t(),a.on("contentchange",function(){i||s()&&(o=[])}),a.on("import",t),a.on("patch",function(e){if(i){var t=e.patch;switch(t.express){case"node.add":a.select(t.node.getChild(t.index),!0);break;case"node.remove":case"data.replace":case"data.remove":case"data.add":a.select(t.node,!0)}}});var p=e.state("main");p.button({position:"top",label:"撤销",key:"Ctrl + Z",enable:u,action:c,next:"idle"}),p.button({position:"top",label:"重做",key:"Ctrl + Y",enable:m,action:d,next:"idle"})}}},d[11]={value:function(e,t,n){var i=d.r(2);return n.exports=function(){var e=this.fsm,a=this.minder,r=this.receiver,t=this.container,l=new i(t);l.setParentFSM(e),e.when("normal -> hotbox",function(e,t,n){var i,r=a.getSelectedNode();if(r){var o=r.getRenderBox();i={x:o.cx,y:o.cy}}l.active("main",i)}),e.when("normal -> normal",function(e,t,n,i){"shortcut-handle"==n&&(l.dispatch(i)?i.preventDefault():a.dispatchKeyEvent(i))}),e.when("modal -> normal",function(e,t,n,i){"import-text-finish"==n&&r.element.focus()}),this.hotbox=l}}},d[12]={value:function(e,t,n){d.r(21);var s=new(d.r(19))("input");return n.exports=function(){var r=this.fsm,p=this.minder,e=this.hotbox,o=this.receiver,a=o.element,l=window.kity.Browser.gecko;function t(){var e=p.getSelectedNode();if(e){var t=a;if(a.innerText="","bold"===e.getData("font-weight")){var n=document.createElement("b");t.appendChild(n),t=n}if("italic"===e.getData("font-style")){var i=document.createElement("i");t.appendChild(i),t=i}t.innerText=p.queryCommandValue("text"),l&&o.fixFFCaretDisappeared(),r.jump("input","input-request"),o.selectAll()}}function n(){var e=p.getSelectedNode();if(e){var t=e.getData("font-size")||e.getStyle("font-size");a.style.fontSize=t+"px",a.style.minWidth=0,a.style.minWidth=a.clientWidth+"px",a.style.fontWeight=e.getData("font-weight")||"",a.style.fontStyle=e.getData("font-style")||"",a.classList.add("input"),a.focus()}}function g(){a.classList.remove("input"),o.selectAll()}function i(){var t=i,n=p.getSelectedNode();n&&(t.timer||(t.timer=setTimeout(function(){var e=n.getRenderBox("TextRenderer");a.style.left=Math.round(e.x)+"px",a.style.top=(s.flaged?Math.round(e.bottom+30):Math.round(e.y))+"px",t.timer=0})))}s.flaged&&a.classList.add("debug"),a.onmousedown=function(e){e.stopPropagation()},p.on("layoutallfinish viewchange viewchanged selectionchange",function(e){"viewchange"==e.type&&"input"!=r.state()||i()}),i(),r.when("* -> input",n),r.when("input -> *",function(e,t,n){switch(n){case"input-cancel":return g();case"input-commit":default:return function(){var e=[].slice.call(a.childNodes);setTimeout(function(){a.innerHTML=""},0);var t=p.getSelectedNode();if(e=function(e){for(var t,n,i,r="",o=/\S/,a=new RegExp("( |"+String.fromCharCode(160)+")"),l=document.createElement("br"),s=!1,c=!1,d=0,u=e.length;d<u;d++)switch(t=e[d],Object.prototype.toString.call(t)){case"[object HTMLBRElement]":r+="\n";break;case"[object Text]":if(t=t.textContent.replace(" "," "),o.test(t))r+=t;else for(i=t.length;i--;)a.test(t[i])?r+=" ":"\t"===t[i]&&(r+="\t");break;case"[object HTMLElement]":switch(t.nodeName){case"B":s=!0;break;case"I":c=!0}[].splice.apply(e,[d,1].concat([].slice.call(t.childNodes))),u=e.length,d--;break;case"[object HTMLSpanElement]":[].splice.apply(e,[d,1].concat([].slice.call(t.childNodes))),u=e.length,d--;break;case"[object HTMLImageElement]":t.src&&/http(|s):\/\//.test(t.src)&&p.execCommand("Image",t.src,t.alt);break;case"[object HTMLDivElement]":n=[];for(var m=0,u=t.childNodes.length;m<u;m++)n.push(t.childNodes[m]);n.push(l),[].splice.apply(e,[d,1].concat(n)),u=e.length,d--;break;default:if(t&&t.childNodes.length){n=[];for(var m=0,u=t.childNodes.length;m<u;m++)n.push(t.childNodes[m]);n.push(l),[].splice.apply(e,[d,1].concat(n)),u=e.length,d--}else t&&void 0!==t.textContent?r+=t.textContent:r+=""}return r=(r=r.replace(/^\n*|\n*$/g,"")).replace(new RegExp("(\n|\r|\n\r)( |"+String.fromCharCode(160)+"){4}","g"),"$1\t"),p.getSelectedNode().setText(r),s?p.queryCommandState("bold")||p.execCommand("bold"):p.queryCommandState("bold")&&p.execCommand("bold"),c?p.queryCommandState("italic")||p.execCommand("italic"):p.queryCommandState("italic")&&p.execCommand("italic"),g(),r}(e),function(t,e){try{p.decodeData("text",e).then(function(e){!function e(t,n,i){var r=n.data;t.setText(r.text||"");for(var o=n.children||[],a=0;a<o.length;a++){var l=i.createNode(null,t);e(l,o[a],i)}return t}(t,e,p),p.fire("contentchange"),p.getRoot().renderTree(),p.layout(300)})}catch(e){if(p.fire("contentchange"),p.getRoot().renderTree(),"Error: Invalid local format"!==e.toString())throw e}}(t,e),"root"==t.type){var n=p.getRoot().getText();p.fire("initChangeRoot",{text:n})}}()}}),o.onblur(function(e){"input"==r.state()&&r.jump("normal","input-commit")}),p.on("beforemousedown",function(){"input"==r.state()&&r.jump("normal","input-commit")}),p.on("dblclick",function(){p.getSelectedNode()&&"readonly"!==p._status&&t()}),e.state("main").button({position:"center",label:"编辑",key:"F2",enable:function(){return-1!=p.queryCommandState("text")},action:t}),this.editText=t}}},d[13]={value:function(e,t,n){var c=d.r(2);return n.exports=function(){var t,n,i=this.fsm,r=this.minder,o=this.receiver,e=this.container,a=o.element,l=this.hotbox,s=!1;o.listen("normal",function(e){if(o.enable(),e.is("Space"))return e.preventDefault(),kity.Browser.safari&&(a.innerHTML=""),i.jump("hotbox","space-trigger");switch(e.type){case"keydown":if(r.getSelectedNode()){if(!((t=e).ctrlKey||t.metaKey||t.altKey)&&(65<=t.keyCode&&t.keyCode<=90||48<=t.keyCode&&t.keyCode<=57||108!=t.keyCode&&96<=t.keyCode&&t.keyCode<=111||108!=t.keyCode&&96<=t.keyCode&&t.keyCode<=111||229==t.keyCode||0===t.keyCode))return i.jump("input","user-input")}else a.innerHTML="";i.jump("normal","shortcut-handle",e)}var t}),o.listen("hotbox",function(e){if(o.disable(),e.preventDefault(),l.dispatch(e),l.state()==c.STATE_IDLE&&"hotbox"==i.state())return i.jump("normal","hotbox-idle")}),o.listen("input",function(e){if(o.enable(),"keydown"==e.type){if(e.is("Enter"))return e.preventDefault(),i.jump("normal","input-commit");if(e.is("Esc"))return e.preventDefault(),i.jump("normal","input-cancel");(e.is("Tab")||e.is("Shift + Tab"))&&e.preventDefault()}else if("keyup"==e.type&&e.is("Esc")){if(e.preventDefault(),!s)return i.jump("normal","input-cancel")}else"compositionstart"==e.type?s=!0:"compositionend"==e.type&&setTimeout(function(){s=!1})}),e.addEventListener("mousedown",function(e){2==e.button&&e.preventDefault(),"hotbox"==i.state()?(l.active(c.STATE_IDLE),i.jump("normal","blur")):"normal"==i.state()&&2==e.button&&(t=e.clientX,n=e.clientY)},!1),e.addEventListener("mousewheel",function(e){"hotbox"==i.state()&&(l.active(c.STATE_IDLE),i.jump("normal","mousemove-blur"))},!1),e.addEventListener("contextmenu",function(e){e.preventDefault()}),e.addEventListener("mouseup",function(e){"normal"==i.state()&&2==e.button&&e.clientX==t&&e.clientY==n&&r.getSelectedNode()&&i.jump("hotbox","content-menu")},!1),l.$element.addEventListener("mousedown",function(e){e.stopPropagation()})}}},d[14]={value:function(e,t,n){var i=d.r(4);return n.exports=function(){var e=new i({enableKeyReceiver:!1,enableAnimation:!0});e.renderTo(this.selector),e.setTheme(null),e.select(e.getRoot(),!0),e.execCommand("text","中心主题"),this.minder=e}}},d[15]={value:function(e,t,n){return n.exports=function(){var o=this,a=this.minder,e=this.hotbox,l=this.fsm,s=e.state("main"),c=0;["前移:Alt+Up:ArrangeUp","下级:Tab|Insert:AppendChildNode","同级:Enter:AppendSiblingNode","后移:Alt+Down:ArrangeDown","删除:Delete|Backspace:RemoveNode","上级:Shift+Tab|Shift+Insert:AppendParentNode"].forEach(function(e){var t=e.split(":"),n=t.shift(),i=t.shift(),r=t.shift();s.button({position:"ring",label:n,key:i,action:function(){0===r.indexOf("Append")?(c++,a.execCommand(r,"分支主题"),a.on("layoutallfinish",function e(){--c||o.editText(),a.off("layoutallfinish",e)})):(a.execCommand(r),l.jump("normal","command-executed"))},enable:function(){return-1!=a.queryCommandState(r)}})}),s.button({position:"bottom",label:"导入节点",key:"Alt + V",enable:function(){return 1==a.getSelectedNodes().length},action:function(){a.fire("importNodeData")},next:"idle"}),s.button({position:"bottom",label:"导出节点",key:"Alt + C",enable:function(){return 1==a.getSelectedNodes().length},action:function(){a.fire("exportNodeData")},next:"idle"})}}},d[16]={value:function(e,t,n){return n.exports=function(){var t=this.minder,e=this.hotbox;e.state("main").button({position:"top",label:"优先级",key:"P",next:"priority",enable:function(){return-1!=t.queryCommandState("priority")}});var n=e.state("priority");"123456789".replace(/./g,function(e){n.button({position:"ring",label:"P"+e,key:e,action:function(){t.execCommand("Priority",e)}})}),n.button({position:"center",label:"移除",key:"Del",action:function(){t.execCommand("Priority",0)}}),n.button({position:"top",label:"返回",key:"esc",next:"back"})}}},d[17]={value:function(e,t,n){return n.exports=function(){var t=this.minder,e=this.hotbox;e.state("main").button({position:"top",label:"进度",key:"G",next:"progress",enable:function(){return-1!=t.queryCommandState("progress")}});var n=e.state("progress");"012345678".replace(/./g,function(e){n.button({position:"ring",label:"G"+e,key:e,action:function(){t.execCommand("Progress",parseInt(e)+1)}})}),n.button({position:"center",label:"移除",key:"Del",action:function(){t.execCommand("Progress",0)}}),n.button({position:"top",label:"返回",key:"esc",next:"back"})}}},d[18]={value:function(e,t,n){var a=d.r(23);d.r(2);return n.exports=function(){var i=this.fsm,e=this.minder,n=document.createElement("div");n.contentEditable=!0,n.setAttribute("tabindex",-1),n.classList.add("receiver"),n.onkeydown=n.onkeypress=n.onkeyup=o,n.addEventListener("compositionstart",o),this.container.appendChild(n);var t={element:n,selectAll:function(){n.innerHTML||(n.innerHTML=" ");var e=document.createRange(),t=window.getSelection();e.selectNodeContents(n),t.removeAllRanges(),t.addRange(e),n.focus()},enable:function(){n.setAttribute("contenteditable",!0)},disable:function(){n.setAttribute("contenteditable",!1)},fixFFCaretDisappeared:function(){n.removeAttribute("contenteditable"),n.setAttribute("contenteditable","true"),n.blur(),n.focus()},onblur:function(e){n.onblur=e}};t.selectAll(),e.on("beforemousedown",t.selectAll),e.on("receiverfocus",t.selectAll),e.on("readonly",function(){e.disable(),editor.receiver.element.parentElement.removeChild(editor.receiver.element),editor.hotbox.$container.removeChild(editor.hotbox.$element)});var r=[];function o(e){var t;e.is=function(e){for(var t=e.split("|"),n=0;n<t.length;n++)if(a.is(this,t[n]))return!0;return!1};for(var n=0;n<r.length;n++)if(("*"==(t=r[n]).notifyState||t.notifyState==i.state())&&t.call(null,e))return}t.listen=function(e,t){1==arguments.length&&(t=e,e="*"),t.notifyState=e,r.push(t)},this.receiver=t}}},d[19]={value:function(e,t,n){var i=d.r(20);function r(){}return n.exports=function(t){if(this.flaged=-1!=window.location.search.indexOf(t)){var e=function(e){for(var t=0,n=0;n<e.length;n++)t+=e.charCodeAt(n);return t}(t)%360,n=i("background: hsl({0}, 50%, 80%); color: hsl({0}, 100%, 30%); padding: 2px 3px; margin: 1px 3px 0 0;border-radius: 2px;",e);this.log=function(){var e=i.apply(null,arguments);console.log(i("%c{0}%c{1}",t,e),n,"background: none; color: black;")}}else this.log=r}}},d[20]={value:function(e,t,n){return n.exports=function(e,n){return"object"!=typeof n&&(n=[].slice.call(arguments,1)),String(e).replace(/\{(\w+)\}/gi,function(e,t){return n[t]||t})}}},d[21]={value:function(e,t,n){!("innerText"in document.createElement("a"))&&"getSelection"in window&&(HTMLElement.prototype.__defineGetter__("innerText",function(){var e,t,n=window.getSelection(),i=[];for(t=0;t<n.rangeCount;t++)i[t]=n.getRangeAt(t);for(n.removeAllRanges(),n.selectAllChildren(this),e=n.toString(),n.removeAllRanges(),t=0;t<i.length;t++)n.addRange(i[t]);return e}),HTMLElement.prototype.__defineSetter__("innerText",function(e){this.innerHTML=(e||"").replace(/</g,"<").replace(/>/g,">").replace(/\n/g,"<br>")}))}},d[22]={value:function(e,t,n){var m=Object.keys?Object.keys:function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t};function p(e){return-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function g(e){return"object"==typeof e?JSON.parse(JSON.stringify(e)):e}return n.exports=function(e,t){var n=[];return function e(t,n,i,r){for(var o=m(n),a=m(t),l=!1,s=a.length-1;0<=s;s--){var c=t[u=a[s]];if(n.hasOwnProperty(u)){var d=n[u];"object"==typeof c&&null!=c&&"object"==typeof d&&null!=d?e(c,d,i,r+"/"+p(u)):c!=d&&i.push({op:"replace",path:r+"/"+p(u),value:g(d)})}else i.push({op:"remove",path:r+"/"+p(u)}),l=!0}if(l||o.length!=a.length)for(s=0;s<o.length;s++){var u=o[s];t.hasOwnProperty(u)||i.push({op:"add",path:r+"/"+p(u),value:g(n[u])})}}(e,t,n,""),n}}},d[23]={value:function(e,t,n){var i=d.r(24),r=4096,o=8192,a=16384;function l(e){return"string"==typeof e?(t=0,e.toLowerCase().split(/\s*\+\s*/).forEach(function(e){switch(e){case"ctrl":case"cmd":t|=r;break;case"alt":t|=o;break;case"shift":t|=a;break;default:t|=i[e]}}),t):function(e){var t=0;(e.ctrlKey||e.metaKey)&&(t|=r);e.altKey&&(t|=o);e.shiftKey&&(t|=a);if(-1===[16,17,18,91].indexOf(e.keyCode)){if(229===e.keyCode&&e.keyIdentifier)return t|=parseInt(e.keyIdentifier.substr(2),16);t|=e.keyCode}return t}(e);var t}t.hash=l,t.is=function(e,t){return e&&t&&l(e)==l(t)}}},d[24]={value:function(e,t,n){var i={Shift:16,Control:17,Alt:18,CapsLock:20,BackSpace:8,Tab:9,Enter:13,Esc:27,Space:32,PageUp:33,PageDown:34,End:35,Home:36,Insert:45,Left:37,Up:38,Right:39,Down:40,Direction:{37:1,38:1,39:1,40:1},Del:46,NumLock:144,Cmd:91,CmdFF:224,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,"`":192,"=":187,"-":189,"/":191,".":190};for(var r in i)i.hasOwnProperty(r)&&(i[r.toLowerCase()]=i[r]);var o="a".charCodeAt(0);"abcdefghijklmnopqrstuvwxyz".split("").forEach(function(e){i[e]=e.charCodeAt(0)-o+65});for(var a=9;i[a.toString()]=a+48,--a;);n.exports=i}};var e,t={"expose-editor":1};angular.module("kityminderEditor",["ui.bootstrap","ui.codemirror","ui.colorpicker"]).config(["$sceDelegateProvider",function(e){e.resourceUrlWhitelist(["self","http://agroup.baidu.com:8910/**","http://cq01-fe-rdtest01.vm.baidu.com:8910/**","http://agroup.baidu.com:8911/**"])}]),angular.module("kityminderEditor").run(["$templateCache",function(e){"use strict";e.put("ui/directive/appendNode/appendNode.html","<div class=\"km-btn-group append-group\"><div class=\"km-btn-item append-child-node\" ng-disabled=\"minder.queryCommandState('AppendChildNode') === -1\" ng-click=\"minder.queryCommandState('AppendChildNode') === -1 || execCommand('AppendChildNode')\" title=\"{{ 'appendchildnode' | lang:'ui/command' }}\"><i class=\"km-btn-icon\"></i> <span class=\"km-btn-caption\">{{ 'appendchildnode' | lang:'ui/command' }}</span></div><div class=\"km-btn-item append-parent-node\" ng-disabled=\"minder.queryCommandState('AppendParentNode') === -1\" ng-click=\"minder.queryCommandState('AppendParentNode') === -1 || execCommand('AppendParentNode')\" title=\"{{ 'appendparentnode' | lang:'ui/command' }}\"><i class=\"km-btn-icon\"></i> <span class=\"km-btn-caption\">{{ 'appendparentnode' | lang:'ui/command' }}</span></div><div class=\"km-btn-item append-sibling-node\" ng-disabled=\"minder.queryCommandState('AppendSiblingNode') === -1\" ng-click=\"minder.queryCommandState('AppendSiblingNode') === -1 ||execCommand('AppendSiblingNode')\" title=\"{{ 'appendsiblingnode' | lang:'ui/command' }}\"><i class=\"km-btn-icon\"></i> <span class=\"km-btn-caption\">{{ 'appendsiblingnode' | lang:'ui/command' }}</span></div></div>"),e.put("ui/directive/arrange/arrange.html","<div class=\"km-btn-group arrange-group\"><div class=\"km-btn-item arrange-up\" ng-disabled=\"minder.queryCommandState('ArrangeUp') === -1\" ng-click=\"minder.queryCommandState('ArrangeUp') === -1 || minder.execCommand('ArrangeUp')\" title=\"{{ 'arrangeup' | lang:'ui/command' }}\"><i class=\"km-btn-icon\"></i> <span class=\"km-btn-caption\">{{ 'arrangeup' | lang:'ui/command' }}</span></div><div class=\"km-btn-item arrange-down\" ng-disabled=\"minder.queryCommandState('ArrangeDown') === -1\" ng-click=\"minder.queryCommandState('ArrangeDown') === -1 || minder.execCommand('ArrangeDown');\" title=\"{{ 'arrangedown' | lang:'ui/command' }}\"><i class=\"km-btn-icon\"></i> <span class=\"km-btn-caption\">{{ 'arrangedown' | lang:'ui/command' }}</span></div></div>"),e.put("ui/directive/colorPanel/colorPanel.html",'<div class="bg-color-wrap"><span class="quick-bg-color" ng-click="minder.queryCommandState(\'background\') === -1 || minder.execCommand(\'background\', bgColor)" ng-disabled="minder.queryCommandState(\'background\') === -1"></span> <span color-picker class="bg-color" set-color="setDefaultBg()" ng-disabled="minder.queryCommandState(\'background\') === -1"><span class="caret"></span></span> <span class="bg-color-preview" ng-style="{ \'background-color\': bgColor }" ng-click="minder.queryCommandState(\'background\') === -1 || minder.execCommand(\'background\', bgColor)" ng-disabled="minder.queryCommandState(\'background\') === -1"></span></div>'),e.put("ui/directive/expandLevel/expandLevel.html",'<div class="btn-group-vertical" dropdown is-open="isopen"><button type="button" class="btn btn-default expand" title="{{ \'expandtoleaf\' | lang:\'ui\' }}" ng-class="{\'active\': isopen}" ng-click="minder.execCommand(\'ExpandToLevel\', 9999)"></button> <button type="button" class="btn btn-default expand-caption dropdown-toggle" title="{{ \'expandtoleaf\' | lang:\'ui\' }}" dropdown-toggle><span class="caption">{{ \'expandtoleaf\' | lang:\'ui\' }}</span> <span class="caret"></span> <span class="sr-only">{{ \'expandtoleaf\' | lang:\'ui\' }}</span></button><ul class="dropdown-menu" role="menu"><li ng-repeat="level in levels"><a href ng-click="minder.execCommand(\'ExpandToLevel\', level)">{{ \'expandtolevel\' + level | lang:\'ui/command\' }}</a></li></ul></div>'),e.put("ui/directive/fontOperator/fontOperator.html",'<div class="font-operator"><div class="dropdown font-family-list" dropdown><div class="dropdown-toggle current-font-item" dropdown-toggle ng-disabled="minder.queryCommandState(\'fontfamily\') === -1"><a href class="current-font-family" title="{{ \'fontfamily\' | lang: \'ui\' }}">{{ getFontfamilyName(minder.queryCommandValue(\'fontfamily\')) || \'字体\' }}</a> <span class="caret"></span></div><ul class="dropdown-menu font-list"><li ng-repeat="f in fontFamilyList" class="font-item-wrap"><a ng-click="minder.execCommand(\'fontfamily\', f.val)" class="font-item" ng-class="{ \'font-item-selected\' : f == minder.queryCommandValue(\'fontfamily\') }" ng-style="{\'font-family\': f.val }">{{ f.name }}</a></li></ul></div><div class="dropdown font-size-list" dropdown><div class="dropdown-toggle current-font-item" dropdown-toggle ng-disabled="minder.queryCommandState(\'fontsize\') === -1"><a href class="current-font-size" title="{{ \'fontsize\' | lang: \'ui\' }}">{{ minder.queryCommandValue(\'fontsize\') || \'字号\' }}</a> <span class="caret"></span></div><ul class="dropdown-menu font-list"><li ng-repeat="f in fontSizeList" class="font-item-wrap"><a ng-click="minder.execCommand(\'fontsize\', f)" class="font-item" ng-class="{ \'font-item-selected\' : f == minder.queryCommandValue(\'fontsize\') }" ng-style="{\'font-size\': f + \'px\'}">{{ f }}</a></li></ul></div><span class="s-btn-icon font-bold" ng-click="minder.queryCommandState(\'bold\') === -1 || minder.execCommand(\'bold\')" ng-class="{\'font-bold-selected\' : minder.queryCommandState(\'bold\') == 1}" ng-disabled="minder.queryCommandState(\'bold\') === -1"></span> <span class="s-btn-icon font-italics" ng-click="minder.queryCommandState(\'italic\') === -1 || minder.execCommand(\'italic\')" ng-class="{\'font-italics-selected\' : minder.queryCommandState(\'italic\') == 1}" ng-disabled="minder.queryCommandState(\'italic\') === -1"></span><div class="font-color-wrap"><span class="quick-font-color" ng-click="minder.queryCommandState(\'forecolor\') === -1 || minder.execCommand(\'forecolor\', foreColor)" ng-disabled="minder.queryCommandState(\'forecolor\') === -1">A</span> <span color-picker class="font-color" set-color="setDefaultColor()" ng-disabled="minder.queryCommandState(\'forecolor\') === -1"><span class="caret"></span></span> <span class="font-color-preview" ng-style="{ \'background-color\': foreColor }" ng-click="minder.queryCommandState(\'forecolor\') === -1 || minder.execCommand(\'forecolor\', foreColor)" ng-disabled="minder.queryCommandState(\'forecolor\') === -1"></span></div><color-panel minder="minder" class="inline-directive"></color-panel></div>'),e.put("ui/directive/hyperLink/hyperLink.html",'<div class="btn-group-vertical" dropdown is-open="isopen"><button type="button" class="btn btn-default hyperlink" title="{{ \'link\' | lang:\'ui\' }}" ng-class="{\'active\': isopen}" ng-click="addHyperlink()" ng-disabled="minder.queryCommandState(\'HyperLink\') === -1"></button> <button type="button" class="btn btn-default hyperlink-caption dropdown-toggle" ng-disabled="minder.queryCommandState(\'HyperLink\') === -1" title="{{ \'link\' | lang:\'ui\' }}" dropdown-toggle><span class="caption">{{ \'link\' | lang:\'ui\' }}</span> <span class="caret"></span> <span class="sr-only">{{ \'link\' | lang:\'ui\' }}</span></button><ul class="dropdown-menu" role="menu"><li><a href ng-click="addHyperlink()">{{ \'insertlink\' | lang:\'ui\' }}</a></li><li><a href ng-click="minder.execCommand(\'HyperLink\', null)">{{ \'removelink\' | lang:\'ui\' }}</a></li></ul></div>'),e.put("ui/directive/imageBtn/imageBtn.html",'<div class="btn-group-vertical" dropdown is-open="isopen"><button type="button" class="btn btn-default image-btn" title="{{ \'image\' | lang:\'ui\' }}" ng-class="{\'active\': isopen}" ng-click="addImage()" ng-disabled="minder.queryCommandState(\'Image\') === -1"></button> <button type="button" class="btn btn-default image-btn-caption dropdown-toggle" ng-disabled="minder.queryCommandState(\'Image\') === -1" title="{{ \'image\' | lang:\'ui\' }}" dropdown-toggle><span class="caption">{{ \'image\' | lang:\'ui\' }}</span> <span class="caret"></span> <span class="sr-only">{{ \'image\' | lang:\'ui\' }}</span></button><ul class="dropdown-menu" role="menu"><li><a href ng-click="addImage()">{{ \'insertimage\' | lang:\'ui\' }}</a></li><li><a href ng-click="minder.execCommand(\'Image\', \'\')">{{ \'removeimage\' | lang:\'ui\' }}</a></li></ul></div>'),e.put("ui/directive/kityminderEditor/kityminderEditor.html",'<div class="minder-editor-container"><div class="top-tab" top-tab="minder" editor="editor" ng-if="minder"></div><div search-box minder="minder" ng-if="minder"></div><div class="minder-editor"></div><div class="km-note" note-editor minder="minder" ng-if="minder"></div><div class="note-previewer" note-previewer ng-if="minder"></div><div class="navigator" navigator minder="minder" ng-if="minder"></div></div>'),e.put("ui/directive/kityminderViewer/kityminderViewer.html",'<div class="minder-editor-container"><div class="minder-viewer"></div><div class="note-previewer" note-previewer ng-if="minder"></div><div class="navigator" navigator minder="minder" ng-if="minder"></div></div>'),e.put("ui/directive/layout/layout.html",'<div class="readjust-layout"><a ng-click="minder.queryCommandState(\'resetlayout\') === -1 || minder.execCommand(\'resetlayout\')" class="btn-wrap" ng-disabled="minder.queryCommandState(\'resetlayout\') === -1"><span class="btn-icon reset-layout-icon"></span> <span class="btn-label">{{ \'resetlayout\' | lang: \'ui/command\' }}</span></a></div>'),e.put("ui/directive/navigator/navigator.html",'<div class="nav-bar"><div class="nav-btn zoom-in" ng-click="minder.execCommand(\'zoomIn\')" title="{{ \'zoom-in\' | lang : \'ui\' }}" ng-class="{ \'active\' : getZoomRadio(zoom) == 0 }"><div class="icon"></div></div><div class="zoom-pan"><div class="origin" ng-style="{\'transform\': \'translate(0, \' + getHeight(100) + \'px)\'}" ng-click="minder.execCommand(\'zoom\', 100);"></div><div class="indicator" ng-style="{\r\n \'transform\': \'translate(0, \' + getHeight(zoom) + \'px)\',\r\n \'transition\': \'transform 200ms\'\r\n }"></div></div><div class="nav-btn zoom-out" ng-click="minder.execCommand(\'zoomOut\')" title="{{ \'zoom-out\' | lang : \'ui\' }}" ng-class="{ \'active\' : getZoomRadio(zoom) == 1 }"><div class="icon"></div></div><div class="nav-btn hand" ng-click="minder.execCommand(\'hand\')" title="{{ \'hand\' | lang : \'ui\' }}" ng-class="{ \'active\' : minder.queryCommandState(\'hand\') == 1 }"><div class="icon"></div></div><div class="nav-btn camera" ng-click="minder.execCommand(\'camera\', minder.getRoot(), 600);" title="{{ \'camera\' | lang : \'ui\' }}"><div class="icon"></div></div><div class="nav-btn nav-trigger" ng-class="{\'active\' : isNavOpen}" ng-click="toggleNavOpen()" title="{{ \'navigator\' | lang : \'ui\' }}"><div class="icon"></div></div></div><div class="nav-previewer" ng-show="isNavOpen"></div>'),e.put("ui/directive/noteBtn/noteBtn.html",'<div class="btn-group-vertical note-btn-group" dropdown is-open="isopen"><button type="button" class="btn btn-default note-btn" title="{{ \'note\' | lang:\'ui\' }}" ng-class="{\'active\': isopen}" ng-click="addNote()" ng-disabled="minder.queryCommandState(\'note\') === -1"></button> <button type="button" class="btn btn-default note-btn-caption dropdown-toggle" ng-disabled="minder.queryCommandState(\'note\') === -1" title="{{ \'note\' | lang:\'ui\' }}" dropdown-toggle><span class="caption">{{ \'note\' | lang:\'ui\' }}</span> <span class="caret"></span> <span class="sr-only">{{ \'note\' | lang:\'ui\' }}</span></button><ul class="dropdown-menu" role="menu"><li><a href ng-click="addNote()">{{ \'insertnote\' | lang:\'ui\' }}</a></li><li><a href ng-click="minder.execCommand(\'note\', null)">{{ \'removenote\' | lang:\'ui\' }}</a></li></ul></div>'),e.put("ui/directive/noteEditor/noteEditor.html",'<div class="panel panel-default" ng-init="noteEditorOpen = false" ng-show="noteEditorOpen"><div class="panel-heading"><h3 class="panel-title">备注</h3><span>(<a class="help" href="https://www.zybuluo.com/techird/note/46064" target="_blank">支持 GFM 语法书写</a>)</span> <i class="close-note-editor glyphicon glyphicon-remove" ng-click="closeNoteEditor()"></i></div><div class="panel-body"><div ng-show="noteEnabled" ui-codemirror="{ onLoad: codemirrorLoaded }" ng-model="noteContent" ui-codemirror-opts="{\r\n gfm: true,\r\n breaks: true,\r\n lineWrapping : true,\r\n mode: \'gfm\',\r\n dragDrop: false,\r\n lineNumbers:true\r\n }"></div><p ng-show="!noteEnabled" class="km-note-tips">请选择节点编辑备注</p></div></div>'),e.put("ui/directive/notePreviewer/notePreviewer.html",'<div id="previewer-content" ng-show="showNotePreviewer" ng-style="previewerStyle" ng-bind-html="noteContent"></div>'),e.put("ui/directive/operation/operation.html","<div class=\"km-btn-group operation-group\"><div class=\"km-btn-item edit-node\" ng-disabled=\"minder.queryCommandState('text') === -1\" ng-click=\"minder.queryCommandState('text') === -1 || editNode()\" title=\"{{ 'editnode' | lang:'ui/command' }}\"><i class=\"km-btn-icon\"></i> <span class=\"km-btn-caption\">{{ 'editnode' | lang:'ui/command' }}</span></div><div class=\"km-btn-item remove-node\" ng-disabled=\"minder.queryCommandState('RemoveNode') === -1\" ng-click=\"minder.queryCommandState('RemoveNode') === -1 || minder.execCommand('RemoveNode');\" title=\"{{ 'removenode' | lang:'ui/command' }}\"><i class=\"km-btn-icon\"></i> <span class=\"km-btn-caption\">{{ 'removenode' | lang:'ui/command' }}</span></div></div>"),e.put("ui/directive/priorityEditor/priorityEditor.html",'<ul class="km-priority tool-group" ng-disabled="commandDisabled"><li class="km-priority-item tool-group-item" ng-repeat="p in priorities" ng-click="commandDisabled || minder.execCommand(\'priority\', p)" ng-class="{ active: commandValue == p }" title="{{ getPriorityTitle(p) }}"><div class="km-priority-icon tool-group-icon priority-{{p}}"></div></li></ul>'),e.put("ui/directive/progressEditor/progressEditor.html",'<ul class="km-progress tool-group" ng-disabled="commandDisabled"><li class="km-progress-item tool-group-item" ng-repeat="p in progresses" ng-click="commandDisabled || minder.execCommand(\'progress\', p)" ng-class="{ active: commandValue == p }" title="{{ getProgressTitle(p) }}"><div class="km-progress-icon tool-group-icon progress-{{p}}"></div></li></ul>'),e.put("ui/directive/resourceEditor/resourceEditor.html",'<div class="resource-editor"><div class="input-group"><input class="form-control" type="text" ng-model="newResourceName" ng-required ng-keypress="$event.keyCode == 13 && addResource(newResourceName)" ng-disabled="!enabled"> <span class="input-group-btn"><button class="btn btn-default" ng-click="addResource(newResourceName)" ng-disabled="!enabled">添加</button></span></div><div class="resource-dropdown clearfix" id="resource-dropdown"><ul class="km-resource" ng-init="resourceListOpen = false" ng-class="{\'open\': resourceListOpen}"><li ng-repeat="resource in used" ng-disabled="!enabled" ng-blur="blurCB()"><label style="background: {{resourceColor(resource.name)}}"><input type="checkbox" ng-model="resource.selected" ng-disabled="!enabled"> <span>{{resource.name}}</span></label></li></ul><div class="resource-caret" click-anywhere-but-here="resourceListOpen = false" is-active="resourceListOpen" ng-click="resourceListOpen = !resourceListOpen"><span class="caret"></span></div></div></div>'),e.put("ui/directive/searchBox/searchBox.html",'<div id="search" class="search-box clearfix" ng-show="showSearch"><div class="input-group input-group-sm search-input-wrap"><input type="text" id="search-input" class="form-control search-input" ng-model="keyword" ng-keydown="handleKeyDown($event)" aria-describedby="basic-addon2"> <span class="input-group-addon search-addon" id="basic-addon2" ng-show="showTip" ng-bind="\'第 \' + curIndex + \' 条,共 \' + resultNum + \' 条\'"></span></div><div class="btn-group btn-group-sm prev-and-next-btn" role="group"><button type="button" class="btn btn-default" ng-click="doSearch(keyword, \'prev\')"><span class="glyphicon glyphicon-chevron-up"></span></button> <button type="button" class="btn btn-default" ng-click="doSearch(keyword, \'next\')"><span class="glyphicon glyphicon-chevron-down"></span></button></div><div class="close-search" ng-click="exitSearch()"><span class="glyphicon glyphicon-remove"></span></div></div>'),e.put("ui/directive/searchBtn/searchBtn.html",'<div class="btn-group-vertical" dropdown is-open="isopen"><button type="button" class="btn btn-default search" title="{{ \'search\' | lang:\'ui\' }}" ng-class="{\'active\': isopen}" ng-click="enterSearch()"></button> <button type="button" class="btn btn-default search-caption dropdown-toggle" ng-click="enterSearch()" title="{{ \'search\' | lang:\'ui\' }}"><span class="caption">{{ \'search\' | lang:\'ui\' }}</span> <span class="sr-only">{{ \'search\' | lang:\'ui\' }}</span></button></div>'),e.put("ui/directive/selectAll/selectAll.html",'<div class="btn-group-vertical" dropdown is-open="isopen"><button type="button" class="btn btn-default select" title="{{ \'selectall\' | lang:\'ui\' }}" ng-class="{\'active\': isopen}" ng-click="select[\'all\']()"></button> <button type="button" class="btn btn-default select-caption dropdown-toggle" title="{{ \'selectall\' | lang:\'ui\' }}" dropdown-toggle><span class="caption">{{ \'selectall\' | lang:\'ui\' }}</span> <span class="caret"></span> <span class="sr-only">{{ \'selectall\' | lang:\'ui\' }}</span></button><ul class="dropdown-menu" role="menu"><li ng-repeat="item in items"><a href ng-click="select[item]()">{{ \'select\' + item | lang:\'ui\' }}</a></li></ul></div>'),e.put("ui/directive/styleOperator/styleOperator.html",'<div class="style-operator"><a ng-click="minder.queryCommandState(\'clearstyle\') === -1 || minder.execCommand(\'clearstyle\')" class="btn-wrap clear-style" ng-disabled="minder.queryCommandState(\'clearstyle\') === -1"><span class="btn-icon clear-style-icon"></span> <span class="btn-label">{{ \'clearstyle\' | lang: \'ui\' }}</span></a><div class="s-btn-group-vertical"><a class="s-btn-wrap" href ng-click="minder.queryCommandState(\'copystyle\') === -1 || minder.execCommand(\'copystyle\')" ng-disabled="minder.queryCommandState(\'copystyle\') === -1"><span class="s-btn-icon copy-style-icon"></span> <span class="s-btn-label">{{ \'copystyle\' | lang: \'ui\' }}</span></a> <a class="s-btn-wrap paste-style-wrap" href ng-click="minder.queryCommandState(\'pastestyle\') === -1 || minder.execCommand(\'pastestyle\')" ng-disabled="minder.queryCommandState(\'pastestyle\') === -1"><span class="s-btn-icon paste-style-icon"></span> <span class="s-btn-label">{{ \'pastestyle\' | lang: \'ui\' }}</span></a></div></div>'),e.put("ui/directive/templateList/templateList.html",'<div class="dropdown temp-panel" dropdown on-toggle="toggled(open)"><div class="dropdown-toggle current-temp-item" ng-disabled="minder.queryCommandState(\'template\') === -1" dropdown-toggle><a href class="temp-item {{ minder.queryCommandValue(\'template\') }}" title="{{ minder.queryCommandValue(\'template\') | lang: \'template\' }}"></a> <span class="caret"></span></div><ul class="dropdown-menu temp-list"><li ng-repeat="(key, templateObj) in templateList" class="temp-item-wrap"><a ng-click="minder.execCommand(\'template\', key);" class="temp-item {{key}}" ng-class="{ \'temp-item-selected\' : key == minder.queryCommandValue(\'template\') }" title="{{ key | lang: \'template\' }}"></a></li></ul></div>'),e.put("ui/directive/themeList/themeList.html",'<div class="dropdown theme-panel" dropdown><div class="dropdown-toggle theme-item-selected" dropdown-toggle ng-disabled="minder.queryCommandState(\'theme\') === -1"><a href class="theme-item" ng-style="getThemeThumbStyle(minder.queryCommandValue(\'theme\'))" title="{{ minder.queryCommandValue(\'theme\') | lang: \'theme\'; }}">{{ minder.queryCommandValue(\'theme\') | lang: \'theme\'; }}</a> <span class="caret"></span></div><ul class="dropdown-menu theme-list"><li ng-repeat="key in themeKeyList" class="theme-item-wrap"><a ng-click="minder.execCommand(\'theme\', key);" class="theme-item" ng-style="getThemeThumbStyle(key)" title="{{ key | lang: \'theme\'; }}">{{ key | lang: \'theme\'; }}</a></li></ul></div>'),e.put("ui/directive/topTab/topTab.html",'<tabset><tab heading="{{ \'idea\' | lang: \'ui/tabs\'; }}" ng-click="toggleTopTab(\'idea\')" select="setCurTab(\'idea\')"><undo-redo editor="editor"></undo-redo><append-node minder="minder"></append-node><arrange minder="minder"></arrange><operation minder="minder"></operation><hyper-link minder="minder"></hyper-link><image-btn minder="minder"></image-btn><note-btn minder="minder"></note-btn><priority-editor minder="minder"></priority-editor><progress-editor minder="minder"></progress-editor><resource-editor minder="minder"></resource-editor></tab><tab heading="{{ \'appearence\' | lang: \'ui/tabs\'; }}" ng-click="toggleTopTab(\'appearance\')" select="setCurTab(\'appearance\')"><template-list minder="minder" class="inline-directive"></template-list><theme-list minder="minder"></theme-list><layout minder="minder" class="inline-directive"></layout><style-operator minder="minder" class="inline-directive"></style-operator><font-operator minder="minder" class="inline-directive"></font-operator></tab><tab heading="{{ \'view\' | lang: \'ui/tabs\'; }}" ng-click="toggleTopTab(\'view\')" select="setCurTab(\'view\')"><expand-level minder="minder"></expand-level><select-all minder="minder"></select-all><search-btn minder="minder"></search-btn></tab></tabset>'),e.put("ui/directive/undoRedo/undoRedo.html",'<div class="km-btn-group do-group"><div class="km-btn-item undo" ng-disabled="editor.history.hasUndo() == false" ng-click="editor.history.hasUndo() == false || editor.history.undo();" title="{{ \'undo\' | lang:\'ui\' }}"><i class="km-btn-icon"></i></div><div class="km-btn-item redo" ng-disabled="editor.history.hasRedo() == false" ng-click="editor.history.hasRedo() == false || editor.history.redo()" title="{{ \'redo\' | lang:\'ui\' }}"><i class="km-btn-icon"></i></div></div>'),e.put("ui/dialog/hyperlink/hyperlink.tpl.html",'<div class="modal-header"><h3 class="modal-title">链接</h3></div><div class="modal-body"><form><div class="form-group" id="link-url-wrap" ng-class="{true: \'has-success\', false: \'has-error\'}[urlPassed]"><label for="link-url">链接地址:</label><input type="text" class="form-control" ng-model="url" ng-blur="urlPassed = R_URL.test(url)" ng-focus="this.value = url" ng-keydown="shortCut($event)" id="link-url" placeholder="必填:以 http(s):// 或 ftp:// 开头"></div><div class="form-group" ng-class="{\'has-success\' : titlePassed}"><label for="link-title">提示文本:</label><input type="text" class="form-control" ng-model="title" ng-blur="titlePassed = true" id="link-title" placeholder="选填:鼠标在链接上悬停时提示的文本"></div></form></div><div class="modal-footer"><button class="btn btn-primary" ng-click="ok()">确定</button> <button class="btn btn-warning" ng-click="cancel()">取消</button></div>'),e.put("ui/dialog/imExportNode/imExportNode.tpl.html",'<div class="modal-header"><h3 class="modal-title">{{ title }}</h3></div><div class="modal-body"><textarea type="text" class="form-control single-input" rows="8" ng-keydown="shortCut($event);" ng-model="value" ng-readonly="type === \'export\'">\r\n </textarea></div><div class="modal-footer"><button class="btn btn-primary" ng-click="ok()" ng-disabled="type === \'import\' && value == \'\'">OK</button> <button class="btn btn-warning" ng-click="cancel()">Cancel</button></div>'),e.put("ui/dialog/image/image.tpl.html",'<div class="modal-header"><h3 class="modal-title">图片</h3></div><div class="modal-body"><tabset><tab heading="图片搜索"><form class="form-inline"><div class="form-group"><label for="search-keyword">关键词:</label><input type="text" class="form-control" ng-model="data.searchKeyword2" id="search-keyword" placeholder="请输入搜索的关键词"></div><button class="btn btn-primary" ng-click="searchImage()">百度一下</button></form><div class="search-result" id="search-result"><ul><li ng-repeat="image in list" id="{{ \'img-item\' + $index }}" ng-class="{\'selected\' : isSelected}" ng-click="selectImage($event)"><img id="{{ \'img-\' + $index }}" ng-src="{{ image.src || \'\' }}" alt="{{ image.title }}" onerror="this.parentNode.removeChild(this)"> <span>{{ image.title }}</span></li></ul></div></tab><tab heading="外链图片"><form><div class="form-group" ng-class="{true: \'has-success\', false: \'has-error\'}[urlPassed]"><label for="image-url">链接地址:</label><input type="text" class="form-control" ng-model="data.url" ng-blur="urlPassed = data.R_URL.test(data.url)" ng-focus="this.value = data.url" ng-keydown="shortCut($event)" id="image-url" placeholder="必填:以 http(s):// 开头"></div><div class="form-group" ng-class="{\'has-success\' : titlePassed}"><label for="image-title">提示文本:</label><input type="text" class="form-control" ng-model="data.title" ng-blur="titlePassed = true" id="image-title" placeholder="选填:鼠标在图片上悬停时提示的文本"></div><div class="form-group"><label for="image-preview">图片预览:</label><img class="image-preview" id="image-preview" ng-src="{{ data.url }}" alt="{{ data.title }}"></div></form></tab><tab heading="上传图片" active="true"><form><div class="form-group"><input type="file" name="upload-image" id="upload-image" class="upload-image" accept=".jpg,.JPG,jpeg,JPEG,.png,.PNG,.gif,.GIF" onchange="angular.element(this).scope().uploadImage()"><label for="upload-image" class="btn btn-primary"><span>选择文件…</span></label></div><div class="form-group" ng-class="{\'has-success\' : titlePassed}"><label for="image-title">提示文本:</label><input type="text" class="form-control" ng-model="data.title" ng-blur="titlePassed = true" id="image-title" placeholder="选填:鼠标在图片上悬停时提示的文本"></div><div class="form-group"><label for="image-preview">图片预览:</label><img class="image-preview" id="image-preview" ng-src="{{ data.url }}" title="{{ data.title }}" alt="{{ data.title }}"></div></form></tab></tabset></div><div class="modal-footer"><button class="btn btn-primary" ng-click="ok()">确定</button> <button class="btn btn-warning" ng-click="cancel()">取消</button></div>')}]),angular.module("kityminderEditor").service("commandBinder",function(){return{bind:function(e,t,n){e.on("interactchange",function(){n.commandDisabled=-1===e.queryCommandState(t),n.commandValue=e.queryCommandValue(t),n.$apply()})}}}),angular.module("kityminderEditor").provider("config",function(){this.config={ctrlPanelMin:250,ctrlPanelWidth:parseInt(window.localStorage.__dev_minder_ctrlPanelWidth)||250,dividerWidth:3,defaultLang:"zh-cn",zoom:[10,20,30,50,80,100,120,150,200],imageUpload:"server/imageUpload.php"},this.set=function(e,t){var n=Object.keys(this.config),i={};for(var r in"object"==typeof e?i=e:i[e]=t,i){if(!i.hasOwnProperty(r)||-1===n.indexOf(r))return console.error("Unsupported config key: ",e,", please choose in :",n.join(", ")),!1;this.config[r]=i[r]}return!0},this.$get=function(){var t=this;return{get:function(e){return 0===arguments.length?t.config:t.config.hasOwnProperty(e)?t.config[e]:(console.warn("Missing config key pair for : ",e),"")}}}}),angular.module("kityminderEditor").service("lang.zh-cn",function(){return{"zh-cn":{template:{default:"思维导图",tianpan:"天盘图",structure:"组织结构图",filetree:"目录组织图",right:"逻辑结构图","fish-bone":"鱼骨头图"},theme:{classic:"脑图经典","classic-compact":"紧凑经典",snow:"温柔冷光","snow-compact":"紧凑冷光",fish:"鱼骨图",wire:"线框","fresh-red":"清新红","fresh-soil":"泥土黄","fresh-green":"文艺绿","fresh-blue":"天空蓝","fresh-purple":"浪漫紫","fresh-pink":"脑残粉","fresh-red-compat":"紧凑红","fresh-soil-compat":"紧凑黄","fresh-green-compat":"紧凑绿","fresh-blue-compat":"紧凑蓝","fresh-purple-compat":"紧凑紫","fresh-pink-compat":"紧凑粉",tianpan:"经典天盘","tianpan-compact":"紧凑天盘"},maintopic:"中心主题",topic:"分支主题",panels:{history:"历史",template:"模板",theme:"皮肤",layout:"布局",style:"样式",font:"文字",color:"颜色",background:"背景",insert:"插入",arrange:"调整",nodeop:"当前",priority:"优先级",progress:"进度",resource:"资源",note:"备注",attachment:"附件",word:"文字"},error_message:{title:"哎呀,脑图出错了",err_load:"加载脑图失败",err_save:"保存脑图失败",err_network:"网络错误",err_doc_resolve:"文档解析失败",err_unknown:"发生了奇怪的错误",err_localfile_read:"文件读取错误",err_download:"文件下载失败",err_remove_share:"取消分享失败",err_create_share:"分享失败",err_mkdir:"目录创建失败",err_ls:"读取目录失败",err_share_data:"加载分享内容出错",err_share_sync_fail:"分享内容同步失败",err_move_file:"文件移动失败",err_rename:"重命名失败",unknownreason:"可能是外星人篡改了代码...",pcs_code:{3:"不支持此接口",4:"没有权限执行此操作",5:"IP未授权",110:"用户会话已过期,请重新登录",31001:"数据库查询错误",31002:"数据库连接错误",31003:"数据库返回空结果",31021:"网络错误",31022:"暂时无法连接服务器",31023:"输入参数错误",31024:"app id为空",31025:"后端存储错误",31041:"用户的cookie不是合法的百度cookie",31042:"用户未登陆",31043:"用户未激活",31044:"用户未授权",31045:"用户不存在",31046:"用户已经存在",31061:"文件已经存在",31062:"文件名非法",31063:"文件父目录不存在",31064:"无权访问此文件",31065:"目录已满",31066:"文件不存在",31067:"文件处理出错",31068:"文件创建失败",31069:"文件拷贝失败",31070:"文件删除失败",31071:"不能读取文件元信息",31072:"文件移动失败",31073:"文件重命名失败",31079:"未找到文件MD5,请使用上传API上传整个文件。",31081:"superfile创建失败",31082:"superfile 块列表为空",31083:"superfile 更新失败",31101:"tag系统内部错误",31102:"tag参数错误",31103:"tag系统错误",31110:"未授权设置此目录配额",31111:"配额管理只支持两级目录",31112:"超出配额",31113:"配额不能超出目录祖先的配额",31114:"配额不能比子目录配额小",31141:"请求缩略图服务失败",31201:"签名错误",31202:"文件不存在",31203:"设置acl失败",31204:"请求acl验证失败",31205:"获取acl失败",31206:"acl不存在",31207:"bucket已存在",31208:"用户请求错误",31209:"服务器错误",31210:"服务器不支持",31211:"禁止访问",31212:"服务不可用",31213:"重试出错",31214:"上传文件data失败",31215:"上传文件meta失败",31216:"下载文件data失败",31217:"下载文件meta失败",31218:"容量超出限额",31219:"请求数超出限额",31220:"流量超出限额",31298:"服务器返回值KEY非法",31299:"服务器返回值KEY不存在"}},ui:{shared_file_title:"[分享的] {0} (只读)",load_share_for_edit:"正在加载分享的文件...",share_sync_success:"分享内容已同步",recycle_clear_confirm:"确认清空回收站么?清空后的文件无法恢复。",fullscreen_exit_hint:"按 Esc 或 F11 退出全屏",error_detail:"详细信息",copy_and_feedback:"复制并反馈",move_file_confirm:'确定把 "{0}" 移动到 "{1}" 吗?',rename:"重命名",rename_success:"{0} 重命名成功",move_success:"{0} 移动成功到 {1}",command:{appendsiblingnode:"插入同级主题",appendparentnode:"插入上级主题",appendchildnode:"插入下级主题",removenode:"删除",editnode:"编辑",arrangeup:"上移",arrangedown:"下移",resetlayout:"整理布局",expandtoleaf:"展开全部节点",expandtolevel1:"展开到一级节点",expandtolevel2:"展开到二级节点",expandtolevel3:"展开到三级节点",expandtolevel4:"展开到四级节点",expandtolevel5:"展开到五级节点",expandtolevel6:"展开到六级节点",fullscreen:"全屏",outline:"大纲"},search:"搜索",expandtoleaf:"展开",back:"返回",undo:"撤销 (Ctrl + Z)",redo:"重做 (Ctrl + Y)",tabs:{idea:"思路",appearence:"外观",view:"视图"},quickvisit:{new:"新建 (Ctrl + Alt + N)",save:"保存 (Ctrl + S)",share:"分享 (Ctrl + Alt + S)",feedback:"反馈问题(F1)",editshare:"编辑"},menu:{mainmenutext:"百度脑图",newtab:"新建",opentab:"打开",savetab:"保存",sharetab:"分享",preferencetab:"设置",helptab:"帮助",feedbacktab:"反馈",recenttab:"最近使用",netdisktab:"百度云存储",localtab:"本地文件",drafttab:"草稿箱",downloadtab:"导出到本地",createsharetab:"当前脑图",managesharetab:"已分享",newheader:"新建脑图",openheader:"打开",saveheader:"保存到",draftheader:"草稿箱",shareheader:"分享我的脑图",downloadheader:"导出到指定格式",preferenceheader:"偏好设置",helpheader:"帮助",feedbackheader:"反馈"},mydocument:"我的文档",emptydir:"目录为空!",pickfile:"选择文件...",acceptfile:"支持的格式:{0}",dropfile:"或将文件拖至此处",unsupportedfile:"不支持的文件格式",untitleddoc:"未命名文档",overrideconfirm:"{0} 已存在,确认覆盖吗?",checklogin:"检查登录状态中...",loggingin:"正在登录...",recent:"最近打开",clearrecent:"清空",clearrecentconfirm:"确认清空最近文档列表?",cleardraft:"清空",cleardraftconfirm:"确认清空草稿箱?",none_share:"不分享",public_share:"公开分享",password_share:"私密分享",email_share:"邮件邀请",url_share:"脑图 URL 地址:",sns_share:"社交网络分享:",sns_share_text:"“{0}” - 我用百度脑图制作的思维导图,快看看吧!(地址:{1})",none_share_description:"不分享当前脑图",public_share_description:"创建任何人可见的分享",share_button_text:"创建",password_share_description:"创建需要密码才可见的分享",email_share_description:"创建指定人可见的分享,您还可以允许他们编辑",ondev:"敬请期待!",create_share_failed:"分享失败:{0}",remove_share_failed:"删除失败:{1}",copy:"复制",copied:"已复制",shared_tip:"当前脑图被 {0} 分享,你可以修改之后保存到自己的网盘上或再次分享",current_share:"当前脑图",manage_share:"我的分享",share_remove_action:"不分享该脑图",share_view_action:"打开分享地址",share_edit_action:"编辑分享的文件",login:"登录",logout:"注销",switchuser:"切换账户",userinfo:"个人信息",gotonetdisk:"我的网盘",requirelogin:'请 <a class="login-button">登录</a> 后使用',saveas:"保存为",filename:"文件名",fileformat:"保存格式",save:"保存",mkdir:"新建目录",recycle:"回收站",newdir:"未命名目录",bold:"加粗",italic:"斜体",forecolor:"字体颜色",fontfamily:"字体",fontsize:"字号",layoutstyle:"主题",node:"节点操作",saveto:"另存为",hand:"允许拖拽",camera:"定位根节点","zoom-in":"放大(Ctrl+)","zoom-out":"缩小(Ctrl-)",markers:"标签",resource:"资源",help:"帮助",preference:"偏好设置",expandnode:"展开到叶子",collapsenode:"收起到一级节点",template:"模板",theme:"皮肤",clearstyle:"清除样式",copystyle:"复制样式",pastestyle:"粘贴样式",appendsiblingnode:"同级主题",appendchildnode:"下级主题",arrangeup:"前调",arrangedown:"后调",editnode:"编辑",removenode:"移除",priority:"优先级",progress:{p1:"未开始",p2:"完成 1/8",p3:"完成 1/4",p4:"完成 3/8",p5:"完成一半",p6:"完成 5/8",p7:"完成 3/4",p8:"完成 7/8",p9:"已完成",p0:"清除进度"},link:"链接",image:"图片",note:"备注",insertlink:"插入链接",insertimage:"插入图片",insertnote:"插入备注",removelink:"移除已有链接",removeimage:"移除已有图片",removenote:"移除已有备注",resetlayout:"整理",justnow:"刚刚",minutesago:"{0} 分钟前",hoursago:"{0} 小时前",yesterday:"昨天",daysago:"{0} 天前",longago:"很久之前",redirect:"您正在打开连接 {0},百度脑图不能保证连接的安全性,是否要继续?",navigator:"导航器",unsavedcontent:"当前文件还没有保存到网盘:\n\n{0}\n\n虽然未保存的数据会缓存在草稿箱,但是清除浏览器缓存会导致草稿箱清除。",shortcuts:"快捷键",contact:"联系与反馈",email:"邮件组",qq_group:"QQ 群",github_issue:"Github",baidu_tieba:"贴吧",clipboardunsupported:"您的浏览器不支持剪贴板,请使用快捷键复制",load_success:"{0} 加载成功",save_success:"{0} 已保存于 {1}",autosave_success:"{0} 已自动保存于 {1}",selectall:"全选",selectrevert:"反选",selectsiblings:"选择兄弟节点",selectlevel:"选择同级节点",selectpath:"选择路径",selecttree:"选择子树"},popupcolor:{clearColor:"清空颜色",standardColor:"标准颜色",themeColor:"主题颜色"},dialogs:{markers:{static:{lang_input_text:"文本内容:",lang_input_url:"链接地址:",lang_input_title:"标题:",lang_input_target:"是否在新窗口:"},priority:"优先级",none:"无",progress:{title:"进度",notdone:"未完成",done1:"完成 1/8",done2:"完成 1/4",done3:"完成 3/8",done4:"完成 1/2",done5:"完成 5/8",done6:"完成 3/4",done7:"完成 7/8",done:"已完成"}},help:{},hyperlink:{},image:{},resource:{}},hyperlink:{hyperlink:"链接...",unhyperlink:"移除链接"},image:{image:"图片...",removeimage:"移除图片"},marker:{marker:"进度/优先级..."},resource:{resource:"资源..."}}}}),angular.module("kityminderEditor").service("memory",function(){return{get:function(e){var t=window.localStorage.getItem(e);return JSON.parse(t)},set:function(e,t){try{return window.localStorage.setItem(e,JSON.stringify(t)),!0}catch(e){if(function(e){var t=!1;if(e)if(e.code)switch(e.code){case 22:t=!0;break;case 1014:"NS_ERROR_DOM_QUOTA_REACHED"===e.name&&(t=!0)}else-2147024882===e.number&&(t=!0);return t}(e))return!1}},remove:function(e){var t=window.localStorage.getItem(e);return window.localStorage.removeItem(e),t},clear:function(){window.localStorage.clear()}}}),angular.module("kityminderEditor").service("minder.service",function(){var t=[];return{registerEvent:function(e){t.push(e)},executeCallback:function(){t.forEach(function(e){e.apply(this,arguments)})}}}),angular.module("kityminderEditor").service("resourceService",["$document",function(t){var n=null;this.open=function(e){n||(t.bind("click",i),t.bind("keydown",r)),n&&n!==e&&(n.resourceListOpen=!1),n=e},this.close=function(e){n===e&&(n=null,t.unbind("click",i),t.unbind("keydown",r))};var i=function(e){if(n){var t=n.getToggleElement();e&&t&&t[0].contains(e.target)||n.$apply(function(){console.log("to close the resourcelist"),n.resourceListOpen=!1})}},r=function(e){27===e.which&&(n.focusToggleElement(),i())}}]),angular.module("kityminderEditor").service("revokeDialog",["$modal","minder.service",function(e,t){return t.registerEvent(function(){var t=window.minder,n=window.editor,i=n.hotbox.getParentFSM();t.on("importNodeData",function(){i.jump("modal","import-text-modal"),e.open({animation:!0,templateUrl:"ui/dialog/imExportNode/imExportNode.tpl.html",controller:"imExportNode.ctrl",size:"md",resolve:{title:function(){return"导入节点"},defaultValue:function(){return""},type:function(){return"import"}}}).result.then(function(e){try{t.Text2Children(t.getSelectedNode(),e)}catch(e){alert(e)}i.jump("normal","import-text-finish"),n.receiver.selectAll()},function(){i.jump("normal","import-text-finish"),n.receiver.selectAll()})}),t.on("exportNodeData",function(){i.jump("modal","export-text-modal"),e.open({animation:!0,templateUrl:"ui/dialog/imExportNode/imExportNode.tpl.html",controller:"imExportNode.ctrl",size:"md",resolve:{title:function(){return"导出节点"},defaultValue:function(){var e=t.getSelectedNode();return(0,window.kityminder.data.getRegisterProtocol("text").Node2Text)(e)},type:function(){return"export"}}}).result.then(function(e){i.jump("normal","export-text-finish"),n.receiver.selectAll()},function(){i.jump("normal","export-text-finish"),n.receiver.selectAll()})})}),{}}]),angular.module("kityminderEditor").service("server",["config","$http",function(i,r){return{uploadImage:function(e){var t=i.get("imageUpload"),n=new FormData;return n.append("upload_file",e),r.post(t,n,{transformRequest:angular.identity,headers:{"Content-Type":void 0}})}}}]),angular.module("kityminderEditor").service("valueTransfer",function(){return{}}),angular.module("kityminderEditor").filter("commandState",function(){return function(e,t){return e.queryCommandState(t)}}).filter("commandValue",function(){return function(e,t){return e.queryCommandValue(t)}}),angular.module("kityminderEditor").filter("lang",["config","lang.zh-cn",function(r,o){return function(e,t){var n=r.get("defaultLang");if(null==o[n])return"未发现对应语言包,请检查 lang.xxx.service.js!";var i=o[n];return t.split("/").forEach(function(e,t){i=i[e]}),i[e]||null}}]),angular.module("kityminderEditor").controller("hyperlink.ctrl",["$scope","$modalInstance","link",function(t,n,e){t.R_URL=new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),t.url=e.url||"",t.title=e.title||"",setTimeout(function(){var e=$("#link-url");e.focus(),e[0].setSelectionRange(0,t.url.length)},30),t.shortCut=function(e){e.stopPropagation(),13==e.keyCode?t.ok():27==e.keyCode&&t.cancel()},t.ok=function(){if(t.R_URL.test(t.url))n.close({url:t.url,title:t.title});else{t.urlPassed=!1;var e=$("#link-url");e.focus(),e[0].setSelectionRange(0,t.url.length)}editor.receiver.selectAll()},t.cancel=function(){n.dismiss("cancel"),editor.receiver.selectAll()}}]),angular.module("kityminderEditor").controller("imExportNode.ctrl",["$scope","$modalInstance","title","defaultValue","type",function(r,e,t,n,o){r.title=t,r.value=n,r.type=o,r.ok=function(){""!=r.value&&(e.close(r.value),editor.receiver.selectAll())},r.cancel=function(){e.dismiss("cancel"),editor.receiver.selectAll()},setTimeout(function(){$(".single-input").focus(),$(".single-input")[0].setSelectionRange(0,n.length)},30),r.shortCut=function(e){if(e.stopPropagation(),27==e.keyCode&&r.cancel(),8==e.keyCode&&"export"==o&&e.preventDefault(),9==e.keyCode){e.preventDefault();var t=e.target,n=function(e){var t=0;if(document.selection){e.focus();var n=document.selection.createRange();n.moveStart("character",-e.value.length),t=n.text.length}else(e.selectionStart||"0"==e.selectionStart)&&(t=e.selectionStart);return t}(t),i=t.value;t.value=i.substr(0,n)+"\t"+i.substr(n),function(e,t){if(e.setSelectionRange)e.focus(),e.setSelectionRange(t,t);else if(e.createTextRange){var n=e.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",t),n.select()}}(t,n+1)}}}]),angular.module("kityminderEditor").controller("image.ctrl",["$http","$scope","$modalInstance","image","server",function(i,r,t,e,n){r.data={list:[],url:e.url||"",title:e.title||"",R_URL:/^https?\:\/\/\w+/},setTimeout(function(){var e=$("#image-url");e.focus(),e[0].setSelectionRange(0,r.data.url.length)},300),r.searchImage=function(){var e,t,n;r.list=[],(e=r.data.searchKeyword2,t=new Date,n="http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&fp=result&queryWord="+e+"&cl=2&lm=-1&ie=utf-8&oe=utf-8&st=-1&ic=0&word="+e+"&face=0&istype=2&nc=1&pn=60&rn=60&gsm=3c&"+t.getTime()+"=&callback=JSON_CALLBACK",i.jsonp(n)).success(function(e){if(e&&e.data)for(var t=0;t<e.data.length;t++)e.data[t].objURL&&r.list.push({title:e.data[t].fromPageTitleEnc,src:e.data[t].middleURL,url:e.data[t].middleURL})}).error(function(){})},r.selectImage=function(e){var t=$("#img-item"+this.$index),n=$("#img-"+this.$index);t.siblings(".selected").removeClass("selected"),t.addClass("selected"),r.data.url=n.attr("src"),r.data.title=n.attr("alt")},r.uploadImage=function(){var e=$("#upload-image");if(e.val()){if(/^.*\.(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG)$/.test(e.val())){var t=e[0].files[0];return n.uploadImage(t).then(function(e){var t=e.data;0===t.errno&&(r.data.url=t.data.url)})}alert("后缀只能是 jpg、gif 及 png")}},r.shortCut=function(e){e.stopPropagation(),13==e.keyCode?r.ok():27==e.keyCode&&r.cancel()},r.ok=function(){if(r.data.R_URL.test(r.data.url))t.close({url:r.data.url,title:r.data.title});else{r.urlPassed=!1;var e=$("#image-url");e&&(e.focus(),e[0].setSelectionRange(0,r.data.url.length))}editor.receiver.selectAll()},r.cancel=function(){t.dismiss("cancel"),editor.receiver.selectAll()}}]),angular.module("kityminderEditor").directive("appendNode",["commandBinder",function(t){return{restrict:"E",templateUrl:"ui/directive/appendNode/appendNode.html",scope:{minder:"="},replace:!0,link:function(e){var r=e.minder;t.bind(r,"appendchildnode",e),e.execCommand=function(e){var t,n,i;r.execCommand(e,"分支主题"),t=editor.receiver.element,n=editor.fsm,i=editor.receiver,t.innerText=r.queryCommandValue("text"),n.jump("input","input-request"),i.selectAll()}}}}]),angular.module("kityminderEditor").directive("arrange",["commandBinder",function(e){return{restrict:"E",templateUrl:"ui/directive/arrange/arrange.html",scope:{minder:"="},replace:!0,link:function(e){e.minder}}}]),angular.module("kityminderEditor").directive("colorPanel",function(){return{restrict:"E",templateUrl:"ui/directive/colorPanel/colorPanel.html",scope:{minder:"="},replace:!0,link:function(n){var i=n.minder;i.getThemeItems();n.$on("colorPicked",function(e,t){e.stopPropagation(),n.bgColor=t,i.execCommand("background",t)}),n.setDefaultBg=function(){var e=i.getSelectedNode(),t=i.getNodeStyle(e,"background");return"object"==typeof t?t.toHEX():t},n.bgColor=n.setDefaultBg()||"#fff"}}}),angular.module("kityminderEditor").directive("expandLevel",function(){return{restrict:"E",templateUrl:"ui/directive/expandLevel/expandLevel.html",scope:{minder:"="},replace:!0,link:function(e){e.levels=[1,2,3,4,5,6]}}}),angular.module("kityminderEditor").directive("fontOperator",function(){return{restrict:"E",templateUrl:"ui/directive/fontOperator/fontOperator.html",scope:{minder:"="},replace:!0,link:function(n){var i=n.minder;i.getThemeItems();n.fontSizeList=[10,12,16,18,24,32,48],n.fontFamilyList=[{name:"宋体",val:"宋体,SimSun"},{name:"微软雅黑",val:"微软雅黑,Microsoft YaHei"},{name:"楷体",val:"楷体,楷体_GB2312,SimKai"},{name:"黑体",val:"黑体, SimHei"},{name:"隶书",val:"隶书, SimLi"},{name:"Andale Mono",val:"andale mono"},{name:"Arial",val:"arial,helvetica,sans-serif"},{name:"arialBlack",val:"arial black,avant garde"},{name:"Comic Sans Ms",val:"comic sans ms"},{name:"Impact",val:"impact,chicago"},{name:"Times New Roman",val:"times new roman"},{name:"Sans-Serif",val:"sans-serif"}],n.$on("colorPicked",function(e,t){e.stopPropagation(),n.foreColor=t,i.execCommand("forecolor",t)}),n.setDefaultColor=function(){var e=i.getSelectedNode(),t=i.getNodeStyle(e,"color");return"object"==typeof t?t.toHEX():t},n.foreColor=n.setDefaultColor()||"#000",n.getFontfamilyName=function(i){var r="";return n.fontFamilyList.forEach(function(e,t,n){if(e.val===i)return r=e.name,""}),r}}}}),angular.module("kityminderEditor").directive("hyperLink",["$modal",function(n){return{restrict:"E",templateUrl:"ui/directive/hyperLink/hyperLink.html",scope:{minder:"="},replace:!0,link:function(e){var t=e.minder;e.addHyperlink=function(){var e=t.queryCommandValue("HyperLink");n.open({animation:!0,templateUrl:"ui/dialog/hyperlink/hyperlink.tpl.html",controller:"hyperlink.ctrl",size:"md",resolve:{link:function(){return e}}}).result.then(function(e){t.execCommand("HyperLink",e.url,e.title||"")})}}}}]),angular.module("kityminderEditor").directive("imageBtn",["$modal",function(n){return{restrict:"E",templateUrl:"ui/directive/imageBtn/imageBtn.html",scope:{minder:"="},replace:!0,link:function(e){var t=e.minder;e.addImage=function(){var e=t.queryCommandValue("image");n.open({animation:!0,templateUrl:"ui/dialog/image/image.tpl.html",controller:"image.ctrl",size:"md",resolve:{image:function(){return e}}}).result.then(function(e){t.execCommand("image",e.url,e.title||"")})}}}}]),angular.module("kityminderEditor").directive("kityminderEditor",["config","minder.service","revokeDialog",function(a,l,e){return{restrict:"EA",templateUrl:"ui/directive/kityminderEditor/kityminderEditor.html",replace:!0,scope:{onInit:"&"},link:function(i,e,t){var r=e.children(".minder-editor")[0];function o(e,t){i.onInit({editor:e,minder:t}),l.executeCallback()}if("undefined"!=typeof seajs)seajs.config({base:"./src"}),define("demo",function(e){var t=e("editor"),n=window.editor=new t(r);window.localStorage.__dev_minder_content&&n.minder.importJson(JSON.parse(window.localStorage.__dev_minder_content)),n.minder.on("contentchange",function(){window.localStorage.__dev_minder_content=JSON.stringify(n.minder.exportJson())}),window.minder=window.km=n.minder,i.editor=n,i.minder=minder,i.config=a.get(),i.$apply(),o(n,minder)}),seajs.use("demo");else if(window.kityminder&&window.kityminder.Editor){var n=new kityminder.Editor(r);window.editor=i.editor=n,window.minder=i.minder=n.minder,i.config=a.get(),o(n,n.minder)}}}}]),angular.module("kityminderEditor").directive("kityminderViewer",["config","minder.service",function(e,l){return{restrict:"EA",templateUrl:"ui/directive/kityminderViewer/kityminderViewer.html",replace:!0,scope:{onInit:"&"},link:function(e,t,n){var i,r,o=t.children(".minder-viewer")[0];if(window.kityminder&&window.kityminder.Editor){var a=new kityminder.Editor(o);window.editor=e.editor=a,window.minder=e.minder=a.minder,r=(i=a).minder,e.onInit({editor:i,minder:r}),l.executeCallback()}}}}]),angular.module("kityminderEditor").directive("layout",function(){return{restrict:"E",templateUrl:"ui/directive/layout/layout.html",scope:{minder:"="},replace:!0,link:function(e){}}}),angular.module("kityminderEditor").directive("navigator",["memory","config",function(g,f){return{restrict:"A",templateUrl:"ui/directive/navigator/navigator.html",scope:{minder:"="},link:function(n){function e(){minder.on("layout layoutallfinish",m),minder.on("viewchange",p)}function t(){minder.off("layout layoutallfinish",m),minder.off("viewchange",p)}minder.setDefaultOptions({zoom:f.get("zoom")}),n.isNavOpen=!g.get("navigator-hidden"),n.getZoomRadio=function(e){var t=minder.getOption("zoom"),n=t[0];return 1-(e-n)/(t[t.length-1]-n)},n.getHeight=function(e){var t=$(".zoom-pan").height();return n.getZoomRadio(e)*t},n.zoom=100,minder.on("zoom",function(e){n.zoom=e.zoom}),n.toggleNavOpen=function(){n.isNavOpen=!n.isNavOpen,g.set("navigator-hidden",!n.isNavOpen),n.isNavOpen?(e(),m(),p()):t()},setTimeout(function(){n.isNavOpen?(e(),m(),p()):t()},0);var i=$(".nav-previewer"),r=new kity.Paper(i[0]),o=r.put(new kity.Path),a=r.put(new kity.Path),l=r.put(new kity.Rect(100,100).stroke("red","1%")),s=new kity.Box,c=new kity.Box,d=u(minder.getTheme());function u(e){switch(e){case"tianpan":case"tianpan-compact":return function(e,t,n,i,r){var o=i>>1;e.push("M",t,n+o,"a",o,o,0,1,1,0,.01,"z")};default:return function(e,t,n,i,r){e.push("M",t,n,"h",i,"v",r,"h",-i,"z")}}}function m(){var e=minder.getRenderContainer().getBoundaryBox();s=e;r.setViewBox(e.x-30-.5,e.y-30-.5,e.width+60+1,e.height+60+1);var n=[],i=[];minder.getRoot().traverse(function(e){var t=e.getLayoutBox();d(n,t.x,t.y,t.width,t.height),e.getConnection()&&e.parent&&e.parent.isExpanded()&&i.push(e.getConnection().getPathData())}),r.setStyle("background",minder.getStyle("background")),n.length?o.fill(minder.getStyle("root-background")).setPathData(n):o.setPathData(null),i.length?a.stroke(minder.getStyle("connect-color"),"0.5%").setPathData(i):a.setPathData(null),p()}function p(){c=minder.getViewDragger().getView(),l.setBox(c.intersect(s))}minder.on("themechange",function(e){d=u(e.theme)}),function(){function t(e,t){var n=c;e.x=-e.x,e.y=-e.y;var i=minder.getPaper().getViewPortMatrix();n=i.transformBox(n);var r=e.offset(n.width/2,n.height/2);minder.getViewDragger().moveTo(r,t)}var n=!1;r.on("mousedown",function(e){n=!0,t(e.getPosition("top"),200),i.addClass("grab")}),r.on("mousemove",function(e){n&&t(e.getPosition("top"))}),$(window).on("mouseup",function(){n=!1,i.removeClass("grab")})}()}}}]),angular.module("kityminderEditor").directive("noteBtn",["valueTransfer",function(t){return{restrict:"E",templateUrl:"ui/directive/noteBtn/noteBtn.html",scope:{minder:"="},replace:!0,link:function(e){e.minder;e.addNote=function(){t.noteEditorOpen=!0}}}}]),angular.module("kityminderEditor").directive("noteEditor",["valueTransfer",function(a){return{restrict:"A",templateUrl:"ui/directive/noteEditor/noteEditor.html",scope:{minder:"="},replace:!0,controller:["$scope",function(n){var i,r=n.minder,o=!1;n.codemirrorLoaded=function(e){i=n.cmEditor=e,e.setSize("100%","100%")},n.$watch("noteContent",function(e){var t=-1!=r.queryCommandState("note");e&&t&&!o&&r.execCommand("note",e),setTimeout(function(){i.refresh()})});n.$watch(function(){return a.noteEditorOpen},function(e,t){e&&setTimeout(function(){i.refresh(),i.focus()}),n.noteEditorOpen=a.noteEditorOpen},!0),n.closeNoteEditor=function(){a.noteEditorOpen=!1,editor.receiver.selectAll()},r.on("interactchange",function(){var e=n.noteEnabled=-1!=r.queryCommandState("note"),t=r.queryCommandValue("note")||"";e&&(n.noteContent=t),o=!0,n.$apply(),o=!1})}]}}]),angular.module("kityminderEditor").directive("notePreviewer",["$sce","valueTransfer",function(v,e){return{restrict:"A",templateUrl:"ui/directive/notePreviewer/notePreviewer.html",link:function(m,e){var t,n=m.minder,p=e.parent(),g=e.children();m.showNotePreviewer=!1,marked.setOptions({gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!1}),n.on("shownoterequest",function(e){t=setTimeout(function(){!function(e,t){var n=e.getRenderer("NoteIconRenderer").getRenderShape().getRenderBox("screen"),i=e.getData("note");g[0].scrollTop=0;var r=marked(i);t&&(r=r.replace(new RegExp("("+t+")","ig"),'<span class="highlight">$1</span>'));m.noteContent=v.trustAsHtml(r),m.$apply();var o=$(p[0]).width(),a=$(p[0]).height(),l=$(g).outerWidth(),s=$(g).outerHeight(),c=n.cx-l/2-p[0].offsetLeft,d=n.bottom+10-p[0].offsetTop;c<0&&(c=10);o<c+l&&(c=n.left-l-10-p[0].offsetLeft);a<d+s&&(d=n.top-s-10-p[0].offsetTop);m.previewerStyle={left:Math.round(c)+"px",top:Math.round(d)+"px"},m.showNotePreviewer=!0;var u=g[0].querySelector(".highlight");u&&u.scrollIntoView();f=!0,m.$apply()}(e.node,e.keyword)},300)}),n.on("hidenoterequest",function(){clearTimeout(t),m.showNotePreviewer=!1});var f=!1;$(document).on("mousedown mousewheel DOMMouseScroll",function(){f&&(m.showNotePreviewer=!1,m.$apply())}),e.on("mousedown mousewheel DOMMouseScroll",function(e){e.stopPropagation()})}}}]),angular.module("kityminderEditor").directive("operation",function(){return{restrict:"E",templateUrl:"ui/directive/operation/operation.html",scope:{minder:"="},replace:!0,link:function(e){e.editNode=function(){var e=editor.receiver.element,t=editor.fsm,n=editor.receiver;e.innerText=minder.queryCommandValue("text"),t.jump("input","input-request"),n.selectAll()}}}}),angular.module("kityminderEditor").directive("priorityEditor",["commandBinder",function(r){return{restrict:"E",templateUrl:"ui/directive/priorityEditor/priorityEditor.html",scope:{minder:"="},replace:!0,link:function(e){for(var t=e.minder,n=[],i=0;i<10;i++)n.push(i);r.bind(t,"priority",e),e.priorities=n,e.getPriorityTitle=function(e){switch(e){case 0:return"移除优先级";default:return"优先级"+e}}}}}]),angular.module("kityminderEditor").directive("progressEditor",["commandBinder",function(r){return{restrict:"E",templateUrl:"ui/directive/progressEditor/progressEditor.html",scope:{minder:"="},replace:!0,link:function(e){for(var t=e.minder,n=[],i=0;i<10;i++)n.push(i);r.bind(t,"progress",e),e.progresses=n,e.getProgressTitle=function(e){switch(e){case 0:return"移除进度";case 1:return"未开始";case 9:return"全部完成";default:return"完成"+(e-1)+"/8"}}}}}]),angular.module("kityminderEditor").directive("resourceEditor",function(){return{restrict:"E",templateUrl:"ui/directive/resourceEditor/resourceEditor.html",scope:{minder:"="},replace:!0,controller:["$scope",function(n){var i=n.minder,r=!1;i.on("interactchange",function(){var t=(n.enabled=-1!=i.queryCommandState("resource"))?i.queryCommandValue("resource"):[],e=i.getUsedResource().map(function(e){return{name:e,selected:-1<t.indexOf(e)}});n.used=e,r=!0,n.$apply(),r=!1}),n.$watch("used",function(e){if(-1!=i.queryCommandState("resource")&&e){var t=e.filter(function(e){return e.selected}).map(function(e){return e.name});if(r)return;i.execCommand("resource",t)}},!0),n.resourceColor=function(e){return i.getResourceColor(e).toHEX()},n.addResource=function(e){var t=i.queryCommandValue("resource");e&&/\S/.test(e)&&(-1==t.indexOf(e)&&n.used.push({name:e,selected:!0}),n.newResourceName=null)}}]}}).directive("clickAnywhereButHere",["$document",function(o){return{link:function(i,e,r){var n=function(e){var t=0<$("#resource-dropdown").has(e.target).length,n=$("#resource-dropdown")==e.target;t||n||i.$apply(r.clickAnywhereButHere)};i.$watch(r.isActive,function(e,t){e!==t&&1==e?o.bind("click",n):e!==t&&0==e&&o.unbind("click",n)})}}}]),angular.module("kityminderEditor").directive("searchBox",function(){return{restrict:"A",templateUrl:"ui/directive/searchBox/searchBox.html",scope:{minder:"="},replace:!0,controller:["$scope",function(a){var l=a.minder,e=window.editor;function n(){$("#search-input").blur(),a.showSearch=!1,l.fire("hidenoterequest"),e.receiver.selectAll()}function t(){a.showSearch=!0,setTimeout(function(){$("#search-input").focus()},10),a.keyword&&$("#search-input")[0].setSelectionRange(0,a.keyword.length)}a.handleKeyDown=function(e){if(13==e.keyCode){var t=e.shiftKey?"prev":"next";d(a.keyword,t)}27==e.keyCode&&n()},a.doSearch=d,a.exitSearch=n,a.showTip=!1,a.showSearch=!1,$("body").on("keydown",function(e){70!=e.keyCode||!e.ctrlKey&&!e.metaKey||e.shiftKey||(t(),a.$apply(),e.preventDefault())}),l.on("searchNode",function(){t()});var s=[],c=[];function i(){s=[],l.getRoot().traverse(function(e){s.push(e)})}function d(e,t){if(a.showTip=!1,l.fire("hidenoterequest"),e&&/\S/.exec(e)){a.showTip=!0,a.curIndex=0,a.resultNum=0,e=e.toLowerCase();var n,i,r=d.lastKeyword!=e;if(d.lastKeyword=e,r&&function(e){c=[];for(var t=0;t<s.length;t++){var n=s[t];-1!=n.getText().toLowerCase().indexOf(e)&&c.push({node:n});var i=n.getData("note");i&&-1!=i.toLowerCase().indexOf(e)&&c.push({node:n,keyword:e})}}(e),a.resultNum=c.length,c.length){var o=r?0:("next"===t?d.lastIndex+1:d.lastIndex-1)||0;o=(c.length+o)%c.length,n=c[o].node,i=c[o].keyword,l.execCommand("camera",n,50),setTimeout(function(){l.select(n,!0),n.isExpanded()||l.execCommand("expand",!0),i&&l.fire("shownoterequest",{node:n,keyword:i})},60),d.lastIndex=o,a.curIndex=o+1}}else $("#search-input").focus()}l.on("contentchange",i),i()}]}}),angular.module("kityminderEditor").directive("searchBtn",function(){return{restrict:"E",templateUrl:"ui/directive/searchBtn/searchBtn.html",scope:{minder:"="},replace:!0,link:function(e){e.enterSearch=function(){minder.fire("searchNode")}}}}),angular.module("kityminderEditor").directive("selectAll",function(){return{restrict:"E",templateUrl:"ui/directive/selectAll/selectAll.html",scope:{minder:"="},replace:!0,link:function(e){var i=e.minder;e.items=["revert","siblings","level","path","tree"],e.select={all:function(){var t=[];i.getRoot().traverse(function(e){t.push(e)}),i.select(t,!0),i.fire("receiverfocus")},revert:function(){var t=i.getSelectedNodes(),n=[];i.getRoot().traverse(function(e){-1==t.indexOf(e)&&n.push(e)}),i.select(n,!0),i.fire("receiverfocus")},siblings:function(){var e=i.getSelectedNodes(),t=[];e.forEach(function(e){e.parent&&e.parent.children.forEach(function(e){-1==t.indexOf(e)&&t.push(e)})}),i.select(t,!0),i.fire("receiverfocus")},level:function(){var t=i.getSelectedNodes().map(function(e){return e.getLevel()}),n=[];i.getRoot().traverse(function(e){-1!=t.indexOf(e.getLevel())&&n.push(e)}),i.select(n,!0),i.fire("receiverfocus")},path:function(){var e=i.getSelectedNodes(),t=[];e.forEach(function(e){for(;e&&-1==t.indexOf(e);)t.push(e),e=e.parent}),i.select(t,!0),i.fire("receiverfocus")},tree:function(){var e=i.getSelectedNodes(),t=[];e.forEach(function(e){e.traverse(function(e){-1==t.indexOf(e)&&t.push(e)})}),i.select(t,!0),i.fire("receiverfocus")}}}}}),angular.module("kityminderEditor").directive("styleOperator",function(){return{restrict:"E",templateUrl:"ui/directive/styleOperator/styleOperator.html",scope:{minder:"="},replace:!0}}),angular.module("kityminderEditor").directive("templateList",function(){return{restrict:"E",templateUrl:"ui/directive/templateList/templateList.html",scope:{minder:"="},replace:!0,link:function(e){e.templateList=kityminder.Minder.getTemplateList()}}}),angular.module("kityminderEditor").directive("themeList",function(){return{restrict:"E",templateUrl:"ui/directive/themeList/themeList.html",replace:!0,link:function(e){var i=kityminder.Minder.getThemeList();e.getThemeThumbStyle=function(e){var t=i[e];if(t){var n={color:t["root-color"],"border-radius":t["root-radius"]/2};return t["root-background"]&&(n.background=t["root-background"].toString()),n}},e.themeKeyList=["classic","classic-compact","fresh-blue","fresh-blue-compat","fresh-green","fresh-green-compat","fresh-pink","fresh-pink-compat","fresh-purple","fresh-purple-compat","fresh-red","fresh-red-compat","fresh-soil","fresh-soil-compat","snow","snow-compact","tianpan","tianpan-compact","fish","wire"]}}}),angular.module("kityminderEditor").directive("topTab",function(){return{restrict:"A",templateUrl:"ui/directive/topTab/topTab.html",scope:{minder:"=topTab",editor:"="},link:function(e){var r=!1,o=!0,a=!0;e.setCurTab=function(e){setTimeout(function(){r=!0,"idea"!=e&&(o=!1)})},e.toggleTopTab=function(){setTimeout(function(){var e,t,n,i;r&&!o||(o=!1,a?(n=$(".tab-content"),i=$(".minder-editor"),n.animate({height:0,display:"none"}),i.animate({top:"32px"})):(e=$(".tab-content"),t=$(".minder-editor"),e.animate({height:"60px",display:"block"}),t.animate({top:"92px"})),a=!a),r=!1})}}}}),angular.module("kityminderEditor").directive("undoRedo",function(){return{restrict:"E",templateUrl:"ui/directive/undoRedo/undoRedo.html",scope:{editor:"="},replace:!0,link:function(e){}}}),e="expose-editor",d.r([t[e]])}();
|