diff --git a/app/views/raml-editor-main.tmpl.html b/app/views/raml-editor-main.tmpl.html index 6dbedec3..f7fb40e7 100644 --- a/app/views/raml-editor-main.tmpl.html +++ b/app/views/raml-editor-main.tmpl.html @@ -28,7 +28,7 @@

- +
diff --git a/dist/scripts/api-designer.js b/dist/scripts/api-designer.js index 4933d942..f2726012 100644 --- a/dist/scripts/api-designer.js +++ b/dist/scripts/api-designer.js @@ -85978,7 +85978,7 @@ angular.module('ramlEditorApp').run([ $templateCache.put('views/new-name-modal.html', '
\n' + ' \n' + '\n' + ' \n' + '\n' + ' \n' + '
\n'); $templateCache.put('views/raml-editor-context-menu.tmpl.html', '\n'); $templateCache.put('views/raml-editor-file-browser.tmpl.html', '\n' + '\n' + '\n' + '\n' + '
\n' + ' \n' + '
\n'); - $templateCache.put('views/raml-editor-main.tmpl.html', '
\n' + ' \n' + '\n' + '
\n' + '

\n' + ' API Designer\n' + '

\n' + '\n' + ' \n' + '
\n' + '\n' + ' \n' + '\n' + '
\n' + ' \n' + '\n' + '
 
\n' + '\n' + '
\n' + '
\n' + '\n' + '
\n' + '
\n' + ' \n' + '
\n' + '\n' + '
\n' + '
\n' + '
\n' + '\n' + '
 
\n' + '\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
A new mocking service is available. Upgrading takes just seconds.
\n' + '
\n' + ' See what\u2019s new\n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + '\n' + '
\n' + '
\n' + '
\n' + '
Your mocking service has been successfully upgraded!
\n' + '
\n' + ' See what\u2019s new\n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + '\n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n'); + $templateCache.put('views/raml-editor-main.tmpl.html', '
\n' + ' \n' + '\n' + '
\n' + '

\n' + ' API Designer\n' + '

\n' + '\n' + ' \n' + '
\n' + '\n' + ' \n' + '\n' + '
\n' + ' \n' + '\n' + '
 
\n' + '\n' + '
\n' + '
\n' + '\n' + '
\n' + '
\n' + ' \n' + '
\n' + '\n' + '
\n' + '
\n' + '
\n' + '\n' + '
 
\n' + '\n' + '
\n' + '
\n' + '
\n' + '
\n' + '
A new mocking service is available. Upgrading takes just seconds.
\n' + '
\n' + ' See what\u2019s new\n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + '\n' + '
\n' + '
\n' + '
\n' + '
Your mocking service has been successfully upgraded!
\n' + '
\n' + ' See what\u2019s new\n' + '
\n' + '
\n' + '
\n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n' + '\n' + '
\n' + ' \n' + '
\n' + '
\n' + '
\n' + '
\n'); $templateCache.put('views/raml-editor-shelf.tmpl.html', '\n'); } ]); \ No newline at end of file diff --git a/dist/scripts/api-designer.min.js b/dist/scripts/api-designer.min.js index 1993b58c..6c7135fd 100644 --- a/dist/scripts/api-designer.min.js +++ b/dist/scripts/api-designer.min.js @@ -32,4 +32,4 @@ return"var"==a?m(q("vardef"),J,s(";"),r):"keyword a"==a?m(q("form"),u,t,r):"keyw for(var a=[],b=this.getIsInArray(),c=this;c&&c.getIsInArray()===b&&(a.push(c),!c.isArrayStarter);)c=c.getPreviousSibling();for(c=this.getNextSibling();c&&!c.isArrayStarter&&c.getIsInArray()===b;)a.push(c),c=c.getNextSibling();return a},g.prototype.getIsInArray=function(){if(this.isArrayStarter)return!0;for(var a=this.getPreviousSibling();a&&a.lineIndent.tabCount>=this.lineIndent.tabCount;)a=a.getPreviousSibling();return!(!a||!a.isArrayStarter||a.lineIndent.tabCount!==this.lineIndent.tabCount-1)},g.prototype.getPath=function(){for(var a=[],b=this;b=b.getParent();)a.unshift(b);return a},g.prototype.selfOrParent=function(a){return this.first(this.getParent,a)},g.prototype.selfOrPrevious=function(a){return this.first(this.getPreviousSibling,a)},g.prototype.first=function(a,b){for(var c=this;c;){if(b(c))return c;c=a.apply(c)}return null},h}])}(),function(){"use strict";angular.module("lightweightParse",["utils"]).factory("getSpaceCount",function(){return function(a){for(var b=0,c=a.length;b1)return f=e[b.tabCount-2],f&&(c=f.length-1,d=e[b.tabCount-2][c],a[d]=a[d]||[],a[d].push({lineNumber:b.lineNumber,content:b.content,tabCount:b.tabCount}),e[b.tabCount-1]=e[b.tabCount-1]||[],e[b.tabCount-1].push(b.lineNumber)),a;d=0}return a[d]=a[d]||[],a[d].push({lineNumber:b.lineNumber,content:b.content,tabCount:b.tabCount}),e[b.tabCount]=e[b.tabCount]||[],e[b.tabCount].push(b.lineNumber),a},{});return c={result:{scopeLevels:e,scopesByLine:g},lines:d},{scopeLevels:e,scopesByLine:g}}}])}(),function(){"use strict";angular.module("codeFolding",["raml","lightweightParse"]).factory("getFoldRange",["getLineIndent",function(a){return function(b,c){var d,e=b.getLine(c.line),f=a(e);if(f.content){var g=b.getLine(c.line+1);if(g){var h=f.tabCount,i=a(g).tabCount;if(i>h)for(var j=c.line+2,k=b.lineCount();j=d&&e%d==0)for(var f=0;f=0;d--)if(h(a.getLine(d))=a.getLine(c.line).length-1,i=a.getLine(c.line).slice(0,c.ch),j=g(i),l=h(i),m=d(l),n=b(c.line,l),o=-1!==["traits","resourceTypes"].indexOf(n);f?function(){if(o)return void(m+=e(2));if(j&&(m+=e(1)),"|"===i.replace(/\s+$/,"").slice(-1))return void(m+=e(1));var b=a.getLine(c.line+1);b&&h(b)>l&&(m+=e(1))}():j&&(m+=e(1)),a.replaceSelection("\n"+m,"end","+input")},m.createEditor=function(a,b){var c,d,e=JSON.parse(j.get("folding","true")),f=!1;e&&(f={rangeFinder:CodeMirror.fold.indent,foldOnChangeTimeSpan:300,updateViewportTimeSpan:200}),d={mode:"raml",theme:"solarized dark",lineNumbers:!0,lineWrapping:!0,autofocus:!0,indentWithTabs:!1,indentUnit:2,tabSize:2,keyMap:"tabSpace",foldGutter:f,gutters:["CodeMirror-lint-markers","CodeMirror-linenumbers","CodeMirror-foldgutter"]},b&&Object.keys(b).forEach(function(a){d[a]=b[a]}),c=new CodeMirror(a,d),c.setSize("100%","100%"),c.foldCode(0,{rangeFinder:CodeMirror.fold.indent});var g=c.defaultCharWidth();return c.on("renderLine",function(a,b,c){var d=CodeMirror.countColumn(b.text,null,a.getOption("tabSize"))*g;c.style.textIndent="-"+d+"px",c.style.paddingLeft=4+d+"px"}),c},m.initEditor=function(){var a=document.getElementById("code"),b=m.createEditor(a);return l=window.editor=b,b},m.setLine=function(a,b,c){a.replaceRange(c,{line:b,ch:0},{line:b})},m.removeLine=function(a,b){a.replaceRange("",{line:0===b?b:b-1},{line:b})},m.getEditor=function(){return l},function(){CodeMirror.keyMap.tabSpace={Tab:m.tabKey,Backspace:m.backspaceKey,Enter:m.enterKey,fallthrough:["default"]},CodeMirror.commands.save=function(){a.$broadcast("event:save")},CodeMirror.commands.autocomplete=function(a){CodeMirror.showHint(a,CodeMirror.hint.raml,{completeSingle:!1,ghosting:!1,async:!0})},CodeMirror.commands.toggleTheme=function(){a.$broadcast("event:toggle-theme")},CodeMirror.defineMode("raml",c.highlight),CodeMirror.defineMIME("text/x-raml","raml"),CodeMirror.registerHelper("hint","raml",b.autocompleteHelper.bind(b)),CodeMirror.registerHelper("fold","indent",f)}(),m}])}(),function(){"use strict";angular.module("codeMirror").factory("codeMirrorErrors",["codeMirror","$timeout",function(a,b){function c(a,b){var c=document.createElement("div");c.className="CodeMirror-lint-tooltip",c.appendChild(a.cloneNode(!0)),c.style.visibility="hidden",document.body.appendChild(c);var d=$(b).offset();return c.style.top=Math.max(0,d.top-c.offsetHeight)+"px",c.style.left=d.left+20+"px",null!==c.style.opacity&&(c.style.opacity=1),c.style.visibility="visible",c}function d(a){a.parentNode&&a.parentNode.removeChild(a)}function e(a){a.parentNode&&(null===a.style.opacity&&d(a),a.style.opacity=0,b(function(){d(a)},200))}function f(a,b){function d(a,b){if(!b)return!1;var c=$(a).offset().left,d=c+$(a).outerWidth(),e=c<=b.clientX&&b.clientX<=d+5,f=$(a).offset().top,g=f+$(a).outerHeight(),h=f<=b.clientY&&b.clientY<=g;return e&&h}function f(a){if(g){var b=d(h,a);d(g,a)||b||(l.off(g,"mousedown",i),l.off(document,"mousemove",f),e(g),g=null)}}var g=c(a,b),h=b,i=function(a){f(g);var b=a.target.dataset.path;if(b){angular.element(h).scope().$emit("event:raml-editor-file-select",b)}},j=setInterval(function(){if(!g)return clearInterval(j);for(var a=b;;a=a.parentNode){if(a===document.body)return;if(!a){f();break}}},400);l.on(g,"mousedown",i),l.on(document,"mousemove",f)}function g(a){a.clearGutter(m)}function h(a,b){return"error"===a?a:b}function i(a){for(var b=[],c=0,d=a.length;c'+a.path+""),c.innerHTML="

"+b+'

'+d+"

",c}function k(a,b,c,d,e){var g=document.createElement("div"),h=g;return g.className="CodeMirror-lint-marker-"+b,c&&(h=g.appendChild(document.createElement("div")),h.className="CodeMirror-lint-marker-multiple"),!1!==d&&l.on(h,"mouseenter",function(){f(a,h)}),g.setAttribute("data-marker-line",e[0].line),g.setAttribute("data-marker-message",e[0].message),g}var l=a.CodeMirror,m="CodeMirror-lint-markers",n=/^(?:error|warning)$/,o={};return o.displayAnnotations=function(b,c){c=c||a.getEditor(),g(c);for(var d=i(b),e=0;e1,!0,f))}}},o.clearAnnotations=function(){g(a.getEditor())},o}])}(),function(){"use strict";angular.module("raml").value("snippets",{options:["options:"," description: <>"],head:["head:"," description: <>"],get:["get:"," description: <>"],post:["post:"," description: <>"],put:["put:"," description: <>"],delete:["delete:"," description: <>"],trace:["trace:"," description: <>"],connect:["connect:"," description: <>"],patch:["patch:"," description: <>"],"":["/newResource:"," displayName: resourceName"],title:["title: My API"],version:["version: v0.1"],baseuri:["baseUri: http://server/api/{version}"]}).factory("ramlSnippets",["snippets",function(a){function b(a){return f.find(function(b){return b.label===a}).keyValues}var c={},d=[],e=["extends"],f=[{label:"Trait",keyValues:d},{label:"ResourceType",keyValues:d},{label:"Library",keyValues:["usage"]},{label:"Overlay",keyValues:e},{label:"Extension",keyValues:e},{label:"DataType",keyValues:d},{label:"DocumentationItem",keyValues:["title","content"]},{label:"NamedExample",keyValues:["value"]},{label:"AnnotationTypeDeclaration",keyValues:d},{label:"SecurityScheme",keyValues:["type"]},{label:"",keyValues:["title"]}];return c.getEmptyRaml=function(a,c){var d=a||"1.0",e=c?" "+c:"",f=b(c||""),g=["#%RAML "+d+e];return f.forEach(function(a){g.push(a+":")}),g.join("\n")},c.getSnippet=function(b){var c=b.key,d=b.metadata||{},e=a[c.toLowerCase()];return e||(d.isText?b.isList?[c]:[c,""]:[c+":"])},c}])}(),function(){"use strict";angular.module("codeMirror").value("highlightRootElement",function(a,b,c,d,e,f){return e<=d[a+".level"]&&(d[a+".level"]=0,d[a+".inside"]=!1),a.indexOf(f)>=0?(d[a+".level"]=e,d[a+".inside"]=!0,b):!!d[a+".inside"]&&c}).value("booleanValues",["true","false"]).factory("keywordRegex",["booleanValues",function(a){return new RegExp("\\b(("+a.join(")|(")+"))$","i")}]).factory("token",["keywordRegex","highlightRootElement","getLineIndent","indentUnit",function(a,b,c,d){return function(e,f){var g=e.peek(),h=f.escaped;if(f.escaped=!1,"#"===g&&/^#%RAML (0\.8|1\.0|1\.0\s\w+)$/.test(e.string.trim()))return e.skipToEnd(),"raml-tag";if("#"===g&&(0===e.pos||/\s/.test(e.string.charAt(e.pos-1))))return e.skipToEnd(),"comment";if(f.literal&&e.indentation()>f.keyCol)return e.skipToEnd(),"none";if(f.literal&&(f.literal=!1),e.sol()){if(f.keyCol=0,f.pair=!1,f.pairStart=!1,e.match(/---/))return"def";if(e.match(/\.\.\./))return"def";if(e.match(/\s*-\s+/))return"meta"}if(!f.pair&&e.match(/^\s*([a-z0-9\?\/\{\}\._\-])+(?=\s*:)/i)){var i=e.string.replace(/^\s+|\s+$/g,"").split(":")[0],j="?"===i.slice(-1)?i.slice(0,-1):i,k=c(e.string).tabCount;if(f.pair=!0,f.keyCol=e.indentation(),e.string.match(/^\s*\- /i)&&(f.keyCol+=d),(k<=f.methodLevel||0===i.indexOf("/"))&&(f.methodLevel=0,f.insideMethod=!1),-1!==["options","get","head","post","put","delete","trace","connect","patch"].indexOf(j))return f.methodLevel=k,f.insideMethod=!0,"method-title";if(f.insideMethod)return"method-content";var l=b("traits","trait-title","trait-content",f,k,i)||b("resourceTypes","resource-type-title","resource-type-content",f,k,i)||b("schemas","schema-title","schema-content",f,k,i)||b("securitySchemes","security-scheme-title","security-scheme-content",f,k,i);return l||(0===i.indexOf("/")?"resource":"key")}if(f.pair&&e.match(/^:\s*/))return f.pairStart=!0,"meta";if(e.match(/^(\{|\}|\[|\])/))return"{"===g?f.inlinePairs++:"}"===g?f.inlinePairs--:"["===g?f.inlineList++:f.inlineList--,"meta";if(f.inlineList>0&&!h&&","===g)return e.next(),"meta";if(f.inlinePairs>0&&!h&&","===g)return f.keyCol=0,f.pair=!1,f.pairStart=!1,e.next(),"meta";if(f.pairStart){if(e.match(/^\s*(\||\>)\s*/))return f.literal=!0,"meta";if(e.match(/^\s*(\&|\*)[a-z0-9\._\-]+\b/i))return"variable-2";if(0===f.inlinePairs&&e.match(/^\s*-?[0-9\.\,]+\s?$/))return"number";if(f.inlinePairs>0&&e.match(/^\s*-?[0-9\.\,]+\s?(?=(,|\}))/))return"number";if(e.match(a))return"keyword"}return f.pairStart=!1,f.escaped="\\"===g,e.next(),null}}]).value("startState",function(){return{pair:!1,pairStart:!1,keyCol:0,inlinePairs:0,inlineList:0,literal:!1,escaped:!1}}).factory("yamlMode",["token","startState",function(a,b){return function(){return{token:a,startState:b}}}]).run(["codeMirror","yamlMode",function(a,b){var c=a.CodeMirror;c.defineMode("yaml",b),c.defineMIME("text/x-yaml","yaml")}])}(),function(){"use strict";angular.module("codeMirror").factory("codeMirrorHighLight",["indentUnit",function(a){var b={};return b.highlight=function(a){return b.indentationOverlay={token:function(a,b){if(void 0===b.cutoff||a.column()<=b.cutoff){if(a.match(" "))return"indent indent-col-"+a.column();if(a.match(" "))return"indent-incomplete"}a.skipToEnd()},startState:function(){return{}}},b.yaml=CodeMirror.overlayMode(CodeMirror.getMode(a,"yaml"),b.indentationOverlay),b.xml=CodeMirror.overlayMode(CodeMirror.getMode(a,"xml"),b.indentationOverlay),b.json=CodeMirror.overlayMode(CodeMirror.getMode(a,{name:"javascript",json:!0}),b.indentationOverlay),b.markdown=CodeMirror.overlayMode(CodeMirror.getMode(a,"gfm"),b.indentationOverlay),{startState:function(){return{token:b._yaml,localMode:null,localState:null,yamlState:b.yaml.startState()}},copyState:function(a){var c;return a.localState&&(c=CodeMirror.copyState(a.localMode,a.localState),c.parentIndentation||(c.parentIndentation=a.localState.parentIndentation)),{token:a.token,localMode:a.localMode,localState:c,yamlState:CodeMirror.copyState(b.yaml,a.yamlState)}},innerMode:function(a){return{state:a.localState||a.yamlState,mode:a.localMode||b.yaml}},token:function(a,b){return b.token(a,b)}}},b._yaml=function(a,c){return/(content|description):(\s?)\|/.test(a.string)&&b._setMode("markdown",a,c),/application\/json:/.test(a.string)&&b._setMode("json",a,c,2),/text\/xml:/.test(a.string)&&b._setMode("xml",a,c,2),b.yaml.token(a,c.yamlState)},b._xml=function(a,c){return b._applyMode("xml",a,c)},b._json=function(a,c){return b._applyMode("json",a,c)},b._markdown=function(a,c){return b._applyMode("markdown",a,c)},b._setMode=function(c,d,e,f){e.token=b["_"+c],e.localMode=b[c],e.localState=b[c].startState(),e.localState.parentIndentation=d.indentation()+(f||0),d.string.match(/^\s*\- /i)&&(e.localState.parentIndentation+=a),"markdown"===c&&(e.localState.base.parentIndentation=e.localState.parentIndentation)},b._applyMode=function(a,c,d){return/(schema|example):(\s?)\|/.test(c.string)?b._yaml(c,d):c.string.trim().length>0&&c.indentation()<=d.localState.parentIndentation?(d.token=b._yaml,d.localState=d.localMode=null,b._yaml(c,d)):(d.localState.overlay.cutoff=d.localState.parentIndentation,b[a].token(c,d.localState))},b}])}(),function(){"use strict";function a(a,b,c){c=c||{},"/"===a.slice(-1)&&a.length>1&&(a=a.slice(0,-1)),this.type="file",this.path=a,this.name=a.slice(a.lastIndexOf("/")+1),this.isDirectory=!1,this.name.lastIndexOf(".")>0&&(this.extension=this.name.slice(this.name.lastIndexOf(".")+1)),this.contents=b||"",this.persisted=c.persisted||!1,this.dirty=c.dirty||!this.persisted,this.root=c.root}angular.module("fs",["raml","utils"]).factory("ramlRepository",["$q","$rootScope","ramlSnippets","fileSystem",function(b,c,d,e){function f(a){return".meta"!==a.path.slice(-5)}function g(a){return!f(a)}function h(a){return function(b){throw a.error=b,b}}function i(a,b){return a.isDirectory===b.isDirectory?a.name.localeCompare(b.name):a.isDirectory?-1:1}function j(a,b){for(var c,d=0,e=b.children.length-1;e>=d;)c=Math.floor((d+e)/2),i(b.children[c],a)>0?e=c-1:d=c+1;return d}function k(a,c){var d="/"===a.path?[""]:a.path.split("/"),e=c.path.split("/").slice(0,-1),f=b.when(a);return e.slice(d.length).forEach(function(a){f=f.then(function(c){var d=o.join(c.path,a),e=o.getByPath(d);return e?e.isDirectory?e:b.reject(new Error("Can not create directory, file already exists: "+d)):o.createDirectory(c,a)})}),f.then(function(a){var d=o.getByPath(c.path);return d?d.isDirectory&&c.isDirectory?d:b.reject(new Error("Path already exists: "+c.path)):(a.children.splice(j(c,a),0,c),c)})}function l(a,b){return a.path.slice(0,a.path.lastIndexOf("/"))+"/"+b}function m(b,c,d){"/"===b.slice(-1)&&b.length>1&&(b=b.slice(0,-1)),d=d||[],this.type="directory",this.path=b,this.name=b.slice(b.lastIndexOf("/")+1),this.meta=c,this.collapsed=!0,this.isDirectory=!0;var e={folder:[],file:[]};d.forEach(function(a){e[a.type||"file"].push(a)});var h=function(b){return new a(b.path,b.contents,{dirty:!1,persisted:!0,root:b.root})},j=e.file.filter(f).map(h),k=e.file.filter(g).map(h),l=e.folder.map(function(a){return new m(a.path,a.meta,a.children)});this.children=l.concat(j).sort(i),this.metaChildren=l.concat(k).sort(i)}var n,o={},p="/";return o.supportsFolders=e.supportsFolders||!1,m.prototype.getDirectories=function(){return this.children.filter(function(a){return a.isDirectory})},m.prototype.getFiles=function(){return this.children.filter(function(a){return!a.isDirectory})},m.prototype.getMetaFiles=function(){return this.metaChildren.filter(function(a){return!a.isDirectory})},m.prototype.forEachItemDo=function(a,b){for(var c,d=b?this.metaChildren.slice():this.children.slice();d.length>0;)c=d.shift(),c.isDirectory&&(d=d.concat(b?c.metaChildren:c.children)),a.call(c,c)},m.prototype.forEachChildDo=function(a){this.forEachItemDo(a,!1)},m.prototype.forEachMetaChildDo=function(a){this.forEachItemDo(a,!0)},m.prototype.sortChildren=function(){this.children.sort(i)},o.sortingFunction=i,o.getParent=function(a){var b=a.path.slice(0,a.path.lastIndexOf("/"));return 0===b.length&&(b="/"),o.getByPath(b)},o.canExport=function(){return e.hasOwnProperty("exportFiles")},o.exportFiles=function(){return e.exportFiles()},o.createDirectory=function(a,c){var d=o.join(a.path,c),f=new m(d),g=o.getByPath(d);return g?b.when(g):k(a,f).then(function(){return e.createFolder(f.path)}).then(function(){return f})},o.generateDirectory=function(a,b){return o.createDirectory(a,b).then(function(a){return c.$broadcast("event:raml-editor-directory-created",a),a})},o.loadDirectory=function(){return e.directory(p).then(function(a){return n=new m(a.path,a.meta,a.children)})},o.removeDirectory=function(a){var d=[];a.getDirectories().forEach(function(a){d.push(o.removeDirectory(a))}),a.getFiles().concat(a.getMetaFiles()).forEach(function(a){d.push(o.removeFile(a))});var f=o.getParent(a),g=f.children.indexOf(a);return-1!==g&&f.children.splice(g,1),b.all(d).then(function(){return e.remove(a.path)}).then(function(a){c.$broadcast("event:raml-editor-directory-removed",a)})},o.renameDirectory=function(a,b){var d=l(a,b),f=e.rename(a.path,d);return a.forEachChildDo(function(b){b.path=b.path.replace(a.path,d)}),f.then(function(){return a.name=b,a.path=d,c.$broadcast("event:raml-editor-filetree-modified",a),a},h(a))},o.saveFile=function(a){function b(){return a.dirty=!1,a.persisted=!0,a}return e.save(a.path,a.contents).then(b,h(a))},o.renameFile=function(a,d){function f(){return a.name=d,a.path=g,c.$broadcast("event:raml-editor-filetree-modified",a),a}var g=l(a,d);return(a.persisted?e.rename(a.path,g):b.when(a)).then(f,h(a))},o.loadFile=function(a,b){function c(b){return a.dirty=!1,a.persisted=!0,a.loaded=!0,a.contents=b,a}return e.load(a.path,b).then(c,h(a))},o.removeFile=function(a){function d(){return a.dirty=!1,a.persisted=!1,Object.freeze(a)}var g,i=o.getParent(a);return g=a.persisted?e.remove(a.path):b.when(a),g.then(d,h(a)).then(function(){if(f(a)){var b=i.children.indexOf(a);-1!==b&&i.children.splice(b,1)}else{var d=i.metaChildren.indexOf(a);-1!==d&&i.metaChildren.splice(d,1)}c.$broadcast("event:raml-editor-file-removed",a)})},o.createFile=function(b,d){var e=o.join(b.path,d),f=new a(e);return k(b,f).then(function(){return c.$broadcast("event:raml-editor-file-created",f),f})},o.generateFile=function(a,b,e,f){return o.createFile(a,b).then(function(a){return"raml"===a.extension&&(a.contents=d.getEmptyRaml(e,f)),c.$broadcast("event:raml-editor-file-generated",a),a})},o.getContentByPath=function(a,c){var d=o.getByPath(a);return d?d.loaded?b.when(d.contents):o.loadFile(d,c).then(function(a){return a.contents}):b.reject("getByPathLoaded: "+a+": no such path")},o.getByPath=function(a){if(a){if("/"===a)return n;a=a.replace(/\/$/,"");for(var b,c=n.children.slice();c.length;){if(b=c.shift(),b.path===a)return b;b.isDirectory&&(c=c.concat(b.children))}}},o.rename=function(a,b){return a.isDirectory?o.renameDirectory(a,b):o.renameFile(a,b)},o.remove=function(a){return a.isDirectory?o.removeDirectory(a):o.removeFile(a)},o.move=function(a,c){if(c.isDirectory){var d,f=o.join(c.path,a.name);return a.isDirectory?(d=e.rename(a.path,f),a.forEachChildDo(function(b){b.path=b.path.replace(a.path,f)}),a.forEachMetaChildDo(function(b){b.path=b.path.replace(a.path,f)})):(o.moveMeta(a,c),d=a.persisted?e.rename(a.path,f):b.when(a)),d.then(function(){return a.path=f,a},h(a))}},o.saveMeta=function(b,c){var d=new a(b.path+".meta",JSON.stringify(c));return o.saveFile(d).then(function(){return o.getParent(d).metaChildren.push(d),c})},o.loadMeta=function(b){var c=new a(b.path+".meta");return o.loadFile(c).then(function(a){return JSON.parse(a.contents)},function(){return{}})},o.moveMeta=function(a,b){var c=a.name+".meta",d=o.join(b.path,c),f=a.path+".meta",g=o.getParent(a),h=g.metaChildren.find(function(a){return a.path===f});if(h)return e.rename(h.path,d).then(function(){var a=g.metaChildren.indexOf(h);return-1!==a&&g.metaChildren.splice(a,1),h.path=d,b.metaChildren.push(h),h},function(){return h})},o.join=function(){return Array.prototype.reduce.call(arguments,function(a,b){return null==b?a:"/"===b.charAt(0)?b:a.replace(/\/$/,"")+"/"+b},"/")},o}])}();var FSResolver=function(a,b){this.parsePath=function(a){return a.split("/").filter(function(a){return a&&""!==a})},this.getElement=function(b){var c=this.parsePath(b);return this.getElementFromPath(c,0,a)},this.getElementFromPath=function(a,b,c){if(a.length===b)return c;if(c.isDirectory){var d=this.getChild(c,a[b]);return d?this.getElementFromPath(a,b+1,d):d}},this.getChild=function(a,b){return a.children.find(function(a){return a.name===b})},this.getFileContentAsync=function(a){if(a.loaded){if(a.doc)return Promise.resolve(a.doc.getValue());if(a.contents)return Promise.resolve(a.contents)}var c=function(a){return a.contents};return b.loadFile(a,!0).then(c)},this.contentAsync=function(a){var b=this.getElement(a);return!b||b.isDirectory?Promise.resolve(""):this.getFileContentAsync(b)},this.list=function(a){var b=this.getElement(a);return b&&b.isDirectory?b.children.map(function(a){return a.name}):[]},this.listAsync=function(a){return Promise.resolve(this.list(a))},this.exists=function(a){return!!this.getElement(a)},this.existsAsync=function(a){return Promise.resolve(this.exists(a))},this.dirname=function(a){var b=this.getElement(a);return b?b.isDirectory?b.path:a.substring(0,a.lastIndexOf("/")+1)||"":""},this.resolve=function(a,b){return b.startsWith("/")?b:(a.endsWith("/")?a:a+"/")+b},this.extname=function(a){var b=this.getElement(a);if(!b||b.isDirectory)return"";var c=b.name.split(".");return c.length<=1?"":c[c.length-1]},this.isDirectory=function(a){var b=this.getElement(a);return!(!b||!b.isDirectory)},this.isDirectoryAsync=function(a){return Promise.resolve(this.isDirectory(a))}},EditorStateProvider=function(a,b,c){function d(a,b){return a+b}this.getText=function(){return c.getValue()},this.getPath=function(){return b},this.getBaseName=function(){var c=a.getElement(b);return c?c.name:""};var e=function(a){var b=a.getCursor();return range(0,b.line-1).map(function(b){return a.getLine(b).length+1}).reduce(d,0)+b.ch};this.offset=e(c),this.getOffset=function(){return this.offset}};angular.module("ramlEditorApp").factory("ramlSuggest",["ramlRepository","ramlEditorMainHelpers",function(a,b){function c(a,b){function c(a,b){if(!a)return!0;var c=b.text.toLowerCase();return c.startsWith(a)&&c!==a}var d=/:?(:|\s|\.|\[|]|-)+|!/,e=function(a,b){if(!a)return"";var c=a.slice(0,b).split(d);return c[c.length-1]},f=function(a,b){return a?a.slice(b).split(d)[0]:""},g=function(a,b,c){a.innerHTML=["
",c.displayText,"
",'
',c.category,"
"].join("")},h=function(a){return{displayText:a.displayText||a.text,text:a.text,category:a.category,render:g}},i=a.getCursor(),j=a.getLine(i.line),k=i.ch,l=e(j,k)||"",m=f(j,k),n=l+m,o=n.toLowerCase(),p=a.getLine(i.line).length,q=k-l.length;return{word:n,list:b.filter(function(a){return c(o,a)}).map(h),from:CodeMirror.Pos(i.line,q),to:CodeMirror.Pos(i.line,p)}}function d(a){return void 0!==a.category&&"unknown"!==a.category.toLowerCase()||(a.category="others"),a}function e(a){return a.text=a.text||a.displayText||"",a}function f(a,c){var d=a.getCursor().ch,e=c.length>0&&(0===d||c.find(function(a){return"methods"===a.category?a:null}));if(e&&b.isApiDefinition(a.getValue())){var f=e.replacementPrefix||"",g="\n"+new Array(d-f.length+1).join(" ")+" ";return c.concat({text:"/newResource:"+g+"displayName: resourceName"+g,displayText:"New Resource",category:"resources",replacementPrefix:f})}return c}return this.FSResolver=FSResolver,this.EditorStateProvider=EditorStateProvider,this.getSuggestions=function(b,c,g){var h=RAML.Suggestions,i=new FSResolver(b,a),j=h.getContentProvider(i),k=new EditorStateProvider(i,c.path,g);return h.suggestAsync(k,j).then(function(a){return Array.isArray(a)?a:[]},function(){return[]}).then(function(a){return a.map(d)}).then(function(a){return a.map(e)}).then(function(a){return f(g,a)})},this.suggest=function(a,b,c){return this.getSuggestions(a,b,c)},this.autocompleteHelper=function(a,b,d,e,f){if(!e||!f){var g=angular.element(a.getInputField()).scope();e=e||g.homeDirectory,f=f||g.fileBrowser.selectedFile}this.getSuggestions(e,f,a).then(function(b){return c(a,b)}).then(function(a){b(a)})},this}]),function(){"use strict";function a(){}a.prototype={directory:function(a){throw"Not implemented: FileSystem list invoked with [fullpath="+a+"]"},save:function(a,b){throw"Not implemented: FileSystem save invoked with [fullpath="+a+"] and [content="+b+"]"},createFolder:function(a){throw"Not implemented: FileSystem createFolder invoked with [fullpath="+a+"]"},load:function(a){throw"Not implemented: FileSystem load invoked with [fullpath="+a+"]"},remove:function(a){throw"Not implemented: FileSystem remove invoked with [fullpath="+a+"]"},rename:function(a,b){throw"Not implemented: FileSystem rename invoked with [source="+a+"] and [destination="+b+"]"}},angular.module("fs").provider("fileSystem",function(){return this.hasFactory=!1,this.setFileSystemFactory=function(a){this.$get=a,this.hasFactory=!0},this.$get=function(){return new a},this})}(),function(){"use strict";angular.module("ramlEditorApp").service("newFileService",["ramlRepository","newNameModal","$rootScope","generateName",function(a,b,c,d){function e(a,b,c){var e=a.children.map(function(a){return a.name}),f=(""!==b.label?c:"api")+"-";return d(e,f,"raml")}var f=this,g="https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md#";return f.files={.8:{"":{label:"",name:"API Spec",description:"RAML 0.8 API Spec.",spec:"https://github.com/raml-org/raml-spec/blob/master/versions/raml-08/raml-08.md"}},"1.0":{"":{label:"",name:"API Spec",description:"RAML 1.0 API Spec.",spec:g+"the-root-of-the-document"},Trait:{label:"Trait",name:"Trait",description:"Define a single trait with common characteristics for methods.",spec:g+"resource-types-and-traits"},ResourceType:{label:"ResourceType",name:"Resource Type",description:"Define a single resource type with common characteristics for resources.",spec:g+"resource-types-and-traits"},Library:{label:"Library",name:"Library",description:"Define a collection of data type declarations, resource type declarations, trait declarations, and security scheme declarations into modular, externalized, reusable groups.",spec:g+"libraries"},Overlay:{label:"Overlay",name:"Overlay",description:"Define an overlay that adds or overrides nodes of a RAML API definition while preserving its behavioral, functional aspects.",spec:g+"overlays"},Extension:{label:"Extension",name:"Extension",description:"Define an extension that adds or modifies nodes of a RAML API definition.",spec:g+"extensions"},DataType:{label:"DataType",name:"Type",description:"Define a single data type declaration.",spec:g+"raml-data-types"},DocumentationItem:{label:"DocumentationItem",name:"User Documentation",description:"Define a single page documentation item.",spec:g+"user-documentation"},NamedExample:{label:"NamedExample",name:"Example",description:"Define a single example for a given data type.",spec:g+"defining-examples-in-raml"},AnnotationTypeDeclaration:{label:"AnnotationTypeDeclaration",name:"Annotation",description:"Define a single annotation type declaration that describes additional metadata that can be applied to any RAML node.",spec:g+"annotations"},SecurityScheme:{label:"SecurityScheme",name:"Security Scheme",description:"Define a single security scheme that describes the mechanism to secure data access, identify requests, and determine access level and data visibility.",spec:g+"security-schemes"}}},f.prompt=function(d,g,h){var i=d.isDirectory?d:a.getParent(d),j=[{message:"That file name is already taken.",validate:function(b){var c=a.join(i.path,b);return!a.getByPath(c)}}],k=h||"",l=f.files[g][k],m=e(d,l,h),n="Add new "+l.name+" file";return b.open(l.description,m,j,n,l.spec).then(function(b){return a.generateFile(i,b,g,k).catch(function(a){return c.$broadcast("event:notification",{message:a.message,expires:!0,level:"error"})})})},f.newFragmentFile=function(a,b){return""===b?f.prompt(a,"1.0"):f.prompt(a,"1.0",b)},f.newFile=function(a,b){return f.prompt(a,b)},f}])}(),function(){"use strict";angular.module("ramlEditorApp").service("newFolderService",["ramlRepository","newNameModal",function(a,b){var c=this;return c.prompt=function(c){var d=c.isDirectory?c:a.getParent(c),e=[{message:"That folder name is already taken.",validate:function(b){var c=a.join(d.path,b);return!a.getByPath(c)}}] ;return b.open("Input a name for your new folder:","",e,"Add a new folder").then(function(b){return a.generateDirectory(d,b)})},c}])}(),function(){"use strict";function a(a,b,c,d,e,f){function g(a){return'file with path="'+a+'" does not exist'}function h(a,b){a.type===f&&(a.children=b(a.path))}function i(a){var b=[];return e.forEach(function(c){c.path.toLowerCase()===a.toLowerCase()&&(h(c,j),b.push(c))}),b.length>0?b[0]:null}function j(a){a.lastIndexOf("/")!==a.length-1&&(a+="/");var b=[];return e.forEach(function(c){c.path.toLowerCase()!==a.toLowerCase()&&o(c.path)+"/"===a&&(h(c,j),b.push(c))}),b}function k(a){return 0!==a.indexOf("/")?{valid:!1,reason:'Path should start with "/"'}:{valid:!0}}function l(a){var b=o(a);return!(!e.has(b)&&""!==b)}function m(a){var b=!1;return e.forEach(function(c){0===c.path.indexOf(a+"/")&&(b=!0)}),b}function n(a){if(!k(a).valid)throw"Invalid Path!";return a.lastIndexOf("/")===a.length-1&&(a=a.slice(0,-1)),a.slice(a.lastIndexOf("/")+1)}function o(a){if(!k(a).valid)throw"Invalid Path!";return a.lastIndexOf("/")===a.length-1&&(a=a.slice(0,-1)),a.slice(0,a.lastIndexOf("/"))}var p={},q=500;return p.supportsFolders=!0,p.directory=function(a){var c=b.defer();return d(function(){var b=k(a);if(!b.valid)return c.reject(b.reason),c.promise;e.has("/")||e.set(a,{path:"/",name:"",type:"folder",meta:{created:Math.round((new Date).getTime()/1e3)}}),c.resolve(i(a))},q),c.promise},p.save=function(a,c){var g=b.defer();return d(function(){var b=n(a),d=e.get(a);if(!l(a))return g.reject(new Error("Parent folder does not exists: "+a)),g.promise;var h={};if(d){if(d.type===f)return g.reject("file has the same name as a folder"),g.promise;d.content=c,d.meta.lastUpdated=Math.round((new Date).getTime()/1e3),h=d}else h={path:a,name:b,content:c,type:"file",meta:{created:Math.round((new Date).getTime()/1e3)}};e.set(a,h),g.resolve()},q),g.promise},p.createFolder=function(a){var c=b.defer(),f=k(a);if(!f.valid)return c.reject(f.reason),c.promise;if(e.has(a))return c.reject(new Error("Folder already exists: "+a)),c.promise;var g=o(a);return e.has(g)?(d(function(){e.set(a,{path:a,name:n(a),type:"folder",meta:{created:Math.round((new Date).getTime()/1e3)}}),c.resolve()},q),c.promise):(c.reject(new Error("Parent folder does not exists: "+a)),c.promise)},p.load=function(a,c){var f=b.defer();return(c?setTimeout:d)(function(){var b=e.get(a);b&&"file"===b.type?f.resolve(e.get(a).content):f.reject(g(a))},q),f.promise},p.remove=function(a){var c=b.defer();return d(function(){var b=e.get(a);if(b&&b.type===f&&m(a))return c.reject("folder not empty"),c.promise;e.remove(a),c.resolve()},q),c.promise},p.rename=function(a,c){var g=b.defer();return d(function(){var b=e.get(a);return b?e.get(c)?(g.reject("File or folder already exists."),g.promise):l(c)?(b.path=c,b.name=n(c),e.remove(c),e.remove(a),e.set(c,b),b.type===f&&e.forEach(function(b){if(b.path.toLowerCase()!==c.toLowerCase()&&0===b.path.indexOf(a+"/")){var d=c+b.path.substring(a.length);e.remove(b.path),b.path=d,e.set(d,b)}}),void g.resolve()):(g.reject("Destination folder does not exist."),g.promise):(g.reject("Source file or folder does not exists."),g.promise)},q),g.promise},p.exportFiles=function(){var b=new a.JSZip;e.forEach(function(a){if("/"!==a.path&&".meta"!==a.name.slice(-5)){var c=a.path.slice(1);"folder"===a.type?b.folder(c):b.file(c,a.content)}});var d=c("Please enter a ZIP file name:","api.zip");d&&a.saveAs(b.generate({type:"blob"}),d)},p}angular.module("fs").constant("LOCAL_PERSISTENCE_KEY","localStorageFilePersistence").constant("FOLDER","folder").factory("localStorageHelper",["LOCAL_PERSISTENCE_KEY",function(a){return{forEach:function(b){for(var c in localStorage)localStorage.hasOwnProperty(c)&&0===c.indexOf(a+".")&&b(JSON.parse(localStorage.getItem(c)))},has:function(a){var b=!1;return a=a||"/",this.forEach(function(c){c.path.toLowerCase()===a.toLowerCase()&&(b=!0)}),b},set:function(b,c){localStorage.setItem(a+"."+b,JSON.stringify(c))},get:function(b){return JSON.parse(localStorage.getItem(a+"."+b))},remove:function(b){localStorage.removeItem(a+"."+b)}}}]).factory("localStorageFileSystem",a).config(function(b){b.hasFactory||b.setFileSystemFactory(a)})}(),function(){"use strict";angular.module("ramlEditorApp").service("mockingServiceClient",["$http","$q","$window","$rootScope","resolveUri",function(a,b,c,d,e){function f(){var a=/^#\/organizations\/([A-Za-z0-9-]+)\/dashboard\/apis\/([0-9-]+)\/versions\/([0-9-]+).*$/,b=c.location.hash.match(a);return null!==b&&b[1]&&b[2]&&b[3]?b.slice(1):[]}function g(){try{return JSON.parse(localStorage.user).token||""}catch(a){return""}}function h(a){return{"MS2-Authorization":g(),"MS2-Main-File":encodeURI(a&&a.name||""),"MS2-Origin":"API Designer Legacy"}}var i=this,j="/";i.proxy=null,i.baseUri="https://qax.anypoint.mulesoft.com/mocking/api/v1",i.legacyBaseUri="https://mocksvc.mulesoft.com",i.buildMockingService1Url=function(){return i.legacyBaseUri+["/mocks"].concat(Array.prototype.slice.call(arguments,0)).join("/")},i.buildMockingService2Url=function(){var a=["sources","manager","apis"].concat(f()).concat(Array.prototype.slice.call(arguments,0));return i.baseUri+j+a.join(j)},i.buildURL=function(a){var b=a||i.buildMockingService2Url(),d=i.proxy||c.RAML.Settings.proxy;return d&&(b=d+e(b)),b},i.enableMock=function(b){return a.post(i.buildURL(this.buildMockingService2Url("link")),null,{headers:h(b)}).then(function(c){const d=c.data.id;return a.get(i.buildURL(),{headers:h(b)}).then(function(a){var b=a.data&&a.data.metadata&&a.data.metadata.baseUriPath;return i.baseUri+"/links/"+d+b})})},i.deleteMock=function(b){return a.delete(i.buildURL(),{headers:h(b)})},i.deleteMock1=function(b){return a.delete(i.buildURL(i.buildMockingService1Url(),b.id,b.manageKey))},d.$on("event:evict-mocking",function(a,b){i.deleteMock(b)})}])}(),function(){"use strict";angular.module("ramlEditorApp").service("mockingService",["mockingServiceClient","ramlRepository",function(a,b){function c(a){return b.loadMeta(a).then(function(a){return a.mock})}function d(a,c){return b.loadMeta(a).then(function(d){return d.mock=c,b.saveMeta(a,d)}).then(function(){return c})}var e=this;e.getMock=function(a){return c(a)},e.enableMock=function(b){return a.enableMock(b).then(function(a){return d(b,a)})},e.deleteMock=function(b){return a.deleteMock(b).then(function(){return d(b,null)})},e.deleteMock1=function(b){return c(b).then(function(b){return b&&a.deleteMock(b)})}}])}(),function(){"use strict";angular.module("ramlEditorApp").service("subMenuService",["$timeout","$window",function(a,b){this.open=function(c,d){a(function(){b.addEventListener("click",function a(){c.$apply(function(){c[d]=!1}),b.removeEventListener("click",a)})}),c[d]=!0},this.openSubMenu=function(a,b){a[b]=!0}}])}(),function(){"use strict";angular.module("ramlEditorApp").service("importModal",["$modal",function(a){var b=this;return b.open=function(){return a.open({templateUrl:"views/import-modal.html",controller:"ImportController"}).result},b}]).controller("ImportController",["$scope","$modalInstance","swaggerToRAML","$q","$window","$rootScope","importService","ramlRepository",function(a,b,c,d,e,f,g,h){function i(a){return f.$broadcast("event:notification",{message:a,expires:!0,level:"error"})}function j(c){return a.fileSupported?(a.importing=!0,g.mergeFile(a.rootDirectory,c.value).then(function(){g.isZip(c.value)&&f.$broadcast("event:save-all",!0)}).then(function(){return b.close(!0)}).catch(function(a){i(a.message||a)}).finally(function(){a.importing=!1})):i("File upload not supported. Try upgrading your browser.")}function k(d){a.importing=!0;var f=e.RAML.Settings.proxy||"",h=f+d.value;return c.url(h).then(function(b){var c=m(d.value,"raml");return g.createAndSaveFile(a.rootDirectory,c,b)}).then(function(){return b.close(!0)}).catch(function(a){i("Failed to import Swagger: "+a.message)}).finally(function(){a.importing=!1})}function l(d){a.importing=!0;var e;return e=g.isZip(d.value)?c.zip(a.rootDirectory,d.value).then(function(){f.$broadcast("event:save-all")}):c.file(d.value).then(function(b){var c=m(d.value.name,"raml");return g.createAndSaveFile(a.rootDirectory,c,b)}),e.then(function(){return b.close(!0)}).catch(function(a){i("Failed to parse Swagger: "+a.message)}).finally(function(){a.importing=!1})}function m(a,b){var c=a.replace(/\/*$/,""),d=c.lastIndexOf("/");return d>-1&&(c=c.substr(d)),b&&(c=c.replace(/\.[^\.]*$/,"")+"."+b),c}a.importing=!1,a.rootDirectory=h.getByPath("/"),a.handleFileSelect=function(b){a.mode.value=b.files[0]},a.options=[{name:"RAML file",type:"file",spec:"RAML",callback:j},{name:"OAS file",type:"file",spec:"OAS",callback:l},{name:"OAS spec",type:"url",spec:"OAS",callback:k}],a.mode=a.options[0],a.fileSupported=!!(window.File&&window.FileReader&&window.FileList&&window.Blob),a.import=function(b){if(b.$submitted=!0,a.submittedType=a.mode.type,!b.$invalid&&!a.importing)try{return a.mode.callback(a.mode)}catch(c){a.importing=!1,i(c.message||c)}}}])}(),function(){"use strict";angular.module("ramlEditorApp").service("confirmModal",["$rootScope","$modal",function(a,b){var c=this;return c.open=function(c,d,e){return e=angular.extend({canDiscard:!1,closeButtonLabel:"OK",discardButtonLabel:"Discard",dismissButtonLabel:"Cancel",closeButtonCssClass:"btn-primary"},e),b.open({templateUrl:"views/confirm-modal.html",controller:"ConfirmController",scope:angular.extend(a.$new(),{title:d,message:c,canDiscard:e.canDiscard,closeButtonLabel:e.closeButtonLabel,discardButtonLabel:e.discardButtonLabel,dismissButtonLabel:e.dismissButtonLabel,closeButtonCssClass:e.closeButtonCssClass})}).result},c}]).controller("ConfirmController",["$modalInstance","$scope",function(a,b){b.discard=function(){a.dismiss(angular.extend(new Error,{discard:!0}))}}])}(),function(){"use strict";angular.module("ramlEditorApp").service("newNameModal",["$modal",function(a){var b=this;return b.open=function(b,c,d,e,f){return a.open({templateUrl:"views/new-name-modal.html",controller:"NewNameController",windowClass:"modal in",resolve:{message:function(){return b},title:function(){return e},defaultName:function(){return c},validations:function(){return d},link:function(){return f}}}).result},b}]).controller("NewNameController",["$modalInstance","$scope","message","defaultName","validations","title","link",function(a,b,c,d,e,f,g){b.input={newName:d,message:c,title:f,link:g},b.validationErrorMessage="",b.isValid=function(a){if(a)for(var c=0;c-1&&(a=a.substr(0,c)),a+"."+b}function g(){return new e.Converter(e.Formats.OAS20,e.Formats.RAML)}function h(a,b){function c(a){try{var b=JSON.parse(a);return h.test(b.swagger)}catch(c){return i.test(a)}}function e(a,b,d){function e(a){return 0!==a.indexOf("http")?"http://zip/"+a:a}function h(a){return 0===a.indexOf("http://zip/")?a.substring("http://zip/".length):a}var i=a[b];if(!c(i))return d.resolve({name:b,content:i});var j={canRead:function(a){return null!=this.read(a)},read:function(b){var c=h(b.url),d=a[c];if(!d)throw new Error("Could not load content for file "+c);return d}};g().convertFile(e(b),{resolve:{file:j,http:j}}).then(function(a){d.resolve({name:f(b,"raml"),content:a})}).catch(function(a){d.reject(a)})}var h=/^\d+\.\d+$/,i=/swagger\s*:\s*"{0,1}\d+\.\d+"{0,1}/;return d.importZip(a,b,e)}var i=this;return i.url=function(a){var c=b.defer();return g().convertFile(a).then(c.resolve).catch(c.reject),c.promise},i.file=function(a){var c=b.defer();return d.readFile(a).then(function(a){g().convertData(a).then(c.resolve).catch(c.reject)}).catch(c.reject),c.promise},i.zip=function(a,c){var e=b.defer();return d.readFile(c).then(function(b){h(a,b).then(e.resolve).catch(e.reject)}).catch(e.reject),e.promise},i}])}(),function(){"use strict";angular.module("ramlEditorApp").service("ramlToSwagger",["$q","$window","ramlRepository","ramlEditorMainHelpers","oasRamlConverter",function(a,b,c,d,e){function f(b){if(b&&d.isApiDefinition(b.contents))return a.when(b);var e=a.defer();return h(c.getByPath("/"),e),e.promise}function g(b,e){(b.loaded?a.when(b):c.loadFile(b)).then(function(a){d.isApiDefinition(a.contents)&&e.resolve(a)})}function h(a,b){for(var c=0;c-1?b.substr(0,f):b,h=f>-1?b.substr(f):"";do{var i=g+"-"+ ++e+h;d=c.join(a.path,i)}while(j(d));return d}function m(b){return b.reduce(function(a,b){return a.then(b)},a.when())}function n(a){return a.split("/").map(function(a){return a.replace(/[^A-Za-z0-9. _-]/g,"")}).join("/")}function o(a){return a.size<=1e7}function p(a){var c=b.RAML.Settings.customValidFileTypes||"text|image|raml|json|yaml|xml|xsd|zip",d=new RegExp(c,"i");if(a.type&&d.test(a.type))return!0;var e=b.RAML.Settings.customValidFileExtensions||".raml|.json|.yaml|.yml|.xml|.xsd|.jsd|.md|.txt|.jpg|.jpeg|.png|.html|.csv|.properties|.zip$";return new RegExp(e,"i").test(a.name)}function q(a){return a.name.slice(a.name.lastIndexOf(".")+1)}var r=this;r.mergeFile=function(a,b){return r.isZip(b)?r.readFile(b).then(function(b){return r.mergeZip(a,b)}):r.importFile(a,b).then(c.saveFile)},r.mergeFileList=function(a,b){return m(Array.prototype.map.call(b,function(b){return function(){return r.mergeFile(a,b)}}))},r.importEntry=function(b,d){var f=a.defer();if(d.isFile)d.file(function(a){var g=c.join(b.path,d.fullPath);return e(b,g,a).then(f.resolve,f.reject)},f.reject);else{d.createReader().readEntries(function(a){return m(a.filter(function(a){return i(a.name)}).map(function(a){return function(){return r.importEntry(b,a)}})).then(f.resolve,f.reject)})}return f.promise},r.importItem=function(a,b){return b.webkitGetAsEntry?r.importEntry(a,b.webkitGetAsEntry()):r.importFile(a,b.getAsFile())},r.importFile=function(a,b){return e(a,b.name,b)},r.importFromEvent=function(a,b){return b.dataTransfer.items?r.importItemList(a,b.dataTransfer.items):r.importFileList(a,b.dataTransfer.files)},r.importItemList=function(a,b){return m(Array.prototype.map.call(b,function(b){return function(){return r.importItem(a,b)}}))},r.importFileList=function(a,b){return m(Array.prototype.map.call(b,function(b){return function(){return r.importFile(a,b)}}))},r.createAndSaveFile=function(a,b,d){return r.createFile(a,b,d).then(c.saveFile)},r.createFile=function(b,e,f){var g=n(e);return r.checkExistence(b,g).then(function(e){if(e!==d.SKIP_FILE){if(e===d.KEEP_FILE){var h=l(b,g);return k(b,h,f)}if(e===d.REPLACE_FILE){var i=c.join(b.path,g),j=c.getByPath(i);return(j.loaded?a.when(j):c.loadFile({path:i})).then(function(a){return a.contents!==f&&(j.contents=a.contents,j.loaded=!0,j.doc?j.doc.setValue(f):j.doc=new CodeMirror.Doc(f),j.dirty=!0),j})}return k(b,g,f)}})},r.createDirectory=function(a,b){return c.createDirectory(a,b)},r.checkExistence=function(b,e){var f=c.join(b.path,e);return j(f)?d.open(f):a.when(null)},r.isZip=function(a){return/\.zip$/i.test(a.name)},r.readFile=function(c){if(!o(c))return a.reject("Only files up to 10mb are allowed");if(!p(c))return a.reject('Invalid file type "'+q(c)+'"');var d=a.defer(),e=new b.FileReader;return e.onload=function(){return d.resolve(e.result)},e.onerror=function(){return d.reject(e.error)},r.isZip(c)?e.readAsArrayBuffer(c):e.readAsText(c),d.promise},r.parseZip=function(a){return g(new b.JSZip(a).files)},r.mergeZip=function(a,b){return f(a,h(r.parseZip(b)))},r.importZip=function(a,b,c){return f(a,r.parseZip(b),c)}}])}(),function(){"use strict";var a=0,b=1,c=2;angular.module("ramlEditorApp").service("importServiceConflictModal",["$modal",function(d){var e=this;return e.open=function(a){return d.open({backdrop:"static",templateUrl:"views/import-service-conflict-modal.html",controller:"ImportServiceConflictModal",resolve:{path:function(){return a}}}).result},e.KEEP_FILE=b,e.SKIP_FILE=a,e.REPLACE_FILE=c,e}]).controller("ImportServiceConflictModal",["$scope","$modalInstance","path",function(d,e,f){d.path=f,d.skip=function(){e.close(a)},d.keep=function(){e.close(b)},d.replace=function(){e.close(c)}}])}(),function(){"use strict";angular.module("ramlEditorApp").factory("oasRamlConverter",["$window",function(a){return a.oasRamlConverter}])}(),function(){"use strict";angular.module("ramlEditorApp").factory("jsTraverse",["$window",function(a){return a.jsTraverse}])}(),function(){"use strict";angular.module("ramlEditorApp").factory("refParser",["$window",function(a){return a.$RefParser}])}(),angular.module("ramlEditorApp").factory("ramlWorker",["ramlRepository","ramlParser","$q","$window",function(a,b,c,d){var e=function(c){return b.loadPath(c.path,function(b){return a.getContentByPath(b)})},f=d.RAML.worker;if(f){var g=null,h=null;e=function(a){var b=c.defer(),d=a.path;return g?(h&&h.deferred.reject("aborted"),h={deferred:b,data:a}):(g=a,l("ramlParse",a).then(function(a){a.path=d,b.resolve(a),i()}).catch(function(a){a.path=d,b.reject(a),i()})),b.promise};var i=function(){g=null,h&&(e(h.data).then(h.deferred.resolve).catch(h.deferred.reject),h=null)},j=function(a,b){f.addEventListener("message",function(c){c.data.type===a&&b(c.data.payload)},!1)},k=function(a,b){try{f.postMessage({type:a,payload:b})}catch(c){console.error("Error when trying to post to worker",c),f.postMessage({type:a})}},l=function(a,b){var d=c.defer();const e=function(b){b.data.type===a+"-resolve"?(f.removeEventListener("message",e,!1),d.resolve(b.data.payload)):b.data.type===a+"-reject"&&(f.removeEventListener("message",e,!1),d.reject(b.data.payload))};return f.addEventListener("message",e,!1),k(a,b),d.promise};j("requestFile",function(b){b.path===g.path?k("requestFile",{path:b.path,content:g.contents}):a.getContentByPath(b.path,!0).then(function(a){k("requestFile",{path:b.path,content:a})}).catch(function(a){var c="string"==typeof a?a:a.message||"File not found "+b.path;k("requestFile",{path:b.path,error:c})})})}return{ramlParse:e}}]),function(){"use strict";angular.module("stringFilters",[]).filter("dasherize",function(){return function(a){return a?a.toLowerCase().trim().replace(/\s/g,"-"):""}})}(),function(){"use strict";angular.module("ramlEditorApp").constant("UPDATE_RESPONSIVENESS_INTERVAL",800).controller("ramlEditorMain",["UPDATE_RESPONSIVENESS_INTERVAL","$scope","$rootScope","$timeout","$window","safeApply","safeApplyWrapper","debounce","ramlWorker","ramlRepository","codeMirror","codeMirrorErrors","config","$prompt","$confirm","$modal","mockingServiceClient","$q","ramlEditorMainHelpers",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){function t(a){var b="";return a&&(b=a.path,a.dirty&&(b="* "+b)),b}function u(a){function b(a){return a.__isFold}function c(a){return a.find().from.line}function d(a,b){return Math.min(a,b)}var e={line:a};return x.findMarksAt(e).filter(b).map(c).reduce(d,y)}function v(a,b,c){return c===b?a:"Error on line "+(b+1)+": "+a}function w(a){return a&&a.start?{line:1+a.start.line,column:a.start.column}:a&&Array.isArray(a)?{line:1+a[0],column:a[1]}:{line:1,column:1}}var x,y,z;c.mockMigrated=!1,b.mockingMigratedDismissed=!1,e.setTheme=function(a){m.set("theme",a),b.theme=c.theme=a,f(b)},b.$on("event:raml-editor-file-selected",function(a,d){z=d,s.isApiDefinitionLike(d.contents)&&c.$broadcast("event:raml-parsed",{}),d.doc||(d.doc=new CodeMirror.Doc(d.contents)),x.swapDoc(d.doc),x.focus(),k.configureEditor(x,d.extension),b.fileParsable=b.getIsFileParsable(d),b.sourceUpdated()}),b.$watch("fileBrowser.selectedFile.contents",function(a){null!=a&&a!==x.getValue()&&(z.doc=new CodeMirror.Doc(a),x.swapDoc(z.doc))});var A=h(function(){c.$broadcast("event:file-updated")},m.get("updateResponsivenessInterval",a));b.$on("event:raml-editor-file-created",A),b.$on("event:raml-editor-file-removed",A),b.$on("event:raml-editor-file-removed",function(a,b){z===b&&(z=void 0,x.swapDoc(new CodeMirror.Doc("")))}),b.canExportFiles=function(){return j.canExport()},b.supportsFolders=j.supportsFolders,b.sourceUpdated=function(){var a=x.getValue(),c=b.fileBrowser.selectedFile;b.clearErrorMarks(),c.contents=a,b.fileParsable=b.getIsFileParsable(c),A()},b.loadRaml=function(a,b){return i.ramlParse({path:b,contents:a}).then(function(b){return s.isApiDefinitionLike(a)?b:null})},b.clearErrorMarks=function(){l.clearAnnotations(),b.hasErrors=!1,b.currentErrorCount=0,b.currentWarningCount=0,z&&b.fileParsable&&""!==z.doc.getValue().trim()||(b.currentError=void 0,y=void 0)};var B;b.parsing=0,b.$on("event:file-updated",function(){b.clearErrorMarks(),d.cancel(B),B=d(function(){b.clearErrorMarks(),z&&b.fileParsable&&""!==z.doc.getValue().trim()&&(b.parsing++,b.loadRaml(z.doc.getValue(),z.path).then(g(b,function(a){if(b.parsing--,b.clearErrorMarks(),a&&a.path===z.path&&0===b.parsing){var d=a.errors;if(d&&d.length>0&&(c.$broadcast("event:raml-parser-error",d),b.currentWarningCount=d.reduce(function(a,b){return b.isWarning?a+1:a},0),b.currentErrorCount=d.reduce(function(a,b){return b.isWarning?a:a+1},0)),0===b.currentErrorCount){var e=a.specification;c.$broadcast("event:raml-parsed",e)}$(".CodeMirror").each(function(a,b){b.CodeMirror.refresh()})}})).catch(g(b,function(a){b.parsing--,"aborted"!==a&&a.path===z.path&&0===b.parsing&&(b.currentErrorCount=0,b.currentWarningCount=0,c.$broadcast("event:raml-parser-error",a.parserErrors||a))})))},700)}),b.$on("event:raml-parsed",g(b,function(a,c){b.fileBrowser.selectedFile.raml=c,b.raml=c,b.title=c&&c.title,b.version=c&&c.version,b.ramlError=void 0,b.currentError=void 0,y=void 0})),b.$on("event:raml-parser-error",g(b,function(a,c){var d=Array.isArray(c)?c:[{line:0,column:1,message:c.message,isWarning:c.isWarning}];b.ramlError=c,l.displayAnnotations(d.map(function(b){function c(a,b){for(var e=0;e0?a="validating...":(b.currentErrorCount||b.currentWarningCount)&&(b.currentErrorCount&&(a+=b.currentErrorCount+" "+(b.currentErrorCount>1?"errors":"error")),b.currentErrorCount&&b.currentWarningCount&&(a+=", "),b.currentWarningCount&&(a+=b.currentWarningCount+" "+(b.currentWarningCount>1?"warnings":"warning")))),t(z)+(a?" ("+a+")":"")},b.$on("event:toggle-theme",function(){e.setTheme("dark"===b.theme?"light":"dark")}),function(){b.currentError=void 0,b.theme=c.theme=m.get("theme","dark"),b.shelf={},b.shelf.collapsed=JSON.parse(m.get("shelf.collapsed","false")),b.editor=x=k.initEditor(),x.on("fold",function(a,c,d){c.line<=y&&y<=d.line&&l.displayAnnotations([{line:c.line+1,message:v(b.currentError.message,y,c.line)}])}),x.on("unfold",function(){var a=u(y),c=v(b.currentError.message,y,a);l.displayAnnotations([{line:a+1,message:c}])}),x.on("change",function(){b.sourceUpdated()}),e.alreadyNotifiedExit=!1,e.editorFilesystemIsDirty=function(){var a=!1;return b.homeDirectory.forEachChildDo(function(b){a=b.dirty||a}),a},e.onbeforeunload=function(){if(!e.alreadyNotifiedExit&&e.editorFilesystemIsDirty())return"WARNING: You have unsaved changes. Those will be lost if you leave this page."},b.mockingServiceBaseUri&&(q.baseUri=b.mockingServiceBaseUri)}()}])}(),function(){"use strict";angular.module("ramlEditorApp").factory("ramlEditorMainHelpers",function(){function a(a){return"raml"===a}function b(a){return c(a)||e(a)}function c(a){return/^#%RAML\s(0\.8|1\.0)\s*$/.test(f(a))}function d(a){return/^#%RAML\s(0\.8)\s*$/.test(f(a))}function e(a){return/^#%RAML\s1\.0\s(Trait|ResourceType|Library|Overlay|Extension|DataType|DocumentationItem|NamedExample|AnnotationTypeDeclaration|SecurityScheme)\s*$/.test(f(a))}function f(a){return a.split(/\r\n|\n/)[0]}return{isRamlFile:a,isApiDefinition:c,isApiDefinitionV08:d,isApiDefinitionLike:b}})}(),function(){"use strict";angular.module("ramlEditorApp").factory("applySuggestion",function(){return function(a,b){var c=b.replacementPrefix||"",d=a.getCursor(),e={line:d.line,ch:a.getLine(d.line).length},f={line:d.line,ch:d.ch-c.length};a.replaceRange(b.key,f,e);var g=b.key.split("\n"),h=g.length>1?g[g.length-1].length:d.ch+g[0].length-c.length,i=d.line+g.length-1;a.setCursor({line:i,ch:h}),a.focus()}}).factory("newSuggestions",["ramlSuggest",function(a){var b=function(a,b){var c=function(a,c){var d=a[c[b]]||[];return d.push(c),a[c[b]]=d,a};return a.reduce(c,{})},c=function(a){var c=a.map(function(a){return{category:a.category,title:a.displayText||a.text,key:a.text,replacementPrefix:a.replacementPrefix||""}}),d=b(c,"category");return{categories:Object.keys(d).map(function(a){return{name:a,items:d[a]}})}};return function(b,d,e){return a.suggest(b,d,e).then(c)}}]).controller("ramlEditorShelf",["$scope","safeApplyWrapper","newSuggestions","applySuggestion",function(a,b,c,d){function e(b){a.model=b,a.$digest()}var f=a.editor;a.cursorMoved=b(null,function(){a.shelf.collapsed?a.model=[]:c(a.homeDirectory,a.fileBrowser.selectedFile,f).then(e)}),a.orderSections=function(a){var b=["root","docs","methods","parameters","responses","security","resources","traits and types"].indexOf(a.name.toLowerCase());return-1===b?b.length:b},a.itemClick=function(a){d(f,a)},f.on("cursorActivity",a.cursorMoved)}])}(),function(){"use strict";angular.module("ramlEditorApp").constant("NOTIFICATION_TIMEOUT",3e3).controller("notifications",["NOTIFICATION_TIMEOUT","$scope","$timeout",function(a,b,c){function d(){var f;e.length&&(f=e.splice(0,1)[0],b.message=f.message,b.expires=f.expires,b.level=f.level||"info",b.shouldDisplayNotifications=!0,f.expires&&c(function(){b.shouldDisplayNotifications=!1,d()},a))}var e=[];b.shouldDisplayNotifications=!1,b.$on("event:notification",function(a,b){e.push(JSON.parse(JSON.stringify(b))),d()}),b.hideNotifications=function(){b.shouldDisplayNotifications=!1,d()}}])}(),function(){"use strict";angular.module("ramlEditorApp").controller("mockingServiceController",["$scope","$rootScope","mockingService","mockingServiceClient","codeMirror","getNode",function(a,b,c,d,e,f){function g(){function c(b,c,d){e.setLine(a.editor,b,(d||"")+a.editor.getLine(b)+"\n"+c)}for(var d="baseUri: "+b.mock,g=f(a.editor,0);g;){if("baseUri"===g.getKey())return void(g.getValue().text!==b.mock&&c(g.lineNumber,d,"#"));g=g.getNextSibling()}for(var h=0;a.editor.getLine(h);h++)if("---"===a.editor.getLine(h).trim())return void c(h,d);c(0,d)}function h(b){var c=void 0,d=void 0;for(c=0;c=0;c--)if(d=a.editor.getLine(c).trim(),0===d.indexOf("#")&&0===d.slice(1).trim().indexOf("baseUri: ")){e.setLine(a.editor,c,d.slice(1).trim());break}}function i(b){return a.loading=!0,b.finally(function(){a.loading=!1})}function j(a){b.mock=a,b.enabled=!!a}function k(){i(c.getMock(a.fileBrowser.selectedFile).then(j).then(function(){b.mock&&g()}))}function l(d){i(c.enableMock(a.fileBrowser.selectedFile).then(j).then(g).then(function(){d&&(b.mockMigrated=!0)}))}function m(d){var e=d?c.deleteMock1(a.fileBrowser.selectedFile):c.deleteMock(a.fileBrowser.selectedFile),f=d?"baseUri: "+a.raml.baseUri:"baseUri: "+b.mock;i(e.then(function(){h(f)}).then(j))}a.toggleMockingService=function(c){if(a.fileBrowser.selectedFile)return c?(m(c),void l(c)):b.enabled?void m():void l()},a.$watch("fileBrowser.selectedFile",function(a){a?k():j()})}])}(),function(){"use strict";angular.module("splitter",[]).directive("ngSplitter",["$window","config",function(a,b){function c(a){return a.attr("ng-splitter-collapse-target")}function d(a){return a.attr("ng-splitter-min-width")}function e(a){return a[c(a)]()}function f(a){return a[{next:"prev",prev:"next"}[c(a)]]()}function g(a,b){var c=d(a);return(void 0===c||b>=c)&&e(a).css("min-width",Math.max(0,b)+"px"),Math.max(0,b)}function h(a,b,d){var h=e(a),j=i(h,b),k=f(a),l=i(k,b),m={next:1,prev:-1}[c(a)];return l+d*m<0&&(d=l*m*-1),d&&(j=g(a,j-d*m)),j}function i(a,b){var c="offset"+b[0].toUpperCase()+b.slice(1);return a[0][c]}function j(a,c){return b.get("splitterSize_"+a.attr("id"))||k(a,c)}function k(a,c){var d=i(e(a),c);return b.set("splitterSize_"+a.attr("id"),d),d}function l(a){return"true"===b.get("splitterCollapsed_"+a.attr("id"))}function m(a,c){b.set("splitterCollapsed_"+a.attr("id"),c)}function n(a,b){a.toggleClass("collapsed",b),e(a).toggleClass("hide-display",b),m(a,b)} return angular.element.prototype.prev||(angular.element.prototype.prev=function(){var a;if(this.length)for(a=this[0].previousSibling;null!==a&&1!==a.nodeType;)a=a.previousSibling;return angular.isDefined(a)?angular.element(a):this}),{restrict:"A",link:function(b,c,d){var e,f=!1,i=!0,m="vertical"===d.ngSplitter,o=m?"width":"height",p=m?"clientX":"clientY",q=j(c,o),r=l(c),s=c.parent();g(c,q),n(c,r),b["splitterCollapsed_"+c.attr("id")]=r,c.on("mousedown",function(a){0===a.button&&(e=a[p],q=j(c,o),r=l(c),f=!0,s.addClass("noselect"))}),angular.element(a).on("mousemove",function(a){if(f){i=!0;var d=0===h(c,o,a[p]-e);d!==r&&(n(c,d),b.$apply(function(){b["splitterCollapsed_"+c.attr("id")]=d})),e=a[p],r=d}}).on("mouseup",function(){f&&(r?(n(c,!0),g(c,q),b.$apply(function(){b["splitterCollapsed_"+c.attr("id")]=!0})):k(c,o),f=!1,s.removeClass("noselect"))}),c.children(".split").on("mousedown",function(){i=!1}),c.children(".split").on("mouseup",function(){if(!i){var a=!l(c);n(c,a),b.$apply(function(){b["splitterCollapsed_"+c.attr("id")]=a}),i=!0,f=!1}})}}}])}(),function(){"use strict";angular.module("validate",[]).directive("ngValidate",["$parse",function(a){return{require:"ngModel",link:function(b,c,d,e){var f=a(d.ngValidate);b.$watch(d.ngModel,function(a){var c=f(b,{$value:a});e.$setValidity("validate",c)})}}}])}(),function(){"use strict";angular.module("autoFocus",[]).directive("ngAutoFocus",["$timeout",function(a){return{link:function(b,c,d){b.$watch(d.ngAutoFocus,function(b){b&&a(function(){c[0].focus()},100)})}}}])}(),function(){"use strict";angular.module("rightClick",[]).directive("ngRightClick",["$parse",function(a){return function(b,c,d){var e=a(d.ngRightClick);c.on("contextmenu",function(a){b.$apply(function(){a.preventDefault(),e(b,{$event:a})})})}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditor",function(){return{restrict:"E",scope:{mockingServiceDisabled:"=",mockingServiceBaseUri:"="},templateUrl:"views/raml-editor-main.tmpl.html",controller:"ramlEditorMain"}})}(),function(){"use strict";angular.module("dragAndDrop",[]).directive("ngDragEnter",["$parse",function(a){return function(b,c,d){var e=a(d.ngDragEnter),f=0;c.on("dragleave",function(){f--}),c.on("dragenter",function(a){1===++f&&b.$apply(function(){a.preventDefault(),e(b,{$event:a})})})}}]).directive("ngDragLeave",["$parse",function(a){return function(b,c,d){var e=a(d.ngDragLeave),f=0;c.on("dragenter",function(){f++}),c.on("dragleave",function(a){0===--f&&b.$apply(function(){a.preventDefault(),e(b,{$event:a})})})}}]).directive("ngDrop",["$parse",function(a){return function(b,c,d){var e=a(d.ngDrop);c.on("dragover",function(a){a.preventDefault()}),c.on("drop",function(a){b.$apply(function(){a.preventDefault(),a.stopPropagation(),e(b,{$event:a.originalEvent})})})}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorContextMenu",["$injector","$window","confirmModal","newNameModal","ramlRepository","newFileService","newFolderService","subMenuService","scroll",function(a,b,c,d,e,f,g,h,i){function j(a){var b={label:"Save",execute:function(){return e.saveFile(a)}},h={label:"New File",fragments:f.files["1.0"],execute:function(b){if(b)return f.prompt(a,"1.0",b)},newFile:function(){return f.prompt(a,"0.8")}},i={label:"New Folder",execute:function(){return g.prompt(a)}},j={label:"Rename",execute:function(){var b=e.getParent(a),c=a.isDirectory?"Enter a new name for this folder:":"Enter a new name for this file:",f=a.isDirectory?"Rename a folder":"Rename a file",g=[{message:"This name is already taken.",validate:function(a){var c=e.join(b.path,a);return!e.getByPath(c)}}];return d.open(c,a.name,g,f).then(function(b){e.rename(a,b)})}},k={label:"Delete",execute:function(){var b,d;return a.isDirectory?(b='Are you sure you want to delete "'+a.name+'" and all its contents?',d="Delete folder"):(b='Are you sure you want to delete "'+a.name+'"?',d="Delete file"),c.open(b,d,{closeButtonLabel:"Delete",closeButtonCssClass:"btn-danger"}).then(function(){return e.remove(a)})}};return a.isDirectory?[h,i,j,k]:[b,j,k]}function k(a){var b=a.getBoundingClientRect();return!(b.top>=0&&b.left>=0&&b.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&b.right<=(window.innerWidth||document.documentElement.clientWidth))}return{restrict:"E",templateUrl:"views/raml-editor-context-menu.tmpl.html",link:function(a,c){function d(a,b){var c=b.pageY,d=b.pageX,e=angular.element(a[0].children[0]);e.css("top",c+"px"),e.css("left",d+"px"),setTimeout(function(){k(e[0])&&e.css("top",c-e[0].offsetHeight+"px")},0)}function e(c){c&&c.target.firstChild.nodeValue&&c.target.firstChild.nodeValue.match("New File")||(i.enable(),a.$apply(function(){delete g.target,a.opened=!1,b.removeEventListener("click",e),b.removeEventListener("keydown",f)}))}function f(a){27===a.which&&(a.preventDefault(),e())}a.openFileMenu=function(b){"New File"===b.label&&h.openSubMenu(a,"showFileMenu")},a.closeFileMenu=function(){a.showFileMenu=!1};var g={open:function(g,h){i.disable(),this.target=h,a.target=h,a.actions=j(h),g.stopPropagation(),d(c,g),b.addEventListener("click",e),b.addEventListener("keydown",f),a.opened=!0}};a.registerContextMenu(g)},scope:!0}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorFileBrowser",["$q","$window","$rootScope","$timeout","config","ramlRepository","newNameModal","importService",function(a,b,c,d,e,f,g,h){function i(i){function j(a){if("/"!==a.path){var b=f.getParent(a);b.collapsed=!1,j(b)}}function k(a){83!==a.which||!a.metaKey&&!a.ctrlKey||a.shiftKey||a.altKey||(a.preventDefault(),i.$apply(function(){n.saveFile(n.selectedFile)}))}function l(){var a="Untitled-1.raml",b=[];g.open("File system has no files, please input a name for the new file:",a,b,"Add a new file").then(function(a){return f.generateFile(i.homeDirectory,a)},function(){return f.generateFile(i.homeDirectory,a)})}function m(a){for(var b=[a],c=0;c0,e=!a&&!j,n.cursorState=e?"ok":"no",e},dropped:function(a){var b=a.source.nodeScope.$modelValue,c=a.dest.nodesScope.$nodeScope?a.dest.nodesScope.$nodeScope.$modelValue:i.homeDirectory;f.move(b,c).then(function(){return n.select(b)})},dragStop:function(b){n.cursorState="",!b.canceled&&a&&c.$broadcast("event:notification",{message:"Failed: duplicate file name found in the destination folder.",expires:!0,level:"error"})}}}(),n.select=function(a){return a.isDirectory?n.selectDirectory(a):n.selectFile(a)},i.$on("event:raml-editor-file-select",function(a,b){var c=f.getByPath(b);n.selectFile(c)}),c.$on("event:imported-file-selected",function(){var a=JSON.parse(e.get("currentFile","{}")),b=f.getByPath(a.path);n.selectFile(b)}),n.selectFile=function(b){if(n.selectedFile&&n.selectedFile.$$hashKey===b.$$hashKey)return void(n.currentTarget=b);o(),(b.loaded||!b.persisted?a.when(b):f.loadFile(b)).then(function(a){n.selectedFile=n.currentTarget=a,i.$emit("event:raml-editor-file-selected",a),o=i.$watch("fileBrowser.selectedFile.contents",function(b,c){b!==c&&(a.dirty=!0)})})},n.selectDirectory=function(a){i.$emit("event:raml-editor-directory-selected",a)},n.saveFile=function(a){f.saveFile(a).then(function(){return c.$broadcast("event:notification",{message:"File saved.",expires:!0})})},n.dropFile=function(a,b){return h.importFromEvent(b,a).then(function(){b.collapsed=!1}).catch(function(a){c.$broadcast("event:notification",{message:a.message,expires:!0,level:"error"})})},n.showContextMenu=function(a,b){p.open(a,b)},n.contextMenuOpenedFor=function(a){return p&&p.target===a},b.addEventListener("keydown",k),i.fileBrowser=n,i.registerContextMenu=function(a){p=a},i.$on("event:raml-editor-file-generated",function(a,b){n.selectFile(b)}),i.$on("event:raml-editor-directory-created",function(a,b){n.selectDirectory(b)}),i.$on("event:raml-editor-file-selected",function(a,b){j(b)}),i.$on("event:raml-editor-directory-selected",function(a,b){j(b)}),i.$on("event:raml-editor-filetree-modified",function(a,b){f.getParent(b).sortChildren()}),i.$on("event:raml-editor-file-removed",function(a,b){d(function(){var a=i.homeDirectory.getFiles();0===a.length?l():b===n.selectedFile&&n.selectFile(a[0])})}),i.$on("$destroy",function(){b.removeEventListener("keydown",k)}),i.$watch("fileBrowser.selectedFile.path",function(a,b){a!==b&&e.set("currentFile",JSON.stringify({path:a,name:a.slice(a.lastIndexOf("/")+1)}))}),f.loadDirectory().then(function(a){i.homeDirectory=a,n.rootFile=m(a);var b=[];if(i.homeDirectory.forEachChildDo(function(a){a.isDirectory||b.push(a)}),!b.length)return void l();var c=JSON.parse(e.get("currentFile","{}")),d=f.getByPath(c.path)||n.rootFile||b[0];n.selectFile(d)})}return{restrict:"E",templateUrl:"views/raml-editor-file-browser.tmpl.html",controller:i}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorProjectButton",["$timeout","$window","subMenuService",function(a,b,c){return{restrict:"E",templateUrl:"views/menu/project-menu.tmpl.html",link:function(a){a.openProjectMenu=function(){c.open(a,"showProjectMenu")},a.openFileMenu=function(){c.openSubMenu(a,"showFileMenu")},a.closeFileMenu=function(){a.showFileMenu=!1}}}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorSaveFileButton",["$rootScope","ramlRepository",function(a,b){return{restrict:"E",replace:!0,template:'
  •  Save
  • ',link:function(c){c.saveFile=function(){var d=c.fileBrowser.selectedFile;return a.$broadcast("event:evict-mocking",d),b.saveFile(d).then(function(){a.$broadcast("event:notification",{message:"File saved.",expires:!0})})}}}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorSaveAllButton",["$rootScope","ramlRepository","$q",function(a,b,c){return{restrict:"E",replace:!0,template:'
  •  Save All
  • ',link:function(d){d.saveAllFiles=function(e){var f=[];return d.homeDirectory.forEachChildDo(function(a){if(!a.isDirectory)return a.dirty?f.push(b.saveFile(a)):void 0}),c.all(f).then(function(){e&&a.$broadcast("event:imported-file-selected"),a.$broadcast("event:notification",{message:"All files saved.",expires:!0})})},a.$on("event:save-all",function(a,b){d.saveAllFiles(b)})}}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorNewFolderButton",["newFolderService",function(a){return{restrict:"E",replace:!0,template:'
  •  New Folder
  • ',link:function(b){b.newFolder=function(){return a.prompt(b.homeDirectory)}}}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorNewFileMenu",["newFileService","subMenuService",function(a,b){return{restrict:"E",replace:!0,scope:{target:"=",showFileMenu:"=",showFragmentMenu:"=",openFileMenuCondition:"@",menuRole:"@"},templateUrl:"views/menu/new-file-menu.tmpl.html",link:function(c){c.closeFragmentMenu=function(){c.showFragmentMenu=!1},c.openFragmentMenu=function(){b.openSubMenu(c,"showFragmentMenu"),c.fragments=a.files["1.0"]},c.newFragmentFile=function(b){return a.newFragmentFile(c.target||c.$parent.homeDirectory,b)},c.newFile=function(b){return a.newFile(c.target||c.$parent.homeDirectory,b)},c.notSorted=function(a){return a?Object.keys(a).map(function(b){return a[b]}):[]}}}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorExportMenu",["ramlRepository","subMenuService","ramlToSwagger","$window","$location","$rootScope",function(a,b,c,d,e,f){return{restrict:"E",templateUrl:"views/menu/export-menu.tmpl.html",link:function(g){function h(a,b){var c=new Blob([a],{type:"application/json;charset=utf-8"});d.saveAs(c,b)}function i(a){return f.$broadcast("event:notification",{message:a,expires:!0,level:"error"})}function j(a,b){var c=a.lastIndexOf(".");c>-1&&(a=a.substr(0,c));var d=a.lastIndexOf("/");return d>-1&&(a=a.substr(d+1)),a+"."+b}g.xOasExport=g.xOasExport||"true"===e.search().xOasExport,g.openExportMenu=function(){b.openSubMenu(g,"showExportMenu")},g.closeExportMenu=function(){g.showExportMenu=!1},g.exportZipFiles=function(){a.exportFiles()},g.exportJsonFiles=function(){var a=g.fileBrowser.selectedFile;c.json(a).then(function(a){h(JSON.stringify(a.contents,null,2),j(a.name||a.path,"json"))}).catch(function(a){i(a)})},g.exportYamlFiles=function(){var a=g.fileBrowser.selectedFile;c.yaml(a).then(function(a){h(a.contents,j(a.name||a.path,"yaml"))}).catch(function(a){i(a)})}}}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorImportButton",["$injector","importModal",function(a,b){return{restrict:"E",replace:!0,template:'
  •  Import
  • ',link:function(a){a.importFile=function(){return b.open()}}}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorViewButton",["$timeout","$window","subMenuService","$rootScope",function(a,b,c,d){return{restrict:"E",templateUrl:"views/menu/view-menu.tmpl.html",link:function(a){a.openViewMenu=function(){c.open(a,"showViewMenu")},a.toogleBackgroundColor=function(){d.$broadcast("event:toggle-theme")}}}}])}(),function(){"use strict";angular.module("ramlEditorApp").directive("ramlEditorHelpButton",["$modal","$timeout","$window","subMenuService",function(a,b,c,d){return{restrict:"E",templateUrl:"views/menu/help-menu.tmpl.html",link:function(b){b.openHelpContextMenu=function(){d.open(b,"menuContextHelpOpen")},b.openHelpModal=function(){a.open({templateUrl:"views/modal/help.html"})}}}}])}(),function(){"use strict";angular.module("ui.tree").directive("uiTreeNode",["treeConfig","$uiTreeHelper","$window","$document","$timeout","ramlRepository","config",function(a,b,c,d,e,f,g){return{require:["^uiTreeNodes","^uiTree","?uiTreeNode"],link:function(h,i,j,k){var l={};angular.extend(l,a),l.nodeClass&&i.addClass(l.nodeClass),h.init(k),h.collapsed=!!b.getNodeAttribute(h,"collapsed"),h.$watch(j.collapsed,function(a){"boolean"==typeof a&&(h.collapsed=a)}),h.$watch("collapsed",function(a){b.setNodeAttribute(h,"collapsed",a),j.$set("collapsed",a)});var m,n,o,p,q,r,s,t,u,v="ontouchstart"in window,w=!0,x=!1,y=null,z=!1,A=null,B=1e3,C=document.body,D=document.documentElement,E=function(a){if((v||2!==a.button&&3!==a.which)&&!(a.uiTreeDragging||a.originalEvent&&a.originalEvent.uiTreeDragging)){var e=angular.element(a.target),f=e.scope();if(f&&f.$type&&!("uiTreeNode"!==f.$type&&"uiTreeHandle"!==f.$type||"uiTreeNode"===f.$type&&f.$handleScope)){var j=e.prop("tagName").toLowerCase();if("input"!==j&&"textarea"!==j&&"button"!==j&&"select"!==j){for(;e&&e[0]&&e[0]!==i;){if(b.nodrag(e))return;e=e.parent()}if(h.beforeDrag(h)){a.uiTreeDragging=!0,a.originalEvent&&(a.originalEvent.uiTreeDragging=!0),a.preventDefault();var k=b.eventObj(a);n=!0,o=b.dragInfo(h);var q=h.$element.prop("tagName");s=angular.element(c.document.createElement(q)),l.hiddenClass&&s.addClass(l.hiddenClass),p=b.positionStarted(k,h.$element),r=angular.element(c.document.createElement(h.$parentNodesScope.$element.prop("tagName"))).addClass(h.$parentNodesScope.$element.attr("class")).addClass(l.dragClass).addClass("light"===g.get("theme")?"drag-light":""),r.css("z-index",9999),h.$element.after(s),r.append(h.$element.clone().html(h.$element.children()[0].innerHTML));var w=d.find("raml-editor-file-browser");w.append(r);var x=k.pageX-p.offsetX-w.offset().left,y=k.pageY-p.offsetY-w.offset().top;r.css({left:x+"px",top:y+"px"}),m={dragging:r},h.$element.addClass("drag-elm");angular.element(r[0].lastChild).scope().collapsed=!0,angular.element(d).bind("touchend",K),angular.element(d).bind("touchcancel",K),angular.element(d).bind("touchmove",J),angular.element(d).bind("mouseup",K),angular.element(d).bind("mousemove",J),angular.element(d).bind("mouseleave",L),t=Math.max(C.scrollHeight,C.offsetHeight,D.clientHeight,D.scrollHeight,D.offsetHeight),u=Math.max(C.scrollWidth,C.offsetWidth,D.clientWidth,D.scrollWidth,D.offsetWidth),h.$treeScope.isDragging=!0}}}}},F=function(a){if(!x)return void(w||(x=!0,h.$apply(function(){h.$callbacks.dragStart(o.eventArgs(m,p))})));var f,g,i,j=b.eventObj(a);if(r){a.preventDefault(),c.getSelection?c.getSelection().removeAllRanges():c.document.selection&&c.document.selection.empty();var k=d.find("raml-editor-file-browser");f=j.pageX-p.offsetX-k.offset().left,g=j.pageY-p.offsetY-k.offset().top,i={left:f,right:f+r[0].scrollWidth+5,top:g,bottom:g+r[0].scrollHeight},i.left<0?f=0:i.right>u&&(f=u-r[0].scrollWidth-5),i.top<0?g=0:i.bottom>t&&(g=t-r[0].scrollHeight),r.css({left:f+"px",top:g+"px"});var l=window.pageYOffset||c.document.documentElement.scrollTop,s=l+(window.innerHeight||c.document.clientHeight||c.document.clientHeight);if(sj.pageY&&window.scrollBy(0,-10),b.positionMoved(a,p,n),n)return void(n=!1);var v;angular.isFunction(r.hide)?r.hide():(v=r[0].style.display,r[0].style.display="none");var y=j.pageX-c.document.body.scrollLeft,z=j.pageY-(window.pageYOffset||c.document.documentElement.scrollTop);c.document.elementFromPoint(y,z);var C=angular.element(c.document.elementFromPoint(y,z));angular.isFunction(r.show)?r.show():r[0].style.display=v;var D=C.scope();if(!p.dirAx&&D!==h.prevHoverNode){var E=!1;if(h.prevHoverNode=D,!D)return;if("uiTree"===D.$type&&D.dragEnabled&&(E=D.isEmpty()),"uiTreeHandle"===D.$type&&(D=D.$nodeScope),"uiTreeDummyNode"===D.$type)return q=D.$parentNodesScope.accept(h,-1),q&&o.moveTo(D.$parentNodesScope,D.$parentNodesScope.childNodes(),H(h.$modelValue,D.$parentNodesScope.$modelValue)),$(".dragover").removeClass("dragover"),C.addClass("dragover"),void(A&&(e.cancel(A),A=null));if("uiTreeNode"!==D.$type&&!E)return;e.cancel(A),$(".dragover").removeClass("dragover"),D.$childNodesScope?(angular.element(D.$element.children()[0]).addClass("dragover"),D.collapsed&&(A=e(function(){D.collapsed=!1,h.nodeToExpand=null},B)),h.nodeToExpand=D):D.$parentNodeScope?(C.addClass("dragover"),angular.element(D.$parentNodeScope.$element.children()[0]).addClass("dragover"),h.nodeToExpand=D.$parentNodeScope):C.addClass("dragover"),E?D.$nodesScope.accept(h,0)&&o.moveTo(D.$nodesScope,D.$nodesScope.childNodes(),0):D.dragEnabled()&&(C=D.$element,(q=D.$parentNodesScope.accept(h,D.index()))&&(D.$childNodesScope?o.moveTo(D.$childNodesScope,D.childNodes(),H(h.$modelValue,D.$childNodesScope.$modelValue)):o.moveTo(D.$parentNodesScope,D.$parentNodesScope.childNodes(),H(h.$modelValue,D.$parentNodesScope.$modelValue))))}h.$apply(function(){h.$callbacks.dragMove(o.eventArgs(m,p))})}},G=function(a){a.preventDefault(),r&&(h.$treeScope.$apply(function(){h.$callbacks.beforeDrop(o.eventArgs(m,p))}),s.replaceWith(h.$element),r.remove(),r=null,h.$$apply?(o.apply(),h.$treeScope.$apply(function(){h.$callbacks.dropped(o.eventArgs(m,p))})):M(),h.$treeScope.$apply(function(){var a=o.eventArgs(m,p);a.canceled=z,h.$callbacks.dragStop(a)}),h.$$apply=!1,o=null),angular.element(d).unbind("touchend",K),angular.element(d).unbind("touchcancel",K),angular.element(d).unbind("touchmove",J),angular.element(d).unbind("mouseup",K),angular.element(d).unbind("mousemove",J),angular.element(c.document.body).unbind("mouseleave",L),$(".dragover").removeClass("dragover"),h.$element.removeClass("drag-elm"),h.$treeScope.isDragging=!1,h.prevHoverNode=null,z=!1},H=function(a,b){for(var c,d=0,e=b.length-1;e>=d;)c=Math.floor((d+e)/2),f.sortingFunction.call(null,b[c],a)>0?e=c-1:d=c+1;return d},I=function(a){h.dragEnabled()&&E(a)},J=function(a){F(a)},K=function(a){h.$$apply=q,G(a)},L=function(a){h.$$apply=!1,z=!0,G(a)},M=function(){e(function(){i.unbind(),i.bind("touchstart mousedown",function(a){w=!0,x=!1,y=e(function(){w=!1,I(a)},h.dragDelay)}),i.bind("touchend touchcancel mouseup",function(){e.cancel(y)})})};M(),angular.element(c.document.body).bind("keydown",function(a){27===a.keyCode&&L(a)})}}}]).directive("uiTreeDummyNode",["treeConfig",function(a){return{require:["^uiTreeNodes","^uiTree"],template:"
    ",restrict:"E",replace:!0,controller:function(a,b){this.scope=a,a.$element=b,a.$parentNodeScope=null,a.$childNodesScope=null,a.$parentNodesScope=null,a.$treeScope=null,a.$$apply=!1,a.$type="uiTreeDummyNode",a.init=function(b){var c=b[0];a.$treeScope=b[1]?b[1].scope:null,a.$parentNodeScope=c.scope.$nodeScope,a.$parentNodesScope=c.scope}},link:function(b,c,d,e){var f={};angular.extend(f,a),f.nodeClass&&c.addClass(f.nodeClass),b.init(e)}}}])}(),angular.module("ramlEditorApp").run(["$templateCache",function(a){"use strict";a.put("views/confirm-modal.html",'
    \n \n\n \n\n \n
    \n'),a.put("views/import-modal.html",'
    \n \n\n \n\n \n
    \n'),a.put("views/import-service-conflict-modal.html",'
    \n \n\n \n\n \n
    \n'),a.put("views/menu/export-menu.tmpl.html",'
  • \n  Export files\n
  • \n\n\n  Export\n \n\n\n\n'),a.put("views/menu/help-menu.tmpl.html",'\n  Help\n \n\n\n'),a.put("views/menu/new-file-menu.tmpl.html",'\n'),a.put("views/menu/project-menu.tmpl.html",'\n  Project\n \n\n\n'),a.put("views/menu/view-menu.tmpl.html",'\n  View\n \n\n\n\n'),a.put("views/modal/help.html",'\n\n\n'),a.put("views/new-name-modal.html",'
    \n \n\n \n\n \n
    \n'),a.put("views/raml-editor-context-menu.tmpl.html",'
      \n
    • \n {{ action.label }}\n \n \n
    • \n
    \n'), -a.put("views/raml-editor-file-browser.tmpl.html",'\n\n