"Fossies" - the Fresh Open Source Software Archive

Member "angular-1.7.9/docs/js/docs.min.js.map" (26 Nov 2019, 42137 Bytes) of package /linux/www/angular-1.7.9.zip:


{"version":3,"sources":["app.js","directives.js","docs.js","errors.js","examples.js","search.js","tutorials.js","versions.js"],"names":["registerHDirective","i","directivesModule","directive","restrict","require","tocCollector","link","scope","element","attrs","ctrls","toc","id","register","level","fragment","title","text","children","angular","module","config","$locationProvider","html5Mode","hashPrefix","$anchorScroll","$location","on","event","hash","$apply","terminal","compile","linenums","hasClass","match","exec","className","lang","html","window","prettyPrintOne","yOffset","addClass","$rootScope","controller","$element","ctrl","this","$on","hs","root","h","previousLevel","length","push","component","template","bindings","items","path","replace","tocContainer","showToc","controllerAs","$compile","header","containerElement","after","$scope","$window","$cookies","NG_PAGES","NG_NAVIGATION","CURRENT_NG_VERSION","errorPartialPath","navClass","navItem","active","href","currentPage","current","nav-index-section","type","pagePath","_gaq","loading","loadingError","$watch","partialPath","currentArea","area","pathParts","split","breadcrumb","breadcrumbPath","forEach","part","name","url","hasError","versionNumber","full","version","codeName","INDEX_PATH","test","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","STACK_TRACE_REGEXP","truncate","nchars","substr","target","targetHtml","errorLinkFilter","encodeAngleBrackets","interpolate","formatString","formatArgs","arguments","index","slice","formattedText","search","errorDisplay","isDefined","apply","exampleClassNameSelector","tpl","setTab","tab","tabs","activeTabIndex","$broadcast","node","examples","querySelectorAll","child","getAttribute","e","style","display","selected","factory","$document","newWindow","fields","form","value","input","attr","append","find","submit","remove","COPYRIGHT","Date","getFullYear","COPYRIGHT_JS_CSS","COPYRIGHT_HTML","filename","lastIndexOf","$q","getExampleData","formPostData","createCopyrightNotice","bindToController","examplePath","example","manifest","undefined","files","prepareExampleData","resolve","then","data","exampleNameParts","unshift","charAt","toUpperCase","join","open","clickEvent","ctrlKey","metaKey","postData","tags[0]","tags[1]","private","file","content","description","$onInit","$http","exampleFolder","get","response","filePromises","transformResponse","all","docsSearch","clearResults","results","colClassName","hasResults","q","MIN_SEARCH_LENGTH","hits","api","guide","tutorial","error","misc","hit","limit","totalAreas","Object","keys","$$phase","result","hideResults","handleResultClicked","$event","which","pop","provider","localSearchFactory","$timeout","console","log","lunr","ref","field","boost","indexReadyPromise","searchData","page","add","webWorkerSearchFactory","searchIndex","defer","worker","Worker","onmessage","oEvent","pages","d","map","promise","postMessage","$inject","$get","focus","focused","$eval","ESCAPE_KEY_KEYCODE","FORWARD_SLASH_KEYCODE","body","keyCode","activeElement","stopPropagation","preventDefault","seq","docTutorialNav","prev","next","diffLo","diffHi","step","collection","matcherFn","ii","ALL_NG_VERSIONS","versionStr","isSnapshot","distTag","versions","selectedVersion","jumpToDocsVersion","currentPagePath","location","docsUrl"],"mappings":"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","file":"docs.min.js","sourcesContent":["'use strict';\n\nangular.module('docsApp', [\n  'ngRoute',\n  'ngCookies',\n  'ngSanitize',\n  'ngAnimate',\n  'DocsController',\n  'pagesData',\n  'navData',\n  'directives',\n  'errors',\n  'examples',\n  'search',\n  'tutorials',\n  'versions',\n  'ui.bootstrap.dropdown'\n])\n\n.config(['$locationProvider', function($locationProvider) {\n  $locationProvider.html5Mode(true).hashPrefix('!');\n}]);\n","'use strict';\n\nvar directivesModule = angular.module('directives', []);\n\ndirectivesModule\n/**\n * backToTop Directive\n * @param  {Function} $anchorScroll\n *\n * @description Ensure that the browser scrolls when the anchor is clicked\n */\n.directive('backToTop', ['$anchorScroll', '$location', function($anchorScroll, $location) {\n  return function link(scope, element) {\n    element.on('click', function(event) {\n      $location.hash('');\n      scope.$apply($anchorScroll);\n    });\n  };\n}])\n\n\n.directive('code', function() {\n  return {\n    restrict: 'E',\n    terminal: true,\n    compile: function(element) {\n      var linenums = element.hasClass('linenum');// || element.parent()[0].nodeName === 'PRE';\n      var match = /lang-(\\S+)/.exec(element[0].className);\n      var lang = match && match[1];\n      var html = element.html();\n      element.html(window.prettyPrintOne(html, lang, linenums));\n    }\n  };\n})\n\n.directive('scrollYOffsetElement', ['$anchorScroll', function($anchorScroll) {\n  return function(scope, element) {\n    $anchorScroll.yOffset = element;\n  };\n}])\n\n.directive('table', function() {\n  return {\n    restrict: 'E',\n    link: function(scope, element, attrs) {\n      if (!attrs['class']) {\n        element.addClass('table table-bordered table-striped code-table');\n      }\n    }\n  };\n})\n\n.directive('tocCollector', ['$rootScope', function($rootScope) {\n  return {\n    controller: ['$element', function($element) {\n      /* eslint-disable no-invalid-this */\n      var ctrl = this;\n\n      $rootScope.$on('$includeContentRequested', function() {\n        ctrl.hs = [];\n        ctrl.root = [];\n      });\n\n      this.hs = [];\n      this.root = [];\n      this.element = $element;\n\n      this.register = function(h) {\n        var previousLevel;\n\n        for (var i = ctrl.hs.length - 1; i >= 0; i--) {\n          if (ctrl.hs[i].level === (h.level - 1)) {\n            previousLevel = ctrl.hs[i];\n            break;\n          }\n        }\n\n        if (previousLevel) {\n          previousLevel.children.push(h);\n        } else {\n          this.root.push(h);\n        }\n\n        ctrl.hs.push(h);\n        /* eslint-enable no-invalid-this */\n      };\n    }]\n  };\n}])\n\n.component('tocTree', {\n  template: '',\n  bindings: {\n    items: '<'\n  },\n  controller: ['$location', /** @this */ function($location) {\n    this.path = $location.path().replace(/^\\/?(.+?)(\\/index)?\\/?$/, '$1');\n  }]\n})\n.directive('tocContainer', function() {\n  return {\n    scope: true,\n    restrict: 'E',\n    require: {\n      tocContainer: '',\n      tocCollector: '^^'\n    },\n    controller: function() {\n      this.showToc = true;\n      this.items = [];\n    },\n    controllerAs: '$ctrl',\n    link: function(scope, element, attrs, ctrls) {\n      ctrls.tocContainer.items = ctrls.tocCollector.root;\n    },\n    template: '
1\">' +\n 'Contents' +\n '
' +\n '' +\n '
'\n };\n})\n.directive('header', function() {\n return {\n restrict: 'E',\n controller: ['$element', function($element) {\n // eslint-disable-next-line no-invalid-this\n this.element = $element;\n }]\n };\n})\n.directive('h1', ['$compile', function($compile) {\n return {\n restrict: 'E',\n require: {\n tocCollector: '^^?',\n header: '^^?'\n },\n link: function(scope, element, attrs, ctrls) {\n if (!ctrls.tocCollector) return;\n\n var tocContainer = angular.element('');\n var containerElement = ctrls.header ? ctrls.header.element : element;\n\n containerElement.after(tocContainer);\n $compile(tocContainer)(scope);\n }\n };\n}]);\n\nfor (var i = 2; i <= 5; i++) {\n registerHDirective(i);\n}\n\nfunction registerHDirective(i) {\n directivesModule.directive('h' + i, function() {\n return {\n restrict: 'E',\n require: {\n 'tocCollector': '^^?'\n },\n link: function(scope, element, attrs, ctrls) {\n var toc = ctrls.tocCollector;\n\n if (!toc || !attrs.id) return;\n\n toc.register({\n level: i,\n fragment: attrs.id,\n title: element.text(),\n children: []\n });\n\n }\n };\n });\n}\n\n","'use strict';\n\nangular.module('DocsController', ['currentVersionData'])\n\n.controller('DocsController', [\n '$scope', '$rootScope', '$location', '$window', '$cookies',\n 'NG_PAGES', 'NG_NAVIGATION', 'CURRENT_NG_VERSION',\n function($scope, $rootScope, $location, $window, $cookies,\n NG_PAGES, NG_NAVIGATION, CURRENT_NG_VERSION) {\n\n var errorPartialPath = 'Error404.html';\n\n $scope.navClass = function(navItem) {\n return {\n active: navItem.href && this.currentPage && this.currentPage.path,\n current: this.currentPage && this.currentPage.path === navItem.href,\n 'nav-index-section': navItem.type === 'section'\n };\n };\n\n $scope.$on('$includeContentLoaded', function() {\n var pagePath = $scope.currentPage ? $scope.currentPage.path : $location.path();\n $window._gaq.push(['_trackPageview', pagePath]);\n $scope.loading = false;\n });\n\n $scope.$on('$includeContentError', function() {\n $scope.loading = false;\n $scope.loadingError = true;\n });\n\n $scope.$watch(function docsPathWatch() {return $location.path(); }, function docsPathWatchAction(path) {\n\n path = path.replace(/^\\/?(.+?)(\\/index)?\\/?$/, '$1');\n\n var currentPage = $scope.currentPage = NG_PAGES[path];\n\n $scope.loading = true;\n $scope.loadingError = false;\n\n if (currentPage) {\n $scope.partialPath = 'partials/' + path + '.html';\n $scope.currentArea = NG_NAVIGATION[currentPage.area];\n var pathParts = currentPage.path.split('/');\n var breadcrumb = $scope.breadcrumb = [];\n var breadcrumbPath = '';\n angular.forEach(pathParts, function(part) {\n breadcrumbPath += part;\n breadcrumb.push({ name: (NG_PAGES[breadcrumbPath] && NG_PAGES[breadcrumbPath].name) || part, url: breadcrumbPath });\n breadcrumbPath += '/';\n });\n } else {\n $scope.currentArea = NG_NAVIGATION['api'];\n $scope.breadcrumb = [];\n $scope.partialPath = errorPartialPath;\n }\n });\n\n $scope.hasError = function() {\n return $scope.partialPath === errorPartialPath || $scope.loadingError;\n };\n\n /**********************************\n Initialize\n ***********************************/\n\n $scope.versionNumber = CURRENT_NG_VERSION.full;\n $scope.version = CURRENT_NG_VERSION.full + ' ' + CURRENT_NG_VERSION.codeName;\n $scope.loading = false;\n $scope.loadingError = false;\n\n var INDEX_PATH = /^(\\/|\\/index[^.]*.html)$/;\n if (!$location.path() || INDEX_PATH.test($location.path())) {\n $location.path('/api').replace();\n }\n\n}]);\n","'use strict';\n\nangular.module('errors', ['ngSanitize'])\n\n.filter('errorLink', ['$sanitize', function($sanitize) {\n var LINKY_URL_REGEXP = /((ftp|https?):\\/\\/|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>]/g,\n MAILTO_REGEXP = /^mailto:/,\n STACK_TRACE_REGEXP = /:\\d+:\\d+$/;\n\n var truncate = function(text, nchars) {\n if (text.length > nchars) {\n return text.substr(0, nchars - 3) + '...';\n }\n return text;\n };\n\n return function(text, target) {\n if (!text) return text;\n\n var targetHtml = target ? ' target=\"' + target + '\"' : '';\n\n return $sanitize(text.replace(LINKY_URL_REGEXP, function(url) {\n if (STACK_TRACE_REGEXP.test(url)) {\n return url;\n }\n\n // if we did not match ftp/http/mailto then assume mailto\n if (!/^((ftp|https?):\\/\\/|mailto:)/.test(url)) url = 'mailto:' + url;\n\n return '' +\n truncate(url.replace(MAILTO_REGEXP, ''), 60) +\n '';\n }));\n };\n}])\n\n\n.directive('errorDisplay', ['$location', 'errorLinkFilter', function($location, errorLinkFilter) {\n var encodeAngleBrackets = function(text) {\n return text.replace(//g, '>');\n };\n\n var interpolate = function(formatString) {\n var formatArgs = arguments;\n return formatString.replace(/\\{\\d+\\}/g, function(match) {\n // Drop the braces and use the unary plus to convert to an integer.\n // The index will be off by one because of the formatString.\n var index = +match.slice(1, -1);\n if (index + 1 >= formatArgs.length) {\n return match;\n }\n return formatArgs[index + 1];\n });\n };\n\n return {\n link: function(scope, element, attrs) {\n var search = $location.search(),\n formatArgs = [attrs.errorDisplay],\n formattedText,\n i;\n\n for (i = 0; angular.isDefined(search['p' + i]); i++) {\n formatArgs.push(search['p' + i]);\n }\n\n formattedText = encodeAngleBrackets(interpolate.apply(null, formatArgs));\n element.html(errorLinkFilter(formattedText, '_blank'));\n }\n };\n}]);\n","'use strict';\n\nangular.module('examples', [])\n\n.directive('runnableExample', [function() {\n var exampleClassNameSelector = '.runnable-example-file';\n var tpl =\n '';\n\n return {\n restrict: 'C',\n scope : true,\n controller : ['$scope', function($scope) {\n $scope.setTab = function(index) {\n var tab = $scope.tabs[index];\n $scope.activeTabIndex = index;\n $scope.$broadcast('tabChange', index, tab);\n };\n }],\n compile : function(element) {\n element.html(tpl + element.html());\n return function(scope, element) {\n var node = element[0];\n var examples = node.querySelectorAll(exampleClassNameSelector);\n var tabs = [];\n angular.forEach(examples, function(child, index) {\n tabs.push(child.getAttribute('name'));\n });\n\n if (tabs.length > 0) {\n scope.tabs = tabs;\n scope.$on('tabChange', function(e, index, title) {\n angular.forEach(examples, function(child) {\n child.style.display = 'none';\n });\n var selected = examples[index];\n selected.style.display = 'block';\n });\n scope.setTab(0);\n }\n };\n }\n };\n}])\n\n.factory('formPostData', ['$document', function($document) {\n return function(url, newWindow, fields) {\n /**\n * If the form posts to target=\"_blank\", pop-up blockers can cause it not to work.\n * If a user choses to bypass pop-up blocker one time and click the link, they will arrive at\n * a new default plnkr, not a plnkr with the desired template. Given this undesired behavior,\n * some may still want to open the plnk in a new window by opting-in via ctrl+click. The\n * newWindow param allows for this possibility.\n */\n var target = newWindow ? '_blank' : '_self';\n var form = angular.element('
');\n angular.forEach(fields, function(value, name) {\n var input = angular.element('');\n input.attr('value', value);\n form.append(input);\n });\n $document.find('body').append(form);\n form[0].submit();\n form.remove();\n };\n}])\n\n.factory('createCopyrightNotice', function() {\n var COPYRIGHT = 'Copyright ' + (new Date()).getFullYear() + ' Google Inc. All Rights Reserved.\\n'\n + 'Use of this source code is governed by an MIT-style license that\\n'\n + 'can be found in the LICENSE file at http://angular.io/license';\n var COPYRIGHT_JS_CSS = '\\n\\n/*\\n' + COPYRIGHT + '\\n*/';\n var COPYRIGHT_HTML = '\\n\\n';\n\n return function getCopyright(filename) {\n switch (filename.substr(filename.lastIndexOf('.'))) {\n case '.html':\n return COPYRIGHT_HTML;\n case '.js':\n case '.css':\n return COPYRIGHT_JS_CSS;\n case '.md':\n return COPYRIGHT;\n }\n return '';\n };\n})\n\n.directive('plnkrOpener', ['$q', 'getExampleData', 'formPostData', 'createCopyrightNotice', function($q, getExampleData, formPostData, createCopyrightNotice) {\n return {\n scope: {},\n bindToController: {\n 'examplePath': '@'\n },\n controllerAs: 'plnkr',\n template: ' ',\n controller: [function PlnkrOpenerCtrl() {\n var ctrl = this;\n\n ctrl.example = {\n path: ctrl.examplePath,\n manifest: undefined,\n files: undefined,\n name: 'AngularJS Example'\n };\n\n ctrl.prepareExampleData = function() {\n if (ctrl.example.manifest) {\n return $q.resolve(ctrl.example);\n }\n\n return getExampleData(ctrl.examplePath).then(function(data) {\n ctrl.example.files = data.files;\n ctrl.example.manifest = data.manifest;\n\n // Build a pretty title for the Plunkr\n var exampleNameParts = data.manifest.name.split('-');\n exampleNameParts.unshift('AngularJS');\n angular.forEach(exampleNameParts, function(part, index) {\n exampleNameParts[index] = part.charAt(0).toUpperCase() + part.substr(1);\n });\n ctrl.example.name = exampleNameParts.join(' - ');\n\n return ctrl.example;\n });\n };\n\n ctrl.open = function(clickEvent) {\n\n var newWindow = clickEvent.ctrlKey || clickEvent.metaKey;\n\n var postData = {\n 'tags[0]': 'angularjs',\n 'tags[1]': 'example',\n 'private': true\n };\n\n // Make sure the example data is available.\n // If an XHR must be made, this might break some pop-up blockers when\n // new window is requested\n ctrl.prepareExampleData()\n .then(function() {\n angular.forEach(ctrl.example.files, function(file) {\n postData['files[' + file.name + ']'] = file.content + createCopyrightNotice(file.name);\n });\n\n postData.description = ctrl.example.name;\n\n formPostData('https://plnkr.co/edit/?p=preview', newWindow, postData);\n });\n\n };\n\n ctrl.$onInit = function() {\n // Initialize the example data, so it's ready when clicking the open button.\n // Otherwise pop-up blockers will prevent a new window from opening\n ctrl.prepareExampleData(ctrl.example.path);\n };\n }]\n };\n}])\n\n.factory('getExampleData', ['$http', '$q', function($http, $q) {\n return function(exampleFolder) {\n // Load the manifest for the example\n return $http.get(exampleFolder + '/manifest.json')\n .then(function(response) {\n return response.data;\n })\n .then(function(manifest) {\n var filePromises = [];\n\n angular.forEach(manifest.files, function(filename) {\n filePromises.push($http.get(exampleFolder + '/' + filename, { transformResponse: [] })\n .then(function(response) {\n\n // The manifests provide the production index file but Plunkr wants\n // a straight index.html\n if (filename === 'index-production.html') {\n filename = 'index.html';\n }\n\n return {\n name: filename,\n content: response.data\n };\n }));\n });\n\n return $q.all({\n manifest: manifest,\n files: $q.all(filePromises)\n });\n });\n };\n}]);\n","'use strict';\n\nangular.module('search', [])\n\n.controller('DocsSearchCtrl', ['$scope', '$location', 'docsSearch', function($scope, $location, docsSearch) {\n function clearResults() {\n $scope.results = [];\n $scope.colClassName = null;\n $scope.hasResults = false;\n }\n\n $scope.search = function(q) {\n var MIN_SEARCH_LENGTH = 2;\n if (q.length >= MIN_SEARCH_LENGTH) {\n docsSearch(q).then(function(hits) {\n // Make sure the areas are always in the same order\n var results = {\n api: [],\n guide: [],\n tutorial: [],\n error: [],\n misc: []\n };\n\n angular.forEach(hits, function(hit) {\n var area = hit.area;\n\n var limit = (area === 'api') ? 40 : 14;\n results[area] = results[area] || [];\n if (results[area].length < limit) {\n results[area].push(hit);\n }\n });\n\n var totalAreas = Object.keys(results).length;\n if (totalAreas > 0) {\n $scope.colClassName = 'cols-' + totalAreas;\n }\n $scope.hasResults = totalAreas > 0;\n $scope.results = results;\n });\n } else {\n clearResults();\n }\n if (!$scope.$$phase) $scope.$apply();\n };\n\n $scope.submit = function() {\n var result;\n if ($scope.results.api) {\n result = $scope.results.api[0];\n } else {\n for (var i in $scope.results) {\n result = $scope.results[i][0];\n if (result) {\n break;\n }\n }\n }\n if (result) {\n $location.path(result.path);\n $scope.hideResults();\n }\n };\n\n $scope.hideResults = function() {\n clearResults();\n $scope.q = '';\n };\n\n $scope.handleResultClicked = function($event) {\n if ($event.which === 1 && !$event.ctrlKey && !$event.metaKey) {\n $scope.hideResults();\n }\n };\n}])\n\n\n.controller('Error404SearchCtrl', ['$scope', '$location', 'docsSearch',\n function($scope, $location, docsSearch) {\n docsSearch($location.path().split(/[/.:]/).pop()).then(function(results) {\n $scope.results = {};\n angular.forEach(results, function(result) {\n var area = $scope.results[result.area] || [];\n area.push(result);\n $scope.results[result.area] = area;\n });\n });\n}])\n\n\n.provider('docsSearch', function() {\n\n // This version of the service builds the index in the current thread,\n // which blocks rendering and other browser activities.\n // It should only be used where the browser does not support WebWorkers\n function localSearchFactory($http, $timeout, NG_PAGES) {\n\n if (window.console && window.console.log) {\n window.console.log('Using Local Search Index');\n }\n\n // Create the lunr index\n var index = lunr(/** @this */ function() {\n this.ref('path');\n this.field('titleWords', {boost: 50});\n this.field('members', { boost: 40});\n this.field('keywords', { boost : 20 });\n });\n\n // Delay building the index by loading the data asynchronously\n var indexReadyPromise = $http.get('js/search-data.json').then(function(response) {\n var searchData = response.data;\n // Delay building the index for 500ms to allow the page to render\n return $timeout(function() {\n // load the page data into the index\n angular.forEach(searchData, function(page) {\n index.add(page);\n });\n }, 500);\n });\n\n // The actual service is a function that takes a query string and\n // returns a promise to the search results\n // (In this case we just resolve the promise immediately as it is not\n // inherently an async process)\n return function(q) {\n return indexReadyPromise.then(function() {\n var hits = index.search(q);\n var results = [];\n angular.forEach(hits, function(hit) {\n results.push(NG_PAGES[hit.ref]);\n });\n return results;\n });\n };\n }\n localSearchFactory.$inject = ['$http', '$timeout', 'NG_PAGES'];\n\n // This version of the service builds the index in a WebWorker,\n // which does not block rendering and other browser activities.\n // It should only be used where the browser does support WebWorkers\n function webWorkerSearchFactory($q, $rootScope, NG_PAGES) {\n\n if (window.console && window.console.log) {\n window.console.log('Using WebWorker Search Index');\n }\n\n var searchIndex = $q.defer();\n var results;\n\n var worker = new window.Worker('js/search-worker.js');\n\n // The worker will send us a message in two situations:\n // - when the index has been built, ready to run a query\n // - when it has completed a search query and the results are available\n worker.onmessage = function(oEvent) {\n $rootScope.$apply(function() {\n\n switch (oEvent.data.e) {\n case 'index-ready':\n searchIndex.resolve();\n break;\n case 'query-ready':\n var pages = oEvent.data.d.map(function(path) {\n return NG_PAGES[path];\n });\n results.resolve(pages);\n break;\n }\n });\n };\n\n // The actual service is a function that takes a query string and\n // returns a promise to the search results\n return function(q) {\n\n // We only run the query once the index is ready\n return searchIndex.promise.then(function() {\n\n results = $q.defer();\n worker.postMessage({ q: q });\n return results.promise;\n });\n };\n }\n webWorkerSearchFactory.$inject = ['$q', '$rootScope', 'NG_PAGES'];\n\n return {\n $get: window.Worker ? webWorkerSearchFactory : localSearchFactory\n };\n})\n\n.directive('focused', function($timeout) {\n return function(scope, element, attrs) {\n element[0].focus();\n element.on('focus', function() {\n scope.$apply(attrs.focused + '=true');\n });\n element.on('blur', function() {\n // have to use $timeout, so that we close the drop-down after the user clicks,\n // otherwise when the user clicks we process the closing before we process the click.\n $timeout(function() {\n scope.$eval(attrs.focused + '=false');\n });\n });\n scope.$eval(attrs.focused + '=true');\n };\n})\n\n.directive('docsSearchInput', ['$document', function($document) {\n return function(scope, element, attrs) {\n var ESCAPE_KEY_KEYCODE = 27,\n FORWARD_SLASH_KEYCODE = 191;\n angular.element($document[0].body).on('keydown', function(event) {\n var input = element[0];\n if (event.keyCode === FORWARD_SLASH_KEYCODE && $document[0].activeElement !== input) {\n event.stopPropagation();\n event.preventDefault();\n input.focus();\n }\n });\n\n element.on('keydown', function(event) {\n if (event.keyCode === ESCAPE_KEY_KEYCODE) {\n event.stopPropagation();\n event.preventDefault();\n scope.$apply(function() {\n scope.hideResults();\n });\n }\n });\n };\n}]);\n","'use strict';\n\nangular.module('tutorials', [])\n\n.directive('docTutorialNav', function() {\n var pages = [\n '',\n 'step_00', 'step_01', 'step_02', 'step_03', 'step_04',\n 'step_05', 'step_06', 'step_07', 'step_08', 'step_09',\n 'step_10', 'step_11', 'step_12', 'step_13', 'step_14',\n 'the_end'\n ];\n return {\n scope: {},\n template:\n '
  • Previous
  • \\n' +\n '
  • Live Demo
  • \\n' +\n '
  • Code Diff
  • \\n' +\n '
  • Next
  • ',\n link: function(scope, element, attrs) {\n var seq = 1 * attrs.docTutorialNav;\n scope.seq = seq;\n scope.prev = pages[seq];\n scope.next = pages[2 + seq];\n scope.diffLo = seq ? (seq - 1) : '0~1';\n scope.diffHi = seq;\n\n element.addClass('btn-group');\n element.addClass('tutorial-nav');\n }\n };\n})\n\n\n.directive('docTutorialReset', function() {\n return {\n scope: {\n 'step': '@docTutorialReset'\n },\n template:\n '

    \\n' +\n '
    \\n' +\n '

    Reset the workspace to step {{step}}.

    ' +\n '

    git checkout -f step-{{step}}

    \\n' +\n '

    Refresh your browser or check out this step online: ' +\n 'Step {{step}} Live Demo.

    \\n' +\n '
    \\n' +\n '

    The most important changes are listed below. You can see the full diff on ' +\n 'GitHub.\\n' +\n '

    '\n };\n});\n","'use strict';\n/* global console */\n\nangular.module('versions', ['currentVersionData', 'allVersionsData'])\n\n.directive('versionPicker', function() {\n return {\n restrict: 'E',\n scope: true,\n controllerAs: '$ctrl',\n controller: ['$location', '$window', 'CURRENT_NG_VERSION', 'ALL_NG_VERSIONS',\n /** @this VersionPickerController */\n function VersionPickerController($location, $window, CURRENT_NG_VERSION, ALL_NG_VERSIONS) {\n\n var versionStr = CURRENT_NG_VERSION.version;\n\n if (CURRENT_NG_VERSION.isSnapshot) {\n versionStr = CURRENT_NG_VERSION.distTag === 'latest' ? 'snapshot-stable' : 'snapshot';\n }\n\n this.versions = ALL_NG_VERSIONS;\n this.selectedVersion = find(ALL_NG_VERSIONS, function(value) {\n return value.version.version === versionStr;\n });\n\n this.jumpToDocsVersion = function(value) {\n var currentPagePath = $location.path().replace(/\\/$/, '');\n $window.location = value.docsUrl + currentPagePath;\n };\n }],\n template:\n '
    ' +\n ' ' +\n '
    '\n };\n\n function find(collection, matcherFn) {\n for (var i = 0, ii = collection.length; i < ii; ++i) {\n if (matcherFn(collection[i])) {\n return collection[i];\n }\n }\n }\n});\n"]}