{“version”:3,“sources”:,“names”:[],“mappings”:“qBASM,OAAA,oDAIF,GAAI,GAAA,KAAa,UACf,UAAW,0DAGX,YAAK,sDAOL,GAAA,SAAO,QAAe,KAAK,sEAEtB,QAAA,UAAgB,EAAS,MAAA,EAAA,SAAA,GAAA,EAAA,sCAK9B,EAAK,aAAA,EAAA,SAA6B,YAElC,EAAK,OAAQ,EAAA,YAKX,2BAAgC,EAAA,gEAMhC,QAAY,SAAA,kDAKP,OAAI,OAAU,EAAA,OAKnB,gCAKA,MAEE,WAAA,gFAMN,EAAK,2BAAkB,QAAA,SAAA,GACjB,qCAUN,OAFD,GAAA,SAAU,iBAEL,eAKK,UAAA,UAAA,WAAA,OAAA,SAAA,SAAA,EAAA,EAAA,EAAA,MAEP,GAAa,EAAA,gBAGb,SAAM,WAAS,+BAET,cACA,SAAa,WAAY,SAAA,EAAA,+FAM3B,GAAa,EAAA,oGAUX,2BAAmC,KAAA,WACnC,EAAO,cAAA,EAAA,OAAA,wEAYP,EAAA,aAAmB,2BAMlB,2BAAA,KAAA,kGAOA,mBAOD,UAAA,UAAc,WAAY,OAAA,SAAA,EAAA,EAAA,iDAI9B,iCA2BE,+BAEF,EAAA,EAAA,OAAA,oEA1BA,GACE,IADa,EAAS,GACR,EAAK,2GAYrB,EAAU,SAAA,EAAY,SAAW,WAIjC,EAAS,MAAA,KAGP,IAAA,WAAmB,uEAWxB”,“file”:“tab.min.js”,“sourcesContent”:[“‘use strict’;nnangular.module(‘mgcrea.ngStrap.tab’, [])nn .provider(‘$tab’, function() {nn var defaults = this.defaults = {n animation: ‘am-fade’,n template: ‘tab/tab.tpl.html’,n navClass: ‘nav-tabs’,n activeClass: ‘active’n };nn var controller = this.controller = function($scope, $element, $attrs) {n var self = this;nn // Attributes optionsn self.$options = angular.copy(defaults);n angular.forEach([‘animation’, ‘navClass’, ‘activeClass’], function(key) {n if(angular.isDefined($attrs)) self.$options = $attrs;n });nn // Publish options on scopen $scope.$navClass = self.$options.navClass;n $scope.$activeClass = self.$options.activeClass;nn self.$panes = $scope.$panes = [];nn // DEPRECATED: $viewChangeListeners, please use $activePaneChangeListenersn // Because we deprecated ngModel usage, we rename viewChangeListeners to n // activePaneChangeListeners to make more sense.n self.$activePaneChangeListeners = self.$viewChangeListeners = [];nn self.$push = function(pane) {n self.$panes.push(pane);n };nn self.$remove = function(pane) {n var index = self.$panes.indexOf(pane);n var activeIndex = self.$panes.$active;nn // remove pane from $panes arrayn self.$panes.splice(index, 1);nn if (index < activeIndex) {n // we removed a pane before the active pane, so we need to n // decrement the active pane indexn activeIndex–;n }n else if (index === activeIndex && activeIndex === self.$panes.length) {n // we remove the active pane and it was the one at the end,n // so select the previous onen activeIndex–;n }n self.$setActive(activeIndex);n };nn self.$panes.$active = 0;n self.$setActive = $scope.$setActive = function(value) {n self.$panes.$active = value;n self.$activePaneChangeListeners.forEach(function(fn) {n fn();n });n };nn };nn this.$get = function() {n var $tab = {};n $tab.defaults = defaults;n $tab.controller = controller;n return $tab;n };nn })nn .directive(‘bsTabs’, function($window, $animate, $tab, $parse) {nn var defaults = $tab.defaults;nn return {n require: [‘?ngModel’, ‘bsTabs’],n transclude: true,n scope: true,n controller: [‘$scope’, ‘$element’, ‘$attrs’, $tab.controller],n templateUrl: function(element, attr) {n return attr.template || defaults.template;n },n link: function postLink(scope, element, attrs, controllers) {nn var ngModelCtrl = controllers;n var bsTabsCtrl = controllers;nn // DEPRECATED: ngModel, please use bsActivePanen // ‘ngModel’ is deprecated bacause if interferes with form validationn // and status, so avoid using it here.n if(ngModelCtrl) {n console.warn(‘Usage of ngModel is deprecated, please use bsActivePane instead!’);nn // Update the modelValue followingn bsTabsCtrl.$activePaneChangeListeners.push(function() {n ngModelCtrl.$setViewValue(bsTabsCtrl.$panes.$active);n });nn // modelValue -> $formatters -> viewValuen ngModelCtrl.$formatters.push(function(modelValue) {n // console.warn(‘$formatter("%s"): modelValue=%o (%o)’, element.attr(‘ng-model’), modelValue, typeof modelValue);n bsTabsCtrl.$setActive(modelValue * 1);n return modelValue;n });nn }nn if (attrs.bsActivePane) {n // adapted from angularjs ngModelController bindingsn // github.com/angular/angular.js/blob/v1.3.1/src%2Fng%2Fdirective%2Finput.js#L1730n var parsedBsActivePane = $parse(attrs.bsActivePane);nn // Update bsActivePane value with changen bsTabsCtrl.$activePaneChangeListeners.push(function() {n parsedBsActivePane.assign(scope, bsTabsCtrl.$panes.$active);n });nn // watch bsActivePane for value changesn scope.$watch(attrs.bsActivePane, function(newValue, oldValue) {n bsTabsCtrl.$setActive(newValue * 1);n }, true);n }n }n };nn })nn .directive(‘bsPane’, function($window, $animate, $sce) {nn return {n require: [‘^?ngModel’, ‘^bsTabs’],n scope: true,n link: function postLink(scope, element, attrs, controllers) {nn var ngModelCtrl = controllers;n var bsTabsCtrl = controllers;nn // Add base classn element.addClass(‘tab-pane’);nn // Observe title attribute for changen attrs.$observe(‘title’, function(newValue, oldValue) {n scope.title = $sce.trustAsHtml(newValue);n });nn // Add animation classn if(bsTabsCtrl.$options.animation) {n element.addClass(bsTabsCtrl.$options.animation);n }nn // Push pane to parent bsTabs controllern bsTabsCtrl.$push(scope);nn // remove pane from tab controller when pane is destroyedn scope.$on(‘$destroy’, function() {n bsTabsCtrl.$remove(scope);n });nn function render() {n var index = bsTabsCtrl.$panes.indexOf(scope);n var active = bsTabsCtrl.$panes.$active;n $animate[index === active ? ‘addClass’ : ‘removeClass’](element, bsTabsCtrl.$options.activeClass);n }nn bsTabsCtrl.$activePaneChangeListeners.push(function() {n render();n });n render();nn }n };nn });n”],“sourceRoot”:“/source/”}