From a20ed9ee04a1b1be5c87715a1d66e5147ef8e4df Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 21 Oct 2026 23:34:53 +0200 Subject: [PATCH] fix(editor): accept http(s) addresses for linked images The image dialog only accepted an address when a word character followed the scheme's colon, so every http:// and https:// address was marked invalid and the dialog could not be confirmed. Accept addresses starting with http://, https:// or data:. Fixes #178 Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Andy Scherzinger (cherry picked from commit f95f0f6aa4a10c965c855ac0b35d695fd6b5ea4b) --- vendor/kityminder-editor/kityminder.editor.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/kityminder-editor/kityminder.editor.min.js b/vendor/kityminder-editor/kityminder.editor.min.js index 0405e474..e97fcc3f 100644 --- a/vendor/kityminder-editor/kityminder.editor.min.js +++ b/vendor/kityminder-editor/kityminder.editor.min.js @@ -8,4 +8,4 @@ */ -!function(){var c={r:function(e){if(c[e].inited)return c[e].value;if("function"!=typeof c[e].value)return c[e].inited=!0,c[e].value;var t={exports:{}},n=c[e].value(null,t.exports,t);if(c[e].inited=!0,void 0!==(c[e].value=n))return n;for(var i in t.exports)if(t.exports.hasOwnProperty(i))return c[e].inited=!0,c[e].value=t.exports,t.exports}};c[0]={value:function(e,t,n){var i=[];function o(e){i.push(e)}function r(e,t){this.selector=e,this.lang=c.r(3),void 0!==t&&this.lang.setDefaultLang(t);for(var n=0;n drag",function(){}),t.when("drag -> *",function(e,t,n){});var a,l,s,d,c,p,u=1,m=!1,g=!1;function f(e,t){if(!e)return m=g=!1,p&&kity.releaseFrame(p),void(p=null);var n,i,o;p||(p=kity.requestFrame((n=e,i=t,o=r,function(e){switch(n){case"left":o._viewDragger.move({x:-i,y:0},0);break;case"top":o._viewDragger.move({x:0,y:-i},0);break;case"right":o._viewDragger.move({x:i,y:0},0);break;case"bottom":o._viewDragger.move({x:0,y:i},0);break;default:return}e.next()})))}r.on("mousedown",function(e){u=0;var t=r.getPaper().container.getBoundingClientRect();n=e.originEvent.clientX,i=e.originEvent.clientY,c=t.top,a=t.width,l=t.height}),r.on("mousemove",function(e){if("drag"===t.state()&&0==u&&r.getSelectedNode()&&(20 {2}",t,o,e),n=0;n *"),2==(i=e.split(" - ")).length?n="before":2==(i=e.split(" -> ")).length&&(n="after"),!n)throw new Error("Illegal fsm condition: "+e);o=i[0],r=i[1],t.condition={when:n,exit:o,enter:r},l.push(t)}}("normal")}}},c[10]={value:function(e,t,n){var f=c.r(22);return window.diff=f,n.exports=function(){var n,i,o,r,a=this.minder,e=this.hotbox,t=this.lang.t,l=100;function s(){o=[],r=[],n=a.exportJson()}function d(){var e=a.exportJson(),t=f(e,n);if(t.length){for(o.push(t);o.length>l;)o.shift();return n=e,!0}}function c(){i=!0;var e,t=o.pop();t&&(a.applyPatches(t),e=a.exportJson(),r.push(f(e,n)),n=e),i=!1}function p(){i=!0;var e=r.pop();e&&(a.applyPatches(e),d()),i=!1}function u(){return!!o.length}function m(){return!!r.length}this.history={reset:s,undo:c,redo:p,hasUndo:u,hasRedo:m},s(),a.on("contentchange",function(){i||d()&&(r=[])}),a.on("import",s),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 g=e.state("main");g.button({position:"top",label:t("undo","runtime/history"),key:"Ctrl + Z",enable:u,action:c,next:"idle"}),g.button({position:"top",label:t("redo","runtime/history"),key:"Ctrl + Y",enable:m,action:p,next:"idle"})}}},c[11]={value:function(e,t,n){var i=c.r(2);return n.exports=function(){var e=this.fsm,a=this.minder,o=this.receiver,t=this.container,l=new i(t);l.setParentFSM(e),e.when("normal -> hotbox",function(e,t,n){var i,o=a.getSelectedNode();if(o){var r=o.getRenderBox();i={x:r.cx,y:r.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&&o.element.focus()}),this.hotbox=l}}},c[12]={value:function(e,t,n){c.r(21);var d=new(c.r(19))("input");return n.exports=function(){var o=this.fsm,m=this.minder,e=this.hotbox,r=this.receiver,a=r.element,l=window.kity.Browser.gecko,t=this.lang.t;function n(){var e=m.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=m.queryCommandValue("text"),l&&r.fixFFCaretDisappeared(),o.jump("input","input-request"),r.selectAll()}}function i(){var e=m.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"),r.selectAll()}function s(){var t=s,n=m.getSelectedNode();n&&(t.timer||(t.timer=setTimeout(function(){var e=n.getRenderBox("TextRenderer");a.style.left=Math.round(e.x)+"px",a.style.top=(d.flaged?Math.round(e.bottom+30):Math.round(e.y))+"px",t.timer=0})))}d.flaged&&a.classList.add("debug"),a.onmousedown=function(e){e.stopPropagation()},m.on("layoutallfinish viewchange viewchanged selectionchange",function(e){"viewchange"==e.type&&"input"!=o.state()||s()}),s(),o.when("* -> input",i),o.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=m.getSelectedNode();if(e=function(e){for(var t,n,i,o="",r=/\S/,a=new RegExp("( |"+String.fromCharCode(160)+")"),l=document.createElement("br"),s=!1,d=!1,c=0,p=e.length;c/g,">").replace(/\n/g,"
")}))}},c[22]={value:function(e,t,n){var u=Object.keys?Object.keys:function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t};function m(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,o){for(var r=u(n),a=u(t),l=!1,s=a.length-1;0<=s;s--){var d=t[p=a[s]];if(n.hasOwnProperty(p)){var c=n[p];"object"==typeof d&&null!=d&&"object"==typeof c&&null!=c?e(d,c,i,o+"/"+m(p)):d!=c&&i.push({op:"replace",path:o+"/"+m(p),value:g(c)})}else i.push({op:"remove",path:o+"/"+m(p)}),l=!0}if(l||r.length!=a.length)for(s=0;s
{{ 'appendchildnode' | lang:'ui/command' }}
{{ 'appendparentnode' | lang:'ui/command' }}
{{ 'appendsiblingnode' | lang:'ui/command' }}
"),e.put("ui/directive/arrange/arrange.html","
{{ 'arrangeup' | lang:'ui/command' }}
{{ 'arrangedown' | lang:'ui/command' }}
"),e.put("ui/directive/colorPanel/colorPanel.html",'
'),e.put("ui/directive/expandLevel/expandLevel.html",'
'),e.put("ui/directive/fontOperator/fontOperator.html",''),e.put("ui/directive/hyperLink/hyperLink.html",'
'),e.put("ui/directive/imageBtn/imageBtn.html",'
'),e.put("ui/directive/kityminderEditor/kityminderEditor.html",'
'),e.put("ui/directive/kityminderViewer/kityminderViewer.html",'
'),e.put("ui/directive/layout/layout.html",''),e.put("ui/directive/navigator/navigator.html",''),e.put("ui/directive/noteBtn/noteBtn.html",'
'),e.put("ui/directive/noteEditor/noteEditor.html",'

