diff --git a/dist/js/ionic-angular.js b/dist/js/ionic-angular.js index 75ece102a4..09ace2477e 100644 --- a/dist/js/ionic-angular.js +++ b/dist/js/ionic-angular.js @@ -2043,7 +2043,7 @@ angular.module('ionic.ui.slideBox', []) restrict: 'E', replace: true, require: '^slideBox', - template: '
' + template: '
' } }); diff --git a/dist/js/ionic-angular.min.js b/dist/js/ionic-angular.min.js index 096c91190c..89c273a01b 100644 --- a/dist/js/ionic-angular.min.js +++ b/dist/js/ionic-angular.min.js @@ -44,5 +44,5 @@ function(a,b){"use strict";function c(a,b,c){d.directive(a,["$parse","$swipe",fu * (c) 2010-2012 Google, Inc. http://angularjs.org * License: MIT */ -function(a,b){"use strict";function c(){function a(a,c){return b.extend(new(b.extend(function(){},{prototype:a})),c)}function c(a,b){var c=b.caseInsensitiveMatch,d={originalPath:a,regexp:a},e=d.keys=[];return a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?|\*])?/g,function(a,b,c,d){var f="?"===d?d:null,g="*"===d?d:null;return e.push({name:c,optional:!!f}),b=b||"",""+(f?"":b)+"(?:"+(f?b:"")+(g&&"(.+?)"||"([^/]+)")+(f||"")+")"+(f||"")}).replace(/([\/$\*])/g,"\\$1"),d.regexp=new RegExp("^"+a+"$",c?"i":""),d}var d={};this.when=function(a,e){if(d[a]=b.extend({reloadOnSearch:!0},e,a&&c(a,e)),a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";d[f]=b.extend({redirectTo:a},c(f,e))}return this},this.otherwise=function(a){return this.when(null,a),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(c,e,f,g,h,i,j,k){function l(a,b){var c=b.keys,d={};if(!b.regexp)return null;var e=b.regexp.exec(a);if(!e)return null;for(var f=1,g=e.length;g>f;++f){var h=c[f-1],i="string"==typeof e[f]?decodeURIComponent(e[f]):e[f];h&&i&&(d[h.name]=i)}return d}function m(){var a=n(),d=q.current;a&&d&&a.$$route===d.$$route&&b.equals(a.pathParams,d.pathParams)&&!a.reloadOnSearch&&!p?(d.params=a.params,b.copy(d.params,f),c.$broadcast("$routeUpdate",d)):(a||d)&&(p=!1,c.$broadcast("$routeChangeStart",a,d),q.current=a,a&&a.redirectTo&&(b.isString(a.redirectTo)?e.path(o(a.redirectTo,a.params)).search(a.params).replace():e.url(a.redirectTo(a.pathParams,e.path(),e.search())).replace()),g.when(a).then(function(){if(a){var c,d,e=b.extend({},a.resolve);return b.forEach(e,function(a,c){e[c]=b.isString(a)?h.get(a):h.invoke(a)}),b.isDefined(c=a.template)?b.isFunction(c)&&(c=c(a.params)):b.isDefined(d=a.templateUrl)&&(b.isFunction(d)&&(d=d(a.params)),d=k.getTrustedResourceUrl(d),b.isDefined(d)&&(a.loadedTemplateUrl=d,c=i.get(d,{cache:j}).then(function(a){return a.data}))),b.isDefined(c)&&(e.$template=c),g.all(e)}}).then(function(e){a==q.current&&(a&&(a.locals=e,b.copy(a.params,f)),c.$broadcast("$routeChangeSuccess",a,d))},function(b){a==q.current&&c.$broadcast("$routeChangeError",a,d,b)}))}function n(){var c,f;return b.forEach(d,function(d){!f&&(c=l(e.path(),d))&&(f=a(d,{params:b.extend({},e.search(),c),pathParams:c}),f.$$route=d)}),f||d[null]&&a(d[null],{params:{},pathParams:{}})}function o(a,c){var d=[];return b.forEach((a||"").split(":"),function(a,b){if(0===b)d.push(a);else{var e=a.match(/(\w+)(.*)/),f=e[1];d.push(c[f]),d.push(e[2]||""),delete c[f]}}),d.join("")}var p=!1,q={routes:d,reload:function(){p=!0,c.$evalAsync(m)}};return c.$on("$locationChangeSuccess",m),q}]}function d(){this.$get=function(){return{}}}function e(a,c,d,e,f){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(g,h,i,j,k){function l(){n&&(n.$destroy(),n=null),o&&(f.leave(o),o=null)}function m(){var i=a.current&&a.current.locals,j=i&&i.$template;if(j){var m=g.$new();k(m,function(k){k.html(j),f.enter(k,null,o||h,function(){!b.isDefined(p)||p&&!g.$eval(p)||c()}),l();var r=d(k.contents()),s=a.current;if(n=s.scope=m,o=k,s.controller){i.$scope=n;var t=e(s.controller,i);s.controllerAs&&(n[s.controllerAs]=t),k.data("$ngControllerController",t),k.children().data("$ngControllerController",t)}r(n),n.$emit("$viewContentLoaded"),n.$eval(q)})}else l()}var n,o,p=i.autoscroll,q=i.onload||"";g.$on("$routeChangeSuccess",m),m()}}}var f=b.module("ngRoute",["ng"]).provider("$route",c);f.provider("$routeParams",d),f.directive("ngView",e),e.$inject=["$route","$anchorScroll","$compile","$controller","$animate"]}(window,window.angular),angular.module("ionic.service",["ionic.service.platform","ionic.service.actionSheet","ionic.service.gesture","ionic.service.loading","ionic.service.modal","ionic.service.popup","ionic.service.templateLoad"]),angular.module("ionic.ui",["ionic.ui.content","ionic.ui.tabs","ionic.ui.navRouter","ionic.ui.header","ionic.ui.sideMenu","ionic.ui.slideBox","ionic.ui.list","ionic.ui.checkbox","ionic.ui.toggle","ionic.ui.radio"]),angular.module("ionic",["ionic.service","ionic.ui","ngAnimate","ngRoute","ngTouch","ngSanitize"]),angular.module("ionic.service.actionSheet",["ionic.service.templateLoad","ionic.ui.actionSheet","ngAnimate"]).factory("ActionSheet",["$rootScope","$document","$compile","$animate","$timeout","TemplateLoader",function(a,b,c,d,e){return{show:function(f){var g=a.$new(!0);angular.extend(g,f);var h=c('')(g),i=angular.element(h[0].querySelector(".action-sheet")),j=function(a){d.leave(i,function(){a&&f.cancel()}),e(function(){d.removeClass(h,"active",function(){g.$destroy()})})};g.cancel=function(){j(!0)},g.buttonClicked=function(a){(f.buttonClicked&&f.buttonClicked(a))===!0&&j(!1)},g.destructiveButtonClicked=function(){(f.destructiveButtonClicked&&f.destructiveButtonClicked())===!0&&j(!1)},b[0].body.appendChild(h[0]);var k=new ionic.views.ActionSheet({el:h[0]});return g.sheet=k,d.addClass(h,"active"),d.enter(i,h,function(){}),k}}}]),angular.module("ionic.service.gesture",[]).factory("Gesture",[function(){return{on:function(a,b,c){return window.ionic.onGesture(a,b,c[0])},off:function(a,b,c){return window.ionic.offGesture(a,b,c)}}}]),angular.module("ionic.service.loading",["ionic.ui.loading"]).factory("Loading",["$rootScope","$document","$compile",function(a,b,c){return{show:function(d){var e={content:"",animation:"fade-in",showBackdrop:!0,maxWidth:200,showDelay:2e3};d=angular.extend(e,d);var f=a.$new(!0);angular.extend(f,d);var g=angular.element(b[0].querySelector(".loading-backdrop"));if(g.length){var f=g.scope();if(f.loading)return f.loading.show(),f.loading}var h=c(""+d.content+"")(f);b[0].body.appendChild(h[0]);var i=new ionic.views.Loading({el:h[0],maxWidth:d.maxWidth,showDelay:d.showDelay});return i.show(),f.loading=i,i}}}]),angular.module("ionic.service.modal",["ionic.service.templateLoad","ngAnimate"]).factory("Modal",["$rootScope","$document","$compile","$animate","$q","TemplateLoader",function(a,b,c,d,e,f){var g=ionic.views.Modal.inherit({initialize:function(a){ionic.views.Modal.prototype.initialize.call(this,a),this.animation=a.animation||"slide-in-up"},show:function(){var a=this,c=angular.element(this.el);c.parent().length||d.enter(c,angular.element(b[0].body),null,function(){ionic.views.Modal.prototype.show.call(a)}),d.addClass(c,this.animation,function(){})},hide:function(){var a=angular.element(this.el);d.removeClass(a,this.animation),ionic.views.Modal.prototype.hide.call(this)},remove:function(){angular.element(this.el);d.leave(angular.element(this.el),function(){scope.$destroy()})}}),h=function(b,d){var e=d.scope&&d.scope.$new()||a.$new(!0),f=c(b)(e);d.el=f[0];var h=new g(d);return d.scope||(e.modal=h),h};return{fromTemplate:function(a,b){var c=h(a,b||{});return c},fromTemplateUrl:function(a,b,c){f.load(a).then(function(a){var d=h(a,c||{});b(d)})}}}]),function(){"use strict";angular.module("ionic.service.platform",[]).provider("Platform",function(){var a="web",b=!1;(window.cordova||window.PhoneGap||window.phonegap)&&(a="cordova");var c=function(){return"cordova"==a?window.device||window.Cordova:!0};return setTimeout(function d(){c()?ionic.Platform.detect():setTimeout(d,50)},10),{setPlatform:function(b){a=b},$get:["$q","$timeout",function(a,d){return{onHardwareBackButton:function(a){this.ready(function(){document.addEventListener("backbutton",a,!1)})},offHardwareBackButton:function(a){this.ready(function(){document.removeEventListener("backbutton",a)})},ready:function(e){var f=a.defer();return d(function g(){c()?(b=!0,f.resolve(),e()):d(g,50)},50),f.promise}}}]}})}(ionic),angular.module("ionic.service.popup",["ionic.service.templateLoad"]).factory("Popup",["$rootScope","$document","$compile","TemplateLoader",function(a,b,c){var d=function(){var a=angular.element(b[0].querySelector(".popup"));if(a.length){var c=a.scope();if(c.popup)return c}};return{alert:function(e,f){var g=d();if(g)return g.popup.alert(e);var h={title:e,animation:"fade-in"};opts=angular.extend(h,opts);var i=f&&f.$new()||a.$new(!0);angular.extend(i,opts);var j=c(""+opts.content+"")(i);b[0].body.appendChild(j[0]);var k=new ionic.views.Popup({el:j[0]});return k.alert(e),i.popup=k,k},confirm:function(){},prompt:function(){},show:function(){}}}]),angular.module("ionic.service.templateLoad",[]).factory("TemplateLoader",["$q","$http","$templateCache",function(a,b,c){return{load:function(d){var e=a.defer();return b({method:"GET",url:d,cache:c}).success(function(a){e.resolve(a&&a.trim())}).error(function(a){e.reject(a)}),e.promise}}}]),function(){"use strict";angular.module("ionic.ui.actionSheet",[]).directive("actionSheet",["$document",function(a){return{restrict:"E",scope:!0,replace:!0,link:function(b,c){var d=function(a){27==a.which&&(b.cancel(),b.$apply())},e=function(a){a.target==c[0]&&(b.cancel(),b.$apply())};b.$on("$destroy",function(){c.remove(),a.unbind("keyup",d),c.unbind("click",e)}),a.bind("keyup",d),c.bind("click",e)},template:'
{{titleText}}
'}}])}(),function(a){"use strict";angular.module("ionic.ui.header",["ngAnimate"]).directive("headerBar",function(){return{restrict:"E",replace:!0,transclude:!0,template:'

