https://classic.ptotoday.com/components/com_store/assets/js/angular-breadcrumbs.min.js?6ab4ec80ceff9
1/*! angular-breadcrumb - v0.4.1-dev-2016-04-12 2 * http://ncuillery.github.io/angular-breadcrumb 3 * Copyright (c) 2016 Nicolas Cuillery; Licensed MIT */ 4! function(a, b, c) { "use strict"; 5 6 function d(a, c) { return b.equals(a.length, c.length) ? a > c : a.length > c.length } 7 8 function e(a) { var b = a.replace(/\n/g, " ").match(/^([^(]+?)\s*(\((.*)\))?$/); if (!b || 4 !== b.length) throw new Error("Invalid state ref '" + a + "'"); return { state: b[1], paramExpr: b[3] || null } } 9 10 function f(a, b, d, e) { var f = k[a]; 11 f !== c && f(), f = b.$on(d, e), k[a] = f } 12 13 function g() { var a = { prefixStateName: null, template: "bootstrap3", templateUrl: null, templateLast: "default", templateLastUrl: null, includeAbstract: !1 }; 14 this.setOptions = function(c) { b.extend(a, c) }, this.$get = ["$state", "$stateParams", "$rootScope", function(b, g, h) { var i = h; 15 f("$Breadcrumb.$viewContentLoaded", h, "$viewContentLoaded", function(a) {!a.targetScope.ncyBreadcrumbIgnore && d(a.targetScope.$id, i.$id) && (i = a.targetScope) }); var j = function(a) { var b = a.parent || (/^(.+)\.[^.]+$/.exec(a.name) || [])[1], 16 c = "object" == typeof b; return c ? b.name : b }, 17 k = function(c, d) { for (var f, h, j = e(d), k = !1, l = !1, m = 0, n = c.length; n > m; m += 1) 18 if (c[m].name === j.state) return; 19 f = b.get(j.state), f.ncyBreadcrumb && (f.ncyBreadcrumb.force && (k = !0), f.ncyBreadcrumb.skip && (l = !0)), f["abstract"] && !a.includeAbstract && !k || l || (j.paramExpr && (h = i.$eval(j.paramExpr)), f.ncyBreadcrumbLink = b.href(j.state, h || g || {}), f.ncyBreadcrumbStateRef = d, c.unshift(f)) }, 20 l = function(a) { var c = e(a), 21 d = b.get(c.state); if (d.ncyBreadcrumb && d.ncyBreadcrumb.parent) { var f = "function" == typeof d.ncyBreadcrumb.parent, 22 g = f ? d.ncyBreadcrumb.parent(i) : d.ncyBreadcrumb.parent; if (g) return g } return j(d) }; return { getTemplate: function(b) { return a.templateUrl ? null : b[a.template] ? b[a.template] : a.template }, getTemplateUrl: function() { return a.templateUrl }, getTemplateLast: function(b) { return a.templateLastUrl ? null : b[a.templateLast] ? b[a.templateLast] : a.templateLast }, getTemplateLastUrl: function() { return a.templateLastUrl }, getStatesChain: function(c) { for (var d = [], e = b.$current.self.name; e; e = l(e)) 23 if (k(d, e), c && d.length) return d; 24 return a.prefixStateName && k(d, a.prefixStateName), d }, getLastStep: function() { var a = this.getStatesChain(!0); return a.length ? a[0] : c }, $getLastViewScope: function() { return i } } }] } 25 26 function h(a, c, d) { var e = { bootstrap2: '<ul class="breadcrumb"><li ng-repeat="step in steps" ng-switch="$last || !!step.abstract" ng-class="{active: $last}"><a ng-switch-when="false" href="{{step.ncyBreadcrumbLink}}">{{step.ncyBreadcrumbLabel}}</a><span ng-switch-when="true">{{step.ncyBreadcrumbLabel}}</span><span class="divider" ng-hide="$last">/</span></li></ul>', bootstrap3: '<ol class="breadcrumb"><li ng-repeat="step in steps" ng-class="{active: $last}" ng-switch="$last || !!step.abstract"><a ng-switch-when="false" href="{{step.ncyBreadcrumbLink}}">{{step.ncyBreadcrumbLabel}}</a><span ng-switch-when="true">{{step.ncyBreadcrumbLabel}}</span></li></ol>' }; return { restrict: "AE", replace: !0, scope: {}, template: c.getTemplate(e), templateUrl: c.getTemplateUrl(), link: { post: function(e) { var g = [], 27 h = function() { n(g), g = []; var d = c.$getLastViewScope(); 28 e.steps = c.getStatesChain(), b.forEach(e.steps, function(b) { if (b.ncyBreadcrumb && b.ncyBreadcrumb.label) { var c = a(b.ncyBreadcrumb.label); 29 b.ncyBreadcrumbLabel = c(d), m(g, c, d, b) } else b.ncyBreadcrumbLabel = b.name }) }; 30 f("BreadcrumbDirective.$viewContentLoaded", d, "$viewContentLoaded", function(a) { a.targetScope.ncyBreadcrumbIgnore || h() }), h() } } } } 31 32 function i(a, b, c) { var d = { "default": "{{ncyBreadcrumbLabel}}" }; return { restrict: "A", scope: {}, template: b.getTemplateLast(d), templateUrl: b.getTemplateLastUrl(), compile: function(d, e) { var g = d.attr(e.$attr.ncyBreadcrumbLast); return g && d.html(g), { post: function(d) { var e = [], 33 g = function() { n(e), e = []; var c = b.$getLastViewScope(), 34 f = b.getLastStep(); if (f) 35 if (d.ncyBreadcrumbLink = f.ncyBreadcrumbLink, f.ncyBreadcrumb && f.ncyBreadcrumb.label) { var g = a(f.ncyBreadcrumb.label); 36 d.ncyBreadcrumbLabel = g(c), m(e, g, c, d) } else d.ncyBreadcrumbLabel = f.name }; 37 f("BreadcrumbLastDirective.$viewContentLoaded", c, "$viewContentLoaded", function(a) { a.targetScope.ncyBreadcrumbIgnore || g() }), g() } } } } } 38 39 function j(a, c, d) { return { restrict: "A", scope: {}, template: "{{ncyBreadcrumbChain}}", compile: function(e, g) { var h = e.attr(g.$attr.ncyBreadcrumbText); 40 h && e.html(h); var i = e.attr(g.$attr.ncyBreadcrumbTextSeparator) || " / "; return { post: function(e) { var g = [], 41 h = function(a, c, d) { b.forEach(l(c), function(b) { var c = d.$watch(b, function(a, b) { a !== b && j() }); 42 a.push(c) }) }, 43 j = function() { n(g), g = []; var d = c.$getLastViewScope(), 44 f = c.getStatesChain(), 45 j = []; 46 b.forEach(f, function(b) { if (b.ncyBreadcrumb && b.ncyBreadcrumb.label) { var c = a(b.ncyBreadcrumb.label); 47 j.push(c(d)), h(g, c, d) } else j.push(b.name) }), e.ncyBreadcrumbChain = j.join(i) }; 48 f("BreadcrumbTextDirective.$viewContentLoaded", d, "$viewContentLoaded", function(a) { a.targetScope.ncyBreadcrumbIgnore || j() }), j() } } } } } var k = {}, 49 l = function(a) { if (a.expressions) return a.expressions; var c = []; return b.forEach(a.parts, function(a) { b.isFunction(a) && c.push(a.exp) }), c }, 50 m = function(a, c, d, e) { b.forEach(l(c), function(b) { var f = d.$watch(b, function() { e.ncyBreadcrumbLabel = c(d) }); 51 a.push(f) }) }, 52 n = function(a) { b.forEach(a, function(a) { a() }) }; 53 h.$inject = ["$interpolate", "$breadcrumb", "$rootScope"], i.$inject = ["$interpolate", "$breadcrumb", "$rootScope"], j.$inject = ["$interpolate", "$breadcrumb", "$rootScope"], b.module("ncy-angular-breadcrumb", ["ui.router.state"]).provider("$breadcrumb", g).directive("ncyBreadcrumb", h).directive("ncyBreadcrumbLast", i).directive("ncyBreadcrumbText", j) }(window, window.angular);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.