{{ \'title\' | lang: \'ui/noteeditor\' }}

({{ \'hint\' | lang: \'ui/noteeditor\' }})

{{ \'placeholder\' | lang: \'ui/noteeditor\' }}

'),e.put("ui/directive/notePreviewer/notePreviewer.html",'
'),e.put("ui/directive/operation/operation.html","
{{ 'editnode' | lang:'ui/command' }}
{{ 'removenode' | lang:'ui/command' }}
"),e.put("ui/directive/priorityEditor/priorityEditor.html",'
'),e.put("ui/directive/progressEditor/progressEditor.html",'
'),e.put("ui/directive/resourceEditor/resourceEditor.html",'
'),e.put("ui/directive/searchBox/searchBox.html",''),e.put("ui/directive/searchBtn/searchBtn.html",'
'),e.put("ui/directive/selectAll/selectAll.html",'
'),e.put("ui/directive/styleOperator/styleOperator.html",''),e.put("ui/directive/templateList/templateList.html",''),e.put("ui/directive/themeList/themeList.html",''),e.put("ui/directive/topTab/topTab.html",''),e.put("ui/directive/undoRedo/undoRedo.html",'
'),e.put("ui/dialog/hyperlink/hyperlink.tpl.html",''),e.put("ui/dialog/imExportNode/imExportNode.tpl.html",''),e.put("ui/dialog/image/image.tpl.html",'')}]),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,lang:"zh_CN",zoom:[10,20,30,50,80,100,120,150,200]},this.set=function(e,t){var n=Object.keys(this.config),i={};for(var o in"object"==typeof e?i=e:i[e]=t,i){if(!i.hasOwnProperty(o)||-1===n.indexOf(o))return console.error("Unsupported config key: ",e,", please choose in :",n.join(", ")),!1;this.config[o]=i[o]}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("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",o)),n&&n!==e&&(n.resourceListOpen=!1),n=e},this.close=function(e){n===e&&(n=null,t.unbind("click",i),t.unbind("keydown",o))};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})}},o=function(e){27===e.which&&(n.focusToggleElement(),i())}}]),angular.module("kityminderEditor").service("revokeDialog",["$uibModal","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("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",function(i){return function(e,t){var n=i.get("lang");return window.editor.lang.t(e,t,n)}}]),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(o,e,t,n,r){o.title=t,o.value=n,o.type=r,o.ok=function(){""!=o.value&&(e.close(o.value),editor.receiver.selectAll())},o.cancel=function(){e.dismiss("cancel"),editor.receiver.selectAll()},setTimeout(function(){$(".single-input").focus(),$(".single-input")[0].setSelectionRange(0,n.length)},30),o.shortCut=function(e){if(e.stopPropagation(),27==e.keyCode&&o.cancel(),8==e.keyCode&&"export"==r&&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","$filter",function(i,o,t,e,n){o.lang=n("lang"),o.data={list:[],url:e.url||"",title:e.title||"",R_URL:/^(http|https|data)?\:\w+/},setTimeout(function(){var e=$("#image-url");e.focus(),e[0].setSelectionRange(0,o.data.url.length)},300),t.rendered.then(function(){$("#upload-image").change(function(){o.uploadImage()})}),o.searchImage=function(){var e,t,n;o.list=[],(e=o.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>1;e.push("M",t,n+r,"a",r,r,0,1,1,0,.01,"z")};default:return function(e,t,n,i,o){e.push("M",t,n,"h",i,"v",o,"h",-i,"z")}}}function u(){var e=minder.getRenderContainer().getBoundaryBox();s=e;o.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();c(n,t.x,t.y,t.width,t.height),e.getConnection()&&e.parent&&e.parent.isExpanded()&&i.push(e.getConnection().getPathData())}),o.setStyle("background",minder.getStyle("background")),n.length?r.fill(minder.getStyle("root-background")).setPathData(n):r.setPathData(null),i.length?a.stroke(minder.getStyle("connect-color"),"0.5%").setPathData(i):a.setPathData(null),m()}function m(){d=minder.getViewDragger().getView(),l.setBox(d.intersect(s))}minder.on("themechange",function(e){c=p(e.theme)}),function(){function t(e,t){var n=d;e.x=-e.x,e.y=-e.y;var i=minder.getPaper().getViewPortMatrix();n=i.transformBox(n);var o=e.offset(n.width/2,n.height/2);minder.getViewDragger().moveTo(o,t)}var n=!1;o.on("mousedown",function(e){n=!0,t(e.getPosition("top"),200),i.addClass("grab")}),o.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,o=n.minder,r=!1;n.codemirrorLoaded=function(e){i=n.cmEditor=e,e.setSize("100%","100%")},n.$watch("noteContent",function(e){var t=-1!=o.queryCommandState("note");e&&t&&!r&&o.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()},o.on("interactchange",function(){var e=n.noteEnabled=-1!=o.queryCommandState("note"),t=o.queryCommandValue("note")||"";e&&(n.noteContent=t),r=!0,n.$apply(),r=!1})}]}}]),angular.module("kityminderEditor").directive("notePreviewer",["$sce","valueTransfer",function(h,e){return{restrict:"A",templateUrl:"ui/directive/notePreviewer/notePreviewer.html",link:function(u,e){var t,n=u.minder,m=e.parent(),g=e.children();u.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 o=marked(i);t&&(o=o.replace(new RegExp("("+t+")","ig"),'$1'));u.noteContent=h.trustAsHtml(o),u.$apply();var r=$(m[0]).width(),a=$(m[0]).height(),l=$(g).outerWidth(),s=$(g).outerHeight(),d=n.cx-l/2-m[0].offsetLeft,c=n.bottom+10-m[0].offsetTop;d<0&&(d=10);r drag",function(){}),t.when("drag -> *",function(e,t,n){});var a,l,s,d,c,p,u=1,m=!1,g=!1;function f(e,t){if(!e)return m=g=!1,p&&kity.releaseFrame(p),void(p=null);var n,i,o;p||(p=kity.requestFrame((n=e,i=t,o=r,function(e){switch(n){case"left":o._viewDragger.move({x:-i,y:0},0);break;case"top":o._viewDragger.move({x:0,y:-i},0);break;case"right":o._viewDragger.move({x:i,y:0},0);break;case"bottom":o._viewDragger.move({x:0,y:i},0);break;default:return}e.next()})))}r.on("mousedown",function(e){u=0;var t=r.getPaper().container.getBoundingClientRect();n=e.originEvent.clientX,i=e.originEvent.clientY,c=t.top,a=t.width,l=t.height}),r.on("mousemove",function(e){if("drag"===t.state()&&0==u&&r.getSelectedNode()&&(20 {2}",t,o,e),n=0;n *"),2==(i=e.split(" - ")).length?n="before":2==(i=e.split(" -> ")).length&&(n="after"),!n)throw new Error("Illegal fsm condition: "+e);o=i[0],r=i[1],t.condition={when:n,exit:o,enter:r},l.push(t)}}("normal")}}},c[10]={value:function(e,t,n){var f=c.r(22);return window.diff=f,n.exports=function(){var n,i,o,r,a=this.minder,e=this.hotbox,t=this.lang.t,l=100;function s(){o=[],r=[],n=a.exportJson()}function d(){var e=a.exportJson(),t=f(e,n);if(t.length){for(o.push(t);o.length>l;)o.shift();return n=e,!0}}function c(){i=!0;var e,t=o.pop();t&&(a.applyPatches(t),e=a.exportJson(),r.push(f(e,n)),n=e),i=!1}function p(){i=!0;var e=r.pop();e&&(a.applyPatches(e),d()),i=!1}function u(){return!!o.length}function m(){return!!r.length}this.history={reset:s,undo:c,redo:p,hasUndo:u,hasRedo:m},s(),a.on("contentchange",function(){i||d()&&(r=[])}),a.on("import",s),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 g=e.state("main");g.button({position:"top",label:t("undo","runtime/history"),key:"Ctrl + Z",enable:u,action:c,next:"idle"}),g.button({position:"top",label:t("redo","runtime/history"),key:"Ctrl + Y",enable:m,action:p,next:"idle"})}}},c[11]={value:function(e,t,n){var i=c.r(2);return n.exports=function(){var e=this.fsm,a=this.minder,o=this.receiver,t=this.container,l=new i(t);l.setParentFSM(e),e.when("normal -> hotbox",function(e,t,n){var i,o=a.getSelectedNode();if(o){var r=o.getRenderBox();i={x:r.cx,y:r.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&&o.element.focus()}),this.hotbox=l}}},c[12]={value:function(e,t,n){c.r(21);var d=new(c.r(19))("input");return n.exports=function(){var o=this.fsm,m=this.minder,e=this.hotbox,r=this.receiver,a=r.element,l=window.kity.Browser.gecko,t=this.lang.t;function n(){var e=m.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=m.queryCommandValue("text"),l&&r.fixFFCaretDisappeared(),o.jump("input","input-request"),r.selectAll()}}function i(){var e=m.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"),r.selectAll()}function s(){var t=s,n=m.getSelectedNode();n&&(t.timer||(t.timer=setTimeout(function(){var e=n.getRenderBox("TextRenderer");a.style.left=Math.round(e.x)+"px",a.style.top=(d.flaged?Math.round(e.bottom+30):Math.round(e.y))+"px",t.timer=0})))}d.flaged&&a.classList.add("debug"),a.onmousedown=function(e){e.stopPropagation()},m.on("layoutallfinish viewchange viewchanged selectionchange",function(e){"viewchange"==e.type&&"input"!=o.state()||s()}),s(),o.when("* -> input",i),o.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=m.getSelectedNode();if(e=function(e){for(var t,n,i,o="",r=/\S/,a=new RegExp("( |"+String.fromCharCode(160)+")"),l=document.createElement("br"),s=!1,d=!1,c=0,p=e.length;c/g,">").replace(/\n/g,"
")}))}},c[22]={value:function(e,t,n){var u=Object.keys?Object.keys:function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t};function m(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,o){for(var r=u(n),a=u(t),l=!1,s=a.length-1;0<=s;s--){var d=t[p=a[s]];if(n.hasOwnProperty(p)){var c=n[p];"object"==typeof d&&null!=d&&"object"==typeof c&&null!=c?e(d,c,i,o+"/"+m(p)):d!=c&&i.push({op:"replace",path:o+"/"+m(p),value:g(c)})}else i.push({op:"remove",path:o+"/"+m(p)}),l=!0}if(l||r.length!=a.length)for(s=0;s
{{ 'appendchildnode' | lang:'ui/command' }}
{{ 'appendparentnode' | lang:'ui/command' }}
{{ 'appendsiblingnode' | lang:'ui/command' }}
"),e.put("ui/directive/arrange/arrange.html","
{{ 'arrangeup' | lang:'ui/command' }}
{{ 'arrangedown' | lang:'ui/command' }}
"),e.put("ui/directive/colorPanel/colorPanel.html",'
'),e.put("ui/directive/expandLevel/expandLevel.html",'
'),e.put("ui/directive/fontOperator/fontOperator.html",''),e.put("ui/directive/hyperLink/hyperLink.html",'
'),e.put("ui/directive/imageBtn/imageBtn.html",'
'),e.put("ui/directive/kityminderEditor/kityminderEditor.html",'
'),e.put("ui/directive/kityminderViewer/kityminderViewer.html",'
'),e.put("ui/directive/layout/layout.html",''),e.put("ui/directive/navigator/navigator.html",''),e.put("ui/directive/noteBtn/noteBtn.html",'
'),e.put("ui/directive/noteEditor/noteEditor.html",'

{{ \'title\' | lang: \'ui/noteeditor\' }}

({{ \'hint\' | lang: \'ui/noteeditor\' }})

{{ \'placeholder\' | lang: \'ui/noteeditor\' }}

'),e.put("ui/directive/notePreviewer/notePreviewer.html",'
'),e.put("ui/directive/operation/operation.html","
{{ 'editnode' | lang:'ui/command' }}
{{ 'removenode' | lang:'ui/command' }}
"),e.put("ui/directive/priorityEditor/priorityEditor.html",'
'),e.put("ui/directive/progressEditor/progressEditor.html",'
'),e.put("ui/directive/resourceEditor/resourceEditor.html",'
'),e.put("ui/directive/searchBox/searchBox.html",''),e.put("ui/directive/searchBtn/searchBtn.html",'
'),e.put("ui/directive/selectAll/selectAll.html",'
'),e.put("ui/directive/styleOperator/styleOperator.html",''),e.put("ui/directive/templateList/templateList.html",''),e.put("ui/directive/themeList/themeList.html",''),e.put("ui/directive/topTab/topTab.html",''),e.put("ui/directive/undoRedo/undoRedo.html",'
'),e.put("ui/dialog/hyperlink/hyperlink.tpl.html",''),e.put("ui/dialog/imExportNode/imExportNode.tpl.html",''),e.put("ui/dialog/image/image.tpl.html",'')}]),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,lang:"zh_CN",zoom:[10,20,30,50,80,100,120,150,200]},this.set=function(e,t){var n=Object.keys(this.config),i={};for(var o in"object"==typeof e?i=e:i[e]=t,i){if(!i.hasOwnProperty(o)||-1===n.indexOf(o))return console.error("Unsupported config key: ",e,", please choose in :",n.join(", ")),!1;this.config[o]=i[o]}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("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",o)),n&&n!==e&&(n.resourceListOpen=!1),n=e},this.close=function(e){n===e&&(n=null,t.unbind("click",i),t.unbind("keydown",o))};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})}},o=function(e){27===e.which&&(n.focusToggleElement(),i())}}]),angular.module("kityminderEditor").service("revokeDialog",["$uibModal","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("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",function(i){return function(e,t){var n=i.get("lang");return window.editor.lang.t(e,t,n)}}]),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(o,e,t,n,r){o.title=t,o.value=n,o.type=r,o.ok=function(){""!=o.value&&(e.close(o.value),editor.receiver.selectAll())},o.cancel=function(){e.dismiss("cancel"),editor.receiver.selectAll()},setTimeout(function(){$(".single-input").focus(),$(".single-input")[0].setSelectionRange(0,n.length)},30),o.shortCut=function(e){if(e.stopPropagation(),27==e.keyCode&&o.cancel(),8==e.keyCode&&"export"==r&&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","$filter",function(i,o,t,e,n){o.lang=n("lang"),o.data={list:[],url:e.url||"",title:e.title||"",R_URL:/^(https?:\/\/|data:)\S+/},setTimeout(function(){var e=$("#image-url");e.focus(),e[0].setSelectionRange(0,o.data.url.length)},300),t.rendered.then(function(){$("#upload-image").change(function(){o.uploadImage()})}),o.searchImage=function(){var e,t,n;o.list=[],(e=o.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>1;e.push("M",t,n+r,"a",r,r,0,1,1,0,.01,"z")};default:return function(e,t,n,i,o){e.push("M",t,n,"h",i,"v",o,"h",-i,"z")}}}function u(){var e=minder.getRenderContainer().getBoundaryBox();s=e;o.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();c(n,t.x,t.y,t.width,t.height),e.getConnection()&&e.parent&&e.parent.isExpanded()&&i.push(e.getConnection().getPathData())}),o.setStyle("background",minder.getStyle("background")),n.length?r.fill(minder.getStyle("root-background")).setPathData(n):r.setPathData(null),i.length?a.stroke(minder.getStyle("connect-color"),"0.5%").setPathData(i):a.setPathData(null),m()}function m(){d=minder.getViewDragger().getView(),l.setBox(d.intersect(s))}minder.on("themechange",function(e){c=p(e.theme)}),function(){function t(e,t){var n=d;e.x=-e.x,e.y=-e.y;var i=minder.getPaper().getViewPortMatrix();n=i.transformBox(n);var o=e.offset(n.width/2,n.height/2);minder.getViewDragger().moveTo(o,t)}var n=!1;o.on("mousedown",function(e){n=!0,t(e.getPosition("top"),200),i.addClass("grab")}),o.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,o=n.minder,r=!1;n.codemirrorLoaded=function(e){i=n.cmEditor=e,e.setSize("100%","100%")},n.$watch("noteContent",function(e){var t=-1!=o.queryCommandState("note");e&&t&&!r&&o.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()},o.on("interactchange",function(){var e=n.noteEnabled=-1!=o.queryCommandState("note"),t=o.queryCommandValue("note")||"";e&&(n.noteContent=t),r=!0,n.$apply(),r=!1})}]}}]),angular.module("kityminderEditor").directive("notePreviewer",["$sce","valueTransfer",function(h,e){return{restrict:"A",templateUrl:"ui/directive/notePreviewer/notePreviewer.html",link:function(u,e){var t,n=u.minder,m=e.parent(),g=e.children();u.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 o=marked(i);t&&(o=o.replace(new RegExp("("+t+")","ig"),'$1'));u.noteContent=h.trustAsHtml(o),u.$apply();var r=$(m[0]).width(),a=$(m[0]).height(),l=$(g).outerWidth(),s=$(g).outerHeight(),d=n.cx-l/2-m[0].offsetLeft,c=n.bottom+10-m[0].offsetTop;d<0&&(d=10);r