',scope:{leftButtons:"=",rightButtons:"=",title:"=",type:"@",alignTitle:"@"},link:function(b,c){var d=new a.views.HeaderBar({el:c[0],alignTitle:b.alignTitle||"center"});c.addClass(b.type),b.headerBarView=d,b.$watch("leftButtons",function(){d.align()}),b.$watch("rightButtons",function(){d.align()}),b.$watch("title",function(){console.log("Title changed"),d.align()}),b.$on("$destroy",function(){})}}}).directive("footerBar",function(){return{restrict:"E",replace:!0,transclude:!0,template:'',scope:{type:"@"},link:function(a,b){b.addClass(a.type)}}})}(ionic),function(){"use strict";angular.module("ionic.ui.checkbox",[]).directive("checkbox",function(){return{restrict:"E",replace:!0,require:"?ngModel",scope:{},transclude:!0,template:'',link:function(a,b,c,d){var e;if(d&&(e=b.children().eq(0),e.length)){a.tapHandler=function(a){"click"!=a.type&&(e[0].checked=!e[0].checked),d.$setViewValue(e[0].checked),a.alreadyHandled=!0};d&&(d.$render=function(){e[0].checked=d.$viewValue})}}}})}(),function(){"use strict";angular.module("ionic.ui.content",[]).directive("pane",function(){return{restrict:"E",link:function(a,b){b.addClass("pane")}}}).directive("content",["$parse",function(){return{restrict:"E",replace:!0,template:'
',transclude:!0,scope:{onRefresh:"&",onRefreshOpening:"&",refreshComplete:"=",scroll:"@"},compile:function(a,b,c){return function(a,d){var e=d.eq(0),f=d[0].querySelector(".scroll");if(f&&b.padding&&f.classList.add("padding"),"true"==b.hasHeader&&e.addClass("has-header"),"true"==b.hasSubheader&&e.addClass("has-subheader"),"true"==b.hasFooter&&e.addClass("has-footer"),"true"==b.hasTabs&&e.addClass("has-tabs"),b.refreshComplete&&(a.refreshComplete=function(){a.scrollView&&(a.scrollView.doneRefreshing(),a.$parent.$broadcast("scroll.onRefreshComplete"))}),"false"===a.scroll);else if("true"===b.overflowScroll)e.addClass("overflow-scroll");else{var g=new ionic.views.Scroll({el:d[0].firstElementChild,hasPullToRefresh:"undefined"!=typeof a.onRefresh,onRefresh:function(){a.onRefresh(),a.$parent.$broadcast("scroll.onRefresh")},onRefreshOpening:function(b){a.onRefreshOpening({amount:b}),a.$parent.$broadcast("scroll.onRefreshOpening",b)}});a.scrollView=g}var h=c(a.$parent);angular.element(d[0].firstElementChild).append(h)}}}}]).directive("refresher",function(){return{restrict:"E",replace:!0,require:["^?content","^?list"],template:'
',scope:!0,link:function(a,b){var c=b[0].querySelector(".ionic-refresher"),d=ionic.throttle(function(a,b){c.style[ionic.CSS.TRANSFORM]="scale("+Math.min(1+b,2)+")"},100);a.$on("scroll.onRefresh",function(){c.style[ionic.CSS.TRANSFORM]="scale(2)"}),a.$on("scroll.onRefreshOpening",d)}}}).directive("scroll-refresher",function(){return{restrict:"E",replace:!0,transclude:!0,template:'
'}})}(),function(){"use strict";angular.module("ionic.ui.list",["ngAnimate"]).directive("linkItem",["$timeout",function(a){return{restrict:"E",require:["?^list"],replace:!0,transclude:!0,scope:{item:"=",onSelect:"&",onDelete:"&",canDelete:"@",canReorder:"@",canSwipe:"@",buttons:"=",type:"@",href:"@"},template:'
',link:function(b,c,d,e){e[0]?e=e[0]:e[1]&&(e=e[1]),d.$observe("href",function(a){b.href=a}),c.addClass(d.type||"item-complex"),"item-complex"!==d.type&&(b.canSwipe=!1),b.isEditing=!1,b.deleteIcon=e.scope.deleteIcon,b.reorderIcon=e.scope.reorderIcon,b.showOptions=!0,b.buttonClicked=function(a){a.onButtonClicked&&a.onButtonClicked(b.item,a)},e.scope.$watch("isEditing",function(c){b.isEditing=c,c?b.showOptions=!1:a(function(){b.showOptions=!0},200)})}}}]).directive("item",["$timeout",function(a){return{restrict:"E",require:["?^list"],replace:!0,transclude:!0,scope:{item:"=",onSelect:"&",onDelete:"&",canDelete:"@",canReorder:"@",canSwipe:"@",buttons:"=",type:"@"},template:'
  • ',link:function(b,c,d,e){e[0]?e=e[0]:e[1]&&(e=e[1]),c.addClass(d.type||"item-complex"),"item-complex"!==d.type&&(b.canSwipe=!1),b.isEditing=!1,b.deleteIcon=e.scope.deleteIcon,b.reorderIcon=e.scope.reorderIcon,b.showOptions=!0,b.buttonClicked=function(a){a.onButtonClicked&&a.onButtonClicked(b.item,a)},e.scope.$watch("isEditing",function(c){b.isEditing=c,c?b.showOptions=!1:a(function(){b.showOptions=!0},200)})}}}]).directive("list",function(){return{restrict:"E",replace:!0,transclude:!0,scope:{isEditing:"=",deleteIcon:"@",reorderIcon:"@",hasPullToRefresh:"@",onRefresh:"&",onRefreshOpening:"&",onReorder:"&",refreshComplete:"="},controller:function(a){var b=this;this.scope=a,a.$watch("isEditing",function(){b.isEditing=!0})},template:'',link:function(a,b,c){var d=new ionic.views.ListView({el:b[0],listEl:b[0].children[0],hasPullToRefresh:"false"!==a.hasPullToRefresh,onRefresh:function(){a.onRefresh(),a.$parent.$broadcast("scroll.onRefresh")},onRefreshOpening:function(b){a.onRefreshOpening({amount:b}),a.$parent.$broadcast("scroll.onRefreshOpening",b)},onReorder:function(b,c,d){console.log("Moved",b,c,d),a.$apply(function(){a.onReorder({el:b,start:c,end:d})})}});a.listView=d,c.refreshComplete&&(a.refreshComplete=function(){d.doneRefreshing(),a.$parent.$broadcast("scroll.onRefreshComplete")}),c.animation&&b.addClass(c.animation)}}})}(),function(){"use strict";angular.module("ionic.ui.loading",[]).directive("loading",function(){return{restrict:"E",replace:!0,transclude:!0,link:function(a,b){a.$on("$destroy",function(){b.remove()}),b.addClass(a.animation||"")},template:'
    '}})}(),function(){"use strict";angular.module("ionic.ui.nav",["ionic.service.templateLoad","ionic.service.gesture","ionic.service.platform","ngAnimate"]).controller("NavCtrl",["$scope","$element","$animate","$compile","$timeout","TemplateLoader","Platform",function(a,b,c,d,e,f,g){var h=this;angular.extend(this,ionic.controllers.NavController.prototype);var i=a.pushInAnimation||"slide-in-left",j=a.pushOutAnimation||"slide-out-left",k=a.popInAnimation||"slide-in-right",l=a.popOutAnimation||"slide-out-right",m=function(a){a.removeClass(i),a.removeClass(j),a.removeClass(k),a.removeClass(l)};this.pushFromTemplate=function(e){var g=a.$new(),k=h.getTopController();f.load(e).then(function(a){d(a)(g,function(a){k&&(m(k.element),c.addClass(k.element,j,function(){k.element[0].style.display="none",k.element.removeClass(j)})),k&&(a.addClass(i),c.addClass(a,i)),c.enter(a,b,null,function(){})})})},this.popController=function(){var b=h.pop(),d=h.getTopController();b&&(m(b.element),c.addClass(b.element,l,function(){b.scope.$destroy(),b.element.remove()})),d&&(m(d.element),c.addClass(d.element,k),d.element[0].style.display="block"),a.$parent.$broadcast("navigation.pop")},ionic.controllers.NavController.call(this,{content:{},navBar:{shouldGoBack:function(){},show:function(){this.isVisible=!0},hide:function(){this.isVisible=!1},setTitle:function(b){a.navController.title=b},showBackButton:function(){}}});var n=function(){a.$apply(function(){h.popController()})};g.onHardwareBackButton(n),this.handleDrag=function(){},this.endDrag=function(){},a.pushController=function(b,c){h.push({scope:b,element:c}),a.$parent.$broadcast("navigation.push",b)},this.pushController=function(b,c){h.push({scope:b,element:c}),a.$parent.$broadcast("navigation.push",b)},a.navController=this,a.$on("$destroy",function(){g.offHardwareBackButton(n)})}]).directive("navigation",function(){return{restrict:"E",replace:!0,transclude:!0,controller:"NavCtrl",template:'
    ',scope:{first:"@",pushAnimation:"@",popAnimation:"@"},link:function(a,b,c,d){a.pushAnimation=a.pushAnimation||"slide-in-left",a.popAnimation=a.popAnimation||"slide-out-left",a.first&&d.pushFromTemplate(a.first)}}}).directive("navBar",function(){return{restrict:"E",require:"^navigation",replace:!0,scope:{type:"@",backButtonType:"@",backButtonLabel:"@",backButtonIcon:"@",alignTitle:"@"},template:'',link:function(a,b,c,d){var e;a.backButtonContent="",a.backButtonIcon&&(a.backButtonContent+=''),a.backButtonLabel&&(a.backButtonContent+=" "+a.backButtonLabel),a.navController=d,a.goBack=function(){d.popController()};var f=new ionic.views.HeaderBar({el:b[0],alignTitle:a.alignTitle||"center"});b.addClass(a.type),a.headerBarView=f,a.$parent.$on("navigation.push",function(){e=angular.element(b[0].querySelector(".button")),e.addClass(a.backButtonType),f.align()}),a.$parent.$on("navigation.pop",function(){f.align()}),a.$on("$destroy",function(){})}}}).directive("navPage",["Gesture","$animate","$compile",function(){return{restrict:"AC",require:"^navigation",link:function(a,b,c,d){var e;a.title=c.title,"false"===c.navBar?d.hideNavBar():d.showNavBar(),a.$on("$destroy",function(){e&&e.remove()}),d.pushController(a,b)}}}]).directive("navPush",function(){return{restrict:"A",link:function(a,b,c){var d=c.navPush,e=ionic.throttle(function(){return a.$apply(function(){a.navController&&a.navController.pushFromTemplate(d)}),!1},300,{trailing:!1});b.bind("tap",e),a.$on("$destroy",function(){b.unbind("tap",e)})}}}).directive("navPop",function(){return{restrict:"A",link:function(a,b){var c=ionic.throttle(function(){return a.$apply(function(){a.navController&&navController.pop()}),!1},300,{trailing:!1});b.bind("tap",c),a.$on("$destroy",function(){b.unbind("tap",c)})}}})}(),function(){"use strict";angular.module("ionic.ui.navRouter",["ionic.service.gesture"]).run(["$rootScope",function(a){a.stackCursorPosition=0}]).directive("navRouter",["$rootScope","$timeout","$location","$window","$route",function(a,b,c,d,e){return{restrict:"AC",controller:["$scope","$element",function(a){this.navBar={isVisible:!0},a.navController=this}],link:function(b,f,g){b.animation=g.animation,f.addClass("noop-animation");var h=!0,i=function(){f.removeClass("noop-animation"),f.addClass(b.animation),f.addClass("reverse")},j=function(){f.removeClass("noop-animation"),f.removeClass("reverse"),f.addClass(b.animation)};b.$on("$routeChangeSuccess",function(){}),b.$on("$routeChangeStart",function(b,c){var e,f=d.history.state;e=!!(f&&f.position<=a.stackCursorPosition),h||c&&""===c.$$route.originalPath||(e?i():j())}),b.$on("$locationChangeSuccess",function(){a.actualLocation=c.path(),h&&"/"!==c.path()&&(h=!1)}),b.$watch(function(){return c.path()},function(b,c){if(a.actualLocation===b){if(""==c&&"/"==b)return;var f,g=d.history.state;f=!!(g&&g.position<=a.stackCursorPosition),f?a.stackCursorPosition--:a.stackCursorPosition++}else{var h=e.current;h&&(d.history.replaceState({position:a.stackCursorPosition}),a.stackCursorPosition++)}})}}}]).directive("navBar",["$rootScope","$animate","$compile",function(a,b,c){var d=function(a,d,e,f,g){var h,i,j,k=d[0].querySelectorAll(".title"),l=f.title;if(!e||e===l)return g(),void 0;h=angular.element(k[0]),j=c('

    ')(a),h.replaceWith(j),i=c('

    ')(a);var m=d[0].firstElementChild||null;b.enter(i,d,m&&angular.element(m),function(){g()}),b.leave(angular.element(j),function(){})};return{restrict:"E",require:"^navRouter",replace:!0,scope:{type:"@",backButtonType:"@",backButtonLabel:"@",backButtonIcon:"@",alignTitle:"@"},template:'',link:function(b,c,e,f){c.addClass(e.animation),b.enableBackButton=!0,b.backButtonContent="",b.backButtonIcon&&(b.backButtonContent+=''),b.backButtonLabel&&(b.backButtonContent+=" "+b.backButtonLabel),a.$watch("stackCursorPosition",function(a){b.showBackButton=a>0?!0:!1}),b.navController=f;var g=new ionic.views.HeaderBar({el:c[0],alignTitle:b.alignTitle||"center"});b.headerBarView=g,c.addClass(b.type);var h=function(a){console.log("Header data changed",a);var e=b.currentTitle;b.oldTitle=e,"undefined"!=typeof a.title&&(b.currentTitle=a.title),b.leftButtons=a.leftButtons,b.rightButtons=a.rightButtons,"undefined"!=typeof a.hideBackButton&&(b.enableBackButton=a.hideBackButton!==!0),a.animate!==!1&&"undefined"!=typeof a.title?d(b,c,e,a,function(){g.align()}):g.align()};b.$parent.$on("navRouter.pageChanged",function(a,b){h(b)}),b.$parent.$on("navRouter.pageShown",function(a,b){h(b)}),b.$parent.$on("navRouter.titleChanged",function(a,e){var f=b.currentTitle;b.oldTitle=f,"undefined"!=typeof e.title&&(b.currentTitle=e.title),e.animate!==!1&&"undefined"!=typeof e.title?d(b,c,f,e,function(){g.align()}):g.align()}),b.$on("$destroy",function(){})}}}]).directive("navPage",["$parse",function(a){return{restrict:"E",scope:!0,require:"^navRouter",link:function(b,c,d){c.addClass("pane"),b.icon=d.icon,b.iconOn=d.iconOn,b.iconOff=d.iconOff,b.hideBackButton=b.$eval(d.hideBackButton),b.animate=b.$eval(d.animate),b.doesUpdateNavRouter=b.$eval(d.doesUpdateNavRouter)||!0;var e=a(d.leftButtons);b.$watch(e,function(a){b.leftButtons=a,b.doesUpdateNavRouter&&b.$emit("navRouter.leftButtonsChanged",b.rightButtons)});var f=a(d.rightButtons);b.$watch(f,function(a){b.rightButtons=a});var g=a(d.title);b.$watch(g,function(a){b.title=a,b.$emit("navRouter.titleChanged",{title:a,animate:b.animate})})}}}]).directive("navBack",["$window","$rootScope","Gesture",function(a,b,c){return{restrict:"AC",require:"^?navRouter",link:function(d,e){var f=function(){b.stackCursorPosition>0&&a.history.back()},g=c.on("tap",f,e);e.bind("click",f),d.$on("$destroy",function(){c.off(g,"tap",f),e.unbind("click",f)})}}}])}(),function(){"use strict";angular.module("ionic.ui.radio",[]).directive("radio",function(){return{restrict:"E",replace:!0,require:"?ngModel",scope:{value:"@"},transclude:!0,template:'',link:function(a,b,c,d){var e;if(d&&(e=b.children().eq(0),e.length)){a.tapHandler=function(b){e[0].checked=!0,d.$setViewValue(a.$eval(c.ngValue)),b.alreadyHandled=!0};var f=function(){d.$setViewValue(a.$eval(c.ngValue))};a.$on("$destroy",function(){b.unbind("tap",tapHandler),b.unbind("click",f)}),d&&(b.bind("click",f),d.$render=function(){var b=a.$eval(c.ngValue);b===d.$viewValue?e.attr("checked","checked"):e.removeAttr("checked")})}}}})}(window.ionic),function(){"use strict";angular.module("ionic.ui.sideMenu",["ionic.service.gesture"]).controller("SideMenuCtrl",["$scope",function(a){angular.extend(this,ionic.controllers.SideMenuController.prototype),ionic.controllers.SideMenuController.call(this,{left:{width:270},right:{width:270}}),a.sideMenuContentTranslateX=0,a.sideMenuController=this}]).directive("sideMenus",function(){return{restrict:"ECA",controller:"SideMenuCtrl",replace:!0,transclude:!0,template:'
    '}}).directive("sideMenuContent",["Gesture",function(a){return{restrict:"AC",require:"^sideMenus",scope:!0,compile:function(){return function(b,c,d,e){c.addClass("menu-content");var f=!1;ionic.on("mousedown",function(a){f=a.defaultPrevented});var g=function(a){f||e._handleDrag(a)},h=a.on("drag",g,c),i=function(a){f||e._endDrag(a),f=!1},j=a.on("release",i,c);e.setContent({onDrag:function(){},endDrag:function(){},getTranslateX:function(){return b.sideMenuContentTranslateX||0},setTranslateX:function(a){b.sideMenuContentTranslateX=a,c[0].style.webkitTransform="translate3d("+a+"px, 0, 0)"},enableAnimation:function(){b.animationEnabled=!0,c[0].classList.add("menu-animated")},disableAnimation:function(){b.animationEnabled=!1,c[0].classList.remove("menu-animated")}}),b.$on("$destroy",function(){a.off(h,"drag",g),a.off(j,"release",i)})}}}}]).directive("sideMenu",function(){return{restrict:"E",require:"^sideMenus",replace:!0,transclude:!0,scope:!0,template:'',compile:function(a,b,c){return function(a,b,d,e){a.side=d.side,"left"==a.side?(e.left.isEnabled=!0,e.left.pushDown=function(){b[0].style.zIndex=-1},e.left.bringUp=function(){b[0].style.zIndex=0}):"right"==a.side&&(e.right.isEnabled=!0,e.right.pushDown=function(){b[0].style.zIndex=-1},e.right.bringUp=function(){b[0].style.zIndex=0}),b.append(c(a))}}}})}(),function(){"use strict";angular.module("ionic.ui.slideBox",[]).controller("SlideBoxCtrl",["$scope","$element",function(a){a.slides=[],this.slideAdded=function(){a.slides.push({})}}]).directive("slideBox",["$compile",function(a){return{restrict:"E",replace:!0,transclude:!0,controller:"SlideBoxCtrl",scope:{},template:'
    ',link:function(b,c,d){if("false"!==d.showPager){var e=b.$new(),f=a("")(e);c.append(f),b.slideBox=new ionic.views.SlideBox({el:c[0],slideChanged:function(a){b.$parent.$broadcast("slideBox.slideChanged",a)}})}}}}]).directive("slide",function(){return{restrict:"E",replace:!0,require:"^slideBox",transclude:!0,template:'
    ',compile:function(){return function(a,b,c,d){d.slideAdded()}}}}).directive("pager",function(){return{restrict:"E",replace:!0,require:"^slideBox",template:'
    '}})}(),angular.module("ionic.ui.tabs",["ngAnimate"]).controller("TabsCtrl",["$scope","$element","$animate",function(a){var b=this;angular.extend(this,ionic.controllers.TabBarController.prototype),ionic.controllers.TabBarController.call(this,{controllerChanged:function(b,c,d,e){a.controllerChanged&&a.controllerChanged({oldController:b,oldIndex:c,newController:d,newIndex:e})},tabBar:{tryTabSelect:function(){},setSelectedItem:function(){},addItem:function(){}}}),this.add=function(a){this.addController(a),this.select(0)},this.select=function(c){a.activeAnimation=a.animation,b.selectController(c)},a.controllers=this.controllers,a.tabsController=this}]).directive("tabs",function(){return{restrict:"E",replace:!0,scope:!0,transclude:!0,controller:"TabsCtrl",template:'
    ',compile:function(a,b,c){return function(a,b,d){var e=b[0].querySelector(".tabs");a.tabsType=d.tabsType||"tabs-positive",a.tabsStyle=d.tabsStyle,a.animation=d.animation,a.animateNav=a.$eval(d.animateNav),a.animateNav!==!1&&(a.animateNav=!0),d.$observe("tabsStyle",function(){e&&angular.element(e).addClass(d.tabsStyle)}),d.$observe("tabsType",function(){e&&angular.element(e).addClass(d.tabsType)}),a.$watch("activeAnimation",function(){b.addClass(a.activeAnimation)}),c(a,function(a){b.prepend(a)})}}}}).directive("tab",["$animate","$parse",function(a,b){return{restrict:"E",replace:!0,require:"^tabs",scope:!0,transclude:"element",compile:function(c,d,e){return function(c,d,f,g){var h,i;c.title=f.title,c.icon=f.icon,c.iconOn=f.iconOn,c.iconOff=f.iconOff,c.hideBackButton=c.$eval(f.hideBackButton),c.hideBackButton!==!0&&(c.hideBackButton=!1),c.animate=c.$eval(f.animate),c.doesUpdateNavRouter=c.$eval(f.doesUpdateNavRouter),c.doesUpdateNavRouter!==!1&&(c.doesUpdateNavRouter=!0); +function(a,b){"use strict";function c(){function a(a,c){return b.extend(new(b.extend(function(){},{prototype:a})),c)}function c(a,b){var c=b.caseInsensitiveMatch,d={originalPath:a,regexp:a},e=d.keys=[];return a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?|\*])?/g,function(a,b,c,d){var f="?"===d?d:null,g="*"===d?d:null;return e.push({name:c,optional:!!f}),b=b||"",""+(f?"":b)+"(?:"+(f?b:"")+(g&&"(.+?)"||"([^/]+)")+(f||"")+")"+(f||"")}).replace(/([\/$\*])/g,"\\$1"),d.regexp=new RegExp("^"+a+"$",c?"i":""),d}var d={};this.when=function(a,e){if(d[a]=b.extend({reloadOnSearch:!0},e,a&&c(a,e)),a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";d[f]=b.extend({redirectTo:a},c(f,e))}return this},this.otherwise=function(a){return this.when(null,a),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(c,e,f,g,h,i,j,k){function l(a,b){var c=b.keys,d={};if(!b.regexp)return null;var e=b.regexp.exec(a);if(!e)return null;for(var f=1,g=e.length;g>f;++f){var h=c[f-1],i="string"==typeof e[f]?decodeURIComponent(e[f]):e[f];h&&i&&(d[h.name]=i)}return d}function m(){var a=n(),d=q.current;a&&d&&a.$$route===d.$$route&&b.equals(a.pathParams,d.pathParams)&&!a.reloadOnSearch&&!p?(d.params=a.params,b.copy(d.params,f),c.$broadcast("$routeUpdate",d)):(a||d)&&(p=!1,c.$broadcast("$routeChangeStart",a,d),q.current=a,a&&a.redirectTo&&(b.isString(a.redirectTo)?e.path(o(a.redirectTo,a.params)).search(a.params).replace():e.url(a.redirectTo(a.pathParams,e.path(),e.search())).replace()),g.when(a).then(function(){if(a){var c,d,e=b.extend({},a.resolve);return b.forEach(e,function(a,c){e[c]=b.isString(a)?h.get(a):h.invoke(a)}),b.isDefined(c=a.template)?b.isFunction(c)&&(c=c(a.params)):b.isDefined(d=a.templateUrl)&&(b.isFunction(d)&&(d=d(a.params)),d=k.getTrustedResourceUrl(d),b.isDefined(d)&&(a.loadedTemplateUrl=d,c=i.get(d,{cache:j}).then(function(a){return a.data}))),b.isDefined(c)&&(e.$template=c),g.all(e)}}).then(function(e){a==q.current&&(a&&(a.locals=e,b.copy(a.params,f)),c.$broadcast("$routeChangeSuccess",a,d))},function(b){a==q.current&&c.$broadcast("$routeChangeError",a,d,b)}))}function n(){var c,f;return b.forEach(d,function(d){!f&&(c=l(e.path(),d))&&(f=a(d,{params:b.extend({},e.search(),c),pathParams:c}),f.$$route=d)}),f||d[null]&&a(d[null],{params:{},pathParams:{}})}function o(a,c){var d=[];return b.forEach((a||"").split(":"),function(a,b){if(0===b)d.push(a);else{var e=a.match(/(\w+)(.*)/),f=e[1];d.push(c[f]),d.push(e[2]||""),delete c[f]}}),d.join("")}var p=!1,q={routes:d,reload:function(){p=!0,c.$evalAsync(m)}};return c.$on("$locationChangeSuccess",m),q}]}function d(){this.$get=function(){return{}}}function e(a,c,d,e,f){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(g,h,i,j,k){function l(){n&&(n.$destroy(),n=null),o&&(f.leave(o),o=null)}function m(){var i=a.current&&a.current.locals,j=i&&i.$template;if(j){var m=g.$new();k(m,function(k){k.html(j),f.enter(k,null,o||h,function(){!b.isDefined(p)||p&&!g.$eval(p)||c()}),l();var r=d(k.contents()),s=a.current;if(n=s.scope=m,o=k,s.controller){i.$scope=n;var t=e(s.controller,i);s.controllerAs&&(n[s.controllerAs]=t),k.data("$ngControllerController",t),k.children().data("$ngControllerController",t)}r(n),n.$emit("$viewContentLoaded"),n.$eval(q)})}else l()}var n,o,p=i.autoscroll,q=i.onload||"";g.$on("$routeChangeSuccess",m),m()}}}var f=b.module("ngRoute",["ng"]).provider("$route",c);f.provider("$routeParams",d),f.directive("ngView",e),e.$inject=["$route","$anchorScroll","$compile","$controller","$animate"]}(window,window.angular),angular.module("ionic.service",["ionic.service.platform","ionic.service.actionSheet","ionic.service.gesture","ionic.service.loading","ionic.service.modal","ionic.service.popup","ionic.service.templateLoad"]),angular.module("ionic.ui",["ionic.ui.content","ionic.ui.tabs","ionic.ui.navRouter","ionic.ui.header","ionic.ui.sideMenu","ionic.ui.slideBox","ionic.ui.list","ionic.ui.checkbox","ionic.ui.toggle","ionic.ui.radio"]),angular.module("ionic",["ionic.service","ionic.ui","ngAnimate","ngRoute","ngTouch","ngSanitize"]),angular.module("ionic.service.actionSheet",["ionic.service.templateLoad","ionic.ui.actionSheet","ngAnimate"]).factory("ActionSheet",["$rootScope","$document","$compile","$animate","$timeout","TemplateLoader",function(a,b,c,d,e){return{show:function(f){var g=a.$new(!0);angular.extend(g,f);var h=c('')(g),i=angular.element(h[0].querySelector(".action-sheet")),j=function(a){d.leave(i,function(){a&&f.cancel()}),e(function(){d.removeClass(h,"active",function(){g.$destroy()})})};g.cancel=function(){j(!0)},g.buttonClicked=function(a){(f.buttonClicked&&f.buttonClicked(a))===!0&&j(!1)},g.destructiveButtonClicked=function(){(f.destructiveButtonClicked&&f.destructiveButtonClicked())===!0&&j(!1)},b[0].body.appendChild(h[0]);var k=new ionic.views.ActionSheet({el:h[0]});return g.sheet=k,d.addClass(h,"active"),d.enter(i,h,function(){}),k}}}]),angular.module("ionic.service.gesture",[]).factory("Gesture",[function(){return{on:function(a,b,c){return window.ionic.onGesture(a,b,c[0])},off:function(a,b,c){return window.ionic.offGesture(a,b,c)}}}]),angular.module("ionic.service.loading",["ionic.ui.loading"]).factory("Loading",["$rootScope","$document","$compile",function(a,b,c){return{show:function(d){var e={content:"",animation:"fade-in",showBackdrop:!0,maxWidth:200,showDelay:2e3};d=angular.extend(e,d);var f=a.$new(!0);angular.extend(f,d);var g=angular.element(b[0].querySelector(".loading-backdrop"));if(g.length){var f=g.scope();if(f.loading)return f.loading.show(),f.loading}var h=c(""+d.content+"")(f);b[0].body.appendChild(h[0]);var i=new ionic.views.Loading({el:h[0],maxWidth:d.maxWidth,showDelay:d.showDelay});return i.show(),f.loading=i,i}}}]),angular.module("ionic.service.modal",["ionic.service.templateLoad","ngAnimate"]).factory("Modal",["$rootScope","$document","$compile","$animate","$q","TemplateLoader",function(a,b,c,d,e,f){var g=ionic.views.Modal.inherit({initialize:function(a){ionic.views.Modal.prototype.initialize.call(this,a),this.animation=a.animation||"slide-in-up"},show:function(){var a=this,c=angular.element(this.el);c.parent().length||d.enter(c,angular.element(b[0].body),null,function(){ionic.views.Modal.prototype.show.call(a)}),d.addClass(c,this.animation,function(){})},hide:function(){var a=angular.element(this.el);d.removeClass(a,this.animation),ionic.views.Modal.prototype.hide.call(this)},remove:function(){angular.element(this.el);d.leave(angular.element(this.el),function(){scope.$destroy()})}}),h=function(b,d){var e=d.scope&&d.scope.$new()||a.$new(!0),f=c(b)(e);d.el=f[0];var h=new g(d);return d.scope||(e.modal=h),h};return{fromTemplate:function(a,b){var c=h(a,b||{});return c},fromTemplateUrl:function(a,b,c){f.load(a).then(function(a){var d=h(a,c||{});b(d)})}}}]),function(){"use strict";angular.module("ionic.service.platform",[]).provider("Platform",function(){var a="web",b=!1;(window.cordova||window.PhoneGap||window.phonegap)&&(a="cordova");var c=function(){return"cordova"==a?window.device||window.Cordova:!0};return setTimeout(function d(){c()?ionic.Platform.detect():setTimeout(d,50)},10),{setPlatform:function(b){a=b},$get:["$q","$timeout",function(a,d){return{onHardwareBackButton:function(a){this.ready(function(){document.addEventListener("backbutton",a,!1)})},offHardwareBackButton:function(a){this.ready(function(){document.removeEventListener("backbutton",a)})},ready:function(e){var f=a.defer();return d(function g(){c()?(b=!0,f.resolve(),e()):d(g,50)},50),f.promise}}}]}})}(ionic),angular.module("ionic.service.popup",["ionic.service.templateLoad"]).factory("Popup",["$rootScope","$document","$compile","TemplateLoader",function(a,b,c){var d=function(){var a=angular.element(b[0].querySelector(".popup"));if(a.length){var c=a.scope();if(c.popup)return c}};return{alert:function(e,f){var g=d();if(g)return g.popup.alert(e);var h={title:e,animation:"fade-in"};opts=angular.extend(h,opts);var i=f&&f.$new()||a.$new(!0);angular.extend(i,opts);var j=c(""+opts.content+"")(i);b[0].body.appendChild(j[0]);var k=new ionic.views.Popup({el:j[0]});return k.alert(e),i.popup=k,k},confirm:function(){},prompt:function(){},show:function(){}}}]),angular.module("ionic.service.templateLoad",[]).factory("TemplateLoader",["$q","$http","$templateCache",function(a,b,c){return{load:function(d){var e=a.defer();return b({method:"GET",url:d,cache:c}).success(function(a){e.resolve(a&&a.trim())}).error(function(a){e.reject(a)}),e.promise}}}]),function(){"use strict";angular.module("ionic.ui.actionSheet",[]).directive("actionSheet",["$document",function(a){return{restrict:"E",scope:!0,replace:!0,link:function(b,c){var d=function(a){27==a.which&&(b.cancel(),b.$apply())},e=function(a){a.target==c[0]&&(b.cancel(),b.$apply())};b.$on("$destroy",function(){c.remove(),a.unbind("keyup",d),c.unbind("click",e)}),a.bind("keyup",d),c.bind("click",e)},template:'
    {{titleText}}
    '}}])}(),function(a){"use strict";angular.module("ionic.ui.header",["ngAnimate"]).directive("headerBar",function(){return{restrict:"E",replace:!0,transclude:!0,template:'

    ',scope:{leftButtons:"=",rightButtons:"=",title:"=",type:"@",alignTitle:"@"},link:function(b,c){var d=new a.views.HeaderBar({el:c[0],alignTitle:b.alignTitle||"center"});c.addClass(b.type),b.headerBarView=d,b.$watch("leftButtons",function(){d.align()}),b.$watch("rightButtons",function(){d.align()}),b.$watch("title",function(){console.log("Title changed"),d.align()}),b.$on("$destroy",function(){})}}}).directive("footerBar",function(){return{restrict:"E",replace:!0,transclude:!0,template:'',scope:{type:"@"},link:function(a,b){b.addClass(a.type)}}})}(ionic),function(){"use strict";angular.module("ionic.ui.checkbox",[]).directive("checkbox",function(){return{restrict:"E",replace:!0,require:"?ngModel",scope:{},transclude:!0,template:'',link:function(a,b,c,d){var e;if(d&&(e=b.children().eq(0),e.length)){a.tapHandler=function(a){"click"!=a.type&&(e[0].checked=!e[0].checked),d.$setViewValue(e[0].checked),a.alreadyHandled=!0};d&&(d.$render=function(){e[0].checked=d.$viewValue})}}}})}(),function(){"use strict";angular.module("ionic.ui.content",[]).directive("pane",function(){return{restrict:"E",link:function(a,b){b.addClass("pane")}}}).directive("content",["$parse",function(){return{restrict:"E",replace:!0,template:'
    ',transclude:!0,scope:{onRefresh:"&",onRefreshOpening:"&",refreshComplete:"=",scroll:"@"},compile:function(a,b,c){return function(a,d){var e=d.eq(0),f=d[0].querySelector(".scroll");if(f&&b.padding&&f.classList.add("padding"),"true"==b.hasHeader&&e.addClass("has-header"),"true"==b.hasSubheader&&e.addClass("has-subheader"),"true"==b.hasFooter&&e.addClass("has-footer"),"true"==b.hasTabs&&e.addClass("has-tabs"),b.refreshComplete&&(a.refreshComplete=function(){a.scrollView&&(a.scrollView.doneRefreshing(),a.$parent.$broadcast("scroll.onRefreshComplete"))}),"false"===a.scroll);else if("true"===b.overflowScroll)e.addClass("overflow-scroll");else{var g=new ionic.views.Scroll({el:d[0].firstElementChild,hasPullToRefresh:"undefined"!=typeof a.onRefresh,onRefresh:function(){a.onRefresh(),a.$parent.$broadcast("scroll.onRefresh")},onRefreshOpening:function(b){a.onRefreshOpening({amount:b}),a.$parent.$broadcast("scroll.onRefreshOpening",b)}});a.scrollView=g}var h=c(a.$parent);angular.element(d[0].firstElementChild).append(h)}}}}]).directive("refresher",function(){return{restrict:"E",replace:!0,require:["^?content","^?list"],template:'
    ',scope:!0,link:function(a,b){var c=b[0].querySelector(".ionic-refresher"),d=ionic.throttle(function(a,b){c.style[ionic.CSS.TRANSFORM]="scale("+Math.min(1+b,2)+")"},100);a.$on("scroll.onRefresh",function(){c.style[ionic.CSS.TRANSFORM]="scale(2)"}),a.$on("scroll.onRefreshOpening",d)}}}).directive("scroll-refresher",function(){return{restrict:"E",replace:!0,transclude:!0,template:'
    '}})}(),function(){"use strict";angular.module("ionic.ui.list",["ngAnimate"]).directive("linkItem",["$timeout",function(a){return{restrict:"E",require:["?^list"],replace:!0,transclude:!0,scope:{item:"=",onSelect:"&",onDelete:"&",canDelete:"@",canReorder:"@",canSwipe:"@",buttons:"=",type:"@",href:"@"},template:'
    ',link:function(b,c,d,e){e[0]?e=e[0]:e[1]&&(e=e[1]),d.$observe("href",function(a){b.href=a}),c.addClass(d.type||"item-complex"),"item-complex"!==d.type&&(b.canSwipe=!1),b.isEditing=!1,b.deleteIcon=e.scope.deleteIcon,b.reorderIcon=e.scope.reorderIcon,b.showOptions=!0,b.buttonClicked=function(a){a.onButtonClicked&&a.onButtonClicked(b.item,a)},e.scope.$watch("isEditing",function(c){b.isEditing=c,c?b.showOptions=!1:a(function(){b.showOptions=!0},200)})}}}]).directive("item",["$timeout",function(a){return{restrict:"E",require:["?^list"],replace:!0,transclude:!0,scope:{item:"=",onSelect:"&",onDelete:"&",canDelete:"@",canReorder:"@",canSwipe:"@",buttons:"=",type:"@"},template:'
  • ',link:function(b,c,d,e){e[0]?e=e[0]:e[1]&&(e=e[1]),c.addClass(d.type||"item-complex"),"item-complex"!==d.type&&(b.canSwipe=!1),b.isEditing=!1,b.deleteIcon=e.scope.deleteIcon,b.reorderIcon=e.scope.reorderIcon,b.showOptions=!0,b.buttonClicked=function(a){a.onButtonClicked&&a.onButtonClicked(b.item,a)},e.scope.$watch("isEditing",function(c){b.isEditing=c,c?b.showOptions=!1:a(function(){b.showOptions=!0},200)})}}}]).directive("list",function(){return{restrict:"E",replace:!0,transclude:!0,scope:{isEditing:"=",deleteIcon:"@",reorderIcon:"@",hasPullToRefresh:"@",onRefresh:"&",onRefreshOpening:"&",onReorder:"&",refreshComplete:"="},controller:function(a){var b=this;this.scope=a,a.$watch("isEditing",function(){b.isEditing=!0})},template:'',link:function(a,b,c){var d=new ionic.views.ListView({el:b[0],listEl:b[0].children[0],hasPullToRefresh:"false"!==a.hasPullToRefresh,onRefresh:function(){a.onRefresh(),a.$parent.$broadcast("scroll.onRefresh")},onRefreshOpening:function(b){a.onRefreshOpening({amount:b}),a.$parent.$broadcast("scroll.onRefreshOpening",b)},onReorder:function(b,c,d){console.log("Moved",b,c,d),a.$apply(function(){a.onReorder({el:b,start:c,end:d})})}});a.listView=d,c.refreshComplete&&(a.refreshComplete=function(){d.doneRefreshing(),a.$parent.$broadcast("scroll.onRefreshComplete")}),c.animation&&b.addClass(c.animation)}}})}(),function(){"use strict";angular.module("ionic.ui.loading",[]).directive("loading",function(){return{restrict:"E",replace:!0,transclude:!0,link:function(a,b){a.$on("$destroy",function(){b.remove()}),b.addClass(a.animation||"")},template:'
    '}})}(),function(){"use strict";angular.module("ionic.ui.nav",["ionic.service.templateLoad","ionic.service.gesture","ionic.service.platform","ngAnimate"]).controller("NavCtrl",["$scope","$element","$animate","$compile","$timeout","TemplateLoader","Platform",function(a,b,c,d,e,f,g){var h=this;angular.extend(this,ionic.controllers.NavController.prototype);var i=a.pushInAnimation||"slide-in-left",j=a.pushOutAnimation||"slide-out-left",k=a.popInAnimation||"slide-in-right",l=a.popOutAnimation||"slide-out-right",m=function(a){a.removeClass(i),a.removeClass(j),a.removeClass(k),a.removeClass(l)};this.pushFromTemplate=function(e){var g=a.$new(),k=h.getTopController();f.load(e).then(function(a){d(a)(g,function(a){k&&(m(k.element),c.addClass(k.element,j,function(){k.element[0].style.display="none",k.element.removeClass(j)})),k&&(a.addClass(i),c.addClass(a,i)),c.enter(a,b,null,function(){})})})},this.popController=function(){var b=h.pop(),d=h.getTopController();b&&(m(b.element),c.addClass(b.element,l,function(){b.scope.$destroy(),b.element.remove()})),d&&(m(d.element),c.addClass(d.element,k),d.element[0].style.display="block"),a.$parent.$broadcast("navigation.pop")},ionic.controllers.NavController.call(this,{content:{},navBar:{shouldGoBack:function(){},show:function(){this.isVisible=!0},hide:function(){this.isVisible=!1},setTitle:function(b){a.navController.title=b},showBackButton:function(){}}});var n=function(){a.$apply(function(){h.popController()})};g.onHardwareBackButton(n),this.handleDrag=function(){},this.endDrag=function(){},a.pushController=function(b,c){h.push({scope:b,element:c}),a.$parent.$broadcast("navigation.push",b)},this.pushController=function(b,c){h.push({scope:b,element:c}),a.$parent.$broadcast("navigation.push",b)},a.navController=this,a.$on("$destroy",function(){g.offHardwareBackButton(n)})}]).directive("navigation",function(){return{restrict:"E",replace:!0,transclude:!0,controller:"NavCtrl",template:'
    ',scope:{first:"@",pushAnimation:"@",popAnimation:"@"},link:function(a,b,c,d){a.pushAnimation=a.pushAnimation||"slide-in-left",a.popAnimation=a.popAnimation||"slide-out-left",a.first&&d.pushFromTemplate(a.first)}}}).directive("navBar",function(){return{restrict:"E",require:"^navigation",replace:!0,scope:{type:"@",backButtonType:"@",backButtonLabel:"@",backButtonIcon:"@",alignTitle:"@"},template:'',link:function(a,b,c,d){var e;a.backButtonContent="",a.backButtonIcon&&(a.backButtonContent+=''),a.backButtonLabel&&(a.backButtonContent+=" "+a.backButtonLabel),a.navController=d,a.goBack=function(){d.popController()};var f=new ionic.views.HeaderBar({el:b[0],alignTitle:a.alignTitle||"center"});b.addClass(a.type),a.headerBarView=f,a.$parent.$on("navigation.push",function(){e=angular.element(b[0].querySelector(".button")),e.addClass(a.backButtonType),f.align()}),a.$parent.$on("navigation.pop",function(){f.align()}),a.$on("$destroy",function(){})}}}).directive("navPage",["Gesture","$animate","$compile",function(){return{restrict:"AC",require:"^navigation",link:function(a,b,c,d){var e;a.title=c.title,"false"===c.navBar?d.hideNavBar():d.showNavBar(),a.$on("$destroy",function(){e&&e.remove()}),d.pushController(a,b)}}}]).directive("navPush",function(){return{restrict:"A",link:function(a,b,c){var d=c.navPush,e=ionic.throttle(function(){return a.$apply(function(){a.navController&&a.navController.pushFromTemplate(d)}),!1},300,{trailing:!1});b.bind("tap",e),a.$on("$destroy",function(){b.unbind("tap",e)})}}}).directive("navPop",function(){return{restrict:"A",link:function(a,b){var c=ionic.throttle(function(){return a.$apply(function(){a.navController&&navController.pop()}),!1},300,{trailing:!1});b.bind("tap",c),a.$on("$destroy",function(){b.unbind("tap",c)})}}})}(),function(){"use strict";angular.module("ionic.ui.navRouter",["ionic.service.gesture"]).run(["$rootScope",function(a){a.stackCursorPosition=0}]).directive("navRouter",["$rootScope","$timeout","$location","$window","$route",function(a,b,c,d,e){return{restrict:"AC",controller:["$scope","$element",function(a){this.navBar={isVisible:!0},a.navController=this}],link:function(b,f,g){b.animation=g.animation,f.addClass("noop-animation");var h=!0,i=function(){f.removeClass("noop-animation"),f.addClass(b.animation),f.addClass("reverse")},j=function(){f.removeClass("noop-animation"),f.removeClass("reverse"),f.addClass(b.animation)};b.$on("$routeChangeSuccess",function(){}),b.$on("$routeChangeStart",function(b,c){var e,f=d.history.state;e=!!(f&&f.position<=a.stackCursorPosition),h||c&&""===c.$$route.originalPath||(e?i():j())}),b.$on("$locationChangeSuccess",function(){a.actualLocation=c.path(),h&&"/"!==c.path()&&(h=!1)}),b.$watch(function(){return c.path()},function(b,c){if(a.actualLocation===b){if(""==c&&"/"==b)return;var f,g=d.history.state;f=!!(g&&g.position<=a.stackCursorPosition),f?a.stackCursorPosition--:a.stackCursorPosition++}else{var h=e.current;h&&(d.history.replaceState({position:a.stackCursorPosition}),a.stackCursorPosition++)}})}}}]).directive("navBar",["$rootScope","$animate","$compile",function(a,b,c){var d=function(a,d,e,f,g){var h,i,j,k=d[0].querySelectorAll(".title"),l=f.title;if(!e||e===l)return g(),void 0;h=angular.element(k[0]),j=c('

    ')(a),h.replaceWith(j),i=c('

    ')(a);var m=d[0].firstElementChild||null;b.enter(i,d,m&&angular.element(m),function(){g()}),b.leave(angular.element(j),function(){})};return{restrict:"E",require:"^navRouter",replace:!0,scope:{type:"@",backButtonType:"@",backButtonLabel:"@",backButtonIcon:"@",alignTitle:"@"},template:'',link:function(b,c,e,f){c.addClass(e.animation),b.enableBackButton=!0,b.backButtonContent="",b.backButtonIcon&&(b.backButtonContent+=''),b.backButtonLabel&&(b.backButtonContent+=" "+b.backButtonLabel),a.$watch("stackCursorPosition",function(a){b.showBackButton=a>0?!0:!1}),b.navController=f;var g=new ionic.views.HeaderBar({el:c[0],alignTitle:b.alignTitle||"center"});b.headerBarView=g,c.addClass(b.type);var h=function(a){console.log("Header data changed",a);var e=b.currentTitle;b.oldTitle=e,"undefined"!=typeof a.title&&(b.currentTitle=a.title),b.leftButtons=a.leftButtons,b.rightButtons=a.rightButtons,"undefined"!=typeof a.hideBackButton&&(b.enableBackButton=a.hideBackButton!==!0),a.animate!==!1&&"undefined"!=typeof a.title?d(b,c,e,a,function(){g.align()}):g.align()};b.$parent.$on("navRouter.pageChanged",function(a,b){h(b)}),b.$parent.$on("navRouter.pageShown",function(a,b){h(b)}),b.$parent.$on("navRouter.titleChanged",function(a,e){var f=b.currentTitle;b.oldTitle=f,"undefined"!=typeof e.title&&(b.currentTitle=e.title),e.animate!==!1&&"undefined"!=typeof e.title?d(b,c,f,e,function(){g.align()}):g.align()}),b.$on("$destroy",function(){})}}}]).directive("navPage",["$parse",function(a){return{restrict:"E",scope:!0,require:"^navRouter",link:function(b,c,d){c.addClass("pane"),b.icon=d.icon,b.iconOn=d.iconOn,b.iconOff=d.iconOff,b.hideBackButton=b.$eval(d.hideBackButton),b.animate=b.$eval(d.animate),b.doesUpdateNavRouter=b.$eval(d.doesUpdateNavRouter)||!0;var e=a(d.leftButtons);b.$watch(e,function(a){b.leftButtons=a,b.doesUpdateNavRouter&&b.$emit("navRouter.leftButtonsChanged",b.rightButtons)});var f=a(d.rightButtons);b.$watch(f,function(a){b.rightButtons=a});var g=a(d.title);b.$watch(g,function(a){b.title=a,b.$emit("navRouter.titleChanged",{title:a,animate:b.animate})})}}}]).directive("navBack",["$window","$rootScope","Gesture",function(a,b,c){return{restrict:"AC",require:"^?navRouter",link:function(d,e){var f=function(){b.stackCursorPosition>0&&a.history.back()},g=c.on("tap",f,e);e.bind("click",f),d.$on("$destroy",function(){c.off(g,"tap",f),e.unbind("click",f)})}}}])}(),function(){"use strict";angular.module("ionic.ui.radio",[]).directive("radio",function(){return{restrict:"E",replace:!0,require:"?ngModel",scope:{value:"@"},transclude:!0,template:'',link:function(a,b,c,d){var e;if(d&&(e=b.children().eq(0),e.length)){a.tapHandler=function(b){e[0].checked=!0,d.$setViewValue(a.$eval(c.ngValue)),b.alreadyHandled=!0};var f=function(){d.$setViewValue(a.$eval(c.ngValue))};a.$on("$destroy",function(){b.unbind("tap",tapHandler),b.unbind("click",f)}),d&&(b.bind("click",f),d.$render=function(){var b=a.$eval(c.ngValue);b===d.$viewValue?e.attr("checked","checked"):e.removeAttr("checked")})}}}})}(window.ionic),function(){"use strict";angular.module("ionic.ui.sideMenu",["ionic.service.gesture"]).controller("SideMenuCtrl",["$scope",function(a){angular.extend(this,ionic.controllers.SideMenuController.prototype),ionic.controllers.SideMenuController.call(this,{left:{width:270},right:{width:270}}),a.sideMenuContentTranslateX=0,a.sideMenuController=this}]).directive("sideMenus",function(){return{restrict:"ECA",controller:"SideMenuCtrl",replace:!0,transclude:!0,template:'
    '}}).directive("sideMenuContent",["Gesture",function(a){return{restrict:"AC",require:"^sideMenus",scope:!0,compile:function(){return function(b,c,d,e){c.addClass("menu-content");var f=!1;ionic.on("mousedown",function(a){f=a.defaultPrevented});var g=function(a){f||e._handleDrag(a)},h=a.on("drag",g,c),i=function(a){f||e._endDrag(a),f=!1},j=a.on("release",i,c);e.setContent({onDrag:function(){},endDrag:function(){},getTranslateX:function(){return b.sideMenuContentTranslateX||0},setTranslateX:function(a){b.sideMenuContentTranslateX=a,c[0].style.webkitTransform="translate3d("+a+"px, 0, 0)"},enableAnimation:function(){b.animationEnabled=!0,c[0].classList.add("menu-animated")},disableAnimation:function(){b.animationEnabled=!1,c[0].classList.remove("menu-animated")}}),b.$on("$destroy",function(){a.off(h,"drag",g),a.off(j,"release",i)})}}}}]).directive("sideMenu",function(){return{restrict:"E",require:"^sideMenus",replace:!0,transclude:!0,scope:!0,template:'',compile:function(a,b,c){return function(a,b,d,e){a.side=d.side,"left"==a.side?(e.left.isEnabled=!0,e.left.pushDown=function(){b[0].style.zIndex=-1},e.left.bringUp=function(){b[0].style.zIndex=0}):"right"==a.side&&(e.right.isEnabled=!0,e.right.pushDown=function(){b[0].style.zIndex=-1},e.right.bringUp=function(){b[0].style.zIndex=0}),b.append(c(a))}}}})}(),function(){"use strict";angular.module("ionic.ui.slideBox",[]).controller("SlideBoxCtrl",["$scope","$element",function(a){a.slides=[],this.slideAdded=function(){a.slides.push({})}}]).directive("slideBox",["$compile",function(a){return{restrict:"E",replace:!0,transclude:!0,controller:"SlideBoxCtrl",scope:{},template:'
    ',link:function(b,c,d){if("false"!==d.showPager){var e=b.$new(),f=a("")(e);c.append(f),b.slideBox=new ionic.views.SlideBox({el:c[0],slideChanged:function(a){b.$parent.$broadcast("slideBox.slideChanged",a)}})}}}}]).directive("slide",function(){return{restrict:"E",replace:!0,require:"^slideBox",transclude:!0,template:'
    ',compile:function(){return function(a,b,c,d){d.slideAdded()}}}}).directive("pager",function(){return{restrict:"E",replace:!0,require:"^slideBox",template:'
    '}})}(),angular.module("ionic.ui.tabs",["ngAnimate"]).controller("TabsCtrl",["$scope","$element","$animate",function(a){var b=this;angular.extend(this,ionic.controllers.TabBarController.prototype),ionic.controllers.TabBarController.call(this,{controllerChanged:function(b,c,d,e){a.controllerChanged&&a.controllerChanged({oldController:b,oldIndex:c,newController:d,newIndex:e})},tabBar:{tryTabSelect:function(){},setSelectedItem:function(){},addItem:function(){}}}),this.add=function(a){this.addController(a),this.select(0)},this.select=function(c){a.activeAnimation=a.animation,b.selectController(c)},a.controllers=this.controllers,a.tabsController=this}]).directive("tabs",function(){return{restrict:"E",replace:!0,scope:!0,transclude:!0,controller:"TabsCtrl",template:'
    ',compile:function(a,b,c){return function(a,b,d){var e=b[0].querySelector(".tabs");a.tabsType=d.tabsType||"tabs-positive",a.tabsStyle=d.tabsStyle,a.animation=d.animation,a.animateNav=a.$eval(d.animateNav),a.animateNav!==!1&&(a.animateNav=!0),d.$observe("tabsStyle",function(){e&&angular.element(e).addClass(d.tabsStyle)}),d.$observe("tabsType",function(){e&&angular.element(e).addClass(d.tabsType)}),a.$watch("activeAnimation",function(){b.addClass(a.activeAnimation)}),c(a,function(a){b.prepend(a)})}}}}).directive("tab",["$animate","$parse",function(a,b){return{restrict:"E",replace:!0,require:"^tabs",scope:!0,transclude:"element",compile:function(c,d,e){return function(c,d,f,g){var h,i;c.title=f.title,c.icon=f.icon,c.iconOn=f.iconOn,c.iconOff=f.iconOff,c.hideBackButton=c.$eval(f.hideBackButton),c.hideBackButton!==!0&&(c.hideBackButton=!1),c.animate=c.$eval(f.animate),c.doesUpdateNavRouter=c.$eval(f.doesUpdateNavRouter),c.doesUpdateNavRouter!==!1&&(c.doesUpdateNavRouter=!0); var j=b(f.leftButtons);c.$watch(j,function(a){c.leftButtons=a,c.doesUpdateNavRouter&&c.$emit("navRouter.leftButtonsChanged",c.rightButtons)});var k=b(f.rightButtons);c.$watch(k,function(a){c.rightButtons=a}),g.add(c),c.$watch("isVisible",function(b){i&&(a.leave(i),c.$broadcast("tab.hidden"),i=void 0),h&&(h.$destroy(),h=void 0),b&&(h=c.$new(),e(h,function(b){i=b,a.enter(b,d.parent(),d),c.title&&c.doesUpdateNavRouter&&c.$emit("navRouter.pageShown",{title:c.title,rightButtons:c.rightButtons,leftButtons:c.leftButtons,hideBackButton:c.hideBackButton,animate:c.animateNav}),c.$broadcast("tab.shown")}))})}}}}]).directive("tabControllerBar",function(){return{restrict:"E",require:"^tabs",transclude:!0,replace:!0,scope:!0,template:'
    ',link:function(a,b){b.addClass(a.tabsType),b.addClass(a.tabsStyle)}}}).directive("tabControllerItem",function(){return{restrict:"E",replace:!0,require:"^tabs",scope:{title:"@",icon:"@",iconOn:"@",iconOff:"@",active:"=",tabSelected:"@",index:"="},link:function(a,b,c,d){c.icon&&(a.iconOn=a.iconOff=c.icon),a.selectTab=function(){d.select(a.index)}},template:' {{title}}'}}).directive("tabBar",function(){return{restrict:"E",replace:!0,transclude:!0,template:'
    '}}),function(a){"use strict";angular.module("ionic.ui.toggle",[]).directive("toggle",function(){return{restrict:"E",replace:!0,require:"?ngModel",scope:!0,template:'
    ',link:function(b,c,d,e){var f,g;e&&(f=c.children().eq(0),g=c.children().eq(1),f.length&&g.length&&(b.toggle=new a.views.Toggle({el:c[0],checkbox:f[0],handle:g[0]}),c.bind("click",function(a){b.toggle.tap(a),b.$apply(function(){e.$setViewValue(f[0].checked)})}),e.$render=function(){b.toggle.val(e.$viewValue)}))}}})}(window.ionic),function(){"use strict";angular.module("ionic.ui.virtRepeat",[]).directive("virtRepeat",function(){return{require:["?ngModel","^virtualList"],transclude:"element",priority:1e3,terminal:!0,compile:function(){return function(a,b,c,d){var e=d[1];e.listView.renderViewport=function(){}}}}})}(ionic),function(){"use strict";function a(a){var b=a.match(/^\s*([\$\w]+)\s+in\s+(\S*)\s*$/);if(!b)throw new Error("Expected sfVirtualRepeat in form of '_item_ in _collection_' but got '"+a+"'.");return{value:b[1],collection:b[2]}}function b(a){var b={overflow:"auto"},c=window.getComputedStyle?window.getComputedStyle(a[0]):a[0].currentStyle,d=c&&c.getPropertyValue("max-height"),e=c&&c.getPropertyValue("height");d&&"0px"!==d?b.maxHeight=d:b.height=e&&"0px"!==e?e:window.innerHeight,a.css(b)}function c(a){var b={margin:0,padding:0,border:0,"box-sizing":"border-box"};a.css(b)}function d(a){var b=window.getComputedStyle?window.getComputedStyle(a):a.currentStyle,c=b&&b.getPropertyValue("max-height"),d=b&&b.getPropertyValue("height");if(d&&"0px"!==d&&"auto"!==d)$log.info('Row height is "%s" from css height',d);else if(c&&"0px"!==c&&"none"!==c)d=c,$log.info('Row height is "%s" from css max-height',d);else{if(!a.clientHeight)throw new Error("Unable to compute height of row");d=a.clientHeight+"px",$log.info('Row height is "%s" from client height',d)}return angular.element(a).css("height",d),parseInt(d,10)}angular.module("ionic.ui.virtualRepeat",[]).directive("virtualRepeat",["$log",function(e){return{require:["?ngModel, ^virtualList"],transclude:"element",priority:1e3,terminal:!0,compile:function(f,g){var h=a(g.sfVirtualRepeat);return function(a,f,g,i){function j(a,b,c){var d=c.$new();return d[h.value]=b[a],d.$index=a,d.$first=0===a,d.$last=a===b.length-1,d.$middle=!(d.$first||d.$last),d.$watch(function(){d[h.value]=b[a]}),d}function k(a,b,c,d,e){var f,g,h,i=document.createDocumentFragment(),k=[];for(g=a;g!==b;g++)h=j(g,c,d),f=linker(h,angular.noop),k.push(f),i.appendChild(f[0]);return e.after(i),k}function l(){var a=clip(v.firstActive,v.firstVisible-v.lowWater,v.firstVisible-v.highWater),b=clip(v.firstActive+v.active,v.firstVisible+v.visible+v.lowWater,v.firstVisible+v.visible+v.highWater);v.firstActive=Math.max(0,a),v.active=Math.min(b,v.total)-v.firstActive}function m(b){s&&a.$apply(function(){v.firstVisible=Math.floor(b.target.scrollTop/s),v.visible=Math.ceil(u.viewport[0].clientHeight/s),e.log("scroll to row %o",v.firstVisible),t=b.target.scrollTop+b.target.clientHeight>=b.target.scrollHeight,l(),e.log(" state is now %o",v),e.log(" sticky = %o",t)})}function n(a){var b=a.$eval(h.collection);return b.length!==v.total&&(v.total=b.length,l()),{start:v.firstActive,active:v.active,len:b.length}}function o(a,b){var c,d,e=Array.prototype[a];for(d=0;b>d;d++)c=e.call(r),c.scope().$destroy(),c.remove()}function p(a,b,c){var g,i=b.start+b.active,j=c.$eval(h.collection);if(a===b)e.info("initial listen"),g=k(a.start,i,j,c,f),r=g,r.length&&(s=d(g[0][0]));else{var l=a.start+a.active,m=a.start>=b.start,n=m?a.start-b.start:b.start-a.start,p=l>=i?l-i:i-l,q=n<(m?b.active:a.active);if(e.info("change by %o,%o rows %s",n,p,m?"forward":"backward"),q){if(m?(e.info("need to remove from the top"),o("shift",n)):n&&(e.info("need to add at the top"),g=k(a.start,b.start,j,c,f),r=g.concat(r)),i>l)e.info("need to remove from the bottom"),o("pop",i-l);else if(p){var v=r[r.length-1];e.info("need to add to the bottom"),g=k(i,l,j,c,v),r=r.concat(g)}}else e.info("non-contiguous change"),o("pop",r.length),r=k(a.start,l,j,c,f);!s&&r.length&&(s=d(r[0][0])),u.content.css({"padding-top":a.start*s+"px"})}u.content.css({height:a.len*s+"px"}),t&&(u.viewport[0].scrollTop=u.viewport[0].clientHeight+u.viewport[0].scrollHeight)}var q=i[1],r=[],s=0,t=!1,u=q.element,v="ngModel"in g?a.$eval(g.ngModel):{};v.firstActive=0,v.firstVisible=0,v.visible=0,v.active=0,v.total=0,v.lowWater=v.lowWater||100,v.highWater=v.highWater||300,c(u.content),b(u.viewport),u.bind("momentumScrolled",m),a.$watch(n,p,!0)}}}}])}(ionic); \ No newline at end of file diff --git a/js/ext/angular/src/directive/ionicSlideBox.js b/js/ext/angular/src/directive/ionicSlideBox.js index b997a311ce..937c687c1b 100644 --- a/js/ext/angular/src/directive/ionicSlideBox.js +++ b/js/ext/angular/src/directive/ionicSlideBox.js @@ -71,7 +71,7 @@ angular.module('ionic.ui.slideBox', []) restrict: 'E', replace: true, require: '^slideBox', - template: '
    ' + template: '
    ' } });