{"version":3,"sources":["myget.codebrowser.js"],"names":["ns","$","ko","CodeBrowserModel","ace","sourceIndexUrl","sourceBaseUrl","sourceFile","parent","path","url","$self","this","type","observable","code","parentNodes","computed","parents","observableArray","node","unshift","sourceFolder","nodes","_sourceBaseUrl","selectedNode","selectNode","nodeClosure","ajax","cache","contentType","success","data","test","getSession","setMode","setValue","error","xhr","status","i","length","initialize","removeAll","dataType","key","firstFileNode","nodesLookup","/","sort","forEach","item","substring","lastIndexOf","parentPath","replace","push","file","_sourceIndexUrl","window","myget","codebrowser","jQuery"],"mappings":"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","file":"scripts.min.js","sourcesContent":["// MyGet.codebrowser namespace\r\n(function (myget, ns, $, ko) {\r\n ns.CodeBrowserModel = function (ace, sourceIndexUrl, sourceBaseUrl) {\r\n var $self = this;\r\n var _sourceIndexUrl = sourceIndexUrl;\r\n var _sourceBaseUrl = sourceBaseUrl;\r\n\r\n var sourceFile = function (parent, path, url) {\r\n var $self = this;\r\n $self.type = ko.observable('file');\r\n $self.path = ko.observable(path);\r\n $self.url = ko.observable(url);\r\n $self.code = ko.observable('');\r\n $self.parent = ko.observable(parent);\r\n $self.parentNodes = ko.computed(function () {\r\n var parents = ko.observableArray();\r\n var node = $self;\r\n while (node) {\r\n parents.unshift(node);\r\n node = node.parent();\r\n }\r\n return parents;\r\n });\r\n };\r\n\r\n var sourceFolder = function (parent, path) {\r\n var $self = this;\r\n $self.type = ko.observable('folder');\r\n $self.path = ko.observable(path);\r\n $self.parent = ko.observable(parent);\r\n $self.nodes = ko.observableArray();\r\n $self.parentNodes = ko.computed(function() {\r\n var parents = ko.observableArray();\r\n var node = $self;\r\n while (node) {\r\n parents.unshift(node);\r\n node = node.parent();\r\n }\r\n return parents;\r\n });\r\n };\r\n\r\n this.nodes = ko.observableArray();\r\n this.selectedNode = ko.observable(new sourceFolder(null, '/'));\r\n\r\n this.ace = ace;\r\n\r\n this.selectNode = function (node) {\r\n if (node.type() === 'file') {\r\n var nodeClosure = node;\r\n\r\n $self.selectedNode(nodeClosure);\r\n\r\n $.ajax({\r\n url: nodeClosure.url(),\r\n cache: false,\r\n type: 'GET',\r\n contentType: 'text/plain',\r\n success: function (data) {\r\n nodeClosure.code(data);\r\n\r\n if ($self.ace) {\r\n if (/\\.cs$/.test(nodeClosure.url())) {\r\n $self.ace.getSession().setMode(\"ace/mode/csharp\");\r\n } else if (/\\.vb$/.test(nodeClosure.url())) {\r\n $self.ace.getSession().setMode(\"ace/mode/vbscript\");\r\n }\r\n $self.ace.setValue(data, -1);\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n var data = 'The file can not be displayed.\\r\\n' +\r\n ' Status: ' + status + '\\r\\n' +\r\n ' Error: ' + error;\r\n\r\n nodeClosure.code(data);\r\n\r\n if ($self.ace) {\r\n $self.ace.getSession().setMode(\"ace/mode/csharp\");\r\n $self.ace.setValue(data, -1);\r\n }\r\n }\r\n });\r\n }\r\n if (node.type() === 'folder') {\r\n var nodes = node.nodes();\r\n for (var i = 0; i < nodes.length; i++) {\r\n if (nodes[i].type() === 'file') {\r\n $self.selectNode(nodes[i]);\r\n return;\r\n }\r\n }\r\n if (nodes.length > 0) {\r\n $self.selectNode(nodes[0]);\r\n }\r\n }\r\n }\r\n\r\n this.initialize = function (sourceIndexUrl) {\r\n $self.nodes.removeAll();\r\n\r\n $.ajax({\r\n url: sourceIndexUrl,\r\n cache: false,\r\n type: 'GET',\r\n contentType: 'application/json',\r\n dataType: 'json',\r\n success: function (data) {\r\n var firstFileNode = null;\r\n var nodesLookup = {\r\n '/': new sourceFolder(null, '/')\r\n };\r\n\r\n data.sort().forEach(function (item) {\r\n var path = item.substring(0, item.lastIndexOf('/'));\r\n if (!nodesLookup[path]) {\r\n var parentPath = path;\r\n while (!nodesLookup[parentPath]) {\r\n parentPath = parentPath.substring(0, parentPath.lastIndexOf('/'));\r\n if (parentPath == '') {\r\n parentPath = '/';\r\n }\r\n }\r\n\r\n nodesLookup[path] = new sourceFolder(nodesLookup[parentPath], path.substring(parentPath.length).replace(/^\\//, '').replace(/\\/$/, ''));\r\n nodesLookup[parentPath].nodes().push(nodesLookup[path]);\r\n }\r\n\r\n var file = new sourceFile(nodesLookup[path], item.substring(path.length + 1), _sourceBaseUrl.replace('/_path', item));\r\n nodesLookup[path].nodes().push(file);\r\n\r\n if (!firstFileNode) {\r\n firstFileNode = file;\r\n }\r\n });\r\n\r\n for (var key in nodesLookup) {\r\n $self.nodes.push(nodesLookup[key]);\r\n }\r\n\r\n $self.selectNode(firstFileNode ? firstFileNode : nodesLookup['/']);\r\n }\r\n });\r\n }\r\n\r\n // Initialize\r\n this.initialize(_sourceIndexUrl);\r\n };\r\n} (window.myget = window.myget || {}, window.myget.codebrowser = window.myget.codebrowser || {}, jQuery, ko));"